ЗНАЕТЕ ЛИ ВЫ?

Фізична організація пристроїв введення-виведення



Пристрої введення - виведення поділяють на два типи: блок - орієнтовані пристрої і байт - орієнтовані пристрої. Блок - блок - орієнтовані пристрої зберігають інформацію в блоках фіксованого розміру, кожний з який маєсвою власну адресу. Найпоширеніший блок - блок - орієнтований пристрій - диск. Байт - байт – орієнтовані на адресованіпристрої, що і не дозволяють робити операцію пошуку. Вони генерують чи споживаютьпослідовність байтів. Прикладами є термінали, рядкові принтери, мережні адаптери. Однак, деякі зовнішніпристрої не належать до класів, наприклад, годинник, що, з одного боку, не адресує, а з іншогобоку, не породжує потоку байтів. Цей пристрій тільки видає сигнал переривання в певні моменти часу.Зовнішній пристрій, звичайно, складається з механічного й електронного компонента. Електронний компонентназивається контролером чи адаптером пристрою. Механічний компонент є власне пристроєм. Деякіконтролери можуть керувати декількома пристроями. Якщо інтерфейс між контролером і пристроєм

стандартизований, то незалежні виробники можуть випускати сумісні як контролери, так і пристрої.

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

ОС виконує введення-виведення, записуючи команди в регістри контролера. Наприклад, контролер гнучкого диска ІВМ РС приймає 15 команд, таких як READ, WRITE, SEEK, FORMAT. За умови прийняття команди, процесор залишає контролер і займається іншою роботою. При завершенні команди, контролер організує переривання для того, щоб передати керування процесором операційній системі, що повинна перевірити результати операції. Процесор одержує результати і статус пристрою, читаючи інформацію з регістрів контролера.

 

Організація програмного забезпечення введення-виведення

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

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

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

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

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

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

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

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

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

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

· Незалежний від пристроїв шар операційної системи.

· Користувальницький пласт програмного забезпечення.

Мал. 2.30. Багаторівнева організація підсистеми введення-виведення.

 

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

Переривання повинні бути сховані якнайглибше в надрах операційної системи, щоб, як можна, менша частина ОС мала з ними справу. Найкращий спосіб полягає в дозволі процесу, що ініціює операцію введення-виведення, блокування себе до завершення операції і переривання. Процес може блокувати себе, використовуючи, наприклад, виклик DOWN для семафора, чи виклик WAIT для перемінної умови, або ж виклик RESEIV для чекання повідомлення. Коли наступає переривання процесу, процедура обробки переривання здійснює розблокування процесу, що ініціював операцію введення-виведення, використовуючи виклики UP, Signal- чи посилаючись на процес повідомлення V, в будь-якому випадку ефект від переривання полягає в тому, що раніше заблокований процес тепер продовжує своє виконання.

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

Залежний від пристрою код міститься в драйвері пристрою. Кожен драйвер керує пристроями одного типу і може бути одного класу.

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

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

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





Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.219.31.204 (0.004 с.)