Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОССиО_Лекции.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Прерывания

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

Если произошло прерывание, то:

  1. Управление передается ОС

  2. ОС запоминает состояние прерванного процесса

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

Типы прерываний: аппаратные и программные

Виды прерываний:

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

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

  3. Внешние прерывания (истечение кванта времени, нажатие оператором клавиши прерывания, прием сигнала прерывания от другого процессора). Относится к аппаратным прерываниям.

  4. Прерывания по рестарту – когда нажимаем кнопку рестарта или получаем сигнал от другого процессора.

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

  6. Прерывания по контролю (ошибки) машины – называются аппаратными ошибками.

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

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

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

Ядро ос

В простых ОС отдельного выделенного ядра нет.

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

Начиная от центра: 1 слой – аппаратура. 2 – ядро. 3 – переносимая часть ОС.

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

Основные функции ядра:

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

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

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

  4. Организация взаимодействия между процессами

  5. Манипулирование БУП

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

  7. Поддержка операций ввода/вывода

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

  9. Поддержка распределения и перераспределения памяти и др.

Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API.

Ядро в привилегированном режиме

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

  1. Пользовательский

  2. Привилегированный (или режим работы ядра, режим супер визора)

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

Работа приложения – системный вызов – переключение режима - работа ядра – переключение режима – работа приложения