Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы.docx
Скачиваний:
11
Добавлен:
24.11.2018
Размер:
102.5 Кб
Скачать

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

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

Типы прерываний

Есть два крупных типа прерываний: программные и аппаратные. Аппаратные: внутренние, внешние, аппаратные ошибки, истечение кванта времени. Программные: деление на 0, выполнение неправильного кода.

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

Прерывания ввода-вывода

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

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

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

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

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

Переключение контекста

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

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

Ядро ОС

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

Переносимая часть ОС всегда остается неизменной, а меняется ее ядро: картинка у Оли.

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

Функции ядра:

  1. Обработка прерываний

  2. Создание и уничтожение процессов

  3. Выбор выполняющего процесса

  4. Переключение процессов из состояния в состояние

  5. Приостановка и активизация процессов

  6. Синхронизация процессов

  7. Переключение контекста

  8. Поддержка операции ввода-вывода

  9. Поддержка работы файловой системы

  10. Распределение и перераспределение памяти

ОС, код которых открыт: linux, unix, посмотреть еще. Коммерческие цели – закрытые ОС.

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

Многослойная структура ОС

5 кружочков в кружочке. Слои изменять можно при сохранении работы межслойных интерфейсов!!!! Нижележащий слой выполняет задания выгележащих