Горнец Н.Н., Рощин А.Г. Организация ЭВМ и систем (2006) (1186251), страница 54
Текст из файла (страница 54)
Жизненный цикл процесса. Рассмотрим типовые этапы обработки процесса в системе, совокупность этих этапов будем называть жизненным циклом процесса в системе. Он содержит следу ющие этапы: образование (порождение) процесса; обработка (выполнение) процесса; ожидание (по тем или иным причинам) или постановка на выполнение; завершение процесса. Однако жизненные циклы процессов в реальных системах могут иметь свою, системно-ориентированную совокупность этапов.
Рассмотрим в качестве примера некоторую абстрактную ОС. Пусть имеется специальный буфер ввода процессов (БВП), т.е. пространство, в котором размещаются и хранятся сформированные процессы от момента их образования до момента начала выполнения. На данном этапе происходит формирование всех необходимых структур данных, соответствующих процессу. В частности, на этом этапе ОС формирует информацию о предварительно заказанных ресурсах данным процессом. Основная задача БВП вЂ” «подпитка» системы новыми процессами, готовыми к исполнению. После начала выполнения процесс попадает в буфер обрабатываемых процессов (БОП), в котором размещаются все процессы, находящиеся в системе при мультипрограммной обработке. Обобщенный жизненный цикл процесса можно представить в этом случае графом состояний.
Рассмотрим кратко переходы процесса из состояния в состояние (рис. 10.1). О. После формирования процесс поступает в очередь на начало обработки в ЦП (попадает в БВП). 1. В БВП выбирается наиболее приоритетный процесс для начала обработки в ЦП (попадает в БОП). 2. Процесс прекращает обработку в ЦП по причине ожидания операции ввода-вывода, поступает в очередь завершения операции обмена (БОП). 258 Рис. 10.!. Граф состояний процесса 3. Процесс прекрашает обработку в ЦП, но в любой момент может быть продолжен (например, истек квант времени ЦП, выделенный процессу). Поступает в очередь процессов, ожидающих продолжения выполнения ЦП (БОП). 4.
Наиболее приоритетный процесс продолжает выполнение в ЦП (БОП). 5. Операция обмена завершена, и процесс поступает в очередь ожидания продолжения выполнения в ЦП (БОП). б. Переход из очереди готовых к продолжению процессов в очередь процессов, ожидающих завершения обмена (например, ОС откачала содержимое адресного пространства процесса из ОЗУ во внешнюю память) (БОП). 7. Завершение процесса, освобождение системных ресурсов. Корректное завершение работы процесса, разгрузка информационных буферов, освобождение ресурсов (например, реальный вывод информации на устройство печати). Текушее состояние любого процесса из БОП изменяется во времени в зависимости от самого процесса и состояния ОС. С каждым из процессов из БОП система ассоциирует совокупность данных, характеризующих актуальное состояние процесса — контекст процесса. (В общем случае контекст процесса содержит информацию о текущем состоянии процесса, включая информацию о реЖимах работы процессора, содержимом регистровой памяти, используемой процессом, системной информации ОС, ассоциированной с данным процессом.) Процессы, находяшиеся в одном из состояний ожидания, в своих контекстах содержат всю информацию, необходимую для продолжения выполнения — состояние процесса в момент преРывания (копии регистров, режимы ОП, настройки аппарата виртуальной памяти и т.д.).
Соответственно при смене выполняемого Процесса ОС осуществляет «перенастройку» внутренних ресурсов ЧП, происходит смена контекстов выполняемых процессов. 259 Операционная система обеспечивает возможность корректн го взаимодействия процессов — от передачи сигнальных воздев ствий от процесса к процессу до организации корректной работ, с разделяемыми ресурсами. Контекст процесса может состоять из следующих составлях, щих: пользовательская — состояние программы как совокупности машинных команд и данных, размещенных в ОЗУ; системная — содержимое регистров и режимов работы процес сора, настройки аппарата защиты памяти, виртуальной памяти принадлежащие процессу ресурсы (как физические, так и вирту альные).
Типы процессов. Полновесные процессы — это процессы, выполняющиеся внутри защищенных участков памяти ОС, т.е. име ющие собственные виртуальные адресные пространства для статических и динамических данных. В мультипрограммной среде уп равление такими процессами тесно связано с управлением и защитой памяти, поэтому переключение процессора с выполнения одного процесса на другой является достаточно дорогой операцией. В дальнейшем под процессом будем подразумевать полновесный процесс. Пегковесные процессы, называемые еще нитяии или сопрограммами, не имеют собственных защищенных областей памяти. Они работают в мультипрограммном режиме одновременно с активировавшей их задачей и используют ее виртуальное адресное пространство, в котором им при создании выделяется участок памяти под динамические данные (программный стек), т.е.
они могут обладать собственными локальными данными. Нить описывается как обычная функция, которая может использовать статические данные программы. Для одних ОС можно сказать, что нити являются некоторым аналогом процесса, а в других — представляют собой части процессов. Таким образом, в любой ОС понятие «процесс» включает в себя: исполняемый программный код; собственное адресное пространство, представляющее собой совокупность виртуальных адресов, которые может использовать процесс; ресурсы системы, которые назначены процессу ОС; хотя бы одну выполняемую нить. При этом процесс может включать в себя понятие исполняемой нити, т.е.
однонитевую организацию «один процесс — одна нить». В данном случае понятие процесса связано с понятием отдельной и недоступной для других процессов виртуальной памяти С другой стороны, в процессе может несколько нитей, т.е. процесс может представлять собой многонитевую организацию. 260 Нить также включает в себя понятие контекста — это информация, которая необходима ОС для того, чтобы продолжить выполнение прерванной нити. Контекст нити содержит текущее со~таяние регистров, стеков и индивидуальной области памяти, которая используется подсистемами и библиотеками. В данном случае характеристики нити во многом аналогичны характеристикам процесса. С точки зрения процесса, нить можно определить как независимый поток управления, выполняемый в контексте процесса. При этом каждая нить, в свою очередь, имеет свой собственный контекст. Взаимодействие процессов.
Методы синхронизации. Процессы, выполнение которых хотя бы частично перекрывается по времени, называются параллельными. Они могут быть независимыми и взаимодействующими. Независимые процессы используют независимое множество ресурсов, и на результат работы такого процесса не влияет работа независимого от него процесса.
Взаимодействующие процессы, наоборот, совместно используют ресурсы, и выполнение одного может оказывать влияние на результат другого. Совместное использование несколькими процессами ресурса ВС, когда каждый из процессов одновременно владеет ресурсом, называют разделением ресурса. Разделению подлежат как аппаратные, так программные ресурсы. Разделяемые ресурсы, которые должны быть доступны в текущий момент времени только одному процессу, — это так называемые критические ресурсы. Таковыми ресурсами могут быть, как внешнее устройство, так и некая переменная, значение которой может изменяться разными процессами. Необходимо уметь решать две важнейшие задачи: 1) распределение ресурсов между процессами; 2) организация защиты адресного пространства и других ресурсов, выделенных определенному процессу, от неконтролируемого доступа со стороны других процессов.
Важнейшим требованием мультипрограммирования с точки зрения распределения ресурсов является следующее: результат выполнения процесса не должен зависеть от порядка переключения между выполняемыми процессами, т.е. от соотношения скорости выполнения процесса со скоростями выполнения других процессов.
Рассмотрим ситуацию, изображенную на рис. 10.2. Символ, считанный процессом А, был потерян, а считанный процессом В— выведен дважды. Результат выполнения процессов здесь зависит от того, в какой момент осуществляется переключение процессов и какой конкретно процесс будет выбран для выполнения следующим. Такие ситуации называют гонками между процессами, а процессы — конкурирующими. Единственный способ избежать го- 261 Рнс. 10.2.
Конкуренция процессов зв ресурс нок при использовании разделяемых ресурсов — контролировать доступ к любым разделяемым ресурсам в системе. При этом необходимо организовать взаимное исключение, т.е. такой способ работы с разделяемым ресурсом, при котором постулируется, что в тот момент, когда один из процессов работает с разделяемым ресурсом, все остальные процессы не могут иметь к нему доступ. Проблему организации взаимного исключения можно сформулировать в более общем виде. Часть программы (фактически набор операций), в которой осуществляется работа с критическим ресурсом, называется критической секцией, или критическим интервалом. Задача взаимного исключения в этом случае сводится к тому, чтобы не допускать ситуации, когда два процесса одновременно находятся в критических секциях, связанных с одним и тем же ресурсом.
Организация взаимного исключения актуальна не только для взаимосвязанных процессов, совместно использующих определенные ресурсы лля обмена информацией. Возможна ситуация, когда процессы, не подозревающие о существовании друг друга, используют глобальные ресурсы системы, такие как устройства ввода-вывода, принтеры и т.п. В этом случае имеет место конкуренция за ресурсы, доступ к которым также должен быть организован по принципу взаимного исключения. При организации взаимного исключения могут возникнуть тупики, т.е.
ситуации в которых конкурирующие за критический ресурс процессы взаимно блокируются. Есть два процесса А и В, каждому из которых в некоторый момент требуется иметь доступ к двум ресурсам Я, и Яь Процесс А получил доступ к ресурсу Ан следовательно, никакой другой процесс не может иметь к нему доступ, пока процесс А не закончит с ним работать. Одновременно процесс В завладел ресурсом Аь В этой ситуации каждый из процессов ожидает освобождения недостающего ресурса, но оба ресурса никогда не будут освобождены, и процессы никогда не смогут выполнить необходимые действия. Существуют различные механизмы организации взаимного исключения для синхронизации доступа к разделяемым ресурсам К числу классических методов относятся семафоры Дейкстры н мониторы Хоара.