Программный ввод-вывод
С использованием 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];}