Спонсор: Microsoft
Опубликован: 13.11.2010 | Уровень: для всех | Доступ: свободно | ВУЗ: Санкт-Петербургский государственный университет
Лекция 8:

Управление процессами. Планирование и диспетчеризация процессов

< Лекция 7 || Лекция 8: 1234 || Лекция 9 >
Аннотация: В лекции рассмотрены основные концепции управления процессами, планирования и диспетчеризации процессов.
Ключевые слова: Ключевые концепции, блок управления процессом, программа, системные программы, ПО, единица, создание процесса, глобальные переменные, основная память, процессор, исполнение, диаграмма состояний, очередь, синхронный ввод/вывод, квант процессорного времени, код завершения, структура данных, состояние процесса, счетчик команд, стек процесса, управление памятью, статистическая информация, операционная система, PCB, устройство ввода/вывода, управление процессами, завершение процесса, ссылка, место, запрос, прерывание, дочерний процесс, Unix, fork, пространство, периодичность, пользовательский процесс, память, диск, планировщик , расходы, переключение контекста, overhead, стек, оптимизация, разделение ресурсов, адресное пространство процесса, системный вызов, виртуальное, адресное пространство, exec, execv, дерево, запуск системы, инициализация, страничная организация, передача данных, abort, множества, информация, адрес, интерактивный процесс, очередь заданий, мультипрограммирование, подмножество

Презентацию к данной лекции Вы можете скачать здесь.

Введение

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

  • понятие процесса;
  • 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.

Диаграмма состояний процесса.

увеличить изображение
Рис. 8.1. Диаграмма состояний процесса.

Как видно из схемы, новый процесс, созданный в системе, проходит стадию допущен (admitted) – включается операционной системой в очередь всех процессов в системе, после чего ОС переводит его в состояние готовности к выполнению. Отметим сразу, что очередь готовых к выполнению процессов – одна из наиболее часто используемых системных структур для управления процессами. Из состояния готовности в состояние выполнения процесс переводится планировщиком ОС в результате диспетчеризации – выделения кванта процессорного времени. При выполнении процесс может быть прерван (по таймеру, в результате ошибки и т.п.), а после обработки прерывания операционной системой переходит снова в состояние готовности к выполнению. Если в процессе выполняется синхронный ввод-вывод, либо процесс должен ожидать наступления некоторого события (например, определенного момента времени), процесс переходит в состояние ожидания. При завершении ввода-вывода или при наступлении ожидаемого события процесс не получает сразу же квант процессорного времени, а переходит в состояние готовности к выполнению. Процесс переходит в завершенное состояние при завершении работы программы процесса - например, в результате системного вызова exit(c), где c код завершения. Если c = 0,процесс считается благополучно завершенным.

Блок управления процессом

Блок управления процессом (Process Control Block – PCB) – системная структура данных, используемая ОС для управления процессом, содержащая следующую информацию, ассоциируемую с каждым процессом:

  • Состояние процесса
  • Текущее значение счетчика команд (используется при продолжении выполнения процесса);
  • Значения регистров процессора (также используются при возобновлении процесса);
  • Информация для диспетчеризации процессора (указатель на стек процесса, номер процесса);
  • Информация для управления памятью (границы области памяти процесса);
  • Статистическая информация (общее время выполнения процесса, оставшееся из заявленного время выполнения, суммарное время ввода-вывода и т.д.)
  • Информация о состоянии ввода-вывода (список открытых файлов).

Структура блока управления процессом изображена на рис. 8.2.

Блок управления процессом (PCB).

Рис. 8.2. Блок управления процессом (PCB).

< Лекция 7 || Лекция 8: 1234 || Лекция 9 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков