Лекция 1 (10/02/03)

Вид материалаЛекция

Содержание


4.1 По назначению
4.2 По организации работы с вычислительной системой
4.3 По способам построения
4.4 По режиму обработки
4.4.1 Системы пакетной обработки
4.4.2 Системы разделения времени
4.4.3 Системы реального времени
5.1 Механизм обработки прерываний. Типы прерываний
Лекция 5 (07/03/03)
Примеры исключительных ситуаций
Механизм прерываний
Векторный способ
Опрашиваемое прерывание
Intel Pentium
Intel используют два контроллера и поддерживают 15 линий запросов на прерывание. Линии IRQ(interrupt Request –
На первом этапе
Подобный материал:
1   2
§4 Классификация операционных систем

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

4.1 По назначению

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

4.2 По организации работы с вычислительной системой

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

4.3 По способам построения

По архитектурным особенностям ОС разделяются на монолитные и микроядерные. Это разделение в некоторой степени условно, хотя существуют и типичные представители каждого класса. Например, микроядерной является ОС реального времени QNX, а монолитными – Windows 95/98 и ОС Linux. Две последние принципиально различаются тем, что ядро Windows пользователь не может изменить, ему недоступны исходные коды системы и нет программы для сборки (компиляции) этого ядра. А в системе Linux пользователь может сам собрать ядро, включив в него те программные модули и драйверы, которые он считает целесообразным. Подробно особенности архитектуры ОС будут рассмотрены позднее.

4.4 По режиму обработки

По режиму обработки различают ОС, поддерживающие однопрограммный и мультипрограммный режимы работы.

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

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

Мультипрограммирование призвано повысить эффективность использования вычислительной системы, но при этом "эффективность" можно понимать по-разному. Существует несколько критериев эффективности вычислительных систем:
  • Пропускная способность – количество задач, выполняемых системой в единицу времени;
  • Удобство работы пользователей – например, возможность интерактивно работать одновременно с несколькими приложениями на одной машине;
  • Реактивность системы – способность системы выдерживать заранее заданные (возможно, очень короткие) интервалы времени между запуском программы и получением результата.

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

Рассмотрим основные особенности каждого типа систем.

4.4.1 Системы пакетной обработки

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

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

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

4.4.2 Системы разделения времени

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

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

4.4.3 Системы реального времени

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

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

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

§5 Прерывания

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

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

Идея прерываний была предложена в середине 50-х годов и внесла наиболее весомый вклад в развитие вычислительной техники. Основная цель введения прерываний – реализация асинхронного режима работы и распараллеливание работы отдельных устройств вычислительного комплекса.

5.1 Механизм обработки прерываний. Типы прерываний

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

Рассмотрим механизм обработки прерываний. Независимо от конкретной реализации он включает в себя следующие элементы:
  1. Прием сигнала на прерывание и его идентификация.
  2. Запоминание состояния прерванного процесса. Состояние процесса определяется прежде всего значением счетчика команд (адресом следующей команды), содержимым регистров процессора и может включать также спецификацию режима (пользовательский или привилегированный) и другую информацию.
  3. Управление аппаратно передается программе обработки прерывания.
  4. Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью действий аппаратуры.
  5. Обработка прерывания. Чаще реализуется посредством вызова соответствующей подпрограммы, хотя может быть выполнена и той же подпрограммой, которой было передано управление на шаге 3.
  6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).
  7. Возврат в прерванную программу.

Шаги 1–3 реализуются аппаратно, а шаги 4–7 – программно.

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





Итак, главные функции механизма прерываний:
  • распознавание или классификация прерываний;
  • передача управления соответствующему обработчику прерываний;
  • корректное возвращение к прерванной программе.

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

Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается в памяти с прямым доступом либо в системном стеке (system stack).

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

Примеры:
  • прерывания от таймера;
  • прерывания от внешних устройств (прерывания по вводу/выводу);
  • прерывания по нарушению питания;
  • прерывания с пульта оператора вычислительной системы;
  • прерывания от другого процессора.

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

ЛЕКЦИЯ 5 (07/03/03)

Дадим характеристику трем основным типам прерываний:
  • Аппаратное прерывание – событие, генерируемое внешним по отношению к процессору устройством. Посредством него аппаратура информирует процессор о том, что произошло событие, требующее немедленной реакции, например: пользователь нажал клавишу, или закончено чтение данных с диска в основную память, или поступил сигнал от таймера. Прерывания таймера используются операционной системой при планировании процессов. Каждое аппаратное прерывание имеет свой собственный номер, в соответствии с которым и выполняется его обработка.
  • Программное прерывание возникает в результате выполнения программой команды прерывания (INT), т.е. это синхронное событие. Программные прерывания имеют собственные номера, задаваемые параметром команды INT, и используются для вызова функций ядра ОС. Программные прерывания используются для выполнения ограниченного количества вызовов функций ядра ОС, т.е. системных вызовов.
  • Исключительная ситуация (ИС) – событие, возникающее в результате выполнения программой недопустимой команды, например, доступа к ресурсу при отсутствии достаточных привилегий. Это также синхронное событие, возникающее в контексте текущей задачи. Исключительные ситуации можно разделить на исправимые и неисправимые. Исправимая ИС – явление при работе обычное, и после устранения причины, ее вызвавшей (например, подкачка страниц памяти), программа продолжает работу. Неисправимые ИС являются, как правило, следствием ошибок в программах. ОС обычно реагирует на них завершением процесса, их вызвавшего.

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

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

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

Существует два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled). В обоих случаях информация об уровне приоритета прерывания предоставляется процессору на шине подключения внешнего устройства. В случае векторных прерываний передается еще и информация о начальном адресе программы – обработчика данного прерывания.

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

Опрашиваемое прерывание. При использовании механизма опрашиваемого прерывания запрос прерывания содержит только информацию об уровне приоритета. С каждым уровнем может быть связано несколько устройств, следовательно, несколько программ-обработчиков. Процессор должен определить, какой именно из обработчиков связан с этим прерыванием. Для этого он выполняет опрос всех устройств, имеющих данный уровень приоритета, пока одно из них не ответит, выставив на шину сигнал. Тогда уже диспетчер прерываний вызывает конкретный обработчик. Если же с каждым уровнем прерываний связано только одно устройство, то определение нужного обработчика происходит немедленно, как при векторном способе (шины ISA, EISA, MCA, PCI).

Существуют варианты смешанного типа обработки.

Пример

Платформа компьютеров на основе процессоров Intel Pentium: процессор использует векторный механизм, а шины подключения внешних устройств (PCI, ISA, EISA, MCA) имеют опрашиваемый механизм прерываний. Контроллеры внешних устройств выставляют на шину не вектор, а сигнал некоторого уровня приоритета прерывания. Контроллер прерываний после взаимодействия с внешним устройством отображает этот сигнал на определенный номер вектора прерывания. Вектор прерываний состоит из 4 байт и задает новые значения регистров IP и CS. Таблица векторов прерываний занимает 1024 байта, следовательно, в ней может быть задано 256 векторов прерываний.

Контроллер прерываний поддерживает 8 уровней (линий) приоритета. Компьютеры на базе процессора Intel используют два контроллера и поддерживают 15 линий запросов на прерывание.

Линии IRQ(interrupt Requestзапрос на прерывание):
  1. системный таймер;
  2. контроллер клавиатуры;
  3. сигнал возврата по кадру (соединен с IRQ9);
  4. обычно COM2/COM4 (последовательный порт);
  5. обычно COM1/COM3 (последовательный порт);
  6. обычно свободен или используется звуковой картой;
  7. контроллер FDD;
  8. параллельный порт LPT1;
  9. часы реального времени;
  10. линия параллельна IRQ2;
  11. свободно;
  12. свободно;
  13. обычно контроллер мыши типа PS/2;
  14. математический сопроцессор;
  15. обычно контроллер IDE0 (первый канал);
  16. обычно контроллер IDE1 (второй канал);

5.2 Маскирование прерываний. Обработка прерываний в мультипрограммной системе

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

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

Упорядоченное обслуживание запросов прерываний наряду со схемами приоритетной обработки может выполняться механизмом маскирования запросов. Программное управление специальными регистрами маски – маскирование сигналов прерывания независимо от уровня приоритета – позволяет реализовать различные дисциплины обслуживания:
  • с относительными приоритетами, т.е. обслуживание не прерывается даже при поступлении запросов с более высокими приоритетами. Только после окончания обслуживания данного запроса обслуживается новый запрос с наивысшим приоритетом. Для организации такой дисциплины необходимо в программе обслуживания данного запроса наложить маски (запрет) на все остальные сигналы прерываний, или просто отключить систему прерываний;
  • с абсолютными приоритетами – всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приоритетом. При этом возможно многоуровневое прерывание, т.е. прерывание программ обработки прерываний. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса. Если процессор работает по такой схеме, то в одном из своих внутренних регистров он поддерживает переменную, фиксирующую уровень приоритета обслуживаемого в данный момент прерывания.
  • по принципу стека (по дисциплине LCFSlast come first served)– запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Для реализации такой дисциплины необходимо не накладывать маски ни на один сигнал прерывания и не выключать систему прерываний.

Отметим, что для правильной реализации последних двух дисциплин нужно обеспечить полное маскирование системы прерываний при выполнении шагов 1–4 и 6–7, чтобы не потерять запрос и правильно его обслужить. При этом многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса на другой.

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

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

На первом этапе при появлении запроса на прерывание идентификация сигнала выполняется специальным системным программным модулем, который называется супервизором (или диспетчером) прерываний. Он ненадолго запрещает все прерывания, сохраняет контекст прерываемого процесса и выясняет причину прерывания.

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

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

После выполнения программы обработки прерывания управление снова передается супервизору (третий этап), на этот раз уже на тот модуль, который занимается диспетчеризацией задач. И уже диспетчер задач в соответствии с принятым режимом распределения процессорного времени восстановит контекст той задачи, которой решено будет выделить процессор.

Р
ассмотрим схему обработки прерываний в мультипрограммной системе и ее отличия от рассмотренной ранее схемы.

Как видно, здесь нет возврата в прерванную ранее программу непосредственно из самой подпрограммы обработки прерывания.

В конкретных процессорах и конкретных ОС могут существовать некоторые отклонения от рассмотренной схемы или дополнения к ней.