Управление процессами. Планирование и диспетчеризация процессов
Презентацию к данной лекции Вы можете скачать здесь.
Введение
Начиная с данной лекции, в курсе более подробно рассматриваются все ключевые концепции и задачи ОС и используемые для их реализации алгоритмы и структуры данных. Первая концепция, подробно рассматриваемая в данной и следующей лекциях, - концепция процесса и управления процессами. Рассматриваются следующие вопросы:
- понятие процесса;
- cостояния процесса;
- блок управления процессом;
- диспетчеризация процессов;
- операции над процессами.
Понятие процесса
Процесс (process) это программа пользователя при ее выполнении. При своей работе операционная системы исполняет множество классов программ: пакетные задания; пользовательские программы в режиме разделения времени; системные программы и процессы. Имеется несколько схожих терминов, характеризующих пользовательские программы: процесс (process), задание (job), задача (task) Однако не будем здесь преувеличивать различие между ними: для лучшего понимания специфики процессов и управления ими в ОС, мы можем считать приведенные термины синонимами, как и считается во многих учебниках по ОС.
Важная особенность процесса: это единица вычислений, которая должна выполняться последовательно, т.е. каждый процесс имеет свой последовательный поток управления (control flow) – последовательность выполняемых процессом команд. Многие большие задачи успешно решаются путем параллельного выполнения процессов, но об этом речь пойдет немного позже.
Процесс при его создании и управлении им операционной системой включает следующую основную информацию:
- Счетчик команд (program counter - PC) – адрес текущей выполняемой команды процесса; обычно хранится в специальном системном регистре аппаратуры;
- Стек (stack) – резидентная область основной памяти, выделяемая операционной системой при создании процесса, в которой хранятся локальные данные процедур процесса, их параметры (аргументы) и связующая информация между ними, необходимая для организации вычислений. При запуске очередной процедуры в стеке отводится запись активации (activation record),называемая также стековым фреймом (stack frame) и областью локальных данных (local data area) для хранения локальных данных текущего поколения (запуска) процедуры. По окончании ее выполнения запись активации удаляется из стека;
Секция данных ( data section ) – статическая (постоянно выделенная, неизменного размера) область основной памяти, выделяемая операционной системой процессу, в которой хранятся его глобальные переменные, массивы, структуры, объекты.
Исполняемый код (команды) процесса первоначально хранится во вторичной памяти (на диске) и загружается в основную память полностью или частично при обращении к нему.
Состояния процесса
При исполнении процесс может изменять свое состояние следующим образом:
Новый (new):Процесс создается операционной системой, но еще не начал выполняться.
Исполняемый (running):Исполняются команды процесса на процессоре или процессорах компьютерной системы под управлением ОС.
Ожидающий (waiting):Процесс ожидает наступления некоторого события, например, завершения ввода-вывода. В состоянии ожидания процесс не занимает процессор.
Готовый к выполнению (ready):Процесс ожидает получения ресурсов процессора для его исполнения. В состояние готовности к выполнению процесс попадает обычно либо при его создании, либо после завершения ввода-вывода (из состояния ожидания).
Завершенный (terminated):Исполнение процесса завершено.
Диаграмма состояний процесса представлена на рис. 8.1.
Как видно из схемы, новый процесс, созданный в системе, проходит стадию допущен (admitted) – включается операционной системой в очередь всех процессов в системе, после чего ОС переводит его в состояние готовности к выполнению. Отметим сразу, что очередь готовых к выполнению процессов – одна из наиболее часто используемых системных структур для управления процессами. Из состояния готовности в состояние выполнения процесс переводится планировщиком ОС в результате диспетчеризации – выделения кванта процессорного времени. При выполнении процесс может быть прерван (по таймеру, в результате ошибки и т.п.), а после обработки прерывания операционной системой переходит снова в состояние готовности к выполнению. Если в процессе выполняется синхронный ввод-вывод, либо процесс должен ожидать наступления некоторого события (например, определенного момента времени), процесс переходит в состояние ожидания. При завершении ввода-вывода или при наступлении ожидаемого события процесс не получает сразу же квант процессорного времени, а переходит в состояние готовности к выполнению. Процесс переходит в завершенное состояние при завершении работы программы процесса - например, в результате системного вызова exit(c), где c – код завершения. Если c = 0,процесс считается благополучно завершенным.
Блок управления процессом
Блок управления процессом (Process Control Block – PCB) – системная структура данных, используемая ОС для управления процессом, содержащая следующую информацию, ассоциируемую с каждым процессом:
- Состояние процесса
- Текущее значение счетчика команд (используется при продолжении выполнения процесса);
- Значения регистров процессора (также используются при возобновлении процесса);
- Информация для диспетчеризации процессора (указатель на стек процесса, номер процесса);
- Информация для управления памятью (границы области памяти процесса);
- Статистическая информация (общее время выполнения процесса, оставшееся из заявленного время выполнения, суммарное время ввода-вывода и т.д.)
- Информация о состоянии ввода-вывода (список открытых файлов).
Структура блока управления процессом изображена на рис. 8.2.