Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекції ОС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.02 Mб
Скачать

2.8. Управління пристроями в ms-dos

2.8.1. Рівні доступу до пристроїв

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

Рівні доступу до пристроїв показані на рис. 2-5.

Рис. 1‑5

Самий нижній рівень припускає, що програма користувача працює безпосередньо з портами введення / виводу, а також, якщо це необхідно, частково чи повністю бере на себе обробку апаратних переривань, що надходять від пристрою. В принципі, програма користувача може взагалі не використовувати засоби MS-DOS для роботи з пристроями, але при цьому їй доведеться взяти на себе багато нудної роботи.

У роботі MS-DOS широко використовуються можливості, надані BIOS (Basic Input / Output System, базова система введення / виведення) - набором програмних модулів, записаних в постійній пам'яті (ПЗУ) комп'ютера. BIOS за замовчуванням виконує обробку всіх апаратних переривань, якщо цю роботу не бере на себе DOS або прикладна програма. Крім того, BIOS містить процедури обробки ряду програмних переривань вводу / виводу.

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

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

Функції DOS, на відміну від переривань BIOS, працюють не з конкретною апаратурою, а з іменованими пристроями. Імена пристроїв задаються в заголовках відповідних драйверів. Наприклад, для DOS клавіатура й екран об'єднуються драйвером консольного пристрою CON.

Процедури введення / виводу, використовувані в мовах програмування (наприклад, Read і Write в Паскалі, scanf і printf в C), при компіляції реалізуються як відповідні виклики функцій DOS або, в особливих випадках, програмних переривань BIOS.

2.8.2. Драйвери пристроїв в ms-dos

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

Тема драйвера містить основну інформацію про пристрій: символьне або блоковий пристрій; для символьних пристроїв - ім'я пристрою; для блочних - кількість однотипних пристроїв, що обслуговуються даним драйвером; чи не є даний пристрій системної консоллю, системним годинником або порожнім пристроєм; які спеціальні операції підтримує пристрій .

У заголовку містяться адреси блоку стратегії і блоку переривань, а також адресу заголовка наступного драйвера в списку. Коли система повинна виконати запит на ввід / вивід, вона переглядає список всіх драйверів, поки не знайде пристрій з потрібним ім'ям (якщо задано символьне пристрій) або, для блокового пристрою, не визначить, який за рахунком драйвер відповідає вказаним номером (букві) диска. Потім система викликає блок стратегії знайденого драйвера, передаючи йому адресу заявки на виконання операції. Потім викликається блок переривань.

Якщо у файлі конфігурації CONFIG.SYS вказані імена файлів додаткових (завантажуваних) драйверів, то ці драйвери поміщаються в списку попереду стандартних системних драйверів. Тому, якщо ім'я пристрою для завантажуваного драйвера збігається з ім'ям стандартного пристрою MS-DOS, то буде викликаний завантажуваний драйвер, а не стандартний.

Блок стратегії драйвера MS-DOS не робить практично нічого, тільки запам'ятовує адресу заявки. Блок переривань виконує всю роботу по обробці заявки, причому у всіх стандартних драйверів цей блок працює зовсім не по перериваннях, а за опитуванням готовності. Мабуть, розробники першої версії MS-DOS припускали небудь у майбутньому реалізувати нормальну структуру драйвера, та так і не зібралися.

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

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