Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС - лекции.docx
Скачиваний:
106
Добавлен:
29.05.2015
Размер:
2.86 Mб
Скачать

Дескриптор и контекст процесса

При создании потока (или процесса, если речь идет о системе, в которой понятие «поток» не определяется), операционная система

- генерирует специальную информационную структуру — описатель потока, который содержит информацию о состоянии потока.

Примерами описателей процесса являются блок управления задачей (ТСВ — Task Control Block) в OS/360, управляющий блок процесса (РСВ — Process Control Block) в OS/2, дескриптор процесса в UNIX, объект-процесс (object-process) в Windows NT.

- загружает коды и данные исполняемой программы данного процесса с диска в оперативную память.

Операционная система использует два основных типа информационных структур: дескриптор процесса и контекст процесса.

Дескриптор процесса содержит информацию о процессе, которая необходима ядру ОС в течение всего жизненного цикла процесса независимо от того в каком он состоянии находится.

Информацию дескриптора можно разделить на группы по функциональному признаку: идентификатор процесса, состояние процесса, информация о ресурсах, степень привилегированности, место нахождения кодового сегмента, информация о родственных связях, информация для учёта и планирования процессов и пр.

Дескрипторы отдельных процессов объединены в таблицу процессов. На основании информации, содержащейся в таблице процессов, операционная система осуществляет планирование и синхронизацию процессов.

Контекст процесса содержит информации о процессе которая используется для возобновления его выполнения с прерванного места. Т.е. данные, характеризующие во-первых, состояние вычислительной среды в момент прерывания: значение счетчика команд, содержимое РОН, режим работы процессора, флаги, маски прерываний и другие параметры. Во-вторых, параметры операционной среды, а именно ссылки на открытые файлы, коды ошибок системных вызовов и т. д.

Вместе обе структуры образуют Блок управления процессом PCB (Process Control Block) (TCB – Task Control Block в OS/360, или object-process в W NT).

Состояния процесса

ОС выполняет планирование процессов или потоков (если речь идёт о многопоточной ОС), принимая во внимание их состояние.

Тогда для ОС процесс будет рассматривается как объект, в отношении которого требуется обеспечить реализацию каждого из допустимых состояний, а также допустимые переходы из состояния в состояние .

В мультипрограммной системе процесс (поток) может находиться в одном из трех основных состояний.

-  выполнение — активное состояние процесса, поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

-  ожидание — пассивное состояние процесса, не исполняется на процессоре по причине занятости какого-либо требуемого ресурса;

-  готовность - пассивное состояние потока, поток заблокирован в связи с внешним по отношению к нему обстоятельством (готов выполняться, однако процессор занят выполнением другого потока). Состояние готовности характерно только для режима мультипрограммирования.

Состав допустимых состояний, а также допустимые переходы из состояния в состояние задают в форме графа существования процесса.

Рассмотрим типичный граф состояния потока (рис. 4.3).

Созданный поток находится в состоянии готовности, и стоит в очереди к процессору.

В результате планирования поток переходит в состояние выполнения и находится в нем до тех пор, пока

1. либо он сам не освободит процессор, перейдя в состояние ожидания какого-нибудь события,

2. либо будет принудительно «вытеснен» из процессора, например вследствие исчерпания отведенного данному потоку кванта процессорного времени. В последнем случае поток возвращается в состояние готовности.

В это же состояние поток переходит из состояния ожидания, после того как ожидаемое событие произойдет.

В многопоточной ВС все потоки процесса, нахо­дящиеся в текущий момент времени в одном и том же состоянии (состоянии готовности или ожидания), объединены через дескрипторы потока в одну цепочку («прошивают» через дескрипторы) и образуют списковую структуру.

Если предположить, что на рис. показана очередь готовых к исполнению потоков, то запланированный порядок выполнения выглядит так: A B E D C. Прошивку, как правило, осуществляют в соответствии с приоритетами на право использовать ресурс.

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

Кроме описанных выше состояний в отношении процесса различают состояния порождения (создания) и окончания.

При создании процесса ос:

  • определяет процесс, который требуется выполнить;

  • процесс получает в свое распоряжение адресное пространство, в которое загружается программный код;

  • обеспечивает доступ к ресурсам, которые должны быть выделены перед исполнением программы, в том числе обеспечила передачу программе необходимых параметров;

При переводе в процесса в состояние «окончания.

- сохраняется информация о результатах работы процесса.

- освобождаются ресурсы, распределенные заканчивающемуся процессу.

- уничтожается дескриптора процесса.

При уничтожении процесса ОС решается проблему с порождёнными им процессами. Чаще всего при уничтожении процесса будет уничтожаться и все поддерево, определяющее родственные связи процесса.

В других операционных системах (например, в Unix) уничтожаемый процесс переводится из активного в состояние «ожидание» до завершения одного из порожденных им процессов.

Операции создания и завершения являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов, будь то запуск или блокировка, как правило, являются многоразовыми.

Рассмотренные нами выше одноразовые операции, производимые над процессом удобно объединить в пары:

  • создание процесса – завершение процесса;

  • приостановка процесса (перевод из состояния исполнение в состояние готовность) – запуск процесса (перевод из состояния готовность в состояние исполнение);

  • блокирование процесса (перевод из состояния исполнение в состояние ожидание) – разблокирование процесса (перевод из состояния ожидание в состояние готовность).

Коротко рассмотрим последовательность перехода процесса из состояний.

Запуск (создание) процесса. Из числа процессов, находящихся в состоянии готовности, операционная система выбирает один для последующего исполнения. Затем состояние процесса изменяется на исполнение, восстанавливаются значения регистров для данного процесса и управление передается команде, на которую указывает счетчик команд процесса.

Приостановка процесса Работа процесса, находящегося в состоянии исполнение, приостанавливается в результате какого-либо прерывания. ОС производит изменения в дескрипторе и в контексте, сохраняет счетчик команд и, возможно, один или несколько регистров в стеке исполняемого процесса, а затем передает управление по специальному адресу обработки данного прерывания .

Разблокирование процесса. Происходит если произошло событие, которое ожидается данным процессом. При этом ОС переводит процесс в состояние готовность.

Перевод процесса в «активное» состояние из очереди процессов, находящихся в состоянии «готовности» происходит на основе приоритетного правила. При этом восстанавливается его прерванное состояние, производятся изменения в дескрипторе процесса, передается управление на программе процесса.

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