Скачиваний:
67
Добавлен:
08.06.2015
Размер:
125.95 Кб
Скачать

Программы и процессы

Основным объектом в системах реального времени является процесс или задача. Между программами и процессами имеется существенное разли­чие. Программы представляют собой информацию о том, как обрабатывать и преоб­разовывать исходные данные, а процессы суть программы, исполняемые процессо­ром. Процесс состоит из кода, т. е. инструкций программы — области кода, области данных, в которой хранятся переменные и константы, свободной динамически распределяемой рабочей области памяти — кучи и стека (рис. 10.2). Два последних механизма зависят от конкретной реализации. Область стека примыкает к куче и расширяется за ее счет. Программа, написанная на одном и том же языке высокого уровня, а затем откомпилированная и исполняемая на разных ЭВМ, порождает различные процессы, каждый из которых имеет собственные области ко­манд и данных, кучу и стек.

Частным типом процессов являются потоки. Они представляют собой часть программы, которая может независимо исполняться на том же сам или другом процессоре. Потоки порождаются процессом и выполняются параллельно, т. е. поток — это дочерний процесс. В отличие от процессов, потоки используют общую область данных, т. е. переменные породившего их процесса.

Последовательность преобразования программы в процесс состоит из сохранения исходного текста на компьютерном носителе (магнитная лента или диск), компиляции, связывания, каждый поток имеет собственный контекст, включающий отдельные область кода и стек. Потоки играют важную роль в операционных системах UNIX и Windows NT

загрузки (loading) и исполнения (execution). Эти шаги детально описываются в учебниках по программированию и операцион­ным системам и здесь рассматриваться не будут.

Параллельное программирование, мультипрограммирование и многозадачность

Программирование в реальном времени требует одновременного исполнения не­скольких процессов или задач на одной ЭВМ. Эти процессы используют совместно ресурсы системы, но более или менее независимы друг от друга.

Мультипрограммирование (multiprogramming) или многозадачность (multitasking) есть способ одновременного исполнения нескольких процессов. Такого эффекта мож­но добиться как для одного, так и для нескольких процессоров: процессы исполняются либо на одном, либо на нескольких связанных между собой процессорах. В действи­тельности многие современные вычислительные системы состоят из нескольких про­цессоров, связанных между собой либо сетью передачи данных, либо общей шиной.

Иногда в технической литературе термин "параллельное программирование" используется как синоним мультипрограммирования. Однако эти понятия не­сколько различаются по смыслу. Параллельное программирование — это абст­рактный процесс разработки программ, которые потенциально могут исполнять­ся параллельно, вне зависимости от программно-аппаратной среды. Иными словами, предполагается, что каждая задача реализуется на собственном вирту­альном процессоре. С другой стороны, мультипрограммирование представляет собой практический способ исполнения нескольких программ на одном цент­ральном процессоре или в распределенной вычислительной системе. Параллель­ное программирование более трудоемко, чем последовательное, поскольку спо­собности человека следить за развитием связанных процессов и исследовать их взаимодействие ограничены.

Программирование в реальном времени основано на параллельном программиро­вании и включает в себя технику повышения эффективности и скорости исполнения программ — управление прерываниями, обработку исключений и непосредственное использование ресурсов операционной системы. Кроме того, программы реального времени требуют специальных методов тестирования.