Класифікація периферійних пристроїв і їх архітектура

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

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

Класифікація периферійних пристроїв може бути виконана за різними ознаками.

· Пристрої послідовного доступу (sequential access) і пристрої довільного доступу (random access). Для послідовних пристроїв характерна наявність певного природного порядку даних, при цьому обробка даних в іншому порядку або неможлива, або вкрай утруднена. Класичним прикладом є магнітні стрічки, для яких читання і запис даних ведуться від початку стрічки до кінця, а спроба доступу в іншому порядку вимагатиме постійної перемотування стрічки, різко знижує швидкість роботи. До пристроїв послідовного доступу можна віднести також клавіатуру, мишу, принтер, модем.

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

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

Для блокових пристроїв найменшою порцією введення / виводу, виконуваного за одне звернення до пристрою, є один блок, рівний, як правило, 2k байт. Типовим розміром блоку може бути 512 байт, 1K байт, 4K байт і т.п., в залежності від конкретного пристрою. Найбільш відомі приклади блокових пристроїв - магнітні диски та магнітні стрічки. Для диска поняття блоку зазвичай збігається з поняттям сектора. Зокрема, для IBM-сумісних ПК сектор (блок) диска дорівнює 512 байт.

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

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

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

може бути перепризначений, наприклад, на принтер або у файл, стандартний ввід - на віддалений термінал, на файл і т.п.

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

- Віртуальні диски, розташовані на самому ділі в оперативній пам'яті (такі пристрої були популярні в кінці 80-х років);

- Віртуальна пам'ять, розташована на самому ділі на диску;

- Віртуальні CD і DVD - програми, що імітують поведінку відповідних пристроїв;

- Віртуальний екран, надаваний DOS-програмі, що працює в режимі вікна Windows (програма працює так, як якщо б їй був наданий весь екран, але насправді система направляє висновок програми у відведений їй вікно);

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