#факты | Как работает драйвер?

Посредством программ-драйверов операционная система отдает свои распоряжения аппаратным устройствам. Она ведь не только памятью управляет, но и всем многообразием девайсов компьютера. Функцией большинства драйверов является перевод с языков программирования высокого уровня на «язык» электрических сигналов. Языки высокого уровня являются родными для операционной системы и приложений. А вот оборудование привыкло иметь дело с электрическими сигналами. Драйверы получают от операционной системы данные и переводят их в потоки битов, размещаемые в специальных участках памяти накопителей или в серии лазерных импульсов, если речь идет о принтере.



Аппаратные устройства очень сильно отличаются друг от друга, поэтому каждому из них требуется свой драйвер-«переводчик». Большинство драйверов загружаются тогда, когда возникает потребность в связанном с данным драйвером устройстве. Драйвер функционирует, как и любой другой процесс, запущенный в операционной системе. В процессе работы драйвера, операционная система будет довольно часто направлять ему блоки данных с высоким уровнем приоритета. Таким образом, аппаратное устройство выполнит свою работу настолько быстро, насколько это возможно в данной конфигурации.

Многие пользователи не в восторге от того, что многие драйверы не входят в состав операционной системы. У такого подхода есть свои причины. Дело в том, что в драйверы часто вносятся изменения. Если бы они были «прошиты» в ОС, каждое изменение драйвера требовало бы модификации и перекомпиляции всей операционной системы в целом. Кроме того, разработка драйверов лежит, в основном, на создателях оборудования, а не на разработчиках операционной системы. Это весьма логично, поскольку только те, кто работал над самим устройством, могут в полной мере знать о его особенностях.

Управление вводом и выводом в значительной мере состоит в управлении очередями и буферами, а также специальными участками накопителя данных. Операционная система принимает от устройства (например, клавиатуры или серийного порта) набор битов, удерживает эти данные и направляет их процессору в понятном для него виде. Эта функция обретает особое значение в свете того, что одновременно работает много процессов, требующих драгоценного времени процессора.

Распределяющая время процессора операционная система дает буферу инструкцию продолжать прием данных от устройства ввода, но сама приостанавливает их передачу центральному процессору на то время, в течение которого устройство ввода пребывает в режиме ожидания. Когда происходит ввод, связанный с устройством процесс переходит в активное состояние, и операционная система дает буферу команду на передачу данных. Такой подход позволяет устройству ввода (например, клавиатуре или модему) работать быстро, даже принимая во внимание то обстоятельство, что процессор не в каждый момент времени получает данные из этого источника.

Управление всеми аппаратными ресурсами компьютера является значительной частью работы, выполняемой операционной системой. Если речь идет об операционной системе реального времени, случается и так, что нужно обрабатывать всю доступную функциональность системы. Остальные операционные системы начинают работу с драйвером устройства лишь в том случае, когда оно необходимо. О том, какими бывают операционные системы мы уже говорили.

Продолжение рассказа об операционных системах следует…

По материалам computer.howstuffworks.com