Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sam_R_OS.doc
Скачиваний:
2
Добавлен:
19.11.2019
Размер:
5.27 Mб
Скачать

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

Залежний від пристрою код міститься в драйвері пристрою. Кожен драйвер керує пристроями одного типу і може бути одного класу.

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

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

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

Незалежна від пристроїв частина операційної системи

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

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

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

  • іменування пристроїв;

  • захист пристроїв;

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

  • буферизація;

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]