Состояния процесса

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

Рисунок 5.1 - Диаграмма двух состояний процесса

 

Процесс, находящийся в состоянии «процесс исполняется», может через некоторое время завершиться или быть приостановлен операционной системой и снова переведен в состояние «процесс не исполняется». Приостановка процесса происходит по одной из двух причин: для его дальнейшей работы потребовалось возникновение какого-либо события (например, завершения операции ввода-вывода) или истек временной интервал, отведенный операционной системой для работы этого процесса. После этого операционная система по определенному алгоритму выбирает для исполнения один из процессов, находящихся в состоянии «процесс не исполняется», и переводит его в состояние «процесс исполняется». Новый процесс, появляющийся в системе, первоначально помещается в состояние «процесс не исполняется».

Такая модель является очень грубой. Она не учитывает, в частности то, что процесс, выбранный для исполнения, может все еще ждать события, из-за которого он был приостановлен, и реально к выполнению не готов. Для того чтобы избежать такой ситуации, разобьем состояние «процесс не исполняется» на два новых состояния: готовность и ожидание (см. рис. 5.2).

Рисунок 5.2 - Диаграмма трех состояний процесса

 

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

а) либо он заканчивает свою деятельность;

б) либо он не может продолжать свою работу, пока не произойдет некоторое событие, и операционная система переводит его в состояние «ожидание»;

в) либо в результате возникновения прерывания в КС (например, прерывания от таймера по истечении дозволенного времени выполнения) его возвращают в состояние «готовность».

Новая модель хорошо описывает поведение процессов во время их жизни, но она не акцентирует внимания на появлении процесса в системе и его исчезновении из системы. Для полноты картины необходимо ввести еще два дополнительных состояния процессов: рождение и закончил исполнение (рис.5.3).

Теперь для появления в КС процесс должен пройти через состояние «рождение». При рождении процесс получает в свое распоряжение адресное пространство, в которое загружается программный код процесса; ему выделяются стек и системные ресурсы; устанавливается начальное значение программного счетчика этого процесса и т.д. Родившийся процесс переводится в состояние «готовность». При завершении своей деятельности процесс из состояния «исполнение» попадает в состояние «закончил исполнение».

В конкретных операционных системах состояния процесса могут быть еще более детализированы, могут появиться некоторые новые варианты переходов из состояния в состояние. Так, например, модель состояний процессов для операционной системы Windows NT содержит 7 различных состояний, а для операционной системы UNIX – 9. Тем не менее, в принципе, все операционные системы подчиняются модели, изображенной на рис.5.3.

Рисунок 5.3 - Диаграмма пяти состояний процесса