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