Ввод-вывод, управляемый прерываниями

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

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

2. Кроме факта возникновения прерывания ввода-вывода, нужно передать еще и дополнительную информацию, например, указать выдавшее его устройство. Более того, прерывания представляют устройства, которые могут иметь разные приоритеты и чьи прерывания имеют разную связанную с ними категорию срочности.

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

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

Чтобы справиться с разными приоритетами устройств ввода-вывода, большинство механизмов прерывания имеют несколько уровней приоритета; в операционной системе UNIX используется от четырех до шести уровней. Эти приоритеты определяют порядок, в котором процессор должен обработать прерывания. Приоритеты есть как у внутренних исключений, так и у прерываний ввода-вывода; обычно у прерываний ввода-вывода более низкий приоритет, чем у внутренних исключений. Может быть несколько уровней приоритета прерываний ввода-вывода, при этом высокоскоростные устройства связываются с более высоким уровнем приоритета.

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

Регистр состояния (Status) определяет того, кто может прервать работу компьютера. Если бит разрешения прерывания установлен в 0, то прервать его работу не может никто. Более конкретизированная блокировка прерываний возможна при использовании поля маски прерываний. В маске имеются биты, соответствующие каждому биту в поле отложенных прерываний регистра причины (Cause). Для разрешения соответствующего прерывания в соответствующем бите поля маски должна быть выставлена единица. Когда произойдет прерывание, операционная система может определить его причину в поле кода исключения регистра состояния.

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





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: