Управління введенням-виводом
Устройства виводу-введення-висновку діляться на два типу: блок-ориентированные пристрої і байт-ориентированные устрою. Блок-ориентированные устрою зберігають інформацію в блоках фіксованого розміру, кожен із яких має власний адресу. Найпоширеніша блок-ориентированное пристрій — диск. Байт-ориентированные устрою не адресуемы і дозволяють виробляти операцію пошуку, вони генерують чи споживають… Читати ще >
Управління введенням-виводом (реферат, курсова, диплом, контрольна)
Управление уведенням-висновком.
Одной з головних функцій ОС є керівництво всіма пристроями виводу-введення-висновку комп’ютера. ОС повинна передавати пристроям команди, перехоплювати переривання і дозволяють опрацьовувати помилки; вона також має забезпечувати інтерфейс між пристроями та іншою частиною системи. З метою розвитку інтерфейс може бути однаковим всім типів пристроїв (незалежність від пристроїв).
Фізична організація пристроїв вводу-виводуУстройства виводу-введення-висновку діляться на два типу: блок-ориентированные пристрої і байт-ориентированные устрою. Блок-ориентированные устрою зберігають інформацію в блоках фіксованого розміру, кожен із яких має власний адресу. Найпоширеніша блок-ориентированное пристрій — диск. Байт-ориентированные устрою не адресуемы і дозволяють виробляти операцію пошуку, вони генерують чи споживають послідовність байтів. Прикладами є термінали, рядкові принтери, мережні адаптери. Утім, деякі зовнішні устрою не ставляться до жодного класу, наприклад, годинник, які, з одного боку, не адресуемы, з другого боку, не породжують потоку байтів. Це пристрій лише видає сигнал переривання у Красноярську деякі моменти часу.
Внешнее пристрій зазвичай складається з механічного і електронного компонента. Електронний компонент називається контролером устрою чи адаптером. Механічний компонент представляє власне пристрій. Деякі контролери можуть керувати кількома пристроями. Якщо інтерфейс між контролером і пристроєм стандартизован, то незалежні виробники можуть випускати сумісні як контролери, і устрою.
Операционная система зазвичай має справу ні з пристроєм, і з контролером. Контролер, зазвичай, виконує прості функції, наприклад, перетворює потік біт в блоки, які з байт, і здійснюють контроль і виправляти помилок. Кожен контролер має низку регістрів, що використовуються взаємодії з центральним процесором. У деяких комп’ютерах ці регістри є частиною фізичного адресного простору. У цих комп’ютерах немає спеціальних операцій вводу-виводу. За інших комп’ютерах адреси регістрів вводу-виводу, званих часто портами, утворюють власне адресне простір з допомогою запровадження спеціальних операцій вводу-виводу (наприклад, команд IN і OUT в процесорах i86).
ОС виконує вхід-видобуток, записуючи команди у регістри контролера. Наприклад, контролер гнучкого диска IBM PC приймає 15 команд, як-от READ, WRITE, SEEK, FORMAT тощо. Коли команда прийнята, процесор залишає контролер й займається інший роботою. При завершенні команди контролер організує переривання у тому, щоб передати управління процесором операційній системі, які мають перевірити результати операції. Процесор отримує результати і титул устрою, читаючи інформацію з регістрів контролера.
Організація програмного забезпечення виводу-введення-висновкуОсновная ідея організації програмного забезпечення вводу-виводу полягає у розбивці його за кілька рівнів, причому нижні рівні забезпечують екранування особливостей апаратури від верхніх, інші ж, своєю чергою, забезпечують зручний інтерфейс для користувачів.
Ключевым принципом є незалежність від пристроїв. Вигляд програми повинен бути незалежним від цього, читає вона дані з гнучкого диска чи з жорсткого диска.
Очень близька до ідеї незалежності він пристроїв є думка одностайної іменування, тобто для іменування пристроїв необхідно прийняти єдині правила.
Другим важливим питанням для програмного забезпечення виводу-введення-висновку є обробка помилок. Власне кажучи, помилки слід обробляти якнайближче до апаратурі. Якщо контролер виявляє помилку читання, він повинен спробувати її скоригувати. Якщо це йому вдається, то виправленням помилок повинен зайнятися драйвер устрою. Багато помилки можуть зникати при повторних спробах операцій виводу-введення-висновку, наприклад, помилки, викликані наявністю порошин на голівках читання чи диску. І якщо нижній рівень справитися не може з помилкою, він повідомляє про помилку верхньому рівню.
Еще один ключове питання — це використання блокуючих (синхронних) і неблокирующих (асинхронних) передач. Більшість операцій фізичного виводу-введення-висновку виконується асинхронно — процесор починає передачу і в іншу роботу, доки настає переривання. Користувальні програми набагато легше писати, якщо операції виводу-введення-висновку блокуючі - після команди READ програма автоматично припиняється до того часу, поки дані не потраплять в буфер програми. ОС виконує операції виводу-введення-висновку асинхронно, але представляє їх задля користувальних програм, у синхронної формі.
Последняя проблема у тому, що навколо лише устрою є поділюваними, інші - виділеними. Диски — це розділяються устрою, оскільки одночасний доступ кількох користувачів до диска технічно нескладне собою проблему. Принтери — це виділені устрою, оскільки не можна змішувати рядки, надруковані різними користувачами. Наявність виділених пристроїв ставить ОС певні проблеми були.
Для рішення поставлених проблем доцільно розділити програмне забезпечення виводу-введення-висновку чотирма шару (малюнок 2.30):
Обробка переривань, Драйвери пристроїв, Незалежний від пристроїв шар ОС, Користувальницький шар програмного забезпечення..
Рис. 2.30. Багаторівнева організація підсистеми виводу-введення-висновку
Обробка перериваньПрерывания би мало бути приховані якнайглибше у надрах ОС, щоб як і менша частина ОС мала із нею справа. Найкращий спосіб полягає у розв’язанні процесу, що ініціював операцію вводу-виводу, блокувати себе до завершення операції, і наступу переривання. Процес може блокувати себе, використовуючи, наприклад, виклик DOWN для семафори, чи виклик WAIT для перемінної умови, чи виклик RECEIVE для очікування повідомлення. При наступі переривання процедура обробки переривання виконує розблокування процесу, що ініціював операцію виводу-введення-висновку, використовуючи виклики UP, SIGNAL чи посилаючи процесу повідомлення. У кожному разі ефект від участі переривання полягатиме у цьому, як раніше заблокований процес тепер продовжить своє виконання.
Драйвери пристроївВесь залежний від устрою код міститься у драйвер устрою. Кожен драйвер управляє пристроями одного типу чи, то, можливо, одного класу.
В операційній системі лише драйвер устрою знає про конкретних особливостях ніякого устрою. Наприклад, лише драйвер диска має справу з доріжками, секторами, циліндрами, часом встановлення голівки та інші чинниками, забезпечують правильну роботу диска.
Драйвер устрою приймає запит від пристроїв програмного шару і вирішує, як він виконати. Типовим запитом є читання n блоків даних. Якщо драйвер був вільний під час вступу запиту, він починає виконувати запит негайно. Якщо ж він був зайнятий обслуговуванням іншого запиту, то знову що поступив запит приєднується до черги вже наявних запитів, і його буде виконано, коли настане його чергу.
Первый крок у реалізації запиту виводу-введення-висновку, наприклад, для диска, полягає у перетворення його з абстрактного форми в конкретну. Для дискового драйвера це перетворення номерів блоків в номери циліндрів, головок, секторів, перевірку, працює чи мотор, перебуває чи голівка над за потрібне циліндром. Інакше кажучи, він має вирішити, які операції контролера треба зробити у якій послідовності.
После передачі команди контролеру драйвер має вирішити, блокувати себе до закінчення заданої операції чи ні. Якщо операція займає чимало часу, як із друку деякого блоку даних, то драйвер блокується до того часу, поки операція не завершиться, і оброблювач переривання не розблоковує його. Якщо команда вводу-виводу виконується швидко (наприклад, прокручування екрана), то драйвер чекає на неї завершення без блокування.
Незалежний від пристроїв шар ОСБольшая частина програмного забезпечення вводу-виводу є від пристроїв. Точна межа між драйверами і незалежними від пристроїв програмами визначається системою, бо окремі функції, які б реалізуватися незалежним способом, насправді виконані у вигляді драйверів підвищення ефективності чи з інших причин.
Типичными функціями для незалежного від пристроїв шару є:
забезпечення загального інтерфейсу до драйверам пристроїв, називати пристроїв, захист пристроїв, забезпечення незалежного розміру блоку, буферизация, розподіл пам’яті на блок-ориентированных пристроях, розподіл і «визволення виділених пристроїв, повідомлення помилки.Остановимся що на деяких функціях цього переліку. Верхнім верствам програмного забезпечення не зручно працювати з блоками різного розміру, тому даний шар забезпечує єдиний розмір блоку, наприклад, з допомогою об'єднання кількох різних блоків у єдиний логічний блок. У зв’язку з цим верхні рівні починають працювати з абстрактними пристроями, що використовують єдиний розмір логічного блоку незалежно від розміру фізичного сектора.
При створенні файла чи заповненні його новими даними необхідно виділити йому нові блоки. І тому ОС повинна вести список чи битовую карту вільних блоків диска. З інформації про наявність вільного місця на диску може бути розроблений алгоритм пошуку вільного блоку, незалежний від пристрої і реалізований програмним шаром, які є вище шару драйверів.
Користувальницький шар програмного забезпеченняХотя більшість програмного забезпечення виводу-введення-висновку перебуває всередині ОС, деяка його частину міститься у бібліотеках, пов’язаних із користувальницькими програмами. Системні виклики, які включають виклики виводу-введення-висновку, зазвичай робляться бібліотечними процедурами. Якщо програма, написана мовою З, містить виклик.
count = write (fd, buffer, nbytes),то бібліотечна процедура write буде з програмою. Набір подібних процедур є частиною системи виводу-введення-висновку. Зокрема, форматування введення чи виведення виконується бібліотечними процедурами. Прикладом може бути функція printf мови З, яка рядок формату і, можливо, деякі перемінні в ролі вхідний інформації, потім будує рядок символів ASCII і робить виклик write висновку цього рядка. Стандартна бібліотека вводу-виводу містить велика кількість процедур, які виконують вхід-видобуток і працюють як частину користувальницької програми.
Другой категорією програмного забезпечення виводу-введення-висновку є підсистема спулинга (spooling). Спулинг — це спосіб роботи з виділеними пристроями в мультипрограммной системі. Розглянемо типове пристрій, яка потребує спулинга — рядкові принтер. Хоча технічно легко дозволити кожному користувальницькому процесу відкрити спеціальний файл, пов’язані з принтером, такий спосіб небезпечний тому, що користувальницький процес може монополізувати принтер на довільне час. Натомість створюється спеціальний процес — монітор, котра отримує виняткові права використання цього устрою. Також створюється спеціальний каталог, званий каталогом спулинга. А, щоб надрукувати файл, користувальницький процес поміщає виведену інформацію у цей файл й поміщає їх у каталог спулинга. Процесс-монитор почергово опубліковує все файли, які у каталозі спулинга.