русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Более полное и строгое определение.


Дата добавления: 2013-12-23; просмотров: 1754; Нарушение авторских прав


Понятие процесса характеризует некоторую совокупность:

1. набора исполняющихся команд,

2. ассоциированных с ними ресурсов (память, стеки, файлы, устройства ввода/вывода и т.д.)

3. и текущего момента его выполнения (значения регистров, программного счетчика, состояние стека и значения переменых),

находящуюся под управлением операционной системы.

Подсистема управления процессами(менеджер процессов) отвечает за обеспечение процессов необходимыми ресурсами.

Она:

- планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами;

- занимается созданием и уничтожением процессов,

- обеспечивает процессы другими необходимыми системными ресурсами,

- поддерживает взаимодействие между процессами.

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

ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором.

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

ГОТОВНОСТЬ - также пассивное состояние процесса, но он заблокирован в связи с внешним по отношению к нему обстоятельством: процесс имеет все требуемые для него ресурсы, готов выполняться, но, например, процессор занят выполнением другого процесса.



В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной ОС. Типичный граф состояний процесса в многозадачной ОС показан на рисунке

 

Поток завершен или ошибка

 
 

 


Поток выбран на Поток ожидает события

выполнение Поток

вытеснен

       
   


Событие

произошло

Созданный

поток

Граф состояний потока в многозадачной среде

 

Жизненный цикл вновь созданного процесса (Рождение) начинается с состояния Готовность, он готов к выполнению и стоит в очереди к процессору. Когда в результате планирования менеджер процессов принимает решение об активизации данного процесса, он переходит в состояние Выполнение. В этом состоянии происходит непосредственное выполнение программного кода процесса. Он находится в нем до тех пор, пока:

1) либо он сам освободит процессор:

а) после завершения или возникновения какой-либо ошибки

б) перейдя в состояние Ожидание какого-нибудь события,

 

2) или будет принудительно «вытеснен» из процессора операционной системой в состояние Готовность, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени.

3) ОС прекращает свою деятельность

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

В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов. Эти процессы образуют очереди соответственно ожидающих и готовых процессов.

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

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

Процесс не может перейти из одного состояния в другое самостоятельно. Изменением состояния процессов занимается операционная система, совершая операции над ними. Количество таких операций в нашей модели совпадает с количеством стрелок на диаграмме состояний. Удобно объединить их в три пары:

  • создание процесса – завершение процесса;
  • приостановка процесса (перевод из состояния Выполнение в состояние Готовность) – запуск процесса (перевод из Готовность в Выполнение);
  • блокирование процесса (перевод из Выполнение в Ожидание) – разблокирование процесса (перевод из Ожидание в Готовность).

Операции создания и завершения процесса являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов, будь то запуск или блокировка, как правило, являются многоразовыми.

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

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

Рассмотрим подробнее, как операционная система выполняет операции над процессами.

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

Создать процесс - это значит:

1. создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст;

2. включить дескриптор нового процесса в очередь готовых процессов;

3. загрузить кодовый сегмент процесса в оперативную память или в область свопинга.

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

1) состоянием аппаратуры компьютера в момент прерывания процесса:

- значение счетчика команд;

- содержимое регистров общего назначения;

- режим работы процессора;

- флаги;

- маски прерываний;

2) значениями параметров ОС:

- ссылки на открытые файлы;

- данные о незавершенных операциях ввода-вывода;

- коды ошибок выполняемых данным процессом системных вызовов и т.д.

Эта информация называется контекстом процесса,т.е. это данные о состоянии операционной среды, необходимых для возобновления процесса.

Кроме этого, операционной системе для реализации планирования процессов требуется информация о самом процессе:

- идентификатор процесса;

- состояние процесса;

- степень привилегированности процесса (приоритет и права доступа);

- данные о расположении в памяти исполняемого модуля

- об идентификаторе пользователя, создавшего процесс;

- о родственных процессах;

- о событиях, осуществление которых ожидает данный процесс и другая информация.

Эту информацию называют дескриптором процесса.

Контекст и дескриптор процесса называют описателемпроцесса.

Дескриптор по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко доступна подсистеме планирования процессов.

Контекст содержит менее актуальную информацию и используется ОС только после того, как принято решение о возобновлении прерванного процесса.

 

Кратко опишем действия, которые производит операционная система при выполнении многоразовых операций над процессами. Более подробно эти действия будут рассмотрены далее в соответствующих лекциях.

Запуск процесса. Из числа процессов, находящихся в состоянии готовность, операционная система выбирает один процесс для последующего исполнения. Критерии и алгоритмы такого выбора будут подробно рассмотрены далее. Для избранного процесса операционная система обеспечивает наличие в оперативной памяти информации, необходимой для его дальнейшего выполнения. То, как она это делает, будет в деталях описано в лекциях по управлению памятью. Далее состояние процесса изменяется на исполнение, восстанавливаются значения регистров для данного процесса и управление передается команде, на которую указывает счетчик команд процесса. Все данные, необходимые для восстановления контекста, извлекаются из описателя процесса, над которым совершается операция.

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

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

Разблокирование процесса. После возникновения в системе какого-либо события операционной системе нужно точно определить, какое именно событие произошло. Затем операционная система проверяет, находился ли некоторый процесс в состоянии ожидание для данного события, и если находился, переводит его в состояние готовность, выполняя необходимые действия, связанные с наступлением события (инициализация операции ввода-вывода для очередного ожидающего процесса и т. п.). Эта операция, как и операция блокирования, будет подробно описана в лекции 13.

Переключение контекста

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

Давайте для примера упрощенно рассмотрим, как в реальности может протекать операция разблокирования процесса, ожидающего ввода-вывода (см. рис.). При исполнении процессором некоторого процесса (на рисунке – процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановки. Далее операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рисунке – процесс 2) и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рисунке был выбран разблокированный процесс). Как мы видим, в результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии исполнение.


Рис. Выполнение операции разблокирования процесса. Использование термина "код пользователя" не ограничивает общности рисунка только пользовательскими процессами

Для корректного переключения процессора с одного процесса на другой необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется вычислительной системой для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно колеблется в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие threads of execution (нити исполнения или просто нити).

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

На рисунке показан пример очереди готовых процессов. Заплани­рованный порядок выполнения их выглядит так: А, В, D, С.

 

 

 


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

 

Очередь процессов может быть организована:

- циклически;

- по правилу "первый пришел - первый обслужился" (FIFO) или по правилу;

- "последний пришел - первый обслужился" (LIFO).

- случайным образом и т.д.



<== предыдущая лекция | следующая лекция ==>
Архитектура Windows NT (самостоятельно) | Алгоритмы планирования процессов, основанные на квантовании


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.