Система введення виводу, оперативна пам’ять комп’ютера

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

Система введення виводу

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

Основні компоненти підсистеми введення/виводу:

  1. Драйвери.
  2. Файлова система.
  3. Диспетчер переривань.

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

  • Організація паралельної роботи пристроїв вводу/виводу та процесора.
  • Узгодження швидкостей обміну та кешування даних.
  • Поділ пристроїв та даних між процесорами.
  • Забезпечує зручний логічний інтерфейс між пристроями та іншою частиною системи.
  • Підтримує широкий спектр драйверів з можливістю включення в систему нового драйвера.
  • Динамічна завантаження та вивантаження драйверів.
  • Підтримка кількох файлових систем.
  • Підтримка синхронних та асинхронних операцій введення/виводу.

Організація паралельної роботи пристроїв введення/виводу та процесора

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

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

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

Це завдання зазвичай вирішується з урахуванням багаторівневої пріоритетної схеми обслуговування за перериванням.

Узгодження швидкостей обміну та кешування даних

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

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

Для того, щоб згладити таку сильну невідповідність у продуктивності основних підсистем, використовується буферування та/або кешування даних.

Часто як буфер використовують використовується дисковий файл, званий також спул-файлом (spool – шпулька).

Приклад. Організація виведення даних на принтер.

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

Приклад. Буферна пам'ять у контролерах графічних дисплеїв.

Кешування виключно корисне в тому випадку, коли програма неодноразово читає з диска ті самі дані. Після того, як вони один раз будуть поміщені в кеш, звернень до диска більше не знадобиться і швидкість роботи програми значно зросте.

Поділ пристроїв та даних між процесами

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

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

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

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

Приклад.

PRN, LPT1 – для порту принтера, CON – для клавіатури (символьні імена, а ОС – це файли).

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

Перевагоюпідсистеми вводу/виводу будь-якої універсальної ОС є наявність різноманітного набору драйверів дляНайбільш популярні периферійні пристрої.

Прекрасно спланована та реалізована ОС може зазнати невдачі на ринку тільки через те, що до її складу не включений достатній набір драйверів та адміністратори та користувачі змушені шукати потрібний їм драйвер або займатися його розробкою (перші версії OS/2).

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

Драйвер взаємодіє, з одного боку, з модулями ядра ОС (модулями підсистеми введення-виводу, модулями системних викликів, модулями підсистем управління процесами та пам'яттю), а з іншого боку – з контролерами зовнішніх пристроїв. Тому існує два типи інтерфейсів:

  1. Інтерфейс "драйвер-ядро".
  2. Інтерфейс "драйвер-пристрій".

Для підтримки процесу розробки драйверів ОС зазвичай випускається так званий пакет DDK (Driver Development Kit), що є набором відповідних інструментальних засобів - бібліотек, компіляторів і відладчиків.

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

Підтримка кількох файлових систем

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

Файлова система - підсистема ОС, що визначає спосіб організації даних на диску.

Файлова система відповідає за виконання таких дій:

  1. Створення, знищення, організацію, читання, запис, модифікацію та переміщення файлової інформації.
  2. За керування доступом до файлів та за керування ресурсами, які використовуються файлами.

Популярність файлової системи часто призводить до її "міграції" з "рідної" ОС до інших ОС.

Файлова система FAT з'явилася спочатку в MS-DOS, потім була реалізована в OS/2, у сімействі MS Windows та багатьох реалізаціях UNIX.

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

Шар VFS (Virtual File System) у версіях UNIX на основі коду System V Release 4.

Підтримка синхронних та асинхронних операцій введення-виведення

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

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

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

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