На головну

Основні системні таблиці введення / виведення

  1.  Event-менеджмент - поняття, основні методи.
  2.  I. Основні богословські положення
  3.  I. ОСНОВНІ Богословська ПОЛОЖЕННЯ
  4.  I. Основні завдання та напрямки роботи бібліотеки
  5.  I. Основні лінгвістичні джерела.
  6.  I. Основні права громадян
  7.  II. Основні визначення

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

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

Перша таблиця (або список) містить інформацію про всі пристрої введення / виводу, підключених до обчислювальної системи. Назвемо її умовно таблицею обладнання (equipment table), а кожен елемент цієї таблиці нехай називається UCB (unit control block, блок керування пристроєм введення / виведення). Кожен елемент UCB таблиці обладнання, як правило, містить наступну інформацію про пристрій:

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

Друга таблиця призначена для реалізації ще одного принципу віртуалізації пристроїв введення / виводу - незалежності від пристрою. Бажано, щоб програміст не переймався урахуванням конкретних параметрів (і / або можливостей) того чи іншого пристрою введення / виводу, яке встановлено (або не встановлено) в комп'ютер. Для нього повинні бути важливі тільки найзагальніші можливості, характерні для даного класу пристроїв введення / виводу, якими він бажає скористатися. Наприклад, принтер повинен уміти виводити (друкувати) символи або графічне зображення. А накопичувач на магнітних дисках - зчитувати або записувати за вказаною адресою (в координатах C-H-S) порцію даних. Хоча найчастіше програміст і не використовує пряму адресацію при роботі з магнітними дисками, а працює на рівні файлової системи. Однак в такому випадку вже розробники файлової системи не повинні залежати від того, нагромаджувач якого конкретного типу і моделі, а також якого виробника використовується в даному конкретному комп'ютері (наприклад, HDD IBM DTLA 307030, WDAC 450AA або який-небудь ще). Важливим повинен бути тільки сам факт існування накопичувача, що має деякий кількість циліндрів, головок читання / запису і секторів на доріжці магнітного диска. Згадані значення кількості циліндрів, головок і секторів повинні бути взяті з елемента таблиці обладнання. При цьому для програміста також не повинно мати значення, яким чином той чи інший пристрій підключено до обчислювальної системи, а не тільки якась конкретна модель пристрою використовується. Тому в запиті на введення / виведення програміст вказує саме логічне ім'я пристрою. Дійсне пристрій, який зіставляється віртуальному (логічного), вибирається супервизором за допомогою таблиці, про яку ми зараз говоримо. Отже, спосіб підключення пристрою, його конкретна модель і відповідний їй драйвер містяться в уже розглянутої таблиці обладнання. Але для того, щоб зв'язати деякий віртуальний пристрій, використане програмістом при створенні програми з системної таблицею, що відображає інформацію про те, яке саме пристрій і яким чином підключено до комп'ютера, використовується друга системна таблиця. Назвемо її умовно таблицею опису віртуальних логічних пристроїв (DRT, device reference table). Призначення цієї другої таблиці - встановлення зв'язку між віртуальними (логічними) пристроями і реальними пристроями, описаними за допомогою першої таблиці обладнання. Іншими словами, друга таблиця дозволяє супервізору перенаправити запит на введення / виведення з програми на ті програмні модулі і структури даних, які (або адреси яких) зберігаються у відповідному елементі першої таблиці. У багатьох багатокористувацьких системах така таблиця не одна, а кілька: одна загальна і по одній - на кожного користувача, що дозволяє будувати необхідні зв'язки між логічними (символьними) іменами пристроїв і реальними фізичними пристроями, які є в системі.

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

У сучасних складних ОС є набагато більше системних таблиць або списків, які використовуються для організації процесами управління операціями вводу / виводу. Наприклад, однією з можливих і часто реалізуються інформаційних структур, які супроводжують практично кожен запит на введення / виведення, є блок управління даними (data control block, DCB). Призначення цього DCB - підключення препроцесорів до процесу підготовки даних на введення / виведення, тобто врахування конкретних технічних характеристик і використовуваних перетворень. Це необхідно для того, щоб наявне пристрій отримувало не якісь незрозумілі йому коди або формати даних, які не відповідають режиму його роботи, а коди, створені спеціально під даний пристрій і використовуваний зараз формат представлення даних.

Взаємозв'язку між описаними таблицями зображені на рис. 4.2.

Тепер нам залишилося лише ще раз, з урахуванням викладених принципів і таблиць, розглянути процес управління вводом / виводу за допомогою рис. 4.3.

Запит на операцію введення / виводу від поточну програму надходить на супервизор (дію 1). Той перевіряє системний виклик на відповідність прийнятим специфікаціям і в разі помилки повертає завданню відповідне повідомлення (дія 1-1). Якщо ж запит коректний, то він перенаправляється в супервизор введення / виведення (дія 2). Останній по логічному (віртуальному) імені за допомогою таблиці DRT знаходить відповідний елемент UCB в таблиці обладнання. Якщо пристрій вже зайнято, то описатель завдання, запит якої зараз обробляється супервизором введення / виведення, поміщається в список завдань, які очікують даний пристрій. Якщо ж пристрій вільно, то супервізор введення / виведення визначає з UCB тип пристрою і при необхідності запускає препроцесор, що дозволяє отримати послідовність керуючих кодів і даних, яку зможе правильно зрозуміти і відпрацювати пристрій (дія 3). Коли «програма» управління операцією введення / виведення буде готова, супервізор введення / виведення передасть управління відповідного драйверу на секцію запуску (дія 4). Драйвер ініціалізує операцію управління, обнуляє лічильник тайм-ауту і повертає управління супервізору (диспетчеру задач) з тим, щоб він поставив на процесор готову до виконання завдання (дія 5). Система працює своєю чергою, але коли пристрій вводу / виводу відпрацює послану йому команду, воно виставляє сигнал запиту на переривання, по якому через таблицю прериваній управління передається на секцію продовження (дія 6). Отримавши нову команду, пристрій знову починає її обробляти, а управління процесором знову передається диспетчеру завдань, і процесор продовжує корисну роботу. Таким чином, виходить паралельна обробка завдань, на тлі якої процесор здійснює управління операціями вводу / виводу.

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




 Системне програмне забезпечення |  Поняття операційного середовища |  Поняття обчислювального процесу і ресурсу |  Діаграма станів процесу |  Реалізація поняття послідовного процесу в ОС |  Процеси і треди |  переривання |  Основні види ресурсів |  Управління завданнями в операційних системах |  дисципліни диспетчеризації |

© um.co.ua - учбові матеріали та реферати