В. Столлингс - Операционные системы (1114679), страница 31
Текст из файла (страница 31)
Причина того, что в такой ситуации не наступает хаос и произвол, заключается в том, что критичный код представляет собой не код пользователь- ской пРограммы, а совместно используемый код операционной системы, выпол- няю яющийся в контексте процесса. В силу наличия пользовательского режима и Режима има ядра пользователь не может вмешиваться в работу системных процедур, хотя они они и выполняются в среде пользовательского процесса. Это еще раз напо- минает н нам об отличиях концепций процесса и программы и о том, что между нами нель ельзя ставить знак равенства.
В ходе процесса могут выполняться и поль- зовательски - ьские программы, и программы операционной системы; с другой сторо- сках и Ро Раммы операционной системы, выполняемые в разных пользователь- процессах, являются идентичными, Опе перацноннан система на основе процессов дним вариантом построения операционной системы, проиллюстрированЕще о ни м аа рнс. 3. Р . 3 12,в, является ее реализация в виде набора системных процессов. Так Р других подходах, программы, входящие в ядро, выполняются в ре«кзкип и о в этом случае основные Функции ядра организованы как отдель ядра.
однак сы. Здесь также возможно наличие небольшого кода, который является -... е процессы, тааим по о тношению ко всем процессам и осуществляет их переключение. дход обладает рядом преимуществ. Его применение дисциплинируакой по хо о"Раммис истов и способствует разработке модульных операционных систем с ' .— мальным — ыми простыми межмодульными интерфейсами. Кроме того, некото- Часть 2. Пр,.
З Описание процессов и управление ими второстепенные функции операционных систем удобно реализовывать в ельных процессов. Например, ранее упоминалась управляющая про ."орая ведет запись интенсивности использования различных ресу оцессора, а и мяти каналов) и скорости выполнения процессов в системе„'.,: ,льну зта прогр рамма не обслуживает какой-то конкретный активный п ~ может вызываться только операционной системой.
Как процесс эта" ~мма может выполняться с определенным приоритетом и чередоваться с чи программами под управлением диспетчера. И наконец, реализация онной системы в виде набора процессов полезна в многопроцессорных и: сомпьютерных системах, в которых отдельные службы операционной си гут ыть пере б еданы для выполнения специально предназначенным про и, что позволит повысить производительность системы. 1.4. УПРАВЛЕНИЕ ПРОЦЕССАМИ .-'::--"-;::: -:.;-:"''-",::;-:.'„"'" В ОПЕРАЦИОННОЙ СИСТЕМЕ УЯ1Х:,", Операционная система ЮМ1Х Яуз1егп Ч использует простую, но обл й м ирокими возможностями организацию процессов, за работой которо ггь пользователь.
БХ1Х работает в соответствии с моделью, изображе ~с. 3.12,б, согласно которой большинство программ операционной аистемы ' чется в среде пользовательских процессов. Таким образом, в 1)Х1Х треб жима — пользовательский режим и режим ядра. В операционной систем,', спользуются две категории процессов: системные и пользовательские Си роцессы выполняют код операционной системы в режиме ядра, Мущ ичные административные функции, такие, как выделение памяти или Ро пессоа. Пользовательские процессы выполняют код пользовательских ак в пользовательском режшне, а код операционной системы — в ре пользовательский процесс переключается в режим ядра при вызове >ункции, генерации исключения или при обработке прерывания.
:остояния процессов Всего в операционной системе 1ЛМХ распознается девять состояний .ов, перечисленных в табл. 3.9; соответствующая диаграмма переходов ~ий показана на рис. 3.14 (в ее основе — рисунок из 1ВАСН8 1). Н861). Этот тохож на рис. З.б; нужно только принять во внимание, что спящие сос :истеме 1)М1Х соответствуют блокированным состояниям.
Кратко пере,, зсновные различия между диаграммами. ° Для отражения того факта, что процесс может выполняться как в и тельском режиме, так и в режиме ядра, в диаграмме имеется два выполняющихся процессов. Состояния вытесненных и загруженных в память и готовых к вып процессов отличаются друг от друга. По сути эти два сос ва состояния по иаковы (на что указывает соединяющая их пунктирная линия). Р же делается, чтобы подчеркнуть, каким именно образом процесс ' быть прерван в пользу другого.
Если процесс выполняетс® в режи результате вызова диспетчера, прерывания по таймеру или преры 'Часть 2. П ' команде ввода-вывода), рано или поздно наступает момент, когда ядро завершает свою работу и готово возвратить управление пользовательской программе.
В это время ядро может принять решение передать управление процессу с более высоким приоритетом, чем у выполнявшегося до этого. В таком случае текущий процесс переходят в состояние вытесненного, но с точки зрения диспетчеризации эти процессы одинаковы. Процесс, прерванный в пользу другого„и находящийся в состоянии готовности к выполнению, находятся в одной очереди. таблица 3.9. Состояния процессов в ЮХ1Х Выполняющийся в пользовательском режиме Выполняющийся в режиме ядра Выполняющийся пользовательский Выголняюшнйся ядра Готов к выполнению, как только ядро решит передать ему управление Готовый к выполнению, загруженный Не может выполняться, пока не произойдет некоторое событие; процесс находится в основной памяти (блокированное состояние) Процесс готов к выполнению, но прежде чем ядро сможет спланировать его запуск, процесс свопннгз должен загрузить этот процесс в основную память Спящий, загруженный Готовый к выполнению, выгруженный Процесс ожидает некоторого события; он вы- гружен нз основной памяти (блокированное со- стояние) ,', Спящий, выгруженный ,' Вытесненный В момент переключения процессора из режима ядра в пользовательский режим ядро решает передать управленне другому процессу Процесс только что создан н еще не готов к выполнению Созданный Зомби Самого процесса больше не существует, но за- писи о нем остались с тем, чтобы ими мог вос- пользоваться родительский процесс 3.
Описание процессов и управление ими такое нытеснение процесса может произойти только в момент переключения Р жима выполнения из режима ядра в пользовательский режим При выполнении и процесса в режиме ядра он не может быть вытеснен, поэтому операция"ая система СХ1Х не приспособлена для работы в режиме реального времени. сУждение д ние требований к системам, выполняющим обработку запросов в реаль- Р ени, можно найти в главе 10, "Многопроцессорное планирование и плаРова"ие Реального времени". В 1)ЫХ система Х есть два процесса, которых нет ни в каких других операционных . Процесс Π— это специальный процесс, который создается при загруз..снстемы. В гр ь В сущности, он предопределен как структура данных, которая заается вмест месте с системой.
Этот процесс является процессом свопинга. Кроме "" процесс Чесс О порождает процесс 1, который называется инициализирующим Цессом ~'и 1 .,® 1 11 ргосезз). Этот процесс является родительским по отношению ко остал ьны евно и ым. Когда в систему входит новый интерактивный пользователь, Роцесс 1 создает новый процесс для этого пользователя. Далее пользо- Окончание табл.
3.10 Сче чни команд Р тр состоянии процессора нн У азлтезь стека Памяти нед 1при системы Памяти достаточно Регистры общего назначения \ с \ с с с с с снанив с Запись таблицы процессов Пользоэа ельсная область Возврат Выполнение Таблица областей процесса Вызов системы, прерывание Переход в спящее состояние Стек ядра Пробуждение Выход Прерывание, возвратиз прерывания щи, Выгрузка тп роцесса тые процесса ~зовательский Часть 2. ся очерние процессы. Таким " й и оцесс может создавать ветвящиес д .скин проц из ряда взаимосвязанных процесс ' , каждое пр приложение может состоять из р Создание процесса й п еесов в сисптеме (11ч'1Х Рис. 3.14. Диагразт.иа переходов сосптояний проц осанке процессов В операционной системе тЛЧ1Х проце р ессы и едставлены довольно сло оставляют операционной системе вс ктурами данных, которые предоста ии п оцессов информацию.
.Вта: тю для управления и диспетчеризаци р ц : контек аз еленные на три части: конте ~едены элементы образа процесса, разд овня... т ов и контекст системного уров тельского уровня, контекст регистров тица 3.10. Образ процесса в УХ1Х Контекст пользовательского уровня Выполняемые машинные команд р гр ып о аммы Данные, доступные программе этого пропесса а менты, локальные переменные и указат Содержит аргументы, о ком жиме ций, выполняющихся в пользовательском ре Область памяти, использтемая совместно с другими процессами применяется для обмена информацией между процессамтт Контекст регистров Адрес очередной команды, которая будет выполняться; она может находиться как в пользовательском пространстве, так и в про- странстве ядра Содержит данные по состоянию аппаратного обеспечения в момент передачи управления; содержимое и формат этих данных зависят от конкретного аппаратного обеспечения Указывает положение вершины стека ядра (нлн пользовательского стека, в зависимости от режима работы процессора) Зависят от используемого аппаратного обеспечения Контекст системного уровня Определяет состояние процесса; эта информация всегда доступна оттерациовной системе ИнФормация по управлению процессом, необходимая только в кон- тексте данного процесса Задает отображение виртуальных адресов э физические; содержит также поле полномочий, э котором указывается тип доступа, на который процесс имеет право: только для чтения, для чтения и за- писи илн для записи и выполнения Содержит кадр стека процедур ядра при работе процесса в ре- жиме ядра В контекст пользовательского уровня (пзег-1ече1 соп$ех$) входят основные элементы пользовательских программ; он может генерироваться непосредственно из скомпилированных объектных файлов.