На головну

драйвери пристроїв

  1. Half-Duplex - Пристрій або канал, здатний в кожен момент тільки передавати або приймати інформацію. Прийом і передача, таким чином, повинні виконуватися по черзі.
  2. I. Пристрій Європейського Суду з прав людини
  3. II. Структура державного устрою РФ.
  4. Spooling і захоплення пристроїв
  5. А) Захисний принцип екранують пристроїв
  6. Аварійно-рятувальний інструмент, види, призначення, пристрій, технічні характеристики.
  7. Автоматизовані системи годування і напування птиці, їх пристрій і принцип дії на прикладі БКМ-3.

Для управління кожним пристроєм введення-виведення, підключеним до комп'ютера, потрібна спеціальна програма. Ця програма, яка називається драйвером пристрою,зазвичай пишеться виробником пристрою і поширюється разом з пристроєм. Оскільки для кожної операційної системи потрібні спеціальні драйвери, виробники пристроїв зазвичай поставляють драйвери для декількох найбільш популярних операційних систем.

Так як в операційну систему будуть встановлюватися шматки програм (драйвери), написані іншими програмістами, необхідна певна архітектура, що дозволяє подібну установку. Це означає, що повинна бути вироблена строго певна модель функцій драйвера і його взаємодії з рештою операційною системою. Драйвери пристроїв зазвичай розташовуються під решті операційною системою, як показано на малюнку:

Операційна система зазвичай класифікує драйвери по декількох категоріях відповідно до типами обслуговуваних ними пристроїв. До найбільш загальних категорій відносяться блокові пристрої(Диски, що містять блоки даних, до яких можлива незалежна адресація) та символьні пристрої (клавіатури і принтери, що формують або приймають потік символів). У більшості операційних систем визначено стандартний інтерфейс, який повинні підтримувати всі блокові драйвери, і другий стандартний інтерфейс, підтримуваний всіма символьними драйверами. Ці інтерфейси включають набори процедур, які можуть викликатися решті операційною системою для звернення до драйверу (процедури читання блоку (блочного пристрою) або записи символьного рядка (для символьного пристрою)).

Щоб отримати доступ до апаратної частини пристрою, тобто до регістрів контролера, драйвер пристрою повинен бути частиною ядра операційної системи, по крайней мере, в існуючих на сьогоднішній день архітектури. Деякі ОС представляли собою єдину двійкову програму, яка містить в собі, в відкомпілювався разом з нею вигляді, всі необхідні їй драйвери. Така схема протягом багатьох років була нормою для систем UNIX, так як вони призначалися для роботи в комп'ютерних центрах, а пристрої введення-виведення змінювалися нечасто. При додаванні нового пристрою системний адміністратор просто перекомпілювати ядро ??з новим драйвером, отримуючи новий двійковий модуль. З появою персональних комп'ютерів з їх величезною різноманітністю пристроїв введення-виведення така модель перестала працювати. І операційні системи, починаючи з MS-DOS, перейшли до моделі динамічної підвантаження драйверів під час виконання системи.

У драйвера пристрою є кілька функцій. Найбільш очевидна - обробка абстрактних запитів читання і запису незалежного від пристроїв ПО. Крім цього, драйвер повинен при необхідності ініціалізувати пристрій. Йому також може знадобитися управляти енергоспоживанням пристрої та реєстрацією подій.

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

Після того як драйвер передав всі команди контролеру, ситуація може розвиватися за двома сценаріями. У багатьох випадках драйвер пристрою повинен чекати, поки контролер не виконає для нього певну роботу, тому він блокується до тих пір, поки переривання від пристрою його не розблокує. В інших випадках операція завершується без затримок і драйверу не потрібно блокуватися.

У будь-якому випадку після закінчення виконання операції драйвер повинен перевірити, чи завершилася операція без помилок. Якщо все в порядку, драйверу, можливо, доведеться зрадити дані (наприклад, щойно прочитаний блок) незалежного від пристроїв програмного забезпечення. Нарешті, драйвер повертає деяку інформацію про стан для інформування викликає програми про статус завершення операції. Якщо в черзі перебували інші запити, один з них тепер може бути обраний і запущений. В іншому випадку драйвер блокується в очікуванні наступного запиту.

Ця спрощена модель є лише грубим наближенням до реальності. Насправді програма значно складніше, причиною чому служить велика кількість різноманітних факторів. По-перше, пристрій введення-виведення може завершити виконання операції під час роботи драйвера, таким чином перериваючи його роботу. По-друге, під час обробки мережевим драйвером пакету, що прийшов може прийти ще один пакет. Відповідно, драйвер повинен бути реєнтерабельним,тобто повинен бути готовий до того, що під час обробки першого виклику може послідувати інший виклик.



обробники переривань | Апаратна частина таймерів

Виявлення та усунення взаімоблокіровок і виявлення взаимоблокировки при наявності одного ресурсу кожного типу | Виявлення взаімоблокіровок при наявності декількох ресурсів кожного типу | Відновлення за допомогою примусового вивантаження ресурсу | Відновлення шляхом знищення процесів | уникнення взаімоблокіровок | алгоритм банкіра | Алгоритм банкіра для кілька видів ресурсів | Двухфазовость блокування, тупики без ресурсів і голодування | Програмний введення-виведення | Програмні рівні введення-виведення |

© um.co.ua - учбові матеріали та реферати