Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spz / lect / lekc6_2_keruv_in_out

.pdf
Скачиваний:
17
Добавлен:
23.02.2016
Размер:
166.5 Кб
Скачать

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

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

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

Зпогляду програміста під "обробкою інформації" розуміється виконання команд процесора над даними, що лежать у пам'яті незалежно від рівня ієрархії

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

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

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

Фізичні принципи організації введення-виведення.

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

Структура системи введення-виведення.

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

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

Швидкість обміну інформацією може варіюватися в діапазоні від декількох байт у секунду (клавіатура) до декількох гигабайт у секунду (мережні карти).

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

Частина пристроїв уміє передавати дані тільки по одному байті послідовно (символьні пристрої), а частина пристроїв уміє передавати блок байт як єдине ціле (блокові пристрої).

Існують пристрої, призначені тільки для введення інформації, пристрої, призначені тільки для виводу інформації, і пристрої, що можуть робити і введення, і виведення.

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

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

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

остальная часть, ядра операционной системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

базовая подсистема ввода-вывода

-'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

драйвер

 

драйвер

 

 

драйвер

 

IDE

 

SCSI

 

 

клавиатуры

 

мыши

 

 

монитора

 

драйвер

 

драйвер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

контроллер

 

контроллер

 

 

контроллер

 

IDE

 

SCSI

 

 

клав натуры

 

мыши

 

 

монитора

 

контроллер

 

контроллер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

клавиатура

 

мышь

 

 

монитор

 

IDE диски

 

SCSI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

устройства

 

 

 

 

 

 

 

 

 

Hardware

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Структура системи введення-виведення

Апаратура вв/вив складається з ієрархічної структури каналів, пристроїв керування та периферійних пристроїв.

В складі довільної ОС Є спеціальна підсистема, що керує апаратурою вв/вив.

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

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

В підсистемах керування вв/вив використовується в основному 2 типа методів керування периферійними пристроями:

1.прямий;

2. непрямий. а)

центральний

 

периферійний

процесор

 

пристрій

 

 

 

 

 

 

 

б)

центральний

 

 

 

 

 

периферійний

 

 

 

 

 

 

 

процесор

 

канал

 

 

пристрій

 

 

 

 

 

Схема прямого (а) і непрямого (б) методів керування

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

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

Головний недолік - практично неможливо реалізувати на його основі режим мультипрограмування.

б) Метод заснований на тому, що між ЦП та периферійним пристроєм є спеціальний процесор, що називається каналом, який фактично здійснює керування вв/вив.

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

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

Особливість: по мірі розвитку зовнішнього процесу ЦП, канал та периферійні пристрої працюють паралельно.

Для синхронізації паралельної роботи ЦП і каналу, використовують різноманітні засоби, серед яких:

1)флаг зайнятості, що надається центральному процесору;

2) ЦП-ру доступна розширена статусна інформація про стан каналу, контролеру та пристроїв;

3) система переривань, де сигнал переривань є по змісту синхронізуючим.

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

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

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

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

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

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

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

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

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

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

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

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

Функції супервізора вводу-виводу

-планує та організовує через канал подальші дії по організації вв/вив;

-при необхідності огранізовує поновлення даних, що необхідні для вв/вив, а

також ініціює наступну операцію вв/вив в каналі;

-синхронізує взаємодію зовнішніх та програмних процесів;

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

 

 

ОП

зовнішній

 

 

процес

буфер

програмний

 

 

процес

Схема інформаційної взаємодії зовнішнього та программного процесів

Мета синхронізації – усунення можливостей одночасного звернення процесів до буферів.

Для злагоджування ефекту невідповідності швидкостей між процесами,

розташовують один або декілька буферів, роль яких виконують неперервні ділянки ОП (оперативної памяті).

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

Існують три причини, що приводять до використання буферів у базовій підсистемі введення-виведення:

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

випадок передачі потоку даних від клавіатури на модем. Швидкість, з

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

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

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

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

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

виводити їх на пристрій з цього буфера.

Під словом кэш (cache - "наявні"), звичайно розуміють область швидкої пам'яті, що містить копію даних, розташованих де-небудь у більш повільній пам'яті, призначену для прискорення роботи обчислювальної системи. У

базовій підсистемі введення-виведення не слід змішувати два поняття:

буферизация і кешування, хоча найчастіше для виконання цих функцій приділяється та сама область пам'яті. Буфер часто містить єдиний набір даних,

що існує в системі, у те час як кэш, по своєму визначенню, містить копію даних, існуючих де-небудь ще.

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

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

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

що забезпечує подібні дії, і одержав назву spooling.

На супервізор вв/вив також покладаються вимоги по керуванню буфером,

по виділенню та знищенню буферів ОП.

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

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

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

Ідентифікація копкретного пристроя в драйвері здійснюється за допомогою № пристроя в межах даного ттипа. тип також ідентифікується номером. Кожен драйвер складається з двох частин:

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

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

Щоб розпочати роботу з деяким пристроєм, необхідно відкрити або створити спеціальний файл, що є відповідним до пристрою. Відкриття – це процес встановлення зв’язку між іменем файлу та деякою змінною, що

зберігається в частині пам’яті процесора, що відкриває файл. Ця змінна називається номер дескриптора файла. Закриття – процес зворотній.

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

Кожна ОС має свої таблиці введення/виведення. Їх зміст може сильно

відрізнятися. В деяких ОС замість таблиць створюються списки.

В ОС-мах існують не меннше 3 таблиць , що призначені для здійснення в

системі реконфігурації периферійного обладнання.

Призначення таблиць – здійснювати зв’язок драйверів між з ядром ОС.

Кожен елемент таблиць містить адресні посилання на відповідні драйвери.

Номер елемента в таблиці – це номер типа пристроя, драйвер якого описується

в цьому елементі. Ядро ідентифікує кожний пристрій за допомогою номера типа пристрою.

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

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

підключені до обчислювальної системи. Кожен елемент таблиці нехай називається UСB (unit control block - блок управління пристроєм введення/виведення). Кожен елемент UСB таблиці обладнання, як правило,

містить слідуючу інформацію про пристрій:

тип пристрою, його модель, символічне ім’я, характеристики;

як цей пристрый пыдключений (через який інтерфейс, до якого раз’єму, які порти і т.д.)

Соседние файлы в папке lect