- •Операционные системы
- •Аппаратура и программное обеспечение
- •Управление процессами
- •Прерывания
- •Переключение контекста
- •Ядро ос
- •Многослойная структура ос
- •Асинхронные и параллельные процессы
- •Взаимоисключения
- •Аппаратная реализация взаимоисключения. Команда testandset(a,b)
- •Семафора
- •Пара производитель/потребитель
- •Кольцевой буфер
- •Мониторы
- •Концепция ресурсов
- •4 Основных условия для возникновения тупика
- •Основные направления исследования по управлению тупиков
- •Алгоритм банкира
- •Иерархия памяти
- •Стратегии управления памятью
- •Связное и не связное распределение памяти
- •Мультипрограммирование со свопингом
- •21 Декабря в 13:40 последний тест
- •Организация виртуальной памяти
- •Поблочное отображение
- •Рабочие множества
- •Размер страниц
Прерывания
Прерывание – событие, при котором меняется нормальная последовательность команд, выполняемых процессором. Сигнал прерывания обрабатывается аппаратурой вычислительной машиной.
Если произошло прерывание, то:
Управление передается ОС
ОС запоминает состояние прерванного процесса
ОС анализирует тип прерывания и передает управление соответствующей программе обработки этого прерывания.
Типы прерываний: аппаратные и программные
Виды прерываний:
SVC – прерывания (по вызову супервизора). Инициатор – работающий процесс, вызвавший команду SVC(запрос на предоставление конкретной системной услуге, выполнение операции ввода/вывода, увеличение размера выделенной памяти или взаимодействие с оператором машины). SVC – привилегированные команды (не могут выполняться пользователем). Механизм SVC помогает защитить ОС от пользователей, обеспечивает стабильную работу приложений. Относится к программным прерываниям.
Прерывания ввода/вывода – инициируются аппаратурой ввода/вывода (завершение операции ввода/вывода, возникает ошибка или устройство переходит в состояние готовности).
Внешние прерывания (истечение кванта времени, нажатие оператором клавиши прерывания, прием сигнала прерывания от другого процессора). Относится к аппаратным прерываниям.
Прерывания по рестарту – когда нажимаем кнопку рестарта или получаем сигнал от другого процессора.
Прерывание по контролю (ошибки) программы – вызываются различными видами ошибок (деление на ноль, попытка выполнить привилегированную команду, попытка выполнить операцию с неправильным кодом). Программное прерывание.
Прерывания по контролю (ошибки) машины – называются аппаратными ошибками.
Переключение контекста
Для обработки каждого из различных видов прерываний в составе ОС предусмотрены программы, называемые обработчиками прерываний. Когда происходит прерывание, ОС запоминает состояние прерванного процесса (в БУП) и передает управление соответствующему обработчику. Это делается способом, называемым переключение контекста. При этом используются слова состояния программы, которые управляют порядком выполнения команд и содержат информацию о состоянии процесса. Существуют 3 типа слов: текущие, новые, старые.
В однопроцессорной машине имеется только одно текущее, 6 новых и 6 (по 1 на каждый вид прерывания) старых слов состояния программы. В текущем слове содержится адрес следующей команды и виды прерываний, разрешенных и запрещенных в данный момент. Центральный процессор реагирует только на разрешенные прерывания. Обработка запрещенных прерываний либо задерживается, либо игнорируется. Процессору нельзя запретить реагировать на некоторые виды программных прерываний: по вызову супер визора, по рестарту, по ошибкам.
Ядро ос
В простых ОС отдельного выделенного ядра нет.
Все операции, связанные с процессами выполняются под выполнением той части ОС, которая называется ее ядром. Ядро представляет собой лишь небольшую часть кода ОС. Относится к числу наиболее интенсивно используемых компонентов системы, поэтому ядро обычно резидентно размещают в основной памяти, в то время как другие части ОС перемещаются во внешнюю память и обратно по мере необходимости.
Начиная от центра: 1 слой – аппаратура. 2 – ядро. 3 – переносимая часть ОС.
Одной из самых важных функций, реализованных в ядре, является обработка прерываний. Когда ядро обрабатывает текущее прерывание, оно запрещает другие прерывания и разрешает их снова только после завершения обработки текущего. При постоянном потоке прерываний может сложиться ситуация, что ядро будет блокировать прерывания в течение значительной части времени. Ядро обычно разрабатывают таким образом, чтобы оно осуществляла лишь минимально возможную предварительную обработку каждого прерывания, а затем передавала это прерывание на дальнейшую обработку соответствующему системному процессу, после начала работы которого, ядро могло бы разрешить последующие прерывания.
Основные функции ядра:
Обработка прерываний
Создание и уничтожение процессов
Выбор выполняющегося процесса
Организация взаимодействия между процессами
Манипулирование БУП
Переключение контекста
Поддержка операций ввода/вывода
Поддержка работы файловых систем
Поддержка распределения и перераспределения памяти и др.
Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API.
Ядро в привилегированном режиме
Для надежного управления кодом выполнения приложений ОС должна иметь определенные привилегии, для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера. Поэтому аппаратура компьютера должна поддерживать как минимум 2 режима работы:
Пользовательский
Привилегированный (или режим работы ядра, режим супер визора)
Приложения не могут самостоятельно выполнять привилегированные команды. Между количеством уровней привилегий, реализуемых аппаратно, и количеством уровней привилегий, поддерживаемых ОС нет прямого соответствия.
Работа приложения – системный вызов – переключение режима - работа ядра – переключение режима – работа приложения
