Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ОС.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
4.43 Mб
Скачать

Завершение процесса

Процесс завершается в результате появления следующих событий:

1) обычный выход (преднамеренно);

2) выход по ошибке (преднамеренно);

3) выход по неисправимой ошибке (непреднамеренно);

4) уничтожение другим процессом (непреднамеренно).

В основном процессы завершаются по мере выполнения своей работы. После окончания программы выполняется системный запрос, чтобы сообщить операционной системе об окончании работы. В UNIX этот сис­темный запрос — exit, а в Windows — ExitProcess.

Второй причиной завершения процесса может стать неустранимая ошибка. Например, если пользователь набрал на клавиатуре команду неправильную команду.

Третьей причиной завершения процесса является ошибка, вызванная самим процессом, чаще всего связанная с ошибкой в программе.

Четвертой причиной завершения процесса может служить выполнение другим процессом системного запроса на уничтожение процесса. В UNIX такой системный запрос — kill, а соответствующая функция Win32 — TernminateProcess.

По завершении работы процесса (добровольно либо принудительно со стороны операционной системы), ОС свобождает память процесса и другие занимаемые им ресурсы, удаляет ин­формацию о нем из таблицы процессов, предоставляя память процесса и ресурсы для других процессов.

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

Процесс может находиться в одном из трех состояний:

  • Очередь готовых процессов

  • Выполнение процесса

  • Ожидание

Состояние процесса можно представить в виде:

Выполнение – это активное состояние процесса, в это время происходит счет процесса.

Блокирование – это пассивное состояние процесса. Процесс ожидает завершения некоторого события, например, окончания операции ввода-вывода.

Готовность – это пассивное состояние процесса. Процессу выделяются ресурсы, разделы памяти, дисковое пространство и др. Процесс ожидает освобождения процессора.

Переходы процесса на выполнение и вытеснение процесса вызываются частью операционной системы, называемой пла­нировщиком. Вытеснение происходит, если планировщик предо­ставил процессор следующему процессу. Переход на выполнение происходит, когда все осталь­ные процессы уже исчерпали свое процессорное время, и процессор снова воз­вращается к первому процессу.

Переход из сосотояния блокировки в состояние готовности происходит с появлением внешнего события, ожидавшегося про­цессом (например, подкачка данных из ВЗУ). Если в этот момент не запущен какой-либо другой процесс, то освободившийся из состояния блокировки процесс запускается. В противном случае процессу придется некоторое время находиться в состоянии готовности, пока не освободится процессор.

В однопроцессорных системах в состоянии готовности или ожидания может одновременно находиться несколько процессов, а в состоянии выполнения – один. Эти процессы образуют очереди путем объединения в списки блоки управления про­цессами (дескрипторов процессов). Каждый дескриптор содержит дополнительную ссылку на соседа по очереди. Такая организация позволяет легко переупорядочивать, включать и исключать процессы, переводить их из одного состояния в другое. На рисунке ___ показана очередь процессов, установленных в порядке A, B, D, E, C.

Рисунок 2.2 - Очередь процессов

Потоки

В обычных операционных системах каждому процессу соответствует адресное пространство и одиночный управляющий поток. Фактически это и определяет процесс. Тем не менее часто встречаются ситуации, в которых предпочтительно иметь несколько квазипараллельных потоков в одном адресном про­странстве, как если бы они были различными процессами (однако разделяющим одно адресное пространство).