Перечислите основные способы прерываний

Прерывание и типы прерываний

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

В компьютерах фирмы IBM возможны следующие типы прерываний:

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

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

— прерывания от таймера;

— прерывания от внешних устройств;

— прерывания по нарушению питания;

— прерывания с пульта оператора;

— прерывания от другого процессора или другой ЭВМ и др.

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

— при нарушении адресации (например, неверный адрес команды или страницы виртуальной памяти);

— при попытке выполнить операцию с неправильным кодом;

— при делении на нуль;

— при переполнении или исчезновении порядка и др.

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

Для корректного переключения процессора с одного процесса на другой в случае возникновения прерывания необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется КС для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно находится в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие потока исполнения (threads of execution).

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

а) с относительными приоритетами – обслуживание не прерывается при наличии запросов с более высокими приоритетами;

б) с абсолютными приоритетами – обслуживание не прерывается при наличии запросов с более высокими приоритетами;

в) LCFS (Last come first served – «последним пришел – первым обслужен»).

При реализации переключения контекста в компьютерах фирмы IBM используются слова состояния программы (PSW), которые управляют порядком выполнения команд и содержат различную информацию относительно состояния процесса. Существуют три типа слов состояния программы – текущее PSW, новое PSW и старое PSW. Адрес следующей команды, подлежащей выполнению, содержится в текущем PSW, в котором указываются также типы прерываний, разрешенных и запрещенных в данный момент. Центральный процессор реагирует только на разрешенные прерывания, а обработка запрещенных прерываний задерживается или игнорируется.

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

Читайте также:  Способы образования действительных причастий прошедшего времени

Когда происходит прерывание, не запрещенное для обработки, производится автоматическое переключение слов состояния следующим образом:

1) Текущее PSW становится старым PSW для прерывания этого типа

2) Новое PSW для прерывания этого типа становится текущим

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

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

Рассмотрим, как может происходить операция разблокирования процесса, ожидающего ввода-вывода (см. рис.5.5). При исполнении процессором некоторого процесса (на рис.5.5 — процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановка. Далее, операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рис.5.5 — процесс 2), и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рис.5.5 был выбран разблокированный процесс). В результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии «исполнение».

Рисунок 5.5 — Выполнение операции разблокирования процесса

Ядро операционной системы

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

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

В состав ядра ОС входят следующие программные модули:

— средства управления системой прерываний.

— средства выполнения операций над процессами (например, создание и уничтожение процессов, изменение приоритета процесса) и средства по переводу процессов из одного состояния в другое (например, состояния выполнения, готовности, блокировки);

— поддержка операций ввода-вывода;

— поддержка работы файловой системы;

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

1) Дайте определение процессу, ресурсам.

2) Приведите типы ресурсов.

3) Назовите пять основных состояний процессов, приведите диаграмму состояний.

4) Перечислите семь операций над процессами. Укажите, какие из них являются одноразовыми и многоразовыми.

5) Назовите информацию, которая содержится в блоке управления процессом.

6) Что такое контекст процесса, из каких частей он состоит.

7) Дайте определение прерыванию и назовите типы прерываний.

8) В чем заключается переключение контекста.

9) Какие дисциплины обслуживания используются при переключении контекста.

10) Опишите реализацию переключения контекста в компьютерах фирмы IBM.

11) Перечислите программные модули ядра.

1.Федоров Є.Є.- Курс лекцій «Комп’ютерні системи» — Донецьк: ДІАТ, 2008. – 57 с.

Статьи к прочтению:

Лекция 8: Прерывания

Похожие статьи:

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

Маскируемые и немаскируемые внешние прерывания Существуют два специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно…

Источник

Перечислите основные способы прерываний

Система прерываний 32-разрядных микропроцессоров i 80 x 86.

Работа системы прерываний в реальном режиме

1. Понятие прерывания

2. Классификация прерываний

3. Система прерываний.

· Программные средства системы прерываний

· Таблица векторов прерываний

4. Обработка прерывания в реальном режиме

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

Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе.

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

Читайте также:  Способы учета затрат при строительстве объекта основных средств

Адрес программы-обработчика прерывания вычисляется по таблице векторов прерываний.

Механизм прерываний поддерживается на аппаратном уровне.

В зависимости от источника, прерывания делятся на

· аппаратные — возникают как реакция микропроцессора на физический сигнал от некоторого устройства (клавиатура, системные часы, клавиатура, жесткий диск и т.д.), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени;

· программные — вызываются искусственно с помощью соответствующей команды из программы ( int ), предназначены для выполнения некоторых действий операционной системы, являются синхронными;

· исключения — являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (деление на ноль, прерывание по флагу TF ( трассировка)).

Общая классификация прерываний

· внешние — вызываются внешними по отношению к микропроцессору событиями

(по существу — это группа аппаратных прерываний) Вложенных прерываний нет!

· внутренние — возникают внутри микропроцессора во время вычислительного процесса (по существу — это исключительные ситуации и программные прерывания).

Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства.

Внешние прерывания подразделяются на не­маскируемые и маскируемые.

В связи с тем, что существуют два специальных внешних сигнала среди входных сигналов процес­сора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (no mask interrupt , немаскируемое прерывание) и INTR (interrupt request , запрос на прерывание).

Маскируемые прерывания генерируются контроллером прерываний по заявке определенных периферийных устройств. Контроллер прерываний (выполнен в виде специальной микросхемы i8259A) поддерживает восемь уровней (линий) приоритета; к каждому уровню “привязано” одно периферийное устройство. Именно маскируемые прерывания часто называют аппаратными прерываниями.

В ПК, начиная с IBM PC AT, построенных на базе микропроцессора i80286, используются два контроллера прерываний i8259A; они соединяются последователь­но каскадным образом, что увеличивает количество внешних источников прерываний до 15 (каждая по 8).

Обратим внимание . Микросхема i 8259А является программируемой.

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

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

Система прерываний. Аппаратные и программные средства системы прерываний

Система прерываний — это совокупность программных и аппаратных средств, реализующих механизм прерываний.

К аппаратным средствам системы прерываний относятся:

· выводы микропроцессора — на них формируются сигналы, извещающие микропроцессор либо о том, что некоторое внешнее устройство «просит уделить ему внимание» ( INTR) , либо о том, что требуется безотлагательная обработка некоторого события или катастрофическая ошибка (NMI)

· INTR — вывод для входного сигнала запроса на прерывание ,

· NMI — вывод для входного сигнала немаскируемого прерывания

· INTA — вывод для выходного сигнала подтверждения получения сигнала прерывания микропроцессором (этот сигнал поступает на одноименный вход микросхемы конроллера 8259А;

· программируемый контроллер прерываний 8259А (предназначен для фиксирования сигналов прерываний от восьми различных внешних устройств; он выполнен в виде микросхемы; обычно используют две последовательно соединенные микросхемы, поэтому кол-во возможных источников внешних прерываний до 15 плюс одно немаскируемое прер.; именно он формирует номер вектора прерывания и выдает его шину данных);

· внешние устройства (таймер, клавиатура, магнитные диски и т.п.)

К программным средствам системы прерываний Реального режима относятся:

Читайте также:  Способы получения комплексных соединений их химические свойства

· таблица векторов прерываний .

Занимает первый килобайт ОП (адреса 00000 h-003FFh) .

Она содержит адреса (векторы — «векторы», т.к. два значения для указания адреса) обработчиков прерываний и состоит из 256 (0..255) элементов по 4 байта каждый:

— 2 байта — новое значение для регистра IP

— 2 байта — новое значение для регистра CS .

Расположение таблицы векторов прерываний в процессорах i80286 и старше определяется значением регистра IDTR .

Таблица векторов прерываний инициализируется при запуске системы, но в принципе может быть изменена и перемещена.

Каждый вектор имеет свой номер и называется номером прерывания.

· два флага в регистре флагов flags/eflags :

· IF (Interrupt Flag) — флаг прерывания. Предназначен для маскирования (запрещения) аппаратных прерываний. Если IF=1 , микропроцессор обрабатывает внешние прерывания, если = 0, то игнорирует;

· TF(Trace Flag) — флаг трассировки. Если он=1, то микропроцессор переходит в режим покомандной работы. В этом режиме в микропроцессоре генерируется внутреннее прерывание с номером 1;

· машинные команды микропроцессора: int, into (прерывание по переполнению) , iret, cli, sti

Обработка прерывания в реальном режиме

производится в три этапа:

1) прекращение выполнения текущей программы;

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

Обязательными для сохранения являются регистры cs, ip, flags (пара CS:IP содержит адрес команды, с которой необходимо начать выполнение после возврата, flags — состояние флагов после выполнения последней команды прерванной программы).

. Эти регистры сохраняются микропроцессором автоматически. Сохранение остальных регистров — должно обеспечиваться программистом .

Наиболее удобным местом хранения регистров является стек.

После сохранения регистров в стеке микропроцессор сбрасывает бит флага IF (т.е.=0) (. В стеке при этом записан регистр flags с еще установленным IF . ) Этим предотвращается возможность возникновения вложенных внешних прерываний и порча регистров исходной программы вследствие неконтролируемых действий со стороны программы — обработчика вложенного прерывания. После того как необходимые действия по сохранению контекста завершены, обработчик аппаратного прерывания может разрешить вложенные прерывания командой sti .

2) переход к выполнению и выполнение программы обработки прерывания;

Здесь определяется источник прерывания и вызывается соответствующий обработчик прерывания.

В реальном режиме микропроцессора допускается 256 источников — по кол-ву элементов таблицы векторов прерываний.

· 2 байта — значение смещения начала программы-обработчика прерывания от начала кодового сегмента

· 2 байта — значение базового адреса сегмента, в котором находится программа-обработчик.

Как определить адрес, по которому находится вектор прерывания с номером N ?

смещение эл-та таблицы векторов прерываний = N * 4

Полный размер таблицы ? 4*256=1024

Итак на втором этапе микропроцессор

1. По номеру источника прерывания определяет смещение в таблице векторов прерываний

2. Помещает первые два байта в регистр IP

3. Помещает вторые два байта в регистр CS

4. Передыет управление по адресу CS:IP

Далее выполняется сама программа обработки прерывания.

(Она тоже может быть прервана поступлением запроса от более приоритетного источника. Все источники прерывания имеют приоритеты.)

3) возврат управления прерванной программе.

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

Последние команды в в обработчике прерывания — sti, iret

sti — разрешить аппаратные прерывания (устанавливает флаг IF=1 , не имеет операндов) .

iret — извлечь последовательно три слова из стека и поместить их соответственно в регистры ip, cs, flags.

Источник

Оцените статью
Разные способы