СОСТОЯНИЯ ПРОЦЕССОВ


Описание процессов и управление ими

 

Архитектура операционной системы должна удовлетворять определенным требованиям. Все многозадачные операционные системы используют концепцию процесса — начиная с однопользовательских операционных сис­тем, таких, как Windows 98, и заканчивая операционными системами для мейнфреймов, таких, как OS/390, которые способны поддерживать работу тысяч пользователей. Таким образом, основные требования, которым должны удовле­творять операционные системы, могут быть сформулированы с использованием понятия процесса.

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

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

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

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

Примечание. При описании процессов в большинстве случаев в этой главе концепцию виртуальной памяти можно игнорировать, но при рассмотрении некоторых специализированных вопросов уместно обратить на нее особое внимание. Хотя подробно виртуальная память обсуждается только в главе 8, "Виртуальная память", краткий обзор приведен в главе 2, "Обзор операционных систем".

 

СОСТОЯНИЯ ПРОЦЕССОВ

 

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

В главе 2, "Обзор операционных систем" упоминалось, что для каждой программы, которая должна быть выполнена, создается свой процесс, или задание. С точки зрения процесса его работа состоит в выполнении определенного набора команд; последовательность выполнения этих команд задается адресами, которые заносятся в счетчик команд. Через некоторое время счетчик команд может адресовать код других программ, которые являются частями других процессов, но с точки зрения данной программы ее выполнение состоит из последовательного выполнения ее команд.

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

 

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

 

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

Рассмотрим очень простой пример. На рис. 3.1 показано расположение в памяти трех процессов. Чтобы упростить обсуждение, предположим, что вирту­альная память не используется; таким образом, все три процесса представлены программами, которые полностью загружены в основную память. Кроме этих программ в памяти находится небольшая программа-диспетчер, выполняющая переключение с одного процесса на другой. В листинге 3.1 показаны следы трех рассматриваемых процессов на ранних стадиях их выполнения. Представлены первые 12 выполненных команд в процессах А и С; в процессе В выполнено че­тыре команды, и мы считаем, что эти команды включают в себя операцию ввода-вывода, завершения которой должен ожидать процесс.

 

 

Листинг 3.1. Следы процессов, изображенных на рис. 3.1

 

 
 
 
 
 
 
 
 
а) След б) След в) След
процесса А процесса В процесса С

5000 - начальный адрес процесса А

8000 - начальный адрес процесса В

12000 - начальный адрес процесса С

Теперь рассмотрим эти следы с точки зрения процессора. В листинге 3.2 показаны чередующиеся следы, получившиеся в результате выполнения первых 52 командных циклов (для удобства они пронумерованы). Предположим, что операционная система позволяет непрерывно выполнять не более шести командных циклов одного и того же процесса, после чего процесс прерывается — это предотвращает монопольное использование всего процессорного времени одним из процессов. Из листинга 3.2 видно, что после первых шести команд процесса А следует перерыв, в течение которого выполняется некоторый код диспетчера, со­стоящий из шести команд, после чего управление передается процессу В.3 Вы­полнив четыре команды, процесс В запрашивает операцию ввода-вывода и дол­жен ожидать ее завершения. Поэтому процессор прекращает выполнять процесс Вис помощью диспетчера переходит к выполнению процесса С. После очеред­ного перерыва процессор возобновляет выполнение процесса А. По истечении отведенного этому процессу времени процесс В все еще ожидает завершения опе­рации ввода-вывода, поэтому диспетчер снова передает управление процессу С.

 

Листинг. 3.2. Составной след процессов, изображенных на рис. 3.1

 

  ---тайм-аут
D0
D1
D2
  --- тайм-аут D3
D4
D5
 
 
 

100 - начальный адрес программы-диспетчера Заштрихованные области - выполнение команд диспетчера В первом столбце указаны номера командных циклов, во втором - адреса выполняемых команд

 

3 Указанное количество команд, выполняемых при работе процессов и диспетчера, намного меньше, чем в действительности; в этом учебном примере такое неправдопо­добно маленькое число используется для упрощения рассмотрения.

Модель процесса с двумя состояниями

 

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

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

Анализируя эту простую модель, можно сделать некоторые выводы относительно архитектуры операционной системы. Необходим способ, с помощью которого будет представлен каждый процесс, чтобы операционная система могла следить за ним. С каждым процессом нужно связать определенную информацию, в которую будет входить его текущее состояние и размещение в памяти. Не вы­полняющиеся процессы следует организовать в какую-то очередь, где они ожи­дали бы своего выполнения. Один из возможных вариантов предложен на рис. 3.2,6. Здесь имеется одна очередь, ее элементами являются указатели на процессы. Можно предложить и другую схему, в которой очередь состоит из связанного списка блоков данных, где каждый блок представляет отдельный процесс; позже мы вернемся к исследованию этой реализации.

 

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




Дата добавления: 2016-06-05; просмотров: 1504;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.