Состояния процесса. При использовании такой абстракции все, что выполняется в вычислительных системах (не только программы пользователей
При использовании такой абстракции все, что выполняется в вычислительных системах (не только программы пользователей, но и, возможно, определенные части операционных систем), организовано как набор процессов. Понятно, что реально на однопроцессорной компьютерной системе в каждый момент времени может исполняться только один процесс. Для мультипрограммных вычислительных систем псевдопараллельная обработка нескольких процессов достигается с помощью переключения процессора с одного процесса на другой. Пока один процесс выполняется, остальные ждут своей очереди на получение процессора.
Как видим, каждый процесс может находиться как минимум в двух состояниях: процесс исполняется и процесс не исполняется. Диаграмма состояний процесса в такой модели изображена на рисунке 5.1.
Рис 5.1. Простейшая диаграмма состояний процесса.
Процесс, находящийся в состоянии процесс исполняется, может через некоторое время завершиться или быть приостановлен операционной системой и снова переведен в состояние процесс не исполняется. Приостановка процесса происходит по одной из двух причин: для его дальнейшей работы потребовалось возникновение какого-либо события (например, завершения операции ввода-вывода) или истек временной интервал, отведенный операционной системой для работы этого процесса. После этого операционная система по определенному алгоритму выбирает для исполнения один из процессов, находящихся в состоянии процесс не исполняется, и переводит его в состояние процесс исполняется. Новый процесс, появляющийся в системе, первоначально помещается в состояние процесс не исполняется.
Такая модель является очень грубой. Она не учитывает, в частности то, что процесс, выбранный для исполнения, может все еще ждать события, из-за которого он был приостановлен, и реально к выполнению не готов. Для того чтобы избежать такой ситуации, разобьем состояние «процесс не исполняется» на два новых состояния: «готовность» и «ожидание» (рисунок 5.2).
Рис. 5.2. Более подробная диаграмма состояний процесса.
Всякий новый процесс, появляющийся в системе, попадает в состояние готовность. Операционная система, пользуясь каким-либо алгоритмом планирования, выбирает один из готовых процессов и переводит его в состояние исполнение. В состоянии исполнение происходит непосредственное выполнение программного кода процесса. Покинуть это состояние процесс может по трем причинам:
либо он заканчивает свою деятельность;
либо он не может продолжать свою работу, пока не произойдет некоторое событие, и операционная система переводит его в состояние ожидание;
либо в результате возникновения прерывания в вычислительной системе (например, прерывания от таймера по истечении дозволенного времени выполнения) его возвращают в состояние готовность.
Наша новая модель хорошо описывает поведение процессов во время их жизни, но она не акцентирует внимания на появлении процесса в системе и его исчезновении из системы. Для полноты картины нам необходимо ввести еще два состояния процессов: рождение и закончил исполнение (см. рисунок 5.3).
Рис. 5.3. Диаграмма состояний процесса, принятая в курсе.
Теперь для появления в вычислительной системе процесс должен пройти через состояние рождение. При рождении процесс получает в свое распоряжение адресное пространство, в которое загружается программный код процесса; ему выделяются стек и системные ресурсы; устанавливается начальное значение программного счетчика этого процесса и т. д. Родившийся процесс переводится в состояние готовность. При завершении своей деятельности процесс из состояния исполнение попадает в состояние закончил исполнение.
Т.о., каждый конкретный процесс в любой момент времени может находиться в одном из нескольких состояний. Считается, что активный процесс находиться в состоянии выполнения, а процесс, ожидающий передачи управления - в состоянии готовности. Если процесс не может продолжить работу до наступления некоторого события, то говорят, что он заблокирован. Процесс может быть заблокирован по нескольким причинам, в частности он может ожидать:
- завершение операций в/в;
- открытия семафора;
- окончания работы другого процесса (например, для использования информации, подготовленной этим процессом);
- завершения операций страничного обмена (в машинах со страничной организацией памяти) и др.
Во многих ОС предусмотрено еще одно состояние, называемое состоянием задержки. Задержанный процесс не подвергается диспетчерской обработке, даже если он готов к выполнению.
В конкретных операционных системах состояния процесса могут быть еще более детализированы, могут появиться некоторые новые варианты переходов из состояния в состояние. Так, например, модель состояний процессов для операционной системы Windows NT содержит 7 различных состояний, а для операционной системы UNIX — 9. Тем не менее, в принципе, все операционные системы подчиняются изложенной выше модели.
Дата добавления: 2015-10-21; просмотров: 1160;