Состояния процессов. Состояния процессов
Скачать 36.16 Kb.
|
Состояния процессов Различают следующие состояния процессов: новый (только что создан); работающий (в этот конкретный момент, используемый ЦП); готовый к работе (процесс временно приостановлен, чтобы позволить выполниться другому процессу); ожидающий или заблокированный (процесс не может быть запущен прежде, чем произойдет некоторое внешнее событие, например операция ввода-вывода). Переход от одного состояния в другое не может осуществляться произвольным образом. На рисунке 1 показана типовая диаграмма перехода процессов. Рис. 1. Типовая диаграмма перехода процессов. Создание процессов В универсальных системах необходим способ завершения и создания процессов по мере необходимости. Основные события, приводящие к созданию процессов: инициализация системы, выполнение изданного работающим процессом системного запроса на создание процесса; запрос пользователя на создание процесса; инициирование пакетного задания. Обычно при запуске ОС создаются несколько процессов. Некоторые из них являются высокоприоритетными процессами, т.е. обеспечивающими взаимодействие с пользователями и выполняющие заданную работу. Остальные процессы являются фоновыми, они не связаны с конкретными пользователями, но выполняют особые функции Например: один фоновый процесс может быть предназначен для обработки приходящей на компьютер почты, активизируясь по мере появления писем. Другой фоновый процесс может обрабатывать запросы к web-страницам, расположенным на компьютере, и активизироваться для обслуживания полученного запроса. Фоновые процессы называются демонами. В больших системах насчитывается десятки демонов. Для вывода запущенных процессов используется программа PS. В Windows–Ctrl-Alt-Del. Процессы могут создаваться «по просьбе» текущего процесса. Создание нового процесса особенно полезно в тех случаях, когда выполняемую задачу проще сформировать как набор связанных, но независимых взаимодействующих процессов. Если необходимо организовать выборку большого количества данных из сети для дальнейшей обработки, удобно создать один процесс для выборки данных и размещения их в буфере совместно используемом, в то время как второй процесс будет считывать данные из буфера и обрабатывать их. В интерактивных системах пользователь может запустить программу, набрав на клавиатуре команду или щелкнув по пиктограмме. В результате будет создано окно и запущена в нем программа. Пользователь может открыть несколько окон, каждому из которых будет соответствовать свой процесс. Пользователь может переключаться между окнами и взаимодействовать с процессом, например, вводя данные. Системы пакетной обработки. Пользователь посылает пакетное задание, а ОС создает новый процесс и запускает следующее задание из очереди в тот момент, когда освобождаются необходимые ресурсы. Во всех этих случаях новый процесс формируется одинаково: текущий процесс выполняет системный запрос на создание нового процесса. Завершение процессов Завершение процессов осуществляется чаще всего благодаря одному из следующих событий: Обычный выход (преднамеренно). По мере выполнения своей работы процессы завершаются. После окончания компиляции программы компилятор выполняет системный запрос, чтобы сообщить ОС об окончании работы. Программы, рассчитанные на работу с экраном, также поддерживают преднамеренное завершение. В текстовых редакторах, браузерах и других программах такого типа обычно есть кнопка или пункт меню, щелкнув по которому можно удалить все временные файлы, открытые процессом и, затем, завершить процесс. Выход по ошибке (преднамеренно). Например, по неустранимой ошибке. Если пользователь набрал команду для компиляции программы, а соответствующего файла не существует, компилятор просто закончит свою работу. Интерактивные процессы, рассчитанные на работу с экраном, обычно не завершают работу при получении неверных параметров, вместо этого выводят диалоговое окно, прося ввести правильные параметры. Выход по неисправимой ошибке (непреднамеренно). Чаще всего связан с ошибкой в самой программе. Например: обращение к несуществующей области памяти и деление на нуль. Процесс прерывается, а не завершается. Уничтожение другим процессом (непреднамеренно). Причиной завершения процесса может быть выполнение другим процессом системного запроса на уничтожение процесса. В обоих случаях «киллер» должен обладать соответствующими правами по отношению к «убиваемому» процессу. |