Программы и процессы
Основным объектом в системах реального времени является процесс или задача. Между программами и процессами имеется существенное различие. Программы представляют собой информацию о том, как обрабатывать и преобразовывать исходные данные, а процессы суть программы, исполняемые процессором. Процесс состоит из кода, т. е. инструкций программы — области кода, области данных, в которой хранятся переменные и константы, свободной динамически распределяемой рабочей области памяти — кучи и стека (рис. 2). Два последних механизма зависят от конкретной реализации. Область стека примыкает к куче и расширяется за ее счет. Программа, написанная на одном и том же языке высокого уровня, а затем откомпилированная и исполняемая на разных ЭВМ, порождает различные процессы, каждый из которых имеет собственные области команд и данных, кучу и стек.
Каждый процесс в любой момент времени находится в точно определенном состоянии, однозначно описываемом содержимым регистров процессора, расположением областей кода, данных и стека и счетчиком команд, указывающим следующую исполняемую инструкцию в области кода. Эта базовая информация об исполняющемся процессе называется его контекстом. Существование контекста — это общее свойство процессов, а то, какие регистры, структуры и указатели реально являются частью контекста, зависит от используемого процессора и операционной системы.
Частным типом процессов являются потоки. Они представляют собой часть программы, которая может независимо исполняться на том же сам или другом процессоре. Потоки порождаются процессом и выполняются параллельно, т. е. поток — это дочерний процесс.В отличие от процессов, потоки используют общую область данных, т. е. переменные породившего их процесса. Однако каждый поток имеет собственный контекст, включающий отдельные область кода и стек. Потоки играют важную роль в операционных системах UNIX и Windows NT.
Последовательность преобразования программы в процесс состоит из сохранения исходного текста на компьютерном носителе (магнитная лента или диск), компиляции, связывания, загрузки и исполнения.
Эти шаги детально описываются в учебниках по программированию и операционным системам и здесь рассматриваться не будут.
Дата добавления: 2016-02-09; просмотров: 691;