Абсолютно самая распространенная абстракция - это драйвер устройства , программный компонент, который отвечает за непосредственное взаимодействие с оборудованием и обеспечивает стандартный интерфейс для операционной системы. Обычно интерфейс o / s имеет такие функции, как init (), uninit (), start_io (), handle_interrupt () и некоторые функции управления и состояния.
Драйвер устройства обладает глубокими знаниями об устройстве, а также об аппаратном интерфейсе устройства. Например, типичный интерфейс диска имеет пять или около того последовательных ячеек памяти где-то, которые составляют интерфейс контроллера. Первым обычно является регистр состояния и управления. То есть чтение возвращает бит, указывающий, занят ли он выполнением команды; другой бит указывает на наличие расширенной информации о состоянии. Запись в «CSR» (как обычно TLAified , регистр состояния управления) инициирует такие команды, как «отправить команду на контроллер диска», «прочитать расширенный статус с контроллера диска» и т. Д. код команды (сброс, чтение данных, запись данных и т. д.). Другие регистры, как правило, являются адресными указателями, указывающими, куда в пределах физической памяти компьютера передавать данные в или из.
Имейте в виду: попытка прочитать драйвер устройства, чтобы выяснить, как работает компьютерная система, это все равно, что попытаться выяснить, как работает лес, изучив корни саженца. Это один из многих важных компонентов, но следуйте, куда он ведет, и в конечном итоге вы увидите всю картину.