Тема 2.3. Керування пристроями введення-виведення 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 2.3. Керування пристроями введення-виведення



Введення-виведення у режимі користувача

Доцільно організувати одночасне очікування отримання даних із кількох дескрипторів.

Виконання введення-виведення поділяють на кілька етапів:

1. Спеціальний системний виклик (виклик повідомлення) визначає, чи можна виконати синхронне введення-виведення хоча б для одного дескриптора із заданого набору без блокування потоку.

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

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

 

Самостійна робота №11

Тема 2.4. Завантаження ОС

Жорстке перезавантаження

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

М’яке перезавантаження

М'яким (англ. soft reboot) перезавантаження називається тоді, коли воно відбувається під контролем програмного забезпечення, без порушень в електроживленні і натискання кнопки перезавантаження на передній панелі. Як правило, але не завжди, це означає звичайне штатне завершення роботи машини і наступне перезавантаження.

Комбінація клавіш клавіатури Control-Alt-Delete на оригінальному комп'ютері IBM PC була назначена для виконання м'якого перезавантаження для скорішого і зручнішого (і, дехто стверджує, менш стресового для компонентів системи) рестарту, порівняно із тим, коли вимикається живлення комп'ютера.

Ядро Linux має опціональну підтримку системного виклику kexec, який зупиняє поточне робоче ядро і переключає виконання на інше. Це процес повністю незалежний від програм, зашитих в залізо (firmware). Зауважимо, що ядро, яке запускається, може навіть і не бути ядром Linux.

 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 299; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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