Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспек по ОС подготоака к экзаменам.doc
Скачиваний:
88
Добавлен:
27.10.2018
Размер:
1.27 Mб
Скачать
  1. Супервизоры операционной системы.

Супервизор – программа, многозадачной ОС, обеспечивающая наилучшее использование ресурсов ЭВМ, при одновременном выполнении нескольких задач. Супервизоры бывают: супервизор ввода/вывода, супервизор прерывания, супервизор задач и т.п.

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

-если он свободен и в системе нет запросов от задач с более высоким приоритетом,

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

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

Супервизор ввода-вывода.

Управление вводом-выводом осуществляется компонентом ОС, который часто называют супервизором ввода-вывода. Основные задачи, возлагаемые на супервизор:

  1. Модуль супервизора ОС, иногда называемый супервизором задач, получает запросы от прикладных задач на выполнение тех или иных операций, а том числе на ввод-вывод. Эти запросы. Эти запросы проверяются на корректность и, если они соответствуют спецификациям и не содержат ошибок, то обрабатываются дальше. В противном случае пользователю(задаче) выдается соответствующее диагностическое сообщение о недействительности(некорректности) запроса.

  2. Супервизор ввода-вывода получает запросы на ввод-вывод от супервизора задач или от программных модулей самой Ос.

  3. Супервизор ввода-вывода соответствующие распределители каналов и контроллеров, планирует ввод-вывод(определяет очередность предоставления устройств ввода-вывода задачам, затребовавшим эти устройства). Запрос на ввод0вывод либо тут же выполняется, либо ставится в очередь на выполнение.

  4. Супервизор ввода-вывода инициирует операции ввода-вывода( передает управление соответствующим драйверам) и в случае управления вводом-выводом с использованием прерываний предоставляет процессор диспетчеру задач с тем, чтобы передать его первой задаче, стоящей в очереди на выполнение.

  5. При получении сигналов прерываний от устройств ввода-вывода супервизор идентифицирует эти сигналы и передает управление соответствующим программам обработки прерываний.

  6. Супервизор ввода-вывода осуществляет передачу сообщений об ошибках, если таковые происходят в процессе операции управления ввода-вывода.

  7. Супервизор ввода-вывода посылает сообщения о завершении операции ввода-вывода запросившей эту операцию задаче и снимает ее с состояния ожидания ввода-вывода, если задача ожидала завершения операции.

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

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

Супервизор задач.

Ядро ОС и низкоуровневые драйверы, управляющие работой каналов и устройств ввода-вывода, должны работать в специальном режиме работы процессора. Это необходимо по нескольким причинам. Во-первых, введение специального режима работы процессора, в котором должен исполняться только код ОС, позволяет существенно повысить надежность выполнения вычислений. Это касается выполнения как управляющих функций самой ОС, так и прикладных задач пользователей. Категорически нельзя допускать, чтобы какая-нибудь прикладная программа могла вмешиваться в вычисления, связанные с супервизорной частью ОС. Во-вторых, ряд функций должен выполняться исключительно централизованно, под управлением ОС. К этим функциям мы должны отнести функции, связанные с выполнением процессами ввода-вывода: все операции ввода-вывода данных объявляются привилегированными. Это легче всего сделать, если процессор может работать, как минимум, в двух режимах: привилегированном и пользовательском. В первом режиме процессор может выполнять все команды, тогда как в пользовательском набор разрешенных команд ограничен. Естественно, что помимо запрета на выполнение команд ввода-вывода в пользовательском режиме работы процессор не должен позволять обращаться к своим системным регистрам- эти регистры должны быть доступны только в привилегированном режиме, то есть исключительно супервизорному коду самой ОС. Попытка выполнить запрещенную команду или обратиться к запрещенному регистру должна вызывать прерывание(исключение), и центральный процессор должен быть предоставлен супервизорной части ОС для управления выполняющимися вычислениями.

Поскольку любая программа требует операций ввода-вывода, прикладные программы для выполнения этих(и некоторых других) операций обращаются к супервизорной части ОС( модуль супервизора иногда называют супервизором задач) с соответствующим запросом. При этом процессор должен переключиться в привилегированный режим работы. Чтобы программы не могли произвольным образом обращаться к супервизорному коду, который работает в привилегированном режиме, им предоставляется возможность обращаться к нему в строгом соответствии с принятыми правилами. Каждый запрос имеет свой идентификатор и должен сопровождаться соответствующим количеством параметров, уточняющих запрашиваемую у ОС функцию(операцию).Поэтому супервизор задач при получении запроса сначала его тщательно проверяет. Если запрос корректный и программа имеет право с ним обращаться, то запрос на выполнение операции, как правило, передается соответствующему модулю ОС. Множество запросов к ОС образует соответствующий системный интерфейс прикладного программирования(Aplication Program Interface, API)

Супервизор прерываний.

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

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

Прерывания являются основной движущей силой любой ОС.

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

  1. Установление факта прерывания(сигнал запроса на прерывание) и идентификация прерывания.

  2. Запоминание состояния прерванного процесса вычислений.

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

  4. Сохранение информации о прерванной программе, с помощью программы обработки прерывания.

  5. Обработка прерывания.

  6. Восстановление информации, относящейся к прерванному процессу.

  7. Возврат на прерванную программу.

Главные функции механизма прерываний:

  1. распознавание или классификация прерываний.

  2. передача управления соответствующему обработчику прерываний.

  3. корректное возвращение к прерванной программе.

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

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

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

Прерывания обрабатываются модулями ОС, т.к. действия которые выполняются по прерыванию относятся по управлению ресурсами ВС.

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

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

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

С Абсолютными приоритетами, то есть всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приоритетом. При этом возможно многоуровневое прерывание, то есть прерывание программ обработки прерываний. Число уровней прерывания в этом с режиме изменяется и зависит от приоритета запроса.

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

Супервизор диспетчера задач.

Один из основных модулей супервизора операционной системы — диспетчер задач — переводит процессы в одно из состояний в зависимости от того, доступен тот или иной ресурс или не доступен. И поскольку в мультизадачной системе любой процесс содержит хотя бы один поток, то потоку (то есть задаче) ставится в соответствие дескриптор задачи, в котором сохраняется контекст этих вычислений. Сказанное справедливо для мультипрограммных систем, поддерживающих мультизадачный режим. В мультипрограммных системах, не поддерживающих мультизадачность, контекст прерванного процесса хранится в дескрипторе этого процесса. Заметим, что повсеместно распространенные системы Windows 9x/NT/2000/XP являются и мультипрограммными, и мультизадачными.

Еще одним доводом в пользу термина «задача» при рассмотрении вопросов организации распределения процессорного времени между выполняющимися вычислениями является аналогичный выбор этой сущности разработчиками процессоров. Именно для отображения этой ситуации и обеспечения дополнительными возможностями системных программистов в решении вопросов распределения процессорного времени они вводят специальные информационные структуры и аппаратную поддержку для работы с ними. Во многих современных микропроцессорах, предназначенных для построения на их основе мощных мультипрограммных и мультизадачных систем, имеются дескрипторы задач. Примером, подтверждающим этот тезис, являются микропроцессоры, совместимые с архитектурой ia32, то есть с 32-разрядными процессорами фирмы Intel. Основные архитектурные особенности этих микропроцессоров, специально проработанные для организации мультизадачных операционных систем, рассматриваются достаточно подробно в главе 4. Здесь мы лишь отметим тот факт, что в этих процессорах имеется специальная аппаратная поддержка организации мультизадачного (и мультипрограммного) режима. Речь идет о сегменте состояния задачи (Task State Segment, TSS), который предназначен, прежде всего, для сохранения контекста потока или процесса и который легко позволяет организовать и мультипрограммный, и мультизадачный режимы. Не случайно был введен термин «задача», ибо он здесь применим и по отношению к полноценному вычислительному процессу, и по отношению к легковесному процессу (потоку выполнения, треду, нити). На самом деле этот аппаратный механизм применяется гораздо реже, чем об этом думали разработчики архитектуры ia32. На практике оказалось, что для сохранения контекста потоков эффективнее использовать программные механизмы, хотя они и не обеспечивают такой же надежности, как аппаратные.