Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Лекция 4 Составляющие вычислительного процесса

.doc
Скачиваний:
154
Добавлен:
25.02.2015
Размер:
45.06 Кб
Скачать

Лекция №4. Составляющие вычислительного процесса

Подсистема управления процессами состоит из планировщика (набор алгоритмов подпрограмм для планирования) и механизма PCB (Process Control Block).

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

Исходя из идеи ОС (изоляции процессов друг от друга) выделяется строгое адресное пространство, при этом ОС следит за тем, чтобы процессы не трогали чужие адресные пространства.

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

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

Потоки в свою очередь делятся на волокна – самостоятельный набор команд. Но с точки зрения ОС волокон не существует, и управлением волокон занимается программное обеспечение (процессы). Адресное пространство для волокон и процессов – одно.

Задание (стоит выше процесса в иерархии) объединяет несколько процессов и устанавливает ограничение на использование ресурсов.

8 функций подсистемы управления процессами:

1. Создание процессов и потоков. Создание процесса – создание структуры данных в памяти (PCB). Любой процесс порождается другим существующим процессом (идеология ОС). Первый процесс порождается ядром ОС, остальные порождаются от этого процесса.

В Windows нет иерархии процессов (у всех процессов один единственный родитель, остальные процессы обращаются с просьбой породить новый процесс). В этой ситуации родительский процесс управляет всеми процессами и несет за них ответственность (освобождение памяти при аварийном завершении программы и т.д.). В PCB хранится только уникальный номер процесса PID.

В Linux используется иерархия процессов. Родитель всех процессов - процесс init с PID =1. Процесс-потомок посылает информацию по завершению работы и контроль осуществляет процесс-родитель. Процессы-потомки не могут иметь большие права, чем права у процесса-родителя. Если процесс-родитель аварийно завершился, то процесс-наследник усыновляется либо процессом-родителем, вышестоящим по иерархии, либо процессом init.

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

В PCB хранится PID, PPID, UID, которые характеризует процесс (идентификация процесса).

Еще одно отличие Windows и Linux заключается в том, что в Linux процессы размножаются клонированием, в Windows е создается с чистого листа.

Так же в PCB хранится статус процесса (status word). С точки зрения ОС нельзя попытаться родить процесса с одинаковым статусом. Данные о ресурсах, история (статистика) процесса - сколько процесс потреблял процессорного времени, сколько ожидал процессорное время - данные для планировщиков

2. Обеспечение процессов и потоков необходимыми ресурсами. ОС необходимо обеспечивать процессы ресурсами не только при рождении, но и при работе

3. Изоляция процессов. Обеспечение операционной системой невозможности обращения одного процесса к ресурсам другого процесса.

4. Планирование выполнения процессов и потоков.

5. Диспетчеризация потоков – смена одного потока на другой:

  • сохранение контекста первого выполнявшегося потока,

  • загрузка контекста нового потока,

  • изменение статусов этих потоков.

Эта идея диспетчеризации потоков защищает от сбоев.

6. Организация меж процессного взаимодействия.

7. Синхронизация процессов и потоков.

8. Завершение и уничтожение процессов и потоков. Завершить процесс – освободить все ресурсы, которые он занимал, и уничтожить структуру данных процесса в памяти.

Жизненный цикл процесса.

Двухуровневая модель: исполняется и не исполняется.

  • Любому процессу при его рождении присваивается статус «не исполняется».

  • Как только планировщик выбирает этот процесс для исполнения, процесс получает статус «исполняется».

  • Поле исполнения он может завершиться, либо снова получить статус «не исполняется» и ожидать время на исполнение.

В данной модели невозможно различить, по какой причине процесс получил статус «не исполняется». Данная модель сейчас нигде не реализуется.

Трехуровневая модель: исполняется, готовность состояния процесса, ожидание.

  • Процесс при порождении может выполняться.

  • Из готовности планировщик переводит процесс в статус «исполняется».

  • После исполнения процесс либо завершается, либо отправляется в ожидание. За состоянием ожидания следит определенный процесс ядра ОС.

  • После прерывания ожидания процесс переходит в статус готовности. И снова к исполнению.

Любая современная ОС поддерживает данную модель.

Пятиуровневая модель: исполняется, готовность, ожидание, рождение, завершение.

  • Рождение – растянутый этап, на котором ОС решает, стоит ли рождать этот процесс. На этом этапе у процесса нет PCB.

  • После рождения процесс переходит в статус «готовность».

  • Завершение – растянутый этап завершения процесса: освобождения памяти, нахождение родителя. Процесс находится в завершении значительное время пока ОС в поисках.

Семиуровневая модель: пятиуровневая модель + исключительная ситуация + зомби-состояние (только для Linux).

  • Если в процессе исполнения возникает ошибка, процесс отправляется в исключительную ситуацию. После решения ошибки из исключительной ситуации процесс получает статус готовности.

  • Выход из зомби процесса не всегда возможен.

Виды и критерии планирования ресурсов вычислительной системы

Планирование – выбор, какому следующему процессу предоставить ресурс. Можно планировать на один шаг или на несколько шагов вперед (горизонт планирования). Выделяют четыре вида планирования:

1. Краткосрочное планирование (между готовностью и исполнением процессов, на уровне диспетчеризации процессов) – не сильно влияет на работу ОС.

2. Долгосрочное планирование (между рождением и статусом готовности) – надолго меняется работа ОС.

3. Среднесрочное планирование (1. между готовностью процесса в оперативной памяти и готовностью процессов не в оперативной памяти; 2. между ожиданием в оперативной памяти и не в оперативной памяти) – сбрасывание не скоро выполняющихся процессов.

4. Планирование доступа к отдельным устройствам.