Программный ввод-вывод

С использованием DMA.

Управляемый прерываниями.

Программный (простой)

Рассмотрим подробнее:

В этом случае всю работу выполняет центральный процессор.

Рассмотрим процесс печати строки ABCDEFGH этим способом.

 

Этапы печати строки ABCDEFGH

Алгоритм печати:

1. Строка для печати собирается в пространстве пользователя.

2. Обращаясь к системному вызову, процесс получает принтер.

3. Обращаясь к системному вызову, процесс просит распечатать строку на принтере.

4. Операционная система копирует строку в массив, расположенный в режиме ядра.

5. ОС копирует первый символ в регистр данных принтера, который отображен на памяти.

6. Символ печатается на бумаге.

7. Указатель устанавливается на следующий символ.

8. Процессор ждет, когда бит готовности принтера выставится в готовность.

9. Все повторяется.

При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.

Программа:

copy_from_user (buf, p, count);

for (i=0; i<count; i++)

{ while (*printer_status_reg)!=READY; ждем, пока принтер станет доступным

*printer_data_reg=p[i];}