Управление процессами. Планирование и диспетчеризация процессов
Ключевые термины
Блок управления процессом (Process Control Block – PCB) – системная структура данных, используемая ОС для управления процессом.
Готовый к выполнению (ready) – Состояние процесса, при котором он ожидает получения ресурсов процессора для его исполнения.
Диспетчеризация – поочередное выделение процессам планировщиком операционной системы квантов процессорного времени.
Долговременный планировщик (планировщик заданий) - планировщик ОС, определяющий, какие процессы должны быть перемещены в очередь готовых процессов.
Допущен (admitted) - статус процесса, который он получает от ОС после его допуска в систему (включения в очередь всех процессов).
Завершен (terminated) – состояние процесса, при котором исполнение его программы завершено.
Запись активации ( другие названия: activation record, стековый фрейм - stack frame, область локальных данных - local data area) – область памяти в стеке, в которой хранятся локальные данные текущего поколения (запуска) процедуры.
Исполняемый (running) - Состояние процесса, при котором исполняются его команды на процессоре или процессорах компьютерной системы под управлением ОС.
Каскадное уничтожение процессов - групповое уничтожение процессов в результате рекурсивного применения правила автоматического уничтожения дочерних процессов при завершении или уничтожении процесса-родителя.
Кратковременный планировщик (планировщик процессора) – планировщик ОС, определяющий, какие процессы должны быть выполнены следующими и каким процессам должен быть предоставлен процессор.
Новый (new) - Состояние процесса, при котором он создан операционной системой, но еще не начал выполняться.
Ожидающий (waiting) – состояние процесса, при котором он ожидает наступления некоторого события, например, завершения ввода-вывода. В состоянии ожидания процесс не занимает процессор.
Ориентированный на ввод-вывод (I/O-bound) – процесс, который тратит больше времени на ввод-вывод, чем на вычисления.
Ориентированный на использование процессора (CPU-bound) – процесс, который тратит основное время на вычисления.
Очереди процессов, ожидающих ввода-вывода (device queues) – множества процессов, ожидающих результата работы устройств ввода-вывода (для каждого устройства организуется своя очередь).
Очередь готовых процессов (ready queue) – очередь, содержащая множество всех процессов, находящихся в основной памяти и готовых к выполнению.
Очередь заданий (job queue) – очередь, содержащая множество всех процессов в системе.
Переключение контекста (context switch) – действия ОС при переключении с одного процесса на другой по сохранению состояния старого процесса и загрузки сохраненного состояния для нового процесса.
Планировщик (scheduler) - компонента ОС, планирующая и осуществляющая перевод процессов из состояния готовности в состояние выполнения.
Планировщик откачки и подкачки процессов – планировщик ОС, определяющий, какие пользовательские процессы должны быть подкачаны в память или откачаны на диск.
Поток управления (control flow) – последовательность выполняемых процессом команд.
Процесс (process)– программа пользователя при ее выполнении.
Процесс-демон - процесс, постоянно находящийся в системе до ее перезапуска.
Секция данных ( data section ) – статическая (постоянно выделенная, неизменного размера) область основной памяти, выделяемая операционной системой процессу, в которой хранятся его глобальные переменные, массивы, структуры, объекты.
Стек (stack) – резидентная область основной памяти, выделяемая операционной системой при создании процесса, в которой хранятся локальные данные процедур процесса, их параметры (аргументы) и связующая информация между ними, необходимая для организации вычислений.
Степень (коэффициент) мультипрограммирования – число процессов, которое обслуживает система в единицу времени.
Счетчик команд (program counter - PC) – адрес текущей выполняемой команды процесса; обычно хранится в специальном системном регистре аппаратуры.
Краткие итоги
Процесс – программа пользователя при ее выполнении. Различаются пакетные и интерактивные процессы. Процесс включает счетчик команд, стек и секцию данных. Процесс может находиться в следующих состояниях: новый, готовый к выполнению, ожидающий, исполняемый, завершенный.
Для управления процессом ОС создает блок управления процессом (PCB), содержащий состояние процессора, счетчик команд, регистры процессора, информацию для его диспетчеризации, информацию для управления памятью, статистику, информацию о состоянии ввода-вывода. PCB используется для сохранения и восстановления этой информации о процессах при переключении с одного процесса на другой.
Для управления процессами ОС использует следующие очереди: очередь заданий (всех процессов в системе), очередь готовых к выполнению процессов, очереди (к каждому устройству) процессов, ожидающих ввода-вывода.
Планировщики ОС планируют поочередное выделение процессам квантов процессорного времени. Долговременный планировщик определяет, какие процессы должны быть перемещены в очередь готовых процессов. Кратковременный планировщик определяет, какие процессы должны быть выполнены следующими на процессорах компьютерной системы. Планировщик откачки и подкачки определяет, какие процессы должны быть откачаны на диск или подкачаны в память. Кратковременный планировщик вызывается чаще всего и должен быть максимально эффективным. Долговременный, вызываемый реже, может быть относительно медленным. Именно долговременный планировщик определяет коэффициент мультипрограммирования.
По их поведению процессы можно классифицировать как ориентированные на ввод-вывод и ориентированные на вычисления (использование процессора).
Переключение контекста (время, расходуемое ОС при переключении с одного процесса на другой) относится к накладным расходам системы. Оно зависит от аппаратной поддержки.
При создании процессов процессы-родители создают дочерние процессы, которые затем создают свои дочерние процессы, и т.д. В результате формируется дерево процессов в системе. При создании процесса процесс-родитель и дочерний процесс могут разделять все ресурсы, разделять подмножество ресурсов или не иметь общих ресурсов. Процесс-родитель может исполняться совместно с дочерним процессом или ожидать завершения дочернего процесса. При создании дочернего процесса может создаваться новое адресное пространство, копируемое с процесса-родителя; облегченный дочерний процесс работает в том же адресном пространстве, что и процесс-родитель. В системе UNIX эти действия реализуются системными вызовами fork и exec.
Уничтожение процесса происходит, когда его программа завершается системным вызовом exit, либо он как дочерний процесс автоматически уничтожается при завершении или уничтожении процесса-родителя (каскадное уничтожение процессов). Дочерний процесс может быть уничтожен, если он превысил выделенные ему ресурсы, превысил свой квант времени, либо его выполнение больше не требуется.
Набор для практики
Вопросы
- Что такое процесс?
- Что такое пакетный процесс?
- Что такое интерактивный процесс?
- Что такое счетчик команд процесса?
- Что такое стек процесса?
- Что такое секция данных процесса?
- В каких состояниях может находится процесс?
- Дайте определение состояния новый.
- Дайте определение состояния готовый к выполнению.
- Дайте определение состояния выполняемый.
- Дайте определение состояния ожидающий.
- Дайте определение состояния завершенный.
- Что такое блок управления процессом и какая информация хранится в нем?
- Как используется блок управления процессом при переключении с одного процесса на другой?
- Какие очереди использует ОС для управления процессами?
- Что такое очередь заданий?
- Что такое очередь готовых процессов?
- Что такое очереди на ввод-вывод?
- Что такое планировщик?
- Какие функции выполняет долговременный планировщик?
- Какие функции выполняет кратковременный планировщик?
- Какие функции выполняет планировщик откачки и подкачки?
- Какой из планировщиков определяет степень мультипрограммирования ОС?
- Как можно классифицировать процессы, с точки зрения выполнения ими вычислений на процессоре и ввода-вывода?
- Что такое переключение контекста?
- Как происходит создание процесса?
- Что такое дерево процессов?
- Какими способами может быть организовано разделение ресурсов процессом-родителем и дочерним процессом?
- Каким образом может быть организовано исполнение родительского и дочернего процессов?
- Какое адресное пространство используют родительский и дочерний процессы?
- Что такое облегченный процесс?
- Какие системные вызовы используются в UNIX при создании процессов?
- Из каких основных процессов состоит дерево процессов в системе UNIX?
- Как и в каких случаях происходит уничтожение процесса?
- Что такое каскадное уничтожение процессов?
Упражнения
- Реализуйте представление данных о состоянии процесса и алгоритмы переключения процесса из одного состояния в другое в типовых ситуациях (диаграмму состояний процесса).
- Реализуйте блок управления процессом и основные операции над ним.
- Реализуйте алгоритм переключения контекста.
- Реализуйте системные очереди и основные операции над ними.
- Предложите и реализуйте стратегию выбора из системных очередей долговременным планировщиком процесса, который должен быть перемещен в очередь готовых процессов.
- Предложите и реализуйте стратегию выбора кратковременным планировщиком процесса, которому должен быть в данный момент предоставлен квант процессорного времени.
- Реализуйте алгоритм создания процесса – его PCB, стека и статической области данных.
- Запустите систему UNIX (Linux) и исследуйте информацию, выдаваемую на терминал, о процессах, создаваемых операционной системой при ее запуске.
- Реализуйте алгоритм уничтожения процесса.
- Реализуйте алгоритм каскадного уничтожения процессов.
Темы для курсовых работ, рефератов, эссе
- Понятие процесса, виды процессов и его состояния (реферат).
- Реализация системных структур ОС для управления процессами (блок управления процессом, системные очереди) и операций над ними (курсовая работа).
- Реализация алгоритма переключения контекста (курсовая работа).
- Реализация стратегий кратковременного и долговременного планировщиков ОС (курсовая работа).
- Реализация алгоритмов создания и уничтожения процессов (курсовая работа).
- Обзор подходов к созданию дочерних процессов и разделению ресурсов дочерним и родительским процессами в операционных системах (реферат).