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

Організація програмного забезпечення введення-виведення

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

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

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

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

Ще одне ключове питання - це використання,синхронних (що блокують) і асинхронних (не блокують) передач. Більшість операцій фізичного введення-виведення виконується асинхронно - процесор починає передачу і переходить на виконання іншої роботи, поки не наступає переривання. Користувальницькі програми набагато легше писати, якщо операції введення-виведення, що блокують, - після команди READ автоматично припиняють програму доти, поки дані не потрапляють у буфер програми. ОС виконує операції введення-виведення асинхронно, але представляє їх для користувальницьких програм у синхронній формі.

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

Принтери - це виділені пристрої, оскільки не можна зміщувати рядки, що друкуються різними користувачами.

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

  • Обробка переривань.

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

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

  • Користувальницький пласт програмного забезпечення.

Мал. 2.30. Багаторівнева організація підсистеми введення-виведення.

Обробка переривань

Переривання повинні бути сховані якнайглибше в надрах операційної системи, щоб, як можна, менша частина ОС мала з ними справу. Найкращий спосіб полягає в дозволі процесу, що ініціює операцію введення-виведення, блокування себе до завершення операції і переривання. Процес може блокувати себе, використовуючи, наприклад, виклик DOWN для семафора, чи виклик WAIT для перемінної умови, або ж виклик RESEIV для чекання повідомлення. Коли наступає переривання процесу, процедура обробки переривання здійснює розблокування процесу, що ініціював операцію введення-виведення, використовуючи виклики UP, Signal- чи посилаючись на процес повідомлення V, в будь-якому випадку ефект від переривання полягає в тому, що раніше заблокований процес тепер продовжує своє виконання.

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