ОС / 2. ОС - Управление устройствами
.pdf11
Архитектура подсистемы ввода/вывода
Два способа адресации регистров ПУ:
Отображение регистров на память. При этом определенная часть адресного пространства описывает не память, а регистры устройств.
Адресация регистров через порты ввода/вывода. Для портов отводится отдельное адресное пространство и специальные команды. То есть, в этом случае "адрес 100" и "порт 100" – разные вещи.
Первый способ удобнее для программирования, второй легче реализуется
с точки зрения аппаратуры.
Операционные системы. Управление устройствами
12
Архитектура подсистемы ввода/вывода
Магистральная архитектура:
Процессор, память и все ПУ единообразно подключаются к общей шине.
Это удобно для программирования и для подключения новых устройств.
Радиальная архитектура:
Для каждого устройства может быть свой способ подключения к процессору.
С точки зрения программиста:
важна не геометрия шин, а способ управления вводом/выводом – единообразный или же свой
для каждого устройства.
Операционные системы. Управление устройствами
13
Архитектура подсистемы ввода/вывода
Магистральная и радиальная архитект
|
|
|
|
ОЗУ |
ЦП |
|
ОЗУ |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
т р а л ь |
ЦП |
С и с т е м н а я м а г и с |
||
|
|
|
ПУ 1 |
ПУ 2 |
ПУ 3 |
ПУ 1 |
ПУ 2 |
ПУ 3 |
|
|
|
|||
а) Магистральная архитектура |
б) |
Радиальная архитекту |
Операционные системы. Управление устройствами
14
Архитектура подсистемы ввода/вывода
Прямой доступ к памяти (DMA):
Обмен данными между памятью и дисками идет под управлением контроллера DMA, минуя регистры процессора.
Процессор только инициирует операцию и потом получает сигнал (прерывание) о завершении выполнения.
Операционные системы. Управление устройствами
15
Архитектура подсистемы ввода/вывода
Процессорный ввод/вывод (PIO):
Обмен данными между памятью и ПУ (обычно с дисками) идет под управлением команд процессора, через его регистры.
Это в несколько раз медленнее, чем DMA.
Операционные системы. Управление устройствами
16
Способы организации ввода/вывода
Описание задачи:
Программа должна выдать N байт данных из массива A[1..N] на символьное устройство X.
Архитектура устройства представлена регистром данных X.DATA и флагом готовности
X.READY.
Если X.READY =True, то запись байта в регистр X.DATA приводит к выдаче этого байта на устройство. В противном случае (X.READY = False) байт теряется.
Операционные системы. Управление устройствами
17
Способы организации ввода/вывода
а) Ввод/вывод без проверки готовности i := 1;
while i <= N do begin
X.DATA := A[i];
i := i + 1;
end;
Это сработает правильно только в том случае, если устройство "всегда готово", т.е. скорость приема данных устройством превышает скорость их передачи процессором.
Пример такого устройства – монитор.
Операционные системы. Управление устройствами
18
Способы организации ввода/вывода
б) Ввод/вывод по опросу готовности i := 1;
while i <= N do begin while not X.READY do
;
X.DATA := a[i]; i := i + 1;
end;
Добавлен цикл опроса готовности устройства.
Это всегда сработает корректно, но процессорное время тратится непроизводительно.
Приемлемо только для однозадачных систем.
Операционные системы. Управление устройствами
19
Способы организации ввода/вывода
в) Ввод/вывод по прерываниям
i:= 1;
while i <= N do begin X_INT: if not X.READY
return; X.DATA := a[i]; i := i + 1;
end;
Вместо цикл опроса – однократная проверка готовности устройства.
Если не готово, то управление возвращается ОС, которая может использовать процессор для других задач.
Когда от устройства придет прерывание, ОС передаст управление по метке X_INT для продолжения вывода.
Операционные системы. Управление устройствами
20
Способы организации ввода/вывода
Выводы:
В однозадачных ОС может успешно применяться ввод/вывод как по опросу готовности, так и по прерываниям.
В многозадачных ОС должен применяться ввод/вывод по прерываниям, поскольку постоянный опрос готовности будет отнимать процессорное время у других задач.
Операционные системы. Управление устройствами