Для управляння фізичними пристроями використовуються спеціальне програмне забезпечення, драйвери пристроїв. Кожний драйвер керує пристроями одного типу або одного класу. В операційній системі тільки драйверу пристрою відомо про конкретні особливості якого-небудь апаратного обладнання з яким він працює: наприклад, драйвер дискового накопичувача має справу з доріжками, секторами, циліндрами, позиціонуванням головки та інше, що забезпечує коректну роботу накопичувача.
Можна уявити, що драйвери пристроїв є нижчим шаром, над яким розміщено програми (ОС, програми користувача), а під яким — контролери пристроїв. При отриманні вказівки виконати операцію, драйвер пристрою аналізує зайнятість пристрою. Якщо пристрій вільний під час надходження запиту, то він починає виконувати вказівку негайно, якщо зайнятий виконанням іншого запиту, то запит ставиться у чергу і буде виконаний у порядку черговості.
Перший крок у реалізації запиту уведення-виведення, наприклад, для диска, полягає в перетворенні його з абстрактної форми в конкретну. Для дискового драйвера це означає перетворення номерів блоків у номери циліндрів, поверхонь, секторів, перевірку, чи працює двигун, чи знаходиться зчитуючий елемент над потрібним циліндром. Тобто він повинен вирішити, які операції контролера потрібно виконати і у якій послідовності.
Після передачі команди контролеру драйвер повинен вирішити, чи блокувати себе до завершення заданої операції чи ні: якщо операція забирає значний час, як при друкуванні, то драйвер блокується до завершення операції, і опрацювання переривання не розблокує його; якщо команда уведення-виведення виконується швидко (наприклад, прокручування екрану), то драйвер очікує її завершення без блокування.