08.1 Conspect (ru)

Ввод/вывод – поток данных внутри и вне

Ввод: мышь, клавиатура Вывод: графики, телефоны Ввод/вывод: консоль, хранилище

Methods of device control Порт:

MMIO (mind memory input and output): вся/часть памяти устройства сопоставляется с определенной областью адресного устройства.

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

Какие возникают проблемы?

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

Алгоритм приблизительно такой:

  1. настраиваем устройство, чтоб оно совершало ввод/вывод
  2. запускается цикл проверки того, что устройство готово
    1. если устройство готово, то после I/O, мы можем им еще поуправлять
    2. если нет, то do with irrelevant
  3. Перезапустить, если нужно

Digital Lab Sim – имитация внешнего устройства, которой можно программно управлять в Mars. Содержит два блока:

1.png

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

Bitmap Display в отличии от DLS мапит целый кусок памяти, который соответствует видео памяти на экране. 2.png

Главное в настройке это адрес привязки. Его стоит привязать к memory map.

Ширина и высота очень важны, т.к. их произведение дает размер видеопамяти, Каждый пиксель экрана соответствует одному машинному слову закодированному в RGB (red green blue).

Формулы как вычислять координаты X и Y.

-где offset это адрес привязки, UnitWidth и DisplayWidth

3.png