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

Здесь мы разберем такие важные темы, как: обработка прерываний, векторы прерываний, программные прерывания, IRQ, в общем поговорим на темы прерывания.

Идея прерывания была предложена в середине 50-х годов и основная цель введения прерываний – реализация синхронного режима работы и реализация параллельной работы отдельных устройств ЭВМ.

Прерывания и обработка прерываний зависят от типа ЭВМ, поэтому их реализацию относят к машинно-зависимым свойствам операционных систем.

Прерывание (interrupt) – это сигнал, заставляющий ЭВМ менять обычный порядок выполнения команд процессором.

Возникновение подобных сигналов обусловлено такими событиями, как:

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

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

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

Например прерывание с номером 9 — прерывание от клавиатуры, которое генерируется при нажатии и при отжатии клавиши. Используется для чтения данных с клавиатуры. Обозначается в ОС как IRQ1, где IRQ – обозначение прерывания, а 1 – приоритет прерывания. Данные о запросах на прерывание можно проанализировать в диспетчере устройств:

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

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

Векторы прерываний

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

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

Таблица векторов прерываний занимает первый килобайт оперативной памяти — адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов — FAR-адресов обработчиков прерываний. Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором — адрес сегмента обработчика прерывания. Векторами являются просто полные адреса памяти программы (в сегментированной форме),  которая должна быть активизирована в случае возникновения прерывания.

Прерыванию с номером 0 соответствует адрес 0000:0000, прерыванию с номером 1 — 0000:0004 и т.д. Адрес такой состоит из пары 2-байтовых слов,  поэтому каждый из векторов занимает четыре байта.

Можно  просмотреть таблицу векторов прерываний в компьютере, если воспользоваться программой DEBUG. Используйте команду  D для вывода содержимого начала памяти:  D 0:0.  Программа DEBUG покажет вам первые 128 байтов или 32 вектора,  которые могут иметь  вид наподобие следующего:

0000:0000 E8 4E 9A 01 00 00 00 00-C3 E2 00 F0 00 00 00 00
0000:0010 F0 01 70 00 54 FF 00 F0-05 18 00 F0 05 18 00 F0
0000:0020 2C 08 51 17 D0 0A 51 17-AD 08 54 08 E8 05 01 2F
0000:0030 FA 05 01 2F 05 18 00 F0-57 EF 00 F0 F0 01 70 00
0000:0040 90 13 C7 13 4D F8 00 F0-41 F8 00 F0 3E 0A 51 17
0000:0050 5C 00 B7 25 59 F8 00 F0-E2 0A 51 17 9C 00 B7 25
0000:0060 00 00 00 F6 8E 00 DE 09-6E FE 00 F0 F2 00 7B 09
0000:0070 27 08 51 17 A4 F0 00 F0-22 05 00 00 00 00 00 F0

Векторы хранятся как «слова наоборот»: сначала смещение, а потом сегмент. Например, первые четыре байта, которые программа DEBUG показала выше (E8 4E 9A 01) можно преобразовать в сегментированный адрес 019A:4EE8.

Можно встретить три вида адресов в  таблице  векторов.  Это  могут быть адреса, указывающие на ROM-BIOS, которые можно идентифицировать шестнадцатеричной цифрой F,  которая предшествует номеру сегмента.  Это могут  быть  адреса,  которые  указывают на главную память (как в примере: 019A:4EE8). Эти адреса могут указывать на подпрограммы ДОС или на резидентную программу (например,  SideKick или Prokey), либо они могут указывать на саму программу DEBUG (поскольку DEBUG должна  временно управлять прерыванием). Также векторы могут состоять из одних нулей, когда прерывание с данным номером не обрабатывается в  текущий  момент.

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

Ниже приведено назначение некоторых векторов:

Описание
0 Ошибка деления. Вызывается автоматически после выполнения команд DIV или IDIV, если в результате деления происходит переполнение (например, при делении на 0).
2 Аппаратное немаскируемое прерывание. Это прерывание может использоваться по-разному в разных машинах. Обычно вырабатывается при ошибке четности в оперативной памяти и при запросе прерывания от сопроцессора.
5 Печать копии экрана. Генерируется при нажатии на клавиатуре клавиши PrtScr. Обычно используется для печати образа экрана.
8 IRQ0 — прерывание интервального таймера, возникает 18,2 раза в секунду.
9 IRQ1 — прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши. Используется для чтения данных от клавиатуры.
A IRQ2 — используется для каскадирования аппаратных прерываний в машинах класса AT
B IRQ3 — прерывание асинхронного порта COM2.
C IRQ4 — прерывание асинхронного порта COM1.
D IRQ5 — прерывание от контроллера жесткого диска для XT.
E IRQ6 — прерывание генерируется контроллером флоппи-диска после завершения операции.
F IRQ7 — прерывание принтера. Генерируется принтером, когда он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание.
10 Обслуживание видеоадаптера.
11 Определение конфигурации устройств в системе.
12 Определение размера оперативной памяти в системе.
13 Обслуживание дисковой системы.
14 Последовательный ввод/вывод.
19 Загрузка операционной системы.
1A Обслуживание часов.
1B Обработчик прерывания Ctrl-Break.
70 IRQ8 — прерывание от часов реального времени.
71 IRQ9 — прерывание от контроллера EGA.
75 IRQ13 — прерывание от математического сопроцессора.
76 IRQ14 — прерывание от контроллера жесткого диска.
77 IRQ15 — зарезервировано.

IRQ0 — IRQ15 — это аппаратные прерывания.

Механизм обработки прерываний

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

  • Восприятие запроса на прерывание:  прием сигнала и идентификация прерывания.
  • Запоминание состояния прерванного процесса: определяется значением счетчика команд (адресом следующей команды) и содержимым регистров процессора.
  • Передача управления прерывающей программе (в счетчик команд заносится  начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры – информация из слова состояния процессора).
  • Обработка прерывания.
  • Восстановление прерванного процесса и возврат в прерванную программу.

Главные функции механизма прерывания:

  1. распознавание или классификация прерываний.
  2. передача управления соответственно обработчику прерываний.
  3. корректное возвращение к прерванной программе (перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом либо в системном стеке).

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

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

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

Аппаратные прерывания не координируются  c  работой   программного   обеспечения.   Когда   вызывается прерывание, то процессор оставляет свою работу, выполняет прерывание, a затем возвращается на прежнее место.

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

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

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

Маскируемые и немаскируемые внешние прерывания

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

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

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

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

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

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

Программные прерывания

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

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

Механизм программных прерываний был специально введен для того, чтобы:

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

Пример (программные прерывания):

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

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

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

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

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

В случае о прерывании самой программы обработки прерывания говорят о вложенном прерывании. Уровни приоритетов обозначаются сокращенно IRQ0 — IRQ15 или IRQ0 – IRQ23 (в зависимости от микросхемой реализации).

Пpepывaнию вpeмeни cутoк дан мaкcимaльный пpиopитeт, пocкoльку ecли oнo  будет  пocтoяннo тepятьcя,  то будут нeвepными пoкaзaния cиcтeмныx чacoв.  Пpepывaниe от клaвиaтуpы вызывaeтcя при нaжaтии или oтпуcкaнии клавиши; oнo вызывaeт цепь coбытий,  кoтopaя oбычнo зaкaнчивaeтcя тем, что код клавиши пoмeщaeтcя в буфep клaвиaтуpы (oткудa он зaтeм  мoжeт быть пoлучeн пpoгpaммными пpepывaниями).

Ну и наконец реализация механизма обработки прерываний

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

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

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

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

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

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

  • при программном прерывании отражается тип вызвавшего его условия, например деление на нуль.
  • при прерывании по вводу-выводу заносится номер канала, вызвавший прерывание.

В третьем элементе указывается, выполняет ли процессор команды или простаивает. В четвертом элементе содержится указатель, идентифицирующий текущую выполняемую программу. В пятом элементе содержится маска прерываний, которая используется для контроля за разрешением прерываний (поле MASK).

Это поле используется, чтобы не допустить наступления прерываний определенного типа, пока первое из них не будет обработано. В MASK  каждый бит соответствует некоторому классу прерываний. Если какой-то бит установлен в 1, то прерывания соответствующего класса разрешены, если в 0, то запрещены. В последнем случае говорят, что они маскированы (их также называют запрещеннымиили закрытыми). Однако маскированные прерывания не теряются, потому что сигнал, вызвавший прерывание, сохраняется аппаратурой. Временно задержанное таким способом прерывание называется отложенным. Когда (вследствие того, что значение MASK сброшено) прерывания соответствующего класса вновь разрешаются, сигнал опознается и происходит прерывание.

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

Прерывание 0 — Деление на нуль (#DE)

Возникает, если в командах DIV или IDIV делитель равен нулю или результат операции не может быть представлен в том количестве бит, которыми располагает операнд-назначение. А также, если в команде AAM ее непосредственный операнд задан равным нулю.

Прерывание 1 — Прерывание отладки (#DB)

Генерируется при ряде условий. Может быть как ошибкой, так и ловушкой в зависимости от причины:

  • точка останова по команде – ошибка;
  • точка останова по данным – ловушка;
  • точка останова по вводу/выводу – ловушка;
  • защита от записи в регистры отладки – ошибка;
  • пошаговое выполнение – ловушка;
  • выполнение команды INT 1 – ловушка;
  • точка останова по переключению задач – ловушка.

Процессор не сохраняет код ошибки для этого прерывания. Обработчик должен проверять отладочные регистры для выяснения причины прерывания.

Прерывание 2 — Немаскируемое прерывание (NMI)

Немаскируеамое прерывание генерируется извне путем подачи сигнала на вывод NMI# процессора, либо через внутреннюю шину встроенного APIC-контроллера. При поступлении немаскируемого прерывания процессор заканчивает выполнение текущей команды, сохраняет в стеке значения некоторых регистров (зависит от режима работы), в т.ч. указатель CS:(E)IP на следующую команду, и передает управление обработчику прерывания. Таким образом, позднее прерванная программа может быть продолжена без каких-либо дополнительных действий.

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

Прерывание 3 — Точка останова (#BP)

Генерируется командой INT 3. Данное прерывание предназначено для использования отладчиком, который размещает специальную однобайтовую команду INT 3 (код CCh) вместо первого байта команд или вместо однобайтовых команд. Сохраненные значения CS:EIP указывают на байт, следующий за INT 3. Существует второй способ вызова данного прерывания с помощью двухбайтового кода INT 3 (код CD03h). Однако данный метод на практике не применяется, все ассемблеры x86 по умолчанию интерпретируют мнемонику INT 3 как однобайтовую команду с кодом CCh (но это не исключает возможность ручного программирования двухбайтового кода). Помимо размера кода, отличается и процесс обработки одно- и двухбайтовых команд INT 3. Прерывание, сгенерированное однобайтовой командой при CR4.VME = 1 не подвергается перенаправлению по карте перенаправления прерывания и всегда обрабатывается обработчиком защищенного режима, а в режиме V86 для данного прерывания не осуществляется проверок поля IOPL и, соответственно, не может быть сгенерирована ошибка общей защиты (#GP).

Команда INT 3 ни коим образом не влияет на состояние и содержимое регистров процессора. Прерванная программа может быть продолжена, если обработчик прерывания восстановит команду, измененную записью точки останова INT 3, и, уменьшив на единицу сохраненные значения CS:EIP, передаст управление на эту команду.

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

Прерывание 4 — Переполнение (#OF)

Генерируется при выполнении команды INTO, если установлен флаг OF.

Прерывание 5 — Нарушение границ (#BR): Intel186 …

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

Прерывание 6 — Неопределенный код операции (#UD): Intel186 …

Возникает, когда в управляющем блоке процессора обнаруживается некорректный код, включая коды MMX, 3DNow! и SIMD-команд в процессорах, которые не поддерживают такие расширения системы команд. Сохраненное значение CS:EIP указывает на недопустимый код или на его префикс. Ошибка может быть обработана в текущей задаче.

Это прерывание также возникает при любом появлении неправильного операнда (например, межсегментный переход, использующий регистровый операнд), при попытке выполнения специальных команд защищенного режима (LLDT, SLDT, LTR, STR, LSL, LAR, VERR, VERW, ARPL) в режиме реальной адресации или в режиме V86 и при попытке выполнить команду RSM, когда процессор не находится в системном режиме SMM (System Management Mode).

В процессорах Intel386 и старше прерывание #UD вызываетcя также использованием префикса LOCK с командами не допускающими блокировки или с командами в которых операнд-назначение не располагается в памяти.

В процессорах, которые поддерживают системы команд MMX, SIMD и 3DNow!, прерывание #UD генерируется при встрече таких команд, если установлен флаг CR0.EM, а для SIMD-команд и в случае, если CR4.OSFXSR = 0. Кроме этого, когда специальный бит CR4.OSXMMEXCPT = 0, то все незамаскированные исключения SIMD вызывают генерацию особой ситуации #UD, а обработчик особой ситуации должен затем определять причину ее генерации, обращаясь к SIMD-регистрам. (Если CR4.OSXMMEXCPT = 1, то все незамаскированные исключения SIMD вызывают генерацию особой ситуации #XM).

В процессорах Pentium Pro … введена новая команда UD2, выполнение которой вызывает генерацию особой ситуации #UD.

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

Специальные коды D6h и F1h зарезервированы Intel и не вызывают ошибки.

Прерывание 7 — Сопроцессор отсутствует (#NM): Intel286 …

Генерируется в следующих ситуациях:

  • процессор выполняет команду FPU, и CR0.EM = 1;
  • процессор выполняет команду FPU, MMX, 3DNow! или SIMD и CR0.TS = 1.
  • процессор выполняет команду WAIT/FWAIT, когда CR0.MP = 1 и CR0.TS = 1.

Т.е. прерывание генерируется, если поступает команда FPU, а сопроцессор отсутствует или поступают команды FPU, MMX, 3DNow!, SIMD или WAIT/FWAIT, а состояние сопроцессора не отвечает необходимому для данной задачи (произошло переключение задач).

Флаг CR0.MP был первоначально введен в процессорах Intel286 и Intel386 и используется совместно с битом CR0.TS для определения, должна ли команда WAIT/FWAIT генерировать особую ситуацию #NM. Для программ, запускаемых на процессорах Intel486 и старше (при наличии встроенного или внешнего сопроцессора), должно быть CR0.MP = 1. Для Intel486SX (когда сопроцессор Intel487SX отсутствует) — CR0.MP = 0.

Прерывание 8 — Двойная ошибка (#DF): Intel286 …

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

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

Таблица 3.3. Условия, при которых генерируется двойная ошибка

Особая ситуация, возникшая


первой

Особая ситуация, возникшая


второй

Безопасная (1, 2, 3, 4, 5, 6,

7, 9, 16, 17 18, 19, INT n, INTR#)

Способству-ющая

(0,10,11,12,13)

Страничная (14)

Безопасная (1, 2, 3, 4, 5, 6,

7, 9, 16, 17 18, 19, INT n, INTR#)

Нет

Нет

Нет

Способствующая (0,10,11,12,13)

Нет

Да

Нет

Страничная (14)

Нет

Да

Да

Код ошибки помещается в стек обработчика двойной ошибки; поэтому этот код всегда нулевой. Вызвавшая ошибку команда не перезапускаема. Если во время перехода на обработчик двойной ошибки возникает еще какая-либо особая ситуация, то процессор переходит в режим останова, откуда может быть выведен только сигналами аппаратных прерываний NMI, SMI или сбросом. Если это происходит в обработчике немаскируемого прерывания NMI, то процессор может быть запущен в работу только сбросом. (На практике оказывается, что даже не все процессоры фирмы Intel ведут себя именно так, некоторые просто сбрасываются, некоторые могут, как ни в чем не бывало, продолжить работу.)

Прерывание 9 — Превышение сегмента сопроцессором : Intel286, Intel386

Это прерывание поддерживается только процессорами Intel286 и Intel386. В Intel486 … прерывание 9 считается зарезервированным и не должно использоваться.

Прерывание генерируется при проверке границ сегмента, производящейся при каждом обращении сопроцессора к памяти, в случае, если произошел выход за пределы сегмента при попытке чтения/записи второго или следующих слов операнда. Прерывание может обрабатываться в той же задаче, но команда, вызвавшая эту ошибку, не перезапускаема. Процессор не сохраняет никакой информации о вызвавшей прерывание команде. Для выяснения причины прерывания необходимо обратиться к специальным регистрам сопроцессора, содержащим последнюю выполненную команду и адрес запрошенного операнда. После возникновения этого прерывания не могут быть выполнены никакие команды типа WAIT или команды FPU (кроме FINIT/FNINIT) до тех пор, пока не будет устранена причина сбоя, или сопроцессор не будет инициализирован.

В тех случаях, когда Intel287 и Intel387 генерируют прерывание 9 процессоры Intel486 … генерируют ошибку общей защиты (#GP). Некоторые случаи, однако, требуют осторожности. Ошибки памяти (особенно страничные ошибки) могут потеряться, если они происходят в FLDENV или FRSTOR в то время, как процессор осуществляет переключение задач. Рекомендуется, чтобы область сохранения состояния сопроцессора находилась в той же странице, что и TSS.

Прерывание 10 — Неправильный TSS (#TS): Intel286 …

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

Таблица 3.4. Ошибки, вызывающие генерацию особой ситуации #TS

Индекс кода ошибки

Описание

Селектор TSS

Предел TSS меньше 67h (2Bh для 16-битного TSS)

Селектор LDT

Неправильная LDT или LDT не присутствует

Селектор сегмента стека

Селектор стекового сегмента выходит за границы таблицы дескрипторов

Селектор сегмента стека

Сегмент стека не разрешен для записи

Селектор сегмента стека

RPL селектора стекового сегмента не равно CPL

Селектор сегмента стека

DPL стекового сегмента не равно CPL

Селектор кодового сегмента

Селектор кодового сегмента выходит за границы таблицы дескрипторов

Селектор кодового сегмента

Кодовый сегмент не является исполняемым

Селектор кодового сегмента

DPL несогласованного кодового сегмента не равен

CPL

Селектор кодового сегмента

DPL согласованного кодового сегмента больше CPL

Селектор сегмента данных

Селектор сегмента данных выходит за границы таблицы дескрипторов

Селектор сегмента данных

Сегмент данных не доступен для чтения

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

Это прерывание может быть вызвано, как в контексте старой задачи, так и уже в новой (т.е. регистр TR уже будет загружен новым селектором TSS). Первый случай возникает при проверке присутствия нового TSS. Если переключения задач еще не произошло, то сохраненные CS:EIP указывают на команду старой задачи, которая инициировала переключение задач, если же ошибка возникла после переключения задач, то сохраненные CS:EIP указывают на первую команду новой задачи.

Обрабока данной ошибки в текущей задаче затруднена. Intel рекомендует использовать шлюз задачи для обработчика этой ошибки.

Прерывание 11 — Сегмент не присутствует (#NP): Intel286 …

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

  • при любой команде загрузки (в т.ч. и при переключении задач) регистров CS, DS, ES, FS или GS (загрузка SS вызывает стековую ошибку);
  • при загрузке регистра LDTR командой LLDT (загрузка LDTR во время переключения задач вызывает генерацию ошибки #TS — неправильный TSS);
  • при попытке использования (например, командой LTR или при переключении задач) дескриптора шлюза или TSS, помеченного как неприсутствующий.

Эта ошибка рестартируема и может обслуживаться в рамках породившей ее задачи. Код ошибки помещается в стек. Бит EXT кода ошибки устанавливается, если прерывание вызвано внешним событием. Бит IDT кода ошибки устанавливается, если код ошибки ссылается на элемент IDT (т.е. команда INT ссылается на неприсутствующий шлюз).

Сохраняемые значения CS:EIP в большинстве случаев указывают на команду, приведшую к генерации ошибки. В случае, когда ошибка происходит при переключении задач, сохраняемые CS:EIP указывают на первую команду новой задачи, а если ошибка генерируется при обращении к дескриптору шлюза, то CS:EIP будут указывать на команду, осуществившую такое обращение (например, команда CALL).

Прерывание 12 — Ошибка стека (#SS): Intel286 …

Генерируется в следующих случаях:

  • при нарушении установленных границ в командах, использующих регистр SS (POP, PUSH, RET, IRET, ENTER, LEAVE, а также команды типа MOV AX,[BP] , MOV AX,SS:[EAX] и т.п.);
  • при попытке загрузить SS дескриптором, который помечен как неприсутствующий (может случиться в командах CALL, IRET, LSS, MOV, POP).

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

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

Прерывание 13 — Общая защита (#GP): Intel286 …

Все нарушения защиты, которые не учитываются в других особых ситуациях, генерируют ошибку общей защиты (#GP). Такими нарушениями могут быть:

  • выход за границы сегмента при использовании CS, DS, ES, FS или GS;
  • выход за границы сегмента при ссылках на таблицу дескрипторов, кроме случая переключения задач и переключения стека;
  • передача управления в сегмент, который не является исполняемым;
  • запись в только читаемый сегмент данных или сегмент кода;
  • чтение из только исполняемого кодового сегмента;
  • загрузка регистра SS селектором только читаемого сегмента (кроме случая, когда это происходит во время переключения задач);
  • загрузка SS, DS, ES, FS или GS селектором системного сегмента;
  • загрузка DS, ES, FS или GS селектором только исполняемого кодового сегмента;
  • загрузка SS селектором исполняемого сегмента или нулевым селектором;
  • загрузка CS селектором сегмента данных или нулевым селектором;
  • использование DS, ES, FS или GS для обращения к памяти, когда в них загружен нулевой селектор;
  • переключение на занятую задачу (кроме команды IRET);
  • переключение на свободную задачу при выполнении команды IRET;
  • использование при переключении задач селектора TSS, который указывает на текущую таблицу LDT (дескрипторы TSS всегда должны располагаться в GDT);
  • обращение к значениям в таблице IDT, которые не являются корректными шлюзами прерывания, ловушки или задачи;
  • нарушение правил привилегий, отслеживаемых механизмом защиты;
  • попытка выполнения привилегированной команды на уровне привилегий отличном от 0;
  • обращение к шлюзу, который содержит нулевой селектор или селектор, который не указывает на исполняемый кодовый сегмент;
  • выполнение команды INT n, когда CPL больше DPL используемого шлюза прерывания, ловушки или задачи или в режиме V86, когда IOPL < 3;
  • селектор, загружаемый командой LLDT в регистр LDTR, не указывает на дескриптор в таблице LDT, либо этот дескриптор не является дескриптором LDT;
  • попытка загрузки в регистр TR командой LTR селектора, который указывает на таблицу LDT или на занятый TSS;
  • использование в качестве назначения команд межсегментных переходов и вызовов (CALL, RET и JMP) нулевого селектора;
  • попытка обращения к обработчику прерывания через шлюз прерывания или ловушки из режима V86, когда уровень привилегий процедуры обработчика прерываний DPL больше 0 (Intel386 …);
  • превышение командой размера 15 байт (Intel386 …), такое может случиться при неправильном использовании префиксов;
  • попытка загрузки регистра CR0 значением, в котором флаг PE = 0, а флаг PG = 1 (Intel386 …);
  • попытка загрузки регистра CR0 значением, в котором флаг CD = 0, а флаг NW = 1 (Intel486 …);
  • если начальный адрес операндов сопроцессора выходит за границу сегмента (Intel486 …);
  • попытка записи единицы в зарезервированные биты CR4 (Pentium …);
  • поступление внешнего маскируемого прерывания, когда инициализировано расширение CR4.VME или CR4.PVI, а также попытка установки флага EFLAGS.VIF в этом режиме при условии EFLAGS.VIP = 1 (Pentium …);
  • попытка записи в зарезервированные биты специальных регистров модели MSR (Pentium …);
  • при установленном флаге CR4.PAE, когда процессор обнаруживает, что в любом из зарезервированных битов элементов таблицы указателей на каталог страниц присутствует 1, такая проверка производится процессором всякий раз, когда изменяются значения в регистрах CR0, CR3, CR4 и он производит считывание значений элементов таблицы указателей на каталог страниц из памяти (Pentium Pro …).

При возникновении ошибки общей защиты процессор помещает код ошибки в стек обработчика. Если ошибка произошла при загрузке неправильного дескриптора, то код ошибки — это селектор этого дескриптора, либо его индекс в таблице IDT, во всех остальных случаях код ошибки нулевой. Сохраняемые значения CS:EIP указывают на команду, вызвавшую ошибку. Если ошибка происходит во время переключения задач, то ее генерация может произойти как до, так и после момента переключения задачи. Во втором случае процессор сначала закончит загрузку всех значений в регистры CS, SS, DS, ES, FS, GS без проверки их корректности, а затем передаст управление обработчику ошибки.

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

В реальном режиме прерывание 13 генерируется при нарушении границы 0FFFFh в сегментах CS, DS, ES, FS, GS.

Прерывание 14 — Страничная ошибка (#PF): Intel386 …

Генерируется, если страничный механизм активизирован (CR0.PG = 1) и при трансляции линейного адреса в физический возникает одна из следующих ситуаций:

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

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

Формат кода страничной ошибки

Рис. 3.7. Формат кода страничной ошибки

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

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

Прерывание 16 — Ошибка сопроцессора (#MF): Intel286 …

Это прерывание сигнализирует об ошибке, возникшей во время выполнения команды FPU. Т.е. в результате выполнения команды имело место незамаскированное исключение FPU (с помощью регистра управления FPU можно замаскировать все исключения) .

В Intel286 и Intel386 это прерывание генерируется при подаче сигнала на специальный вывод микропроцессора ERROR#, который должен подключаться к соответствующему выходу сопроцессора.

В более поздних моделях (Intel486 …), где сопроцессор встроенный, генерация ошибки #MF происходит без использования внешних сигналов. Специальный флаг CR0.NE управляет режимом реакции таких процессоров на исключения FPU. Ошибка генерируется только, если CR0.NE = 1 во время выполнения команды FPU/MMX/3DNow!, следующей за командой, вызвавшей ошибку. Когда CR0.NE = 0 реакция на исключения FPU происходит в т.н. стиле MS-DOS. В этом случае (если сигнал на входе IGNNE# неактивен), то незамаскированные ошибки сопроцессора приводят к остановке процессора перед выполнением следующей за вызвавшей ошибку команды плавающей арифметики (если это не управляющая команда) или команды WAIT. При этом, процессор ждет освобождения сопроцессора, а сопроцессор в свою очередь ожидает обслуживания исключения. Вывести процессор из этого режима возможно только внешним прерыванием, которое обычно формируется аппаратурой по появлению сигнала на выходе FERR# (Intel486 …) или ERROR# (Intel387, Intel287). Сигнал на этом выводе появляется независимо от значения бита NE при возникновении исключения в сопроцессоре. Если NE = 0, но сигнал на входе IGNNE# активен, то процессор игнорирует ошибку и продолжает выполнение программы.

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

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

Протокол реакции на исключения FPU имеет некоторые отличия в различных моделях процессоров и сопроцессоров. Отличия эти касаются в первую очередь режима реакции в стиле MS-DOS и момента генерации ошибки сопроцессора (сразу по возникновении или при поступлении следующей команды FPU/MMX/3DNow!). В современных микропроцессорах наиболее универсальным и жестко регламентированным является режим внутренней генерации ошибки сопроцессора (CR0.NE = 1), который является основным, режим реакции в стиле MS-DOS поддерживается для совместимости. Подробное описание механизма реакции на исключения сопроцессора приведено в Intel® 64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture.

Прерывание 17 — Контроль выравнивания (#AC): Intel486 …

Генерируется при попытке доступа к невыровненным операндам. Выравнивание необходимо для следующих типов данных.

Таблица 3.5. Условия контроля выравнивания

Тип данных

Адрес должен быть кратен

WORD (Слово) – m16, m16int, moffs16

2

DWORD (Двойное слово) – m32, m32int, moffs32

4

QUADWORD (Учетверенное слово) – m64, m64int

8

DOUBLE QUADWORD (Двойное учетверенное слово) – m128

16

Short-real (Короткое вещественное – 32 бита) – m32real

4

Long-real (Длинное вещественное – 64 бита) – m64real

8

Temp-real (Временное вещественное – 80 бит) – m80real

8

Селектор

2

32-битный дальний указатель – m16:16

2

32-битный указатель – m16:16

4

48-битный дальний указатель – m16:32

4

Содержимое GDTR, IDTR, LDTR или TR – m16&32

4

Область сохранения для FSTENV/FNSTENV/FLDENV – mNbyte

4 или 2 – определяется размером операнда

Область сохранения для FSAVE/FNSAVE/FRSTOR – mNbyte

4 или 2 – определяется размером операнда

Строка бит

4 или 2 – определяется размером операнда

Для активизации проверки выравнивания должны выполняться следующие условия:

  • CR0.AM = 1;
  • EFLAGS.AC= 1;
  • CPL = 3.

Сохраняемое значение CS:EIP указывает на команду доступа к невыровненным данным, вызвавшую ошибку.

Прерывание 18 — Контроль машины (#MC): Pentium …

Данное прерывание впервые было введено в процессоре Pentium и поддерживается также в Pentium Pro, Pentium II, Pentium III. Оно считается зависимым от модели, т.е. в дальнейших модификациях процессоров может быть исключено. Это прерывание предназначено для выявления ошибок паритета и других неисправностей аппаратуры. Обработчик определяет причину прерывания по содержимому особых регистров процессорно зависимой архитектуры проверки машины (Mashine Check Architecture). За дополнительной информацией обратитесь к техническому описанию Intel.

Прерывание 19 — Исключение SIMD (#XM): Pentium III …

Особая ситуация генерируется при возникновении незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 1. Бит CR4.OSXMMEXCPT управляет режимом реакции процессора на SIMD-исключения. Когда CR4.OSXMMEXCPT = 0 вместо особой ситуации XM# генерируется особая ситуация недействительный код операции (#UD), а прерывание 19 считается зарезервированным.

Особая ситуация #XM генерируется сразу после команды, вызвавшей SIMD-исключение, поэтому для SIMD-команд не приходится применять специальные меры по синхронизации с другими командами, как это приходится делать с командами FPU (для которых генерация особой ситуации #MF может происходить не сразу, а на следующей команде FPU/MMX/3DNow!).

Прерывания 32…255 — Прерывания пользователя

Прерывания пользователя могут генерироваться в двух случаях:

  • по команде INT n;
  • по поступлении внешнего маскируемого прерывания через программируемый контроллер прерываний (внешний или интегрированный).

Сохраняемое значение CS:EIP при вызове внешнего прерывания указывает на команду, следующую за командой, во время выполнения которой был получен запрос на прерывание. А при программном прерывании командой INT n — на следующую команду.

< Предыдущая   Следующая >

Механизм прерываний

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

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

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

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

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

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

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

Идея прерывания оказалась настолько полезной, что сейчас прерывания применяются в компьютере для множества целей.

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

Итак, главные функции механизма прерываний – это:

q распознавание или классификация прерываний;

q передача управления соответствующему обработчику прерываний;

q корректное возвращение к прерванной программе.

Переход от прерываемой программы к обработчику и обратно должен выполняться как можно быстрей. Одним из самых простых и быстрых методов является использование таблицы, содержащей перечень всех допустимых для компьютера прерываний и адреса соответствующих обработчиков. Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке (system stack).

Алгоритм обработки прерываний

Механизм обработки прерываний независимо от архитектуры вычислительной системы подразумевает выполнение некоторой последовательности шагов.

1. Установление факта прерывания (приём сигнала запроса на прерывание) и идентификация прерывания.

2. Запоминание состояния прерванного процесса вычислений. Состояние процесса выполнения программы определяется, прежде всего, значением счетчика команд (адресом следующей команды), содержимым регистров процессора, и может включать также спецификацию режима (например, режим пользовательский или привилегированный) и другую информацию.

3. Управление аппаратно передается на подпрограмму обработки прерывания.

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

5. Собственно выполнение программы, связанное с обработкой прерывания. Эта работа может быть выполнена той же подпрограммой, на которую было передано управление на шаге 3, но в операционных системах достаточно часто она реализуется путем последующего вызова соответствующей подпрограммы.

6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).

7. Возврат на прерванную программу.

Шаги 1-3 реализуются аппаратно, шаги 4-7 – программно.

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

Рис. 1. Обработка прерывания

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

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

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

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

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

q прерывания от внешних устройств (прерывания по вводу-выводу);

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

q прерывания с пульта оператора вычислительной системы;

q прерывания от другого процессора или другой вычислительной системы.

Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Могут быть вызваны при обнаружении ошибки при выполнении программы. Это похоже на то, как если бы вы при чтении какого-либо предложения встретили «РБНСС ЗМЙ ЮДЙХМ ЯСМ ЖЯК», т.е. полнейшую бессмыслицу. Аналогичная ситуация может возникнуть и в компьютере. Процессор может встретить команды, не имеющие для него никакого смысла, или данные, которые нельзя обработать. Например, нулевой делитель, ошибки защиты памяти, обращение по несуществующему адресу, попытка выполнить привилегированную инструкцию в пользовательском режиме и т.п.

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

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

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

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

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

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

Управление ходом выполнения задач со стороны операционной системы заключается в организации реакций на прерывания, в организации обмена информацией (данными и программами), в предоставлении необходимых ресурсов, в динамике выполнения задачи и в организации сервиса. Причины прерываний определяет операционная система (модуль, который называют супервизором прерываний), она же и выполняет действия, необходимые при данном прерывании и в данной ситуации. Супервизор прерываний (первые две секции на рис.1) прежде всего сохраняет в дескрипторе текущей задачи рабочие регистры процессора, определяющие контекст прерываемого вычислительного процесса. Далее он определяет ту подпрограмму, которая должна выполнить действия, связанные с обслуживанием настоящего (текущего) запроса на прерывание. Перед тем, как передать управление на эту подпрограмму, супервизор прерываний устанавливает необходимый режим обработки прерывания. После выполнения подпрограммы обработки прерывания управление вновь передается ядру операционной системы. На этот раз уже на тот модуль, который занимается диспетчеризацией задач. И уже диспетчер задач, в свою очередь, восстановит контекст той задачи, которой будет решено выделить процессор. Рассмотренную схему иллюстрирует рис. 3.

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

Рис. 3. Обработка прерывания при участии супервизоров ОС

Механизм прерываний

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

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

1. векторный (vectored), когда в процессор передается номер вызываемой процедуры обработки прерывания;

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

Устройствам, которые используют векторные прерывания, назначается вектор прерываний.

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

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

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

Для некоторых аппаратных платформ могут сочетаться оба типа прерываний.

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

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

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

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

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

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

Последовательность действий при обработке прерываний

1. возникновение прерывания

2. обращение к таблице векторов прерываний (извлечение адреса обработчика соответствующего прерывания)

3. обработка прерывания

4.возвращение из прерывания (возврат к процессу, который обрабатывался до возникновения прерывания)

Вектор прерывания

номер (число), закрепленный за устройством, которое определяет соответствующий обработчик прерываний (256 векторов прерываний)

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

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

· относительное обслуживаниепри возникновении прерывания с более высоким приоритетом, оно выполняется только после выполнения текущего

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

9. Понятия: задание, процесс, поток. Планирование и диспетчеризация потоков.

Программа – статический объект на носителе информации, содержащий инструкции и команда для ЭВМ.

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

Составная часть процесса – поток.(наименьшая единица обработки, назначенная ОС)

Задача – процесс, состоящий из одного потока.

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

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

Планирование потоков

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

2)Выбор потока для выполнения из очереди готовых потоков.

Виды планирования потоков:

а) Динамический Решения принимаются во время работы системы, на основе анализа текущей ситуации. Требует значительного количества ресурсов(on-line)
б)Статический Используется в специализированных системах.(например в системах реального времени) решения планирования принимаются до начала работы системы (off-line)

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

Перед переключением на выполнение нового потока ОС запоминает контекст текущего.

Контекст— информация о состояние ПК в момент прерывания потока:

· Значение счетчика команд

· Режим работы процессора

· Регистры общего назначения

· Ссылки на открытые файлы

· Данные об операциях ввода-вывода

Действия при диспетчеризации:

1)Сохранение контекста текущего потока(который требуется сменить)

2)загрузка контекста нового потока

3)запуск нового потока на выполнение

Состояния существования процесса. Графы состояний потоков.

1)Выполнение Активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами, и непосредственно выполняется процессором
2)Готовность Пассивное состояние, в котором поток заблокирован внешними причинами (поток обладает всеми ресурсами, но не имеет доступа к процессору)
3)Ожидание Пассивное состояние потока, при котором он заблокирован внутренними обстоятельствами (не обрабатывается процессором и не имеет ресурсов)

Типичный граф состояния потока

Алгоритмы планирования потоков:

1) Не вытесняющие –активный поток выполняется, пока сам не передаст управление ОС (для загрузки следующего потока)

2) Вытесняющая –решение о переключение с потока на поток принимает ОС.а не активной задачей.

Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

ТЕМА 2.2: ОБРАБОТКА ПРЕРЫВАНИЙ

В архитектуре ПЭВМ базовая система ввода/вывода (БСВВ) занимает особое место. Ее можно рассматривать, с одной стороны, как составляющую часть аппаратных средств, с другой стороны, это система является одним из программных модулей ОС.

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

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

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

При прерывании ОС сохраняет состояние процессора –значения регистров и значение счетчика команд (program counter – PC)– адреса прерванной команды.Обработчик прерывания в ОС определяет по содержимому сегмента объектного кода, какого вида прерывание возникло и какие действия по его обработке следует предпринять. Среди возможных видов прерываний, кроме фиксации различных ошибок, имеются также прерывания по таймеру– периодические прерывания через определенный квант времени, предназначенные для опроса устройств (polling)– действий операционной системы по периодической проверке состояния всех портов и внешних устройств, которое может меняться с течением времени: например, к USB-порту была подключена флэшка; принтер закончил печать и освободился, и т.д. ОС выполняет реконфигурацию системы и корректирует системные таблицы, хранящие информацию об устройства

Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.

Любая особая ситуация, вызывающая прерывание, сопровождается сигналом, называемым запросом прерывания (ЗП). Запросы прерываний от внешних устройств поступают в процессор по специальным линиям, а запросы, возникающие в процессе выполнения программы, поступают непосредственно изнутри микропроцессора. Механизмы обработки прерываний обоих типов схожи. Рассмотрим функционирование компьютера при появлении сигнала запроса прерывания, опираясь в основном на обработку аппаратных прерываний (рис. 13).

Рис. 13. Выполнение прерывания в компьютере:

tр — время реакции процессора на запрос прерывания;

tс — время сохранения состояния прерываемой программы и вызова обработчика прерывания;

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

После появления сигнала запроса прерывания ЭВМ переходит к выполнению программы — обработчика прерывания. Обработчик выполняет те действия, которые необходимы в связи с возникшей особой ситуацией. Например, такой ситуацией может быть нажатие клавиши на клавиатуре компьютера. Тогда обработчик должен передать код нажатой клавиши из контроллера клавиатуры в процессор и, возможно, проанализировать этот код. По окончании работы обработчика управление передается прерванной программе.

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

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

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

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

Логические, или процессорные, прерывания возникают при различных нестандартных ситуациях в работе основного микропроцессора – делении на нуль, переполнении регистров, появлении «точки останова» и др.

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

Каждое прерывание имеет уникальный номер и с ним может быть связана определенная подпрограмма, призванная обслуживать возникшую ситуацию. Сама обслуживающая подпрограмма, вообще говоря, тоже может быть приостановлена другим прерыванием; но чаще всего на период работы подпрограммы, обслуживающей некоторое прерывание, другие прерывания «маскируются», т. е. не обслуживаются немедленно, а становятся в очередь.

В аппаратных компонентах машины в самой ДОС и в прикладных программах могут вырабатываться прерывания, которые нужно обслуживать. На БСВВ возлагается задача обслуживания прерываний нижнего уровня – тех, которые требуют непосредственного управления аппаратными компонентами. Этим прерываниям присвоены номера с 0 по 31 (шестнадцатеричные номера 0 – 1F). Другие прерывания – с номерами 32 – 63 (шестнадцатеричные номера 20 – 3F) – относятся к более высокому уровню, и их обслуживание возлагается на другие модули ОС.

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

Таблица 3. Прерывания, обслуживаемые БСВВ

Деся- тичный номер Шестнадца- теричный номер Обслуживаемая ситуация или выполняемая функция
Деление на ноль
Перевод микропроцессора в пошаговый режим
Падение напряжения питания
Появление точки останова в последовательности команд
Переполнение регистров арифметического устройства
Печать графической копии экрана
Зарезервировано
Зарезервировано
Сигнал от счетчика времени – таймера
Сигнал от нажатия клавиши на клавиатуре
А Зарезервировано
Деся- тичный номер Шестнадца- теричный номер Обслуживаемая ситуация или выполняемая функция
В Зарезервировано
С Зарезервировано
D Зарезервировано
Е Сигнал об окончании обмена с НМД
F Зарезервировано для обслуживания принтера
Управление дисплеем
Запрос списка подсоединенного оборудования
Запрос размера физической памяти
Управление НМД
Управление коммуникационным адаптером
Управление магнитофоном и другими устройствами
Управление клавиатурой
Управление принтером
Обращение к встроенному в ПЗУ бейсику
Перезапуск системы
Запрос/установка текущего времени и даты
1D Адрес таблицы параметров инициализации дисплея.
1E Адрес таблицы параметров НГМД
1F Адрес таблицы символов с кодами 128-255

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

Так, например, прерывание 19 (управление НГМД и НМД) открывает доступ к 18 функциям с кодами 0-17):

0 — начальная установка (сброс диска),

1 — выдача текущего статуса диска,

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

3 — запись группы секторов на одну дорожку,

4 — верификация после чтения или записи,

5 — форматирование дорожки (запись меток секторов),

8 — выдача текущих параметров накопителя,

9 — инициализация таблицы параметров фиксированного диска,

А — «длинное» чтение,

В — «длинная» запись,

С — поиск нужной дорожки,

D — начальная установка диска,

10 — проверка готовности диска,

11 — калибровка диска,

14 — диагностика контроллера,

15 — выдача типа накопителя,

16 — изменение статуса диска,

17 — установка типа накопителя.

Глубина прерывания — максимальное число программ, которые могут прерывать друг друга. Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний. Работа системы прерываний при различной глубине прерываний (n) представлена на рис. 10. Здесь предполагается, что с увеличением номера запроса прерывания увеличивается его приоритет.

Рис. 14. Работа системы прерываний при различной глубине прерываний

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

1) определение наиболее приоритетного незамаскированного запроса на прерывание (если одновременно поступило несколько запросов);

2) определение типа выбранного запроса;

3)сохранение текущего состояния счетчика команд и регистра флагов;

4) определение адреса обработчика прерывания по типу прерывания и передача управления первой команде этого обработчика;

5) выполнение программы — обработчика прерывания;

6)восстановление сохраненных значений счетчика команд и регистра флагов прерванной программы;

7) продолжение выполнения прерванной программы.

Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.

Переход к соответствующему обработчику прерывания осуществляется (в реальном режиме работы микропроцессора) посредством таблицы векторов прерываний. Эта таблица располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит значения сегментного регистра команд (CS) и указателя команд (IP) для 256 обработчиков прерываний.

Вектор прерывания – ячейка памяти, содержащая адрес обработчика прерывания.

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

Главные функции механизма прерывания:

1.Распознавание или классификация прерывания.

2. Передача управления обработчику прерывания.

3. Корректное возвращение к прерванной программе

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

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

Вложенные прерывания.

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

Прерывания и особые случаи

Прерывания и особые случаи

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

Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.

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

Запросы аппаратных прерываний возникают асинхронно по отношению к работе микропроцессора и связаны с работой внешних устройств.

Запрос от немаскируемых прерываний поступает на вход NMI микропроцессора и не может быть программно заблокирован. Обычно этот вход используется для запросов прерываний от схем контроля питания или неустранимых ошибок ввода/вывода.

Для запросов маскируемых прерываний используется вход INT микропроцессора. Обработка запроса прерывания по данному входу может быть заблокирована сбросом бита IF в регистре флагов микропроцессора.

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

Программные прерывания делятся на следующие типы.

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

Ловушка — особый случай, который обнаруживается после окончания выполнения команды (например, наличие в программе команды INT n или установленный флаг TF в регистре флагов ). После обработки этого прерывания выполнение программы продолжается со следующей команды.

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

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

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

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

Обработка запросов прерываний состоит из:

  • «рефлекторных» действий процессора, которые одинаковы для всех прерываний и особых случаев и которыми программист управлять не может;
  • выполнения созданного программистом обработчика.

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

Тип прерывания для программных прерываний вводится изнутри микропроцессора; например, прерывание по отсутствию страницы в памяти имеет тип 14. Для прерываний, вызываемых командой INT n, тип содержится в самой команде. Для маскируемых аппаратных прерываний тип вводится из контроллера приоритетных прерываний по шине данных . Немаскируемому прерыванию назначен тип 2.

Всего микропроцессор различает 256 типов прерываний. Таким образом, все они могут быть закодированы в 1 байте.

«Рефлекторные» действия микропроцессора по обработке запроса прерывания выполняются аппаратными средствами МП и включают в себя:

  • определение типа прерывания ;
  • сохранение контекста прерываемой программы (некоторой информации, которая позволит вернуться к прерванной программе и продолжить ее выполнение). Всегда автоматически сохраняются как минимум регистры EIP и CS , определяющие точку возврата в прерванную программу, и регистр флагов EFLAGS . Если вызов обработчика прерывания проводится с использованием шлюза задачи, то в памяти полностью сохраняется сегмент состояния TSS прерываемой задачи;
  • определение адреса обработчика прерывания и передача управления первой команде этого обработчика.

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

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

Таблица векторов прерываний (рис. 7.2) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит 4байтные элементы ( векторы прерываний ) для 256 обработчиков прерываний. Старшие 2 байта вектора загружаются в сегментный регистр команд CS , а младшие 2 байта — в регистр указателя команд IP . Обращение к элементам таблицы осуществляется по 8-разрядному коду — типу прерывания. Так как таблица всегда имеет нулевой начальный адрес и длину вектора в 4 байта, чтобы определить адрес вектора для прерывания типа i, достаточно просто умножить это значение на 4.

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

Обращение к IDT аналогично обращению к глобальной таблице дескрипторов, где вместо системного регистра GDT R используется регистр IDTR , который определяет размер и базовый адрес таблицы в памяти.

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

Содержимое регистра IDTr не сохраняется в сегментах TSS и не изменяется при переключении задачи. Программы не могут обратиться к IDT , так как единственный бит TI индикатора таблицы в селекторе сегмента обеспечивает выбор только между таблицами GDT и LDT .

Максимальный предел таблицы дескрипторов прерываний составляет 256*8 — 1 = 2047.

Можно определить предел меньшим, но это не рекомендуется. Если происходит обращение к дескриптору вне пределов IDT , процессор переходит в режим отключения до получения сигнала по входу NMI или сброса.

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

  • шлюз ловушки ,
  • шлюз прерывания, шлюз задачи.

Шлюзы ловушки и прерывания сходны со шлюзом вызова, только в них отсутствует поле счетчика WC (рис. 7.4). Так как прерывание является неожиданным событием и не связано с текущей программой, говорить о передаче параметров их обработчику не приходится.

Бит S = 0 в байте доступа определяет этот дескриптор как системный объект . Если поле ТИП в байте доступа равно 1110, то это шлюз прерывания, если 1111 — то шлюз ловушки.

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

Бит присутствия P может быть равен как 0, так и 1.

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

При входе в обработчик через шлюз ловушки флаг IF не меняется.

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

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

Последовательность действий при обработке прерываний

Система прерываний 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.

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

УЧЕБНЫЕ МАТЕРИАЛЫ📖📚📕

==================================================================

1. Для того чтобы смонтировать привод CD-ROM в каталог /MyCD, нужно ввести команду:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • mount -t iso90 /dev/cdrom /MyCD
  • mount -t iso90 /dev/cdrom
  • mount /dev/cdrom г.
  • mount -t vfat /dev/fd0 /diskA

2. Микроядро:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

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

☆ Ядро операционной системы персонального компьютера.

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

3. Состояние готовности для выполнения процесса относится к задачам, выполняющимся:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • В однопрограммном режиме.
  • В мультипрограммном режиме.
  • В обоих режимах

4. Элемент занимающий большую часть экрана в графической оболочки ASPLinux, называеться:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ Рабочий стол

☆ Ярлыки

☆ Персональный каталог

☆ Панель

5. Интерфейс – это …:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • Совокупность средств и правил, обеспечивающих взаимодействие устройств вычислительной системы и /или программ.
  • Составная часть устройства, программы, системы, данных.
  • Совокупность унифицированных технических и программных средств, используемых для сопряжения устройств в вычислительной системе или сопряжения между системами.
  • Граница раздела двух систем, устройств или программ.
  • Совокупность принципов логической и физической организации технических и программных средств, протоколов и интерфейсов вычислительной сети.

6. Слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой называется …

7. Планирование процессов – это … :

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

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

8. С помощью каких устройств операции ввода-вывода можно выполнять параллельно с вычислительным процессом даже в однопроцессорных системах:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ С помощью контроллеров внешних устройств

☆ С помощью диспетчера памяти

☆ С помощью кэш-памяти

9. Средства, предоставляющие конечному пользователю (например, бухгалтеру) возможность работы с приложениями:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • Прикладные программы.
  • Утилиты.
  • Операционная система и аппаратура компьютера.

10. Последовательность операций программы или часть программы при ее выполнении, называется:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ каталогом

☆ программой

☆ процессом

☆ оболочкой

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

12. С помощью какой команды можно ввести или изменить пароль пользователя:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • adduser имя_пользователя
  • userdel -r имя_пользователя
  • passwd имя_пользователя
  • userdel имя_пользователя

13. Средства, предоставляющие конечному пользователю (например, бухгалтеру) возможность работы с приложениями:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ Прикладные программы.

☆ Утилиты.

☆ Операционная система и аппаратура компьютера.

14. Образ процесса составляют следующие сегменты:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ процедурный сегмент (text),

☆ сегмент инициализированных данных (data),

☆ сегмент неинициализированных данных (bss) и стек (stack).

15. Может ли программа, эмулируемая на «чужом» процессоре выполняться быстрее, чем нам собственном («родном») процессоре:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ нет.

☆ да.

16. Многозадачность:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

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

17. Требования, предъявляемые к ос (указать неверно):

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • расширяемость;
  • переносимость;
  • изолированность;
  • производительность;
  • совместимость.

18. Вытеснение:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • Возврат ресурса захваченного процессом до окончательного его использования этим процессом.
  • Завершение работающего процесса.
  • Захват памяти родительского процесса порожденным процессом.

19. Где хранятся таблицы страниц и таблицы сегментов:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ В оперативной памяти.

☆ На диске.

☆ Часть в оперативной памяти, часть на диске.

20. Являются ли синонимами термины «планирование процессов» и «диспетчеризация процессов»:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • нет.
  • да.

21. Пароль пользователя должен иметь структуру:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • текстовую
  • комбинированную
  • числовую
  • иметь не менее и небелое 25 символов

22. Мультипроцессирование (multiprocessing):

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

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

23. Образ процесса:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ Структура данных, содержащая информацию о характеристиках и состоянии процесса.

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

☆ Данные, передаваемые по сети как единый модуль, который может содержать управляющую информацию, адрес и данные.

24. Чем ограничивается максимальный размер виртуального адресного пространства, доступного приложению:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ Ничем.

☆ Разрядностью адреса в системе команд.

☆ Разрядностью счетчика команд процессора.

☆ Физическим размером оперативной памяти компьютера.

25. С помощью какой команды можно добавить пользователя:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • adduser имя_пользователя
  • userdel -r имя_пользователя
  • passwd имя_пользователя
  • userdel имя_пользователя

26. Суперпользователь – не имеет ограничений в доступе к системным ресурсам, может выполнять любые административные действия, имеет login name:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • setup
  • root
  • sysadm
  • diagnose

27. Какие из приведенных ниже терминов являются синонимами:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

☆ Привилегированный режим.

☆ Защищенный режим.

☆ Режим супервизора.

☆ Пользовательский режим.

☆ Режим разделения времени.

☆ Режим ядра.

28. Тип установки ос, при которой устанавливаются основные компоненты и требуется 450 мб называется:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • Офис
  • Типовая
  • Разработчику
  • Сервер

29. Ос, которая выполняется целиком только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам, называется:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ асимметричной;

☆ симметричной.

30. К системам, обладающим не вытесняющей многозадачностью, можно отнести:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • NetWare
  • UNIX
  • Windows NT
  • Windows 3.x
  • OS/2

31. Системы … предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов.

32. Состояние готовности для выполнения процесса относится к задачам, выполняющимся:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • В однопрограммном режиме.
  • В мультипрограммном режиме.
  • В обоих режимах

33. Средства, предоставляющие разработчику операционной системы возможность разработки модулей ос (перечислить все правильные ответы):

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

☆ Операционная система.

☆ Аппаратура компьютера.

☆ Утилиты.

☆ Прикладные программы.

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

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • Программный интерфейс.
  • Интеллектуальный интерфейс.
  • Интерфейс пользователя.
  • Внутренний интерфейс.
  • Интерфейс прикладного программирования.

35. Виртуальный адрес:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ Адрес оперативной памяти ЭВМ

☆ Адрес данных на диске

☆ Адрес, присваиваемый транслятором переменным и кодам каждой программы.

☆ Адрес области оперативной памяти, в которой расположено ядро операционной системы

36. В результате каких из перечисленных причин процессы переходит в состояние приостановленных процесс:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • Своппинг.
  • Запрос от родительского процесса.
  • Ошибка ввода вывода.
  • Арифметическая ошибка.
  • Завершение родительского процесса.

37. К многозадачным ос относят:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • OS/2
  • MS-DOS
  • OC EC
  • MSX
  • Windows 95

38. Корневой каталог имеет путь:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • /boot
  • /etc
  • /
  • /bin

39. … ос в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером.

40. Компонент операционной системы управляющий работой фоновых процессов, имеет login name:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ bin

☆ daemon

☆ Adm

41. Подкаталоги (домашние каталоги) пользователей имеют путь:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • /home
  • /lib
  • /sbin
  • /root

42. Какие события вызывают перепланирование процессов:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • Прерывание от таймера.
  • Аппаратное прерывание по завершению ввода-вывода.
  • Внутреннее прерывание, сообщающее об ошибке выполнения активной задачи.
  • Нет правильного ответа

43. … – ос преимуществом, которой является то, что ее можно копировать и распространять бесплатно

44. В unix для процессов предусмотрены два режима выполнения:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

☆ привилегированный режим

☆ стартовый режим

☆ обычный режим

☆ стандартный режим

45. С помощью какой команды можно вывести список файлов текущего каталога:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • ls=
  • cd имя_каталога
  • ls -al
  • mkdir имя_каталога

46. Может ли компьютер работать без операционной системы:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • Может.
  • Нет, не может.

47. Можно ли задачу планирования процессов целиком возложить на приложения:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

  • нет.
  • да.

48. Может ли процесс в мультипрограммном режиме выполняться быстрее, чем в монопольном режиме:

Тип ответа: Одиночный выбор • с выбором одного правильного ответа из нескольких предложенных вариантов

☆ нет.

☆ да.

49. Сетевая операционная система – это …:

Тип ответа: Множественный выбор • с выбором нескольких правильных ответов из предложенных вариантов

  • Совокупность ОС всех компьютеров сети.
  • ОС отдельного компьютера сети.
  • Набор сетевых служб, выполненных в виде оболочки.
  • Нет правильного ответа

Три
основных события, приводящие к созданию
процессов (вызов fork (в UNIX)
или CreateProcess (вWindows)):

— загрузка
системы;

— работающий
процесс подает системный вызов на
создание процесса;

— запрос
пользователя на создание процесса.

Во
всех случаях активный текущий процесс
посылает системный вызов на создание
нового процесса. Создать процесс
означает:


создать описатель процесса;


загрузить коды и данные исполняемой
программы процесса с диска в оперативную
память;


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

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

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

2.3 Состояния потоков

За
время своего существования в системе
поток может многократно находиться в
одном из трех состояний:

— выполнение
– активное состояние, во время которого
поток обладает всеми необходимыми
ресурсами и непосредственно выполняется
процессором;

— готовность
– пассивное состояние, поток заблокирован
в связи с внешними по отношению к нему
обстоятельствами; в очередь готовых к
выполнению попадает вновь созданный
процесс;

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

Возможные
переходы между состояниями:

1.
Поток выбран на выполнение

2.
Поток ожидает завершения ввода/вывода

3.
Ввод/вывод завершен (событие произошло)

4.
Поток вытеснен.

В

Рис.
2.1. Граф состояний потока

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

2.4 Планирование процессов

2.4.1 Основные понятия планирования процессов

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

Планирование
включает в себя решение двух задач:

— определение
момента времени для смены текущего
активного потока;

— выбор для выполнения
потока из очереди готовых потоков.

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

Диспетчеризация
заключается в реализации найденного в
результате планирования решения, то
есть в переключении процессора с одного
потока на другой.

Диспетчеризация
сводится к следующему:


сохранение контекста текущего потока,
который требуется сменить;


загрузка контекста нового потока,
выбранного в результате планирования;


запуск нового потока на выполнение.

Ситуации,
когда необходимо планирование:

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

  2. Активная задача
    выполнила системный вызов, связанный
    с запросом на ввод/вывод или на доступ
    к ресурсу, который в настоящий момент
    занят. Планировщик переводит задачу в
    состояние ожидания и выполняет
    перепланирование.

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

  4. Завершение
    периферийным устройством операции
    ввода/вывода переводит соответствующую
    задачу в очередь готовых и выполняется
    планирование.

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

Все существующие
алгоритмы планирования можно разделить
на два класса:

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

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

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


Подборка по базе: Список вопросов для экзамена.docx, ОТВЕТЫ НА ВОПРОСЫ (Шпаргалка).docx, Экзаменационные вопросы 5 курс Лечебное ДелоКонтрольные вопросы , Список вопросов на эл.маш (1).pdf, Экз вопросы_МиИМ_ (1).docx, Проектирование информационной системы «Детский сад».docx, Тепломассообмен.ти 83 вопроса.docx, Ответы с вопросами к экзамену.docx, ОБЩИЕ ВОПРОСЫ ДИАГНОСТИКИ ЧЕРЕПНО-МОЗГОВОЙ ТРАВМЫ.docx, Литература. Вопросы.docx


Операционные системы

Вопрос:

Интерфейс — это… :

Ответ:

Совокупность средств и правил, обеспечивающих взаимодействие устройств

вычислительной системы и /или программ. ; Совокупность унифицированных технических и

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

сопряжения между системами. ; Граница раздела двух систем, устройств или программ.

Вопрос:

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

пользователя с ОС, называется:

Ответ:

Интерфейс пользователя.

Вопрос:

Средства, предоставляющие конечному пользователю (например, бухгалтеру) возможность

работы с приложениями:

Ответ:

Прикладные программы.

Вопрос:

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

модулей ОС (перечислить все правильные ответы):

Ответ:

Операционная система. ; Аппаратура компьютера.

Вопрос:

Многозадачность:

Ответ:

Режим работы, при котором обеспечивается чередующееся выполнение двух или

большего количества программ.

Вопрос:

Мультипроцессирование (multiprocessing):

Ответ:

Режим работы, при котором параллельные вычисления обеспечиваются двумя или более

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

Вопрос:

Может ли компьютер работать без операционной системы:

Ответ:

Может.

Вопрос:

Требования, предъявляемые к ОС (указать неверное):

Ответ:

изолированность;

Вопрос:

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

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

Ответ:

кластер

Вопрос:

… ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая

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

Ответ:

Однозадачные

Вопрос:

ОС, которая выполняется целиком только на одном из процессоров системы, распределяя

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

Ответ:

асимметричной;

Вопрос:

К многозадачным ОС относят:

Ответ:

OS/2 ; OC EC ; Windows 95

Вопрос:

К системам, обладающим не вытесняющей многозадачностью, можно отнести:

Ответ:

NetWare ; Windows 3.x

Вопрос:

Системы … предназначались для решения задач в основном вычислительного характера, не

требующих быстрого получения результатов.

Ответ:

пакетной обработки

Вопрос:

Вытеснение:

Ответ:

Возврат ресурса захваченного процессом до окончательного его использования этим

процессом.

Вопрос:

Сетевая операционная система – это… :

Ответ:

Совокупность ОС всех компьютеров сети. ; ОС отдельного компьютера сети. ; Набор

сетевых служб, выполненных в виде оболочки.

Вопрос:

Какие из приведенных ниже терминов являются синонимами :

Ответ:

Привилегированный режим. ; Режим супервизора. ; Режим ядра.

Вопрос:

Может ли программа, эмулируемая на «чужом» процессоре выполняться быстрее, чем нам

собственном («родном») процессоре:

Ответ:

да.

Вопрос:

Может ли процесс в мультипрограммном режиме выполняться быстрее, чем в монопольном

режиме:

Ответ:

нет.

Вопрос:

Являются ли синонимами термины «планирование процессов» и «диспетчеризация процессов»:

Ответ:

нет.

Вопрос:

Можно ли задачу планирования процессов целиком возложить на приложения:

Ответ:

да.

Вопрос:

Какие события вызывают перепланирование процессов :

Ответ:

Прерывание от таймера. ; Аппаратное прерывание по завершению ввода-вывода. ;

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

Вопрос:

Чем ограничивается максимальный размер виртуального адресного пространства, доступного

приложению:

Ответ:

Разрядностью адреса в системе команд.

Вопрос:

Где хранятся таблицы страниц и таблицы сегментов:

Ответ:

В оперативной памяти.

Вопрос:

Чем ограничивается максимальный размер физической памяти, которую можно установить в

компьютере определенной модели:

Ответ:

Характеристиками аппаратуры компьютера.

Вопрос:

Планирование процессов – это … :

Ответ:

Определение момента времени для смены текущего активного процесса. ; Выбор для

выполнения процесса из очереди готовых для выполнения процессов.

Вопрос:

Состояние готовности для выполнения процесса относится к задачам, выполняющимся:

Ответ:

В мультипрограммном режиме.

Вопрос:

Вытесняющие алгоритмы реализуют способ планирования процессов, в которых решение о

переключении процессора с одного процесса на другой принимается :

Ответ:

Операционной системой.

Вопрос:

С помощью каких устройств операции ввода-вывода можно выполнять параллельно с

вычислительным процессом даже в однопроцессорных системах:

Ответ:

С помощью контроллеров внешних устройств

Вопрос:

Виртуальный адрес:

Ответ:

Адрес, присваиваемый транслятором переменным и кодам каждой программы.

Вопрос:

Микроядро:

Ответ:

Часть операционной системы, содержащая машинно-зависимые модули и некоторые

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

Вопрос:

Процесс :

Ответ:

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

переменных. ; Единица активности, которую можно охарактеризовать единой цепочкой

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

ресурсов.

Вопрос:

Образ процесса:

Ответ:

Все составляющие процесса, включая программный код, данные, стек и управляющий

блок процесса.

Вопрос:

В результате каких из перечисленных причин процессы переходит в состояние приостановленных

процесс :

Ответ:

Своппинг. ; Запрос от родительского процесса.

Вопрос:

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

любые административные действия, имеет Login Name:

Ответ:

root

Вопрос:

Компонент операционной системы управляющий работой фоновых процессов, имеет Login Name:

Ответ:

daemon

Вопрос:

В UNIX для процессов предусмотрены два режима выполнения:

Ответ:

привилегированный режим ; обычный режим

Вопрос:

Последовательность операций программы или часть программы при ее выполнении, называется:

Ответ:

процессом

Вопрос:

… — ОС преимуществом, которой является то, что ее можно копировать и распространять

бесплатно

Ответ:

Linux

Вопрос:

Тип установки ОС, при которой устанавливаются основные компоненты и требуется 450 Мб

называется:

Ответ:

Типовая

Вопрос:

… – программа с развитым полноэкранным интерфейсом, включающим использование мыши,

предлагающая меню с перечнем всех имеющихся на компьютере ОС.

Ответ:

ASPLoader

Вопрос:

Элемент занимающий большую часть экрана в графической оболочки ASPLinux, называеться:

Ответ:

Рабочий стол

Вопрос:

С помощью какой команды можно добавить пользователя:

Ответ:

adduser имя_пользователя

Вопрос:

С помощью какой команды можно ввести или изменить пароль пользователя:

Ответ:

passwd имя_пользователя

Вопрос:

Пароль пользователя должен иметь структуру:

Ответ:

комбинированную ; иметь не менее 6 и небелое 256 символов

Вопрос:

Для того чтобы смонтировать привод CD-ROM в каталог /MyCD, нужно ввести команду:

Ответ:

mount -t iso9660 /dev/cdrom /MyCD

Вопрос:

Корневой каталог имеет путь:

Ответ:

/

Вопрос:

Подкаталоги (домашние каталоги) пользователей имеют путь:

Ответ:

/home

Вопрос:

С помощью какой команды можно вывести список файлов текущего каталога:

Ответ:

ls»

Здесь мы разберем такие важные темы, как: обработка прерываний, векторы прерываний, программные прерывания, IRQ, в общем поговорим на темы прерывания.

Идея прерывания была предложена в середине 50-х годов и основная цель введения прерываний – реализация синхронного режима работы и реализация параллельной работы отдельных устройств ЭВМ.

Прерывания и обработка прерываний зависят от типа ЭВМ, поэтому их реализацию относят к машинно-зависимым свойствам операционных систем.

Прерывание (interrupt) – это сигнал, заставляющий ЭВМ менять обычный порядок выполнения команд процессором.

Возникновение подобных сигналов обусловлено такими событиями, как:

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

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

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

Например прерывание с номером 9 — прерывание от клавиатуры, которое генерируется при нажатии и при отжатии клавиши. Используется для чтения данных с клавиатуры. Обозначается в ОС как IRQ1, где IRQ – обозначение прерывания, а 1 – приоритет прерывания. Данные о запросах на прерывание можно проанализировать в диспетчере устройств:

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

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

Векторы прерываний

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

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

Таблица векторов прерываний занимает первый килобайт оперативной памяти — адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов — FAR-адресов обработчиков прерываний. Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором — адрес сегмента обработчика прерывания. Векторами являются просто полные адреса памяти программы (в сегментированной форме),  которая должна быть активизирована в случае возникновения прерывания.

Прерыванию с номером 0 соответствует адрес 0000:0000, прерыванию с номером 1 — 0000:0004 и т.д. Адрес такой состоит из пары 2-байтовых слов,  поэтому каждый из векторов занимает четыре байта.

Можно  просмотреть таблицу векторов прерываний в компьютере, если воспользоваться программой DEBUG. Используйте команду  D для вывода содержимого начала памяти:  D 0:0.  Программа DEBUG покажет вам первые 128 байтов или 32 вектора,  которые могут иметь  вид наподобие следующего:

0000:0000 E8 4E 9A 01 00 00 00 00-C3 E2 00 F0 00 00 00 00
0000:0010 F0 01 70 00 54 FF 00 F0-05 18 00 F0 05 18 00 F0
0000:0020 2C 08 51 17 D0 0A 51 17-AD 08 54 08 E8 05 01 2F
0000:0030 FA 05 01 2F 05 18 00 F0-57 EF 00 F0 F0 01 70 00
0000:0040 90 13 C7 13 4D F8 00 F0-41 F8 00 F0 3E 0A 51 17
0000:0050 5C 00 B7 25 59 F8 00 F0-E2 0A 51 17 9C 00 B7 25
0000:0060 00 00 00 F6 8E 00 DE 09-6E FE 00 F0 F2 00 7B 09
0000:0070 27 08 51 17 A4 F0 00 F0-22 05 00 00 00 00 00 F0

Векторы хранятся как «слова наоборот»: сначала смещение, а потом сегмент. Например, первые четыре байта, которые программа DEBUG показала выше (E8 4E 9A 01) можно преобразовать в сегментированный адрес 019A:4EE8.

Можно встретить три вида адресов в  таблице  векторов.  Это  могут быть адреса, указывающие на ROM-BIOS, которые можно идентифицировать шестнадцатеричной цифрой F,  которая предшествует номеру сегмента.  Это могут  быть  адреса,  которые  указывают на главную память (как в примере: 019A:4EE8). Эти адреса могут указывать на подпрограммы ДОС или на резидентную программу (например,  SideKick или Prokey), либо они могут указывать на саму программу DEBUG (поскольку DEBUG должна  временно управлять прерыванием). Также векторы могут состоять из одних нулей, когда прерывание с данным номером не обрабатывается в  текущий  момент.

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

Ниже приведено назначение некоторых векторов:

Описание
0 Ошибка деления. Вызывается автоматически после выполнения команд DIV или IDIV, если в результате деления происходит переполнение (например, при делении на 0).
2 Аппаратное немаскируемое прерывание. Это прерывание может использоваться по-разному в разных машинах. Обычно вырабатывается при ошибке четности в оперативной памяти и при запросе прерывания от сопроцессора.
5 Печать копии экрана. Генерируется при нажатии на клавиатуре клавиши PrtScr. Обычно используется для печати образа экрана.
8 IRQ0 — прерывание интервального таймера, возникает 18,2 раза в секунду.
9 IRQ1 — прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши. Используется для чтения данных от клавиатуры.
A IRQ2 — используется для каскадирования аппаратных прерываний в машинах класса AT
B IRQ3 — прерывание асинхронного порта COM2.
C IRQ4 — прерывание асинхронного порта COM1.
D IRQ5 — прерывание от контроллера жесткого диска для XT.
E IRQ6 — прерывание генерируется контроллером флоппи-диска после завершения операции.
F IRQ7 — прерывание принтера. Генерируется принтером, когда он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание.
10 Обслуживание видеоадаптера.
11 Определение конфигурации устройств в системе.
12 Определение размера оперативной памяти в системе.
13 Обслуживание дисковой системы.
14 Последовательный ввод/вывод.
19 Загрузка операционной системы.
1A Обслуживание часов.
1B Обработчик прерывания Ctrl-Break.
70 IRQ8 — прерывание от часов реального времени.
71 IRQ9 — прерывание от контроллера EGA.
75 IRQ13 — прерывание от математического сопроцессора.
76 IRQ14 — прерывание от контроллера жесткого диска.
77 IRQ15 — зарезервировано.

IRQ0 — IRQ15 — это аппаратные прерывания.

Механизм обработки прерываний

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

  • Восприятие запроса на прерывание:  прием сигнала и идентификация прерывания.
  • Запоминание состояния прерванного процесса: определяется значением счетчика команд (адресом следующей команды) и содержимым регистров процессора.
  • Передача управления прерывающей программе (в счетчик команд заносится  начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры – информация из слова состояния процессора).
  • Обработка прерывания.
  • Восстановление прерванного процесса и возврат в прерванную программу.

Главные функции механизма прерывания:

  1. распознавание или классификация прерываний.
  2. передача управления соответственно обработчику прерываний.
  3. корректное возвращение к прерванной программе (перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом либо в системном стеке).

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

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

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

Аппаратные прерывания не координируются  c  работой   программного   обеспечения.   Когда   вызывается прерывание, то процессор оставляет свою работу, выполняет прерывание, a затем возвращается на прежнее место.

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

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

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

Маскируемые и немаскируемые внешние прерывания

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

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

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

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

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

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

Программные прерывания

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

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

Механизм программных прерываний был специально введен для того, чтобы:

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

Пример (программные прерывания):

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

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

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

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

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

В случае о прерывании самой программы обработки прерывания говорят о вложенном прерывании. Уровни приоритетов обозначаются сокращенно IRQ0 — IRQ15 или IRQ0 – IRQ23 (в зависимости от микросхемой реализации).

Пpepывaнию вpeмeни cутoк дан мaкcимaльный пpиopитeт, пocкoльку ecли oнo  будет  пocтoяннo тepятьcя,  то будут нeвepными пoкaзaния cиcтeмныx чacoв.  Пpepывaниe от клaвиaтуpы вызывaeтcя при нaжaтии или oтпуcкaнии клавиши; oнo вызывaeт цепь coбытий,  кoтopaя oбычнo зaкaнчивaeтcя тем, что код клавиши пoмeщaeтcя в буфep клaвиaтуpы (oткудa он зaтeм  мoжeт быть пoлучeн пpoгpaммными пpepывaниями).

Ну и наконец реализация механизма обработки прерываний

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

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

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

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

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

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

  • при программном прерывании отражается тип вызвавшего его условия, например деление на нуль.
  • при прерывании по вводу-выводу заносится номер канала, вызвавший прерывание.

В третьем элементе указывается, выполняет ли процессор команды или простаивает. В четвертом элементе содержится указатель, идентифицирующий текущую выполняемую программу. В пятом элементе содержится маска прерываний, которая используется для контроля за разрешением прерываний (поле MASK).

Это поле используется, чтобы не допустить наступления прерываний определенного типа, пока первое из них не будет обработано. В MASK  каждый бит соответствует некоторому классу прерываний. Если какой-то бит установлен в 1, то прерывания соответствующего класса разрешены, если в 0, то запрещены. В последнем случае говорят, что они маскированы (их также называют запрещеннымиили закрытыми). Однако маскированные прерывания не теряются, потому что сигнал, вызвавший прерывание, сохраняется аппаратурой. Временно задержанное таким способом прерывание называется отложенным. Когда (вследствие того, что значение MASK сброшено) прерывания соответствующего класса вновь разрешаются, сигнал опознается и происходит прерывание.

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

Возможно, вам также будет интересно:

  • Внимательно прочитав задание мне все стало понятно какая ошибка
  • Внимательно проверьте форму на ошибки opencart
  • Внимательно посмотри как женя разделил слова для переноса нет ли у него ошибок если
  • Внимательно озвучьте ваше предложение где ошибка
  • Вниманию домовладельцев загаженных домов ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии