ОС / 4. ОС - Управление процессами - 1
.pdf
11
Вытеснение процесса
Происходит одно из следующих событий:
истекает квант времени работающего процесса;
активизируется (т.е. либо запускается, либо пробуждается) процесс с более высоким приоритетом (если в системе используются абсолютные приоритеты);
текущий процесс сам вызывает функцию, разрешающую его вытеснение (Yield).
Вызывается системная подпрограмма «Планировщик процессов» (Scheduler).
Планировщик выбирает для выполнения один из процессов, находящихся в состоянии «Готовность», либо повторно выбирает текущий процесс.
Если выбран другой процесс, то выполняется переключение процессов, то есть:
планировщик переводит текущий (работающий) процесс в состояние «Готовность»;
планировщик переводит выбранный процесс в состояние «Работа».
Операционные системы. Управление процессами - 1
12
Вытесняющая и невытесняющая диспетчеризация
Невытесняющая диспетчеризация: процесс может выйти из состояния «Работа» только в трех случаях:
при вызове блокирующей системной функции (процесс переходит в состояние «Сон»);
при вызове системной функции Yield (процесс вытесняется в состояние «Готовность»);
при завершении процесса.
Вытесняющая диспетчеризация: добавляются еще два случая вытеснения:
по истечению кванта времени;
по активизации более приоритетного процесса.
Операционные системы. Управление процессами - 1
13
Особенности невытесняющей диспетчеризации
Основной недостаток: для эффективного распараллеливания процессов необходимо, чтобы программа каждого процесса достаточно часто вызывала блокирующие функции или Yield. То есть, работа системы зависит от качества прикладных программ.
Достоинство: более простая и экономная по ресурсам реализация, чем для вытесняющей диспетчеризации.
Области применения:
простые системы для слабых процессоров;
встроенные контроллеры, где набор запускаемых программ известен заранее и разрабатывается вместе с системой.
Операционные системы. Управление процессами - 1
14
Понятие реентерабельной функции
Функция называется реентерабельной (повторно-входимой), если возможен корректный вызов этой функции до того, как завершилось выполнение первого вызова.
Основные причины нереентерабельности:
для хранения параметров и локальных переменных функции при разных вызовах используются одни и те же ячейки памяти;
функция обращается к внешнему устройству и не завершается, пока не будет выполнена операция.
Операционные системы. Управление процессами - 1
15
Реентерабельность системных функций
При вытесняющей диспетчеризации: необходимо, чтобы все системные функции были реентерабельны, потому что переключение процессов может произойти, когда выполняется функция.
При невытесняющей диспетчеризации: достаточно, чтобы реентерабельны были блокирующие функции и функция Yield, т.к. переключение возможно только при их вызове.
Операционные системы. Управление процессами - 1
16
Дескриптор процесса
Дескриптор процесса – набор данных о процессе, которые могут понадобиться системе при различных состояниях процесса:
идентификатор процесса;
состояние процесса;
владелец процесса;
израсходованное общее и процессорное время;
приоритет;
ссылка на контекст процесса;
и др.
Массив дескрипторов всех имеющихся процессов образует таблицу процессов.
Операционные системы. Управление процессами - 1
17
Контекст процесса
Контекст процесса – набор данных, необходимых для возобновления работы процесса:
значения всех регистров (включая счетчик команд);
области памяти процесса (код программы, переменные, стеки);
список открытых файлов и их состояние;
значения системных переменных (текущий каталог, код последней ошибки и т.п.);
и др.
Смена текущего процесса есть переключение контекста:
сохраняется контекст прежнего текущего процесса;
загружается ранее сохраненный контекст нового текущего процесса.
Операционные системы. Управление процессами - 1
18
Простая круговая диспетчеризация
Все активные (не заблокированные) процессы поочередно получают квант процессорного времени для работы.
Операционные системы. Управление процессами - 1
19
Фоново-оперативная диспетчеризация
Процесс переднего плана:
как только активизируется, сразу получает процессор;
как правило, в качестве переднего плана выбирается процесс, требующий очень мало процессорного времени (например, печать).
Фоновый процесс:
вытесняется при активизации процесса переднего плана;
работает только тогда, когда процесс переднего плана спит.
Операционные системы. Управление процессами - 1
20
Приоритетная диспетчеризация
Каждому процессу назначается уровень приоритета.
Процессы с низким приоритетом могут работать только тогда, когда все процессы с более высоким приоритетом спят.
Операционные системы. Управление процессами - 1
