Організація програмного забезпечення уведення-виведення
Основна ідея організації програмного забезпечення уведення-виведення полягає у виділенні кількох рівнів, причому нижні рівні забезпечують маскування особливостей апаратури від верхніх, а ті, у свою чергу, забезпечують інтерфейс для використання програмним забезпеченням. Робота програми не повинна залежати від того, чи дані отримуються з гнучкого чи жорсткого диску. Іншим важливим питанням при організації уведення-виведення є опрацювання помилок. Опрацювання помилок необхідно проводити якнайближче до обладнання: якщо контролер виявляє помилку читання, то він повинен спробувати її відкоригувати і у випадку невдачі виправленням помилок повинен зайнятися драйвер пристрою. І тільки якщо нижній рівень не може виправити помилку, він повідомляє верхній рівень про помилку. Багато помилок можуть усуватися при повторних спробах виконання операцій уведення-виведення, наприклад, помилки, викликані фізичними пошкодженнями робочих поверхонь магнітних чи оптичних дисків тощо. Ще одне ключове питання - це використання блокуючих (синхронних) і неблокуючих (асинхронних) способів обміну. Більшість операцій фізичного уведення-виведення виконується асинхронно — процесор починає передавання даних і перемикається на іншу задачу, поки не настане переривання завершення операції. Програми користувача набагато легше писати, якщо операції уведення-виведення блокуючі - після команди READ програма автоматично припиняється доти, поки дані не потраплять у буфер програми. ОС виконує операції уведення-виведення асинхронно, але представляє їх для програм користувача у синхронній формі. Остання проблема полягає в тому, що одні пристрої можуть спільно використовуватися у режимі розподілу часу, а інші – виділяються на час виконання певного завдання. Диски - це спільно використовувані пристрої, тому що одночасний доступ кількох користувачів до диска не являє собою проблему. Принтери - це виділені пристрої, не можна змішувати рядки, що друкуються різними користувачами. Наявність виділених пристроїв створює для операційної системи деякі проблеми, що вирішуються розподілом програмного забезпечення уведення-виведення на чотири рівні: 1) опрацювання переривань 2) драйвери пристроїв 3) незалежний від пристроїв рівень операційної системи 4) рівень користувача.
|