Головна

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

  1. VPN пристрої
  2. А.-т. Пристрій і нац.автономія КНР.
  3. Аналіз і синтез комбінаційних цифрових пристроїв
  4. Арифметико-логічний пристрій

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

Перший крок в реалізації запиту введення / виводу, наприклад, для диска, полягає в перетворенні його з абстрактної форми в конкретну. Для дискового драйвера це означає перетворення номерів блоків в номери циліндрів, секторів, перевірку роботи мотора і т.п. Він повинен вирішити, які операції контролера потрібно виконати і в якій послідовності.

Після передачі команди контролеру драйвер повинен вирішити, чи блокувати себе до закінчення заданої операції чи ні. Якщо операція займає чимало часу, як при друку деякого блоку даних, то драйвер блокується до тих пір, поки операція не завершиться, і обробник переривання не розблокує його. Якщо команда введення / виведення виконується швидко (наприклад, прокрутка екрану), то драйвер очікує її завершення без блокування.

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

Традиційно в ОС UNIX виділяються три типи організації введення / виведення і, відповідно, три типи драйверів. Зокрема, в ОС UNIX розрізняються крім символьних, блок-орієнтованих, ще й потокові драйвери.

Блоковий введення / виведення головним чином призначений для роботи з каталогами і звичайними файлами, які на базовому рівні мають блокову структуру. Блоковий введення / виведення підтримується блоковими драйверами. Блоковий введення / виведення, крім того, підтримується системної буферизацией.

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

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

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

2.3.3. Незалежний від пристроїв шар операційної системи. Призначений для користувача шар програмного забезпечення введення / виведення

Велика частина програмного забезпечення введення / виведення є незалежною від пристроїв. Точна межа між драйверами і незалежними від пристроїв програмами визначається системою, так як деякі функції, які могли б бути реалізовані незалежним способом, насправді виконані у вигляді драйверів.

Типовими функціями для незалежного від пристроїв шару ОС є:

- Забезпечення загального інтерфейсу до драйверів пристроїв;

- Іменування пристроїв;

- Захист пристроїв;

- Забезпечення незалежного розміру блоку;

- Буферизация;

- Розподіл пам'яті на блок-орієнтованих пристроях;

- Розподіл і звільнення виділених пристроїв;

- Повідомлення про помилки.

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

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

Хоча більша частина програмного забезпечення введення / виведення знаходиться всередині ОС, деяка його частина міститься в бібліотеках, що пов'язуються з одними програмами. Системні виклики, які включають виклики введення / виведення, зазвичай робляться бібліотечними процедурами. Набір подібних процедур є частиною системи введення / виводу. Стандартна бібліотека вводу / виводу містить велику кількість процедур, які виконують введення / виведення і працюють як частина користувальницької програми.

Інший категорією програмного забезпечення введення / виведення є підсистема спулінга (spooling). Спулінг - це спосіб роботи з виділеними пристроями в мультипрограммной системі (спосіб застосування буферної пам'яті). Розглянемо типовий пристрій, що вимагає спулінга - принтер. Створюється спеціальний процес - монітор, Який отримує виключні права на використання цього пристрою. Також створюється спеціальний каталог, званий каталогом спулінга. Для того, щоб надрукувати файл, призначений для користувача процес поміщає виведену інформацію в цей файл і поміщає його в каталог спулінга. Процес-монітор по черзі роздруковує всі файли, що містяться в каталозі спулінга.

Ієрархія запам'ятовуючих пристроїв. Принцип кешування даних | Імена файлів. типи файлів


| Стану процесів. Контекст і дескриптор процесу | Засоби синхронізації і взаємодії процесів | Критична секція. тупики | управління пам'яттю | Методи розподілу пам'яті без використання дискового прстранства | Методи розподілу пам'яті з використанням дискового простору | Сторінкове розподіл пам'яті | Сегментний розподіл пам'яті | Сторінково-сегментний розподіл пам'яті. свопінг |

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