Учебное пособие операционные системы ос общего назначения саратов 2011 icon

Учебное пособие операционные системы ос общего назначения саратов 2011



Смотрите также:
1   2   3   4   5   6   7   8   9   ...   31

1.4. Прерывания



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

Механизм прерывания реализуется аппаратно-программными средствами и включает в себя следующие этапы:

  1. установка факта прерывания и его идентификация;

  2. запоминание контекста (состояния) прерванного процесса; состояние процесса определяют: счетчик команд (PС), содержимое регистров процессора (АС), а также может включать спецификацию режима (пользовательский или привилегированный) и др. информацию хранящуюся в регистре флага;

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

  4. сохраняется информация о прерванной программе, если это не было сделано аппаратно;

  5. обработка прерывания может быть выполнена обработчиком аппаратного прерывания, но чаще используется обработчик ОС;

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

  7. возврат управления прерванной программы.

При этом этапы 1-3 реализуются аппаратно, а 4-7 программно.

При возникновении запроса на прерывание естественный ход вычислений нарушается, и управление передаётся программе обработчика возникшего прерывания. При этом средствами аппаратуры (с помощью механизмов стековой памяти) сохраняется адрес той команды, с которой следует продолжить выполнение прерванной программы. После выполнения программы обработки прерывания управление возвращается прерванной ранее программе посредством занесения в указатель команд сохранённого адреса команды из стека (рис.9). Такая схема используется для простейших ОС, для более сложных ОС при обработке прерываний используется супервизор прерываний [3].

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

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

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

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




Рис.9 . Исполнение процессором команд с прерыванием

Прерывание, возникающее при работе ВС можно разделить: на внешние (асинхронные), внутренние (синхронные) и программные.

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

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

Существуют программные прерывания, которые возникают при выполнении процессором соответствующей команды (INT). По этой команде процессор осуществляет те же действия, что и при обработке внутренних прерываний (рис.10). Этот механизм введён для переключения на системные программные модули по правилам прерываний, а не подпрограмм, это обеспечивает автоматическое переключение процессора в привилегированный режим с возможностью выполнения любых команд [3].




Рис.10. Схема обработки прерывания

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

Стек — это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параметров вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний. Легче всего представить стек в виде стопки листов бумаги (это одно из значений слова «stack» в английском языке) — вы можете класть и забирать листы бумаги только с вершины стопки. Таким образом, если записать в стек числа 1, 2, 3, то при чтении они будут получаться в обратном порядке — 3, 2, 1.

Для процессоров Intel x86 стек располагается в сегменте памяти, описываемом регистром SS, а текущее смещение вершины стека записано в регистре ESP, причем при записи в стек значение этого смещения уменьшается, то есть стек растет вниз от максимально возможного адреса.



Такое расположение стека «вверх ногами» необходимо в бессегментной модели памяти, когда все сегменты, включая сегмент стека и сегмент кода, занимают одну и ту же область — всю память. Тогда программа исполняется в нижней области памяти, в области малых адресов, и EIP растет, а стек располагается в верхней области памяти, и ESP уменьшается.


^

1.5 Архитектуры операционных систем



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

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

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

В архитектуре с микроядром уровни расположены вертикально, а в слоистой горизонтально (рис.11). Внешние по отношению к ядру компоненты реализуются как обслуживаемые процессы. Между собой они взаимодействуют как равноправные партнёры. Обычно взаимодействие реализуется с помощью обмена сообщениями, которые передаются через микроядро. Таким образом, микроядро вступает в роль посредника. Оно подтверждает правильность сообщений, передаёт их от одного компонента к другому и предоставляет доступ к аппаратному обеспечению [4]. Микроядро выполняет защитные функции, оно не пропускает сообщения, если такой обмен не разрешён. Например, если приложению нужно открыть файл, то оно отправляет сообщение администратору ФС, если ему нужно создать новый поток в процессе, то оно отправляет сообщение администратору процессов. Каждый из администраторов может отправлять сообщения другим администраторам (серверам, супервизорам, менеджерам) и обращаться к элементарным функциям микроядра и т.о. в одном компьютере реализуется архитектура клиент-сервер.

Достоинством архитектуры микроядра является [3]:

  • единообразный интерфейс;

  • расширяемость;

  • гибкость;

  • переносимость;

  • надёжность;

  • поддержка распределённых вычислительных систем;

  • поддержка объектно-ориентированных систем на основе использования компонентов.



Рис. 11.Структуры многослойного ядра и микроядра

Основными функциями микроядра, которые непосредственно зависят от аппаратного обеспечения, являются:

  • низкоуровневое управление памятью;

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

  • управление вводом/выводом и прерываниями.

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

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

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




Рис. 12 Принцип работы структуры с микроядром

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

  1. Предоставление. Владелец адресного пространства может предоставить некоторые свои страницы другим процессам.

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

  3. Восстановление. Процесс может восстановить любые страницы, предоставленные другим процессам или отображенные в их адресном пространстве.







страница4/31
Дата конвертации25.12.2012
Размер2,64 Mb.
ТипУчебное пособие
1   2   3   4   5   6   7   8   9   ...   31
Разместите кнопку на своём сайте или блоге:
rud.exdat.com


База данных защищена авторским правом ©exdat 2000-2012
При копировании материала укажите ссылку
обратиться к администрации
Документы