Ноу Інти, лекція, підсистема вводу-виводу

7.1. Пристрої введення-виведення

Зовнішні пристрої, що виконують операції введення-виведення, можна розділити на три групи:

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

Слід також відзначити суттєві відмінності між пристроями введення-виведення, що належать до різних класів, і в рамках кожного класу. Ці відмінності стосуються наступних характеристик:

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

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

Пристрої введення-виведення, як правило, складаються з електромеханічної та електронної частини. Зазвичай їх виконують у формі окремих модулів - власне пристрій і контролер (адаптер). У ПК контролер приймає форму плати, що вставляється в слот розширення. Плата має роз'єм. до якого підключається кабель. провідний до самого пристрою. Багато контролери здатні управляти двома, чотирма і навіть більше ідентичними пристроями. Інтерфейс між контролером і пристроєм є офіційним стандартом (ANSI. IEEE або ISO) або фактичним стандартом, і різні компанії можуть випускати окремо Котроллер і пристрої, що задовольняють даному інтерфейсу. Так, багато компаній виробляють диски, відповідні інтерфейсу IDE або SCSI. а набори схем системної логіки материнських плат реалізують IDE і SCSI-контролера.

7.2. Призначення, завдання та технології підсистеми введення-виведення

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

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

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

На підсистему введення-виведення покладаються такі функції [5. 17]:

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

Еволюція введення-виведення може бути представлена ​​наступними етапами [17].

  1. Процесор безпосередньо управляє периферійним пристроєм.
  2. Пристрій управляється контролером. Процесор використовує програмований введення-виведення без переривань (перехід до абстракції інтерфейсу введення-виведення).
  3. Використання контролера переривань. Введення-виведення, керований перериваннями.
  4. Використання модуля (каналу) прямого доступу до пам'яті. Переміщення даних в пам'ять (з неї) без застосування процесора.
  5. Використання окремого спеціалізованого процесора введення-виведення, керованого центральним процесором.
  6. Використання окремого комп'ютера для управління пристроями введення-виведення при мінімальному втручанні центрального процесора.

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

Для персональних комп'ютерів операції введення-виведення можуть виконуватися трьома способами.

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

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

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

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

  • Прямий доступ до пам'яті (direct memory access - DMA). У цьому випадку спеціальний модуль прямого доступу до пам'яті управляє обміном даних між основною пам'яттю і контролером вводу-виводу. Процесор надсилає запит на передачу блоку даних модулю прямого доступу до пам'яті, а переривання відбувається тільки після передачі всього блоку даних.
  • В даний час в персональних та інших комп'ютерах використовується третій спосіб введення-виведення, оскільки в структурі комп'ютера є DMA - контролер або подібне йому пристрій, що обслуговує, як правило, запити про передачу даних від декількох пристроїв введення-виведення на конкурентній основі.

    Перед виконанням операції обміну ЦП програмує DMA - контролер. встановлюючи його регістри (крок 1 на рис. 7.1). Потім ЦП дає команду дисковому контролеру прочитати внести дані у внутрішній буфер і перевірити контрольну суму. Після цього процесор продовжує свою роботу. Коли дані отримані і перевірені контролером диска, DMA може починати роботу.

    Ноу Інти, лекція, підсистема вводу-виводу


    Мал. 7.1. Робота DMA

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

    Нижче на рис. 7.2 показана позиція циклу команд. в яких робота процесора може бути припинена. У будь-якому випадку припинення процесора відбувається тільки при необхідності використання шини. Після цього пристрій DMA виконує передачу слова і повертає управління процесору. Однак це не є перериванням: процесор не зберігає контекст з переходом до виконання іншого завдання. Він просто робить паузу на час одного циклу шини.

    Ноу Інти, лекція, підсистема вводу-виводу


    Мал. 7.2. Точки переривання DMA

    У блочному режимі роботи контролер DMA займає шину на серію пересилань (пакет). Цей режим більш ефективний, проте при перенесенні великої блоку центральний процесор і інші пристрої можуть бути заблоковані на суттєвий проміжок часу.

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

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

    Схожі статті