Производственные процессы обычно управляются группой связанных друг с другом программ, каждая из которых решает свои задачи. Способ программирования в основном зависит от требуемого времени реакции. В верхних уровнях иерархии обычно используются программы управления, не требующие постоянной обработки данных и их анализа. Эти программы могут выполняться несколько раз в сутки, и поэтому здесь нет жестких требований ко времени реакции. Может использоваться обычная техника программирования для административных систем. Иначе обстоит дело на нижних уровнях, которые осуществляют непосредственное управление физическим процессом. Здесь время реакции обычно настолько жестко ограничено, что требуются специальные методы и техника программирования.
Для создания эффективных систем реального времени вычислительная техника имеет не меньшее значение, чем программные средства. Многие задачи можно решить с помощью, как аппаратных, так и программных средств. Аппаратные средства должны обладать достаточными ресурсами, а программные - эффективно их использовать. Однако бывает, что программное обеспечение сводит на нет все достоинства оборудования.
В идеальном случае предполагается, что программист не выходит за пределы защищенной среды языка программирования. В реальности программистам часто приходится работать непосредственно с операционной системой, разрабатывать резидентные программы и в рамках одного проекта смешивать языки программирования разного уровня.
Последовательное программирование и программирование задач реального времени.
Программа представляет собой описание объектов – констант, переменных и операций, совершаемых над ними. Таким образом, программа – это информация.
Программы можно создавать и анализировать на нескольких уровнях детализации с помощью соответствующих приемов формального описания данных и операций, выполняемых на каждом уровне. На самом нижнем уровне выполняется непосредственное описание - для каждой переменной указывается ее положение в памяти. На более высоких уровнях переменные имеют абстрактные имена, алгоритмы сгруппированы в функции или процедуры. Программист не должен думать о том, по каким реальным адресам памяти находятся переменные.
Последовательное программирование (sequential programming) является наиболее распространенным способом написания программ. Понятие «последовательное программирование» подразумевает, что операторы программы выполняются в известной последовательности один за другим. Целью последовательной программы является преобразование входных данных, заданных в определенной форме, в выходные данные, в соответствии с некоторым алгоритмом - методом решения.
Таким образом, последовательная программа работает как фильтр для входных данных. Ее результат и характеристики полностью определяются входными данными и алгоритмом их обработки, при этом временные показатели играют второстепенную роль. На результат не влияют ни инструментальные (язык программирования), ни аппаратные (быстродействие ЦП) средства.
Программирование в реальном времени (real-time programming) отлично от последовательного программирования. Разработчик программы должен постоянно иметь в виду среду, в которой работает программа, будь то контроллер волновой печи или устройство управления манипулятором робота. В системах реального времени внешние сигналы, как правило, требуют немедленной реакции процессора. В сущности, одной из наиболее важных особенностей систем реального времени является время реакции на входные сигналы, которое должно отвечать заданным требованиям.
В большинстве случаев последовательное программирование не позволяет строить системы реального времени. В таких системах независимые программные модули должны быть активны одновременно, т.е. работать параллельно. Такая техника известна под названием параллельного программирования (concurrent programming).
Основным объектом в системах реального времени является процесс (process) или задача (task).
Параллельное программирование мультипрограммирование и многозадачность.
Программирование в реальном времени требует одновременного исполнения нескольких процессов или задач на одной ЭВМ. Эти процессы используют одни и те же ресурсы системы, но более или менее независимы друг от друга.
Мультипрограммирование (multiprogramming) или многозадачность есть способ одновременного исполнения нескольких процессов. Этого можно добиться как для одного, так и для нескольких процессоров. Для параллельных процессов конечный результат однозначно предсказать нельзя – задачи выполняются, по крайней мере с внешней точки зрения, в случайной последовательности.
Иногда термин «параллельное программирование» используется как синоним мультипрограммирования. Однако эти понятия несколько различаются по смыслу. Параллельное программирование – это абстрактный процесс разработки программ, которые потенциально могут исполняться параллельно, вне зависимости от программно-аппаратной среды. Иными словами, предполагается, что каждая задача реализуется на собственном виртуальном процессоре. С другой стороны, мультипрограммирование представляет собой практический способ исполнения нескольких программ на одном центральном процессоре или в распределенной вычислительной системе. Параллельное программирование более трудоемко, чем последовательное, поскольку способности человека следить за развитием связанных процессов и исследовать их взаимодействие ограничены.
Программирование в реальном времени основано на параллельном программировании и включает в себя технику повышения эффективности и скорости исполнения программ, управление прерываниями, обработку исключений и непосредственное использование ресурсов операционной системы. Кроме того, программы реального времени требуют специальных методов тестирования.