Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Механизмы аппаратной поддержки операционных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
2. Прерывания
Основным аппаратным механизмом, лежащим в основе функционирования любой операционной системы, является система прерываний. Система прерываний позволяет организовать программную реакцию операционной системы на любые внутренние или внешние события.
Прерывания – это аппаратно-программный механизм в вычислительной системе, который заставляет процессор переключиться на исполнение определенной процедуры операционной системы - «обработчик прерывания, в ответ на внешнее или внутреннее событие - «источник прерывания».
Механизм прерываний называют «аппаратно-программным», поскольку в его реализации участвует процессор, система аппаратных прерываний на базе контроллера прерываний и операционная система.
Только благодаря наличию системы прерываний операционная система может предоставлять процессору на исполнение очередную программу, реагировать на запросы внешних устройств, предоставлять свой программный сервис прикладным программам и т.д. Сама внутренняя программная структура операционной системы построена на программных прерываниях.
События, приводящие к возникновению прерывания, называют «источники прерываний». За каждым источником прерывания закрепляется числовой код – «номер прерывания».
Различают следующие источники (типы) прерываний: внешние прерывания, системные прерывания и программные прерывания.
Рис.3 – Типы прерываний в вычислительной системе
11
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Аппаратные прерывания
Внешние прерывания инициируются аппаратурой, интегрированной в системную плату, или внешними устройствами, подключенными к системной шине через контроллеры. Они могут быть вызваны сигналом микросхемы системного таймера, сигналом от принтера, нажатием клавиши клавиатуры и подобными источниками.
Сигнал прерывания, поступающий от внешнего источника, называют запросом прерывания (interrupt request - IRQ).
Для приема внешних прерываний от нескольких источников в системе должен присутствовать один или несколько специальных
контроллеров прерываний.
Котроллер прерываний является, по сути, мультиплексором. Он имеет несколько входов - это линии запросов прерываний от устройств, и один выход, поступающий в процессор (рис.4)
Рис.4 – Мультиплексирование запросов аппаратных прерываний
контроллером прерываний
Контроллер прерываний принимает запросы c линий прерываний от устройств (IR0,IR1,….), определяет наиболее приоритетный из одновременно пришедших запросов и передает его на вход INTR процессора. Кроме сигнала прерывания, контроллер передает в процессор по шине данных сам номер прерывания.
Режимы контроллера прерываний и распределение приоритетов можно запрограммировать.
Прерывания, поступающие с контроллера на вход INTR процессора, называют «маскируемые». Их можно программно разрешить или запретить с помощью флага прерывания IF. Для установки/сброса флага в системе команд процессора предназначены команды: STI – установить флаг IF (разрешить прерывания) , CLI ­сбросить флаг IF (запретить прерывания).
12
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
У процессора есть еще один вход - NMI (non-masked interrupt) для «немаскируемых» прерываний. Этот сигнал вызывает прерывание процессора, независимо от состояния флага IF. Немаскируемые прерывания невозможно программно запретить.
Сигнал на входе NMI для процессора более приоритетен, чем INTR. Он используется для организации реакции процессора на критические системные ситуации, ошибки контроля четности данных, выключение питания и т.д.
Системные прерывания
Системные прерывания генерируются самим процессором в ответ на обнаруженные им события при чтении команды из памяти, ее дешифрации или исполнении.
Например, это может быть несуществующий адрес памяти, неправильный код операции, попытка деления на ноль в команде деления и т.д.
За каждым из таких прерываний закреплен определенный номер, известный процессору. Например, за делением на 0 закреплен номер 0, а за неправильным кодом операции - номер 6.
Программные прерывания
Программное прерывание генерирует сам процессор при исполнении команды INT n в исполняемом коде.
Программное прерывание используется для вызова исполняемой программой системного сервиса операционной системы или процедур базовой системы ввода-вывода.
Обязанности операционной системы в системе прерываний
1) За каждым источником прерывания в системе закрепить
определенный номер прерывания. Поскольку номер прерывания является однобайтной величиной, диапазон номеров прерывания – от 0 до 255.
2) Разместить в памяти процедуры - «обработчики прерывания» для каждого источника прерывания. Это делается на этапе загрузки самой операционной системы
3) Создать в памяти Таблицу прерываний, содержащую сегментные адреса (указатель сегмента: внутрисегментный адрес) всех
13
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
указатель
сегмента
внутрисегментное
смещение
Адрес обработчика прерывания № 0 («вектор прерывания»)
указатель
сегмента
внутрисегментное
смещение
Адрес обработчика прерывания № 1
. . .
. . .
. . . . .
указатель
сегмента
внутрисегментное
смещение
Адрес обработчика прерывания № n
«обработчиков прерываний». Строку таблицы с адресом обработчика называют «вектором прерывания».
Процессор всегда знает адрес размещения Таблицы прерываний в
памяти. В зависимости от режима работы процессора этот адрес фиксирован или заносится операционной системой в определенный системный регистр процессора.
Рис.5 - Структура Таблицы прерываний
Выполнение прерывания процессором
Процессор выполняет прерывания одинаково, независимо от его
типа.
1. Принимает по ШД от контроллера прерываний номер прерывания (только для внешних прерываний)
2. Сохраняет в стеке адрес следующей команды исполняемой им программы и состояние регистра флагов
3. Вычисляет адрес нужного вектора прерывания в Таблице прерываний, в котором записан адрес процедуры обработки данного прерывания:
адрес Таблицы прерываний + n * m (где n – номер прерывания, m - размер вектора в байтах)
4. Считывает значения «сегмент» и «смещение» из вектора
прерывания в качестве адреса следующей команды, которая должна им считываться и исполняться. Таким образом, процессор начнет исполнение процедуры обработки прерывания
Любая процедура, вызываемая через прерывание, должна
заканчиваться специальной командой процессора «возврат из процедуры» – IRET. Эта команда заставит процессор восстановить из стека флаги и сохраненный адрес возврата. Так, продолжится выполнение прерванной программы.
14
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Вызов процедуры Таблица векторов прерываний по прерыванию
Программа
mov ah, 9
. . . . .
Int 21h
mov ax,bx
CS: IP для
прерывания 0
CS:IP для
прерывания 1
. . . . .
CS:IP для
прерывания
21h
. . . . .
Системная
процедура
. . .
IRET
Рис.6 - Иллюстрация выполнения процессором прерывания на
примере программного прерывания.
Приоритеты прерываний
Сигналы прерываний возникают асинхронно по отношению к
процессору. Их может возникнуть одновременно несколько. Выбор одного из запросов прерываний выполняется по установленному приоритету прерывания.
Обычно приоритеты обработки прерываний от высшего
приоритета к низшему таковы:
- системные прерывания процессора;
- прерывание от системного таймера;
- прерывания от внешних устройств;
- программные прерывания.
Учет приоритетов может вестись разными способами. Аппаратные
способы обычно дополняются программным учетом, который ведет сама операционная система. Это позволяет применять различные дисциплины обслуживания прерываний.
Системный таймер
Системный таймер является важной для операционной системы
программируемой микросхемой. Операционная система использует
15
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
таймер для отсчета кванта времени при управлении переключением задач.
Системный таймер генерирует прерывание через настраиваемый промежуток времени. Программно в регистр таймера заносится некоторое числовое значение и таймер инициализируется. Далее он работает как вычитающий счетчик. Когда регистр обнулится, таймер генерирует аппаратное прерывание. Зная время одной декрементации, несложно рассчитать числовое значение для загрузки в таймер для получения прерывания через нужный промежуток времени.
Базовая система ввода-вывода (BIOS)
Базовой системой ввода-вывода называют набор системных процедур, размещенный в постоянном запоминающем устройстве системной платы. Поскольку процедуры BIOS являются «принадлежностью» системной платы, их относят скорее к аппаратному обеспечению.
Процедуры BIOS доступны только через прерывания.
Базовая система ввода-вывода - единственный программный код, который процессор может исполнять в отсутствии операционной системы.
Часть процедур BIOS вызывается только через аппаратные прерывания. Это процедуры инициализации и диагностики работоспособности устройств системы и инициализации загрузки дисковой операционной системы.
Значительная часть процедур базовой системы ввода-вывода доступны операционной системе (а в реальном режиме процессора и прикладной программе) через программные прерывания.
Они представляют собой низкоуровневый системный сервис для работы с внешними устройствами, определения конфигурации оборудования и сведений о системе, которым операционная система при желании может воспользоваться.
Например, программное прерывание 10h предлагает множество разнообразных функций, связанных с детальным программным управлением экраном. Программное прерывание 13h содержит набор функций для программной работы с секторами жесткого диска. Клавиатурные функции прерывания 16h позволяют обратиться программно непосредственно к содержимому буфера клавиатуры для получения кода нажатия клавиши и так далее.
16
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
3. Принципы управления процессами
Способы организации вычислительного процесса
Операционная система может управлять исполнением программ процессором одним из двух возможных способов: однопрограммный (однозадачный) или многопрограммный (многозадачный).
Однозадачный способ
При таком способе следующая программа загружается в память и предоставляется процессору для исполнения только после завершения исполнения текущей программы. Такой способ имеет много явных плюсов.
Преимущества для исполняемой программы:
- все аппаратные и программные ресурсы принадлежат ей,
- время исполнения программы минимальное, так как процессор не
будет переключаться операционной системой на исполнение других программ
Преимущества для операционной системы:
- возможность реализации управления только программными
способами, не требуется аппаратная поддержка
- минимальное использование оперативной памяти и простота ее
распределения
- нет необходимости организовывать разделение ресурсов, все
ресурсы принадлежат одной программе
- компактность операционной системы, как следствие
вышесказанного
Этот способ остался бы единственным используемым, если бы не основной его недостаток – это неэффективное использование процессора.
Современные процессоры имеют аппаратные возможности, позволяющие операционной системе программно «распараллелить» исполнение как нескольких программ, так и фрагментов кода в рамках одной программы. Что в целом скажется на производительности вычислительной системы в целом.
Эти возможности используются только при многозадачном способе организации исполнения программ процессором.
17
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Многозадачный способ
Он возможен только при наличии аппаратной поддержки процессором такого режима исполнения программ.
Операционная система сможет загружать в оперативную память множество программ. Они будут даваться последовательному процессору на исполнение «частично» и «поочередно», что дает эффект параллельности их выполнения.
При таком способе организации исполнения программ операционная система вынуждена решать возникающие сложные задачи по управлению памятью для размещения программ и разделению других ресурсов. Это неизбежно усложняет алгоритмы операционной системы и увеличивает размер ее кода. Очевидно, что многозадачный способ исполнения программ предъявляет повышенные требования к размеру оперативной памяти.
Диспетчер процессов
Управление программами в многозадачном режиме в структуре операционной системы выполняет модуль, обычно называемый Диспетчер процессов (Process manager).
В многозадачном режиме под термином «процесс» подразумевается загруженная в память исполняемая программа и выделенные ей системные ресурсы. В то время, как «программа» - это понятие статическое.
В функции Диспетчера процессов входит управление состоянием процессов, переключение процессов и организация взаимодействия между системными процессами. Для работы с процессами Диспетчер создает ряд информационных структур.
Дескриптор процесса - информационная структура, которую диспетчер создает для каждого процесса. Включает в себя: идентификатор процесса (имя и числовой код), код состояния процесса, приоритет процесса, адрес кодового сегмента процесса и другую информацию, ассоциированную с процессом.
Очередь процессов – массив из дескрипторов процессов, который диспетчер процессов упорядочивает нужным образом.
Сегмент состояния процесса - небольшой дополнительный сегмент в памяти, который выделяется загруженному процессу. В нем будет сохраняться «контекст процесса» перед переключением процессора на исполнение другого процесса.
18
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Контекст процесса – информация о состоянии процесса.
Включает текущее состояние регистров процессора, указатели на открытые процессом файлы, информация о начатых процессом обращениях к внешним устройствам и другое.
Любой процесс, размещенный в памяти, характеризуется в диспетчере своим состоянием: Готовность, Выполнение или Ожидание. Код соответствующего состояния диспетчер актуализирует в дескрипторе процесса.
ГОТОВНОСТЬ – означает, что процесс готов к выполнению, но процессор сейчас занят другим процессом.
ВЫПОЛНЕНИЕ – означает, что процессу предоставлен процессор. То есть, процесс исполняется.
ОЖИДАНИЕ - означает, что процесс приостановлен по своим внутренним причинам. Он дожидается окончания операции ввода­вывода или освобождения нужного ему ресурса.
Для процессов, находящихся в состояниях ОЖИДАНИЕ или ГОТОВНОСТЬ диспетчер создает отдельные очереди - очередь ожидающих процессов и очередь готовых процессов.
Переключение процессов
Это действия, преследующие цель снятия одного процесса с исполнения и активизацию исполнения другого процесса. Эти мероприятия требуют аппаратной поддержки.
Переключение должно происходить в следующих ситуациях:
- текущий процесс завершился или возникла ошибка,
- процесс переведен в ОЖИДАНИЕ,
- исчерпан квант времени исполнения процесса.
Квант времени - интервал времени, в течение которого процессор должен выполнять процесс непрерывно. После чего, диспетчер подготовит «переключение процессов».
Для переключения потребуется выбрать другой процесс из очереди Готовых процессов и подготовить «контексты процессов» к переключению.
Само переключение «контекстов процессов» выполняется процессором аппаратно (рис.7).
19
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Рис.7 – Работы по переключению процесса
Способ, которым диспетчер процессов определяет момент для «переключения процессов», определяет тип многозадачности.
«Не вытесняющая многозадачность» - когда процесс сообщает в операционную систему о возможности переключения через вызов системного сервиса.
Достоинством этого способа является простота реализации переключения. Недостаток – потенциальная ненадежность системы, так как принятие решения исходит от прикладной задачи.
«Вытесняющая многозадачность» - когда решение о переключении принимает сам диспетчер процессов.
При вытесняющей многозадачности зависание процесса не сможет нарушить работу операционной системы, так он всегда будет снят с исполнения по истечении кванта времени. Такой тип многозадачности сложен в реализации. Кроме того, на процесс переключения потребуются временные затраты.
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]