Драйвер
Драйвер (англ. driver, укр. водій, керівник) — комп'ютерна програма, за допомогою якої операційна система отримує доступ до певного приладу чи частини апаратного забезпечення.
У загальному випадку для використання кожного пристрою, підключеного до комп'ютера, необхідний спеціальний драйвер. Зазвичай операційна система вже містить драйвери для ключових компонентів апаратного забезпечення, без яких система не зможе працювати. Однак для більш специфічних пристроїв (таких, як графічна плата, модем або принтер) можуть знадобитися спеціальні драйвери, які зазвичай надає виробник пристрою. Іншими словами, драйвери — це посередники між операційною системою і апаратними пристроями комп'ютера, що використовуються для обміну даних між ними.
Для зручного пошуку і роботи існують спеціальні програми для оновлення драйверів.[1] Крім того, деякі драйвери можуть автоматично оновлюватися чи завантажуватися через Windows Update.
Ідеологія побудови програмних драйверів
Операційна система керує деяким «віртуальним пристроєм», який розуміє стандартний набір команд. Драйвер переводить ці команди в команди, які розуміє безпосередньо пристрій. Ця ідеологія називається «абстрагування від апаратного забезпечення». Драйвер складається з декількох функцій, які обробляють певні події операційної системи. Зазвичай це 7 основних подій:
- завантаження драйвера. Драйвер реєструється в системі, робить первинну ініціалізацію й т.п. ;
- вивантаження. Драйвер звільняє захоплені ресурси — пам'ять, файли, пристрої й т.п. ;
- відкриття драйвера. Початок основної роботи. Зазвичай драйвер відкривається програмою як файл, функціями CreateFile() в Win32 або fopen() в UNIX-подібних системах;
- читання;
- запис;
- закриття: операція, зворотна відкриттю, звільняє зайняті при відкритті ресурси й знищує дескриптор файлу;
- керування вводом-виводом-IO Control-IOCTL. Найчастіше драйвер підтримує інтерфейс вводу-виводу, специфічний для даного пристрою. За допомогою цього інтерфейсу програма може послати спеціальну команду, що підтримує даний пристрій. Наприклад, для SCSI пристроїв можна послати команду GET_INQUIRY, щоб одержати опис пристрою. В Win32 системах керування здійснюється через API-функцію DeviceIoControl(). В UNIX-подібних — ioctl()
Інтеграція драйверів
У сучасних операційних системах широкого призначення (ядро Linux, Windows 10) налічуються сотні і тисячі драйверів, що постачаються разом з ОС. Деякі з них є специфічними для окремо взятих апаратних платформ. Наприклад, у Linux драйвер msr.ko
призначений для доступу до модельно-залежних регістрів процесора винятково архітектури x86. Багато Linux-драйверів є універсальними і після перекомпіляції можуть працювати на різних платформах, де присутнє обладнання, підтримуване драйвером (наприклад, драйвери графічних процесорів для шини PCI Express успішно працюють на материнських платах для x86, ARM[2] і RISC-V-процесорів).
У часи розповсюдження перших версій Microsoft Windows звичайною була практика постачання драйверів виробниками обладнання на носії інформації (дискети, компакт-диски)ин носій (зазвичай CD), Потім з'явилися установні пакети, що називалися «4-in-1» та «One touch» і дозволяли спростити[джерело?] установку драйверів у систему. Однак єдиного, усталеного терміна довго не було.
Сучасний термін, що описує такі набори драйверів пристроїв — Board Support Package, або «пакет підтримки платформи». Крім власне драйверів, він може, як і інші установні пакети, містити модулі операційної системи й програми.
Див. також
Примітки
Посилання
- Драйвер // Універсальний словник-енциклопедія. — 4-те вид. — К. : Тека, 2006.
- klife — Introduction to Linux Device Drivers (pdf)
- Що таке драйвер? на сайті Microsoft