гає їх у пам'яті. Для здійснення цієї роботи контролери містять вбудовані мікропрограми.
Сам пристрій введення-виведення має простий інтерфейс, який повинен відповідати єдиним стандартом IDE (IDE, Integrated Drive Electronics - вбудований інтерфейс накопичувачів). Так як інтерфейс пристрою прихований контролером, то операційна система бачить тільки інтерфейс контролера, який може відрізнятися від інтерфейсу пристрою.
Так як контролери для різних пристроїв введення-виведення відрізняються один від одного, то для управління ними потрібне відповідне програмне забезпечення - драйвери. Тому кожен виробник контролерів має постачати драйвери для підтримуваних ним операційних систем. Щоб встановити драйвер в операційну систему існує три способи:
- заново скомпонувати ядро ??разом з новим драйвером і потім перезавантажити систему, так працює безліч систем UNIX;
- створити запис у вхідному в операційну систему файлі про те, що потрібен драйвер і перезавантажити систему, під час початкового завантаження операційна система знайде потрібний драйвер і завантажить його; так працює операційна система Windows;
- прийняти нові драйвери і оперативно їх встановити засобами операційної система під час її роботи; спосіб використовується знімними шинами USB і IEEE 1394, які завжди потребують динамічно завантажуваних драйверах.
Для зв'язку з кожним контролером існують певні регістри. Наприклад, мінімальний контролер диска може мати регістри для визначення адреси на диску, адреси в пам'яті, номер сектора та напрямки операції (читання або запис). Щоб активізувати контролер, драйвер отримує команду від операційної системи, потім транслює її в величини, відповідні для запису в регістри пристрою.
На деяких комп'ютерах регістри пристроїв введення-виведення відображаються в адресний простір операційної системи, тому їх можна читати або записувати як звичайні слова в пам'яті. Адреси регістрів поміщаються в ОЗУ за межами досяжності програм користувачів, щоб програми користувачів захистити від апаратури (наприклад, за допомогою базового і граничного регістрів).
На інших комп'ютерах регістри пристроїв розташовуються в спеціальних портах введення-виведення, і кожен регістр має свою адресу порту. На таких машинах в привілейованому режимі доступні команди IN і OUT, які дозволяють драйверам зчитувати і записувати регістри. Перша схема усуває необхідність спеціальних команд введення-виведення, але використовує деяку кількість адресного простору. Друга схема не зачіпає адресний простір, але вимагає наявність спеціальних команд. Обидві схеми широко використовуються. Введення і виведення даних здійснюється трьома способами.
. Користувальницька програма видає системний запит, який ядро ??транслює в виклик процедури відповідного драйвеpa. Потім драйвер починає процес введення-виведення. У цей час драйвер виконує дуже короткий програмний цикл, постійно опитуючи готовність пристрою, з яким він працює (зазвичай є якийсь біт, який вказує на те, що пристрій все ще зайнято). По завершенні операції введення-виведення драйвер поміщає дані туди, куди потрібно, і повертається в початковий стан. Потім операційна система повертає керування програмі, що здійснювала виклик. Цей метод називається очікуванням готовності або активним очікуванням і м...