Процессы
Основой любой ОС является процесс. Понятие процесса можно трактовать как контейнер ресурсов (выделенная для программ память, файлы, устройства ввода/вывода), а так же как последовательность исполняемых команд. В простейших системах можно реализовать такую ситуацию, при которой все необходимые процессы будут присутствовать сразу при загрузке. В универсальных системах необходим механизм создания и завершения процессов по необходимости. Процессы создаются в результате трех основных событий:
1) запуск системы;
2) выполнение поступившего от процесса системного вызова на создание другого процесса;
3) запрос пользователя на создание процесса.
При загрузке системы создается один главный поток, который, по мере необходимости, создает высокоприоритетные процессы (интерфейс, менеджер памяти, планировщик) и низкоприоритетные процессы, которые активизируются при определенных событиях (спулер печати). Создание новых процессов полезно в тех случаях, когда задачу проще всего разбить на несколько взаимодействующих и независимых процессов. Завершение процесса происходит по одной из следующих причин:
|
|
1) обычный выход - процесс завершается преднамеренно, по мере выполнения своей работы;
2) выход по ошибке - причиной преднамеренного завершения процесса может стать неустранимая ошибка, обработанная самим процессом;
3) выход по неисправимой ошибке - непреднамеренный выход, связанный с ошибкой в коде программы (деление на нуль);
4) уничтожение другим процессом.
Поскольку процесс является динамической системой, он может находится в одном из нескольких состояний.
1 - запуск процесса. Процессу выделяются все необходимые ресурсы.
2 - готовность. Процессу выделены все необходимые ресурсы, кроме процессорного времени.
3 - выполнение. Процессу выделено процессорное время.
4 - блокировка. Процесс ожидает какое-либо внешнее событие (прерывание, сигнал синхронизации и т.д.).
5 - завершение. Происходит преднамеренное завершение процесса с возвратом всех ресурсов.
Для реализации модели процессов ОС содержит таблицу с одним элементом для каждого процесса. Этот элемент называется блок управления процессом, PCB - Process Control Block, либо фрейм-процессом. Он содержит в себе информацию о состоянии процесса, значения регистров, счетчик команд, указатели стеков, распределение памяти, состояние файлов и устройств ввода/вывода и всю остальную информацию, необходимую для переключения процесса в состояние готовности или блокировки и для последующего запуска.