Керування вводом-виводом

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Однією з головних функцій ОС є керування всіма пристроями вводу-виводу комп'ютера. ОС повинна передавати пристроям команди, перехоплювати переривання й обробляти помилки та підтримувати інтерфейс між пристроями й іншою частиною системи. Для забезпечення можливості розвитку ОС інтерфейс повинен бути однаковим для всіх типів пристроїв (незалежність від пристроїв). Щоб виконати ввод/вивід, програми користувача повинні робити системний виклик до OС. Коли процес користувача робить системний виклик, відбувається згенерироване програмним забезпеченням переривання (trap), що викликає встановлення привілейованого режиму (Kernel mode) та передачу управління (з використанням вектора переривання) відповідному оброблювачу переривання. Оброблювач переривання зберігає стан процесу, виконує запитаний ввод/вивід (якщо запит відповідний), відновлює збережений ним стан, установлює непривілегійований режим, і повертається до викликаної програми. Фізична організація пристроїв вводу-виводу Пристрою вводу-виводу поділяються на два типи: блок- орієнтовані пристрої і байт-орієнтовані пристрої. Блок-орієнтовані пристрої зберігають інформацію в блоках фіксованого розміру, кожний з який має свою власну адресу. Найпоширеніший блок-орієнтований пристрій - диск. Байт-орієнтовані пристрої не адресовані і не дозволяють здійснювати операцію пошуку. Вони генерують чи використовують послідовність байтів. Прикладами є термінали, рядкові принтери, мережні адаптери. Однак деякі зовнішні пристрої не належать до жодного класу, наприклад, годинник, що, з одного боку, не адресований, а з іншого боку, не породжує потік байтів. Цей пристрій тільки видає сигнал переривання в деякі моменти часу. Зовнішній пристрій звичайно складається з механічного й електронного компонента. Електронний компонент називається контролером пристрою чи адаптером. Механічний компонент власне є пристроєм. Деякі контролери можуть керувати декількома пристроями. Якщо інтерфейс між контролером і пристроєм стандартизований, то незалежні виробники можуть випускати сумісні як контролери, так і пристрої. Операційна система зазвичай має справу не з пристроєм, а з контролером. Контролер, як правило, виконує прості функції, наприклад, перетворює потік біт у блоки, що складаються з байт, і здійснює контроль і виправлення помилок. Кожен контролер має кілька регістрів, що використовуються для взаємодії з центральним процесором. У деяких комп'ютерах ці регістри є частиною фізичного адресного простору. У таких комп'ютерах немає спеціальних операцій вводу-виводу. В інших комп'ютерах адреси регістрів вводу- виводу, що називаються портами, утворюють власний адресний простір через введення спеціальних операцій вводу-виводу (наприклад, команд IN і OUT у процесорах Intel x86). ОС виконує ввід-вивід, записуючи команди в регістри контролера. Наприклад, контролер гнучкого диска IBM PC приймає 15 команд, таких як READ, WRITE, SEEK, FORMAT і т.д. Коли команда передана, процесор залишає контролер її виконувати в асинхронному режимі і займається іншою роботою. При завершенні команди контролер організує переривання для того, щоб передати керування процесором операційній системі, що повинна перевірити і використати результати операції. Процесор отримує результати операції і статус пристрою, читаючи інформацію з регістрів контролера.