Процесс (Process) и поток (Thread) являются единицами работы в операционной системе.
¢ Процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного – процессорного времени. Процессор распределяется операционной системой между другими единицами выполнения – потоками.
¢ В простейшем случае процесс состоит из одного потока. Если ОС не поддерживает потоков, то поведение потока полностью поглощается поведением процесса.
Элементы процесса
¢ Идентификатор
¢ Состояние
¢ Приоритет
¢ Счётчик команд
¢ Таблицы распределения памяти
¢ Контекст
¢ Статус операций ввода-вывода
¢ Статистические данные
Блок Управления Процессом (PCB – Process Control Block)
¢ Содержит элементы процесса
¢ Создаётся и управляется операционной системой
¢ Единая структура для поддержки различными процессами.
PCB. Обобщённая схема
PCB в семействе NT систем.
EPROCESS
KPROCESS
PEB – Process Environment Block
Создание процесса
Создать процесс – это подготовить новый PCB.
¢ Порождение нового процесса другим
¢ Создание операционной системой процесса для работы служб
¢ Вход в систему в интерактивном режиме
¢ Новое пакетное задание
Создание процесса в NT системах
Завершение процессов
¢ Обычное завершение
¢ Превышение лимита времени
¢ Недостаток памяти
¢ Нарушение доступа к памяти
¢ Ошибка доступа к ресурсу
¢ Арифметическая ошибка
¢ Ошибка ввода-вывода
¢ Неверная команда
¢ Команда с недоступными привилегиями
¢ Неправильное использование данных
¢ Вмешательство ОС
¢ Завершение всех потоков (для многопоточных систем)
¢ Запрос со стороны другого процесса.
Состояния процесса. Модель с двумя состояниями
Очередь процессов
Состояния процесса. Модель с пятью состояниями
Состояния процесса.
Схема с одной очередью блокированных процессов
Схема с множеством очередей блокированных процессов
Приостановленные процессы
¢ Перемещение (Swap) процессов на диск для освобождения памяти под другие процессы
¢ Блокированное состояние становится приостановленным при переносе процесса на диск
¢ Новые состояния:
l Блокирован/приостановлен
l Готов/приостановлен
Диаграмма состояний процесса с одним приостановленным состоянием
Диаграмма состояний процесса с двумя приостановленным состоянием
API - Application Programming Interface управления процессами (POSIX)
POSIX 1003.1: fork(), exec(), kill()
Клонирование процесса
int pid;
switch (pid = fork())
{
case 0: /*Порождённый процесс*/
…
case -1: /*Ошибка создания процесса*/
default: /*Родительский процесс*/
}