logo
СПЗ_лекції

Лекція 8.

Програмне забезпечення вводу-виводу.

1.Задачі програмного забезпечення вводу-виводу.

Ключовою концепцією розробки програмного забезпечення вводу-виводу є його незалежність від пристрою. Це означає можливість написання програм здатних отримувати доступ до будь-якого пристрою вводу-виводу без попередньої вказівки конкретного пристрою. Всі проблеми, пов’язані з відмінностями цих пристроїв повина вирішувати операційна система. З даною концепцією тісно пов’язаний принцип однообразного іменування. Ім’я файлу або пристрою повино бути текстовим рядком або числом і не залежати від фізичного пристрою.

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

Більшість операцій вводу-виводу на фізичному рівні є асинхроними. Центральний процесор запускає перенесення даних і займається іншими задачами, поки не прийде переривання.

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

Рис.8.1. Програмні рівні введеня-виведення

Ще одним аспектом програмного забезпечення вводу-виводу є буферизація. Часто дані, які поступають з пристрою не можуть бути збережені там, куди вони направляються. Операційна система повина вміти керувати як пристоями загального глобального доступу, так і вітділеними пристроями.

2.Способи здійснення операцій вводу-виводу.

Існує три фундаментально різних способи здійснення операцій вводу-виводу. Розглянемо програмне введення-виведення. Всю роботу при такому способі виконує центральний процесор.

Програмне введення-виведення реалізується легко, але має недолік: центральний процесор займається на весь час операцією введеня-виведення. Надати центральному процесору можливість виконувати інші задачі, коли принтер переходить в стан готовності, можна за допомогою переривань. Це випадок принтера, який не буферизує символи, а друкує іх одразу по надходженню. Цей спосіб називають - кероване перериваннями введення-виведення. Недоліком цього способу є те, що переривання відбувається при друкувані кожного символу.

3.Обробники переривань.

Для більшості операцій вводу-виводу переривання є неприємним, але необхідним фактором. Про їх існування повина знати як можна менша частина операційної системи.

Один з найкращих способів полягає в блокувані драйвера, який розпочав операцію вводу-виводу до самого закінчення цієї операції і отримання переривання. Драйвер може заблокувати себе сам, виконавши на симафорі процедури down, write, reseive на повідомленні.

Коли відбувається переривання, то розпочинає роботу обробник переривань. По закінченю необхідної роботи він може розблокувати драйвер, який запустив його. В деяких випадках використовується виконання процедури up на симафорі. В інших випадках обробник переривань викликає процедуру монітора signal із змінною стану.

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

4. Драйвери пристроїв.

Для керування кожним пристроєм вводу-виводу підключеним до персонального комп’ютера потрібна спеціальна програма, яку називають драйвером пристрою.

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

Оскільки в операційну сиситему будуть вставлятись частини програм (драйвери), написані іншими програмістами, то необхідна певна архітектура, яка б дозволила подібне встановлення. Це означає, що повина бути вироблена чітко визначена модель функції драйвера і його взаємодії з рештою операційної системи. Драйвери пристроїв розміщуються під рештою операційної системи і контроллером.

Обмін інформацією між драйверами і контролерами пристроїв йде по шині.

Рис.8.2. Логічне розміщення драйверів пристроїв.

ОС класифікує драйвери за декількома категоріями у відповідності з типами обслуговуваних ними пристроїв. До найбільш загальних категорій відносять блочні (диски), які містять блоки даних, до яких можлива незалежна адресація, і символьні пристрої, такі, як клавіатура і принтери, що формують і приймають потік символів. В більшості ОС визначено стандартний інтерфейс, який повинні підтримувати всі блочні драйвери і другий стандартний інтерфейс підтримуваний символьними драйверами.

Починаючи з MS-DOS перейшли до моделі динамічного підвантаження драйверів під час роботи системи.

  1. Способи здійснення введення-виведення.

Зв'язок між перерахованими способами відображено в таблиці 8.1

Таблиця 8.1

В більшості комп’ютерних систем основним способом передавання даних , який підтримується операційною системою, є прямий доступ до пам'яті.

  1. Еволюція функцій введення-виведення.

Етапи розвитку функціонування пристроїв введення-виведення:

  1. Процесор безпосередньо керує периферійними пристроєм.

  2. До пристрою додається контролер або модуль введення-виведення. Процесор використовує програмоване введення-виведення без переривань (віддаляється від конкретних деталей інтерфейсів зовнішніх прстроїв).

  3. Модуль введення-виведення отримує можливість безпосередньої роботи з пам’яттю з використанням DMA. З’являється можливість переміщення блоків даних в пам'ять або без неї без використання процесора (за виключенням моментів початку і кінця передачі даних).

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

  5. Модуль введення-виведення володіє своєю локальною пам’яттю і є, по суті, окремим комп’ютером.