Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Планування операцій введення-виведення




Прямий доступ до пам'яті

Обидва наведені підходи до організації введення-виведення не позбавлені недо­ліку: вони надто завантажують процесор. Як зазначалося, це є головною пробле­мою для опитування пристроїв, але введення-виведення на основі переривань теж може мати проблеми, якщо переривання виникатимуть надто часто. Проблема полягає в тому, що процесор бере участь у кожній операції читання і записування, просто пересилаючи дані від пристрою у пам'ять і назад. Із цією за­дачею упорався б і простіший пристрій; зазначимо також, що розмір даних, які пересилають за одну операцію, обмежений розрядністю процесора (32 біти, для пересилання наступних 32 біт потрібна нова інструкція процесора). Якщо пере­ривання йдуть часто (наприклад, від жорсткого диска), то час їхньої обробки мо­же бути порівняний із часом, відпущеним для решти робіт. Бажано пересилати дані між пристроєм і пам'яттю більшими блоками і без участі процесора, а його у цей час зайняти більш продуктивними операціями.

Усе це спонукало до розробки контролерів прямого доступу до пам'яті (direct memory access, DMA). Такий контролер сам керує пересиланням блоків даних від пристрою безпосередньо у пам'ять, не залучаючи до цього процесора. Блоки да­них, які пересилають, завжди набагато більші, ніж розрядність процесора, на­приклад вони можуть бути завдовжки 4 Кбайт. Схема введення-виведення при цьому наприклад, буде такою:

- процесор дає команду DMA-контролеру виконати читання блоку від прист­рою, разом із командою він відсилає контролеру адресу буфера для введен­ня-виведення (такий буфер має бути у фізичній пам'яті); + DMA-контролер починає пересилання, процесор у цей час може виконувати

- інші інструкції;

- після завершення пересилання всього блоку DMA-контролер генерує перери­вання;

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

 

.

Планування введення-виведення звичайно реалізоване як середньотермінове плану­вання. Як відомо, з кож­ним пристроєм пов'язують чергу очікування, під час виконання блокувального виклику (такого як read () або fcntl ()) потік поміщають у чергу для відповідного пристрою, з якої його звичайно вивільняє оброблювач переривання. Різним пристроям можуть присвоювати різні пріоритети. Ще одним прикладом планування введення-виведення є дискове планування.

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

Цікавим підходом до оптимізації операцій введення-виведення, пов'язаним із за­писуванням великих обсягів даних протягом однієї операції, є введення-виведен­ня з розподілом та об'єднанням (scatter-gather I/O). У даному випадку в системі дозволяется використовувати під час введення-виведення набір непов'язаних ді­лянок пам'яті. При цьому можливі дві дії:

- дані із пристрою відсилають у набір ділянок пам'яті за одну операцію введен­ня (операція розподілу під час введення, scatter);

- усі дані набору ділянок пам'яті відсилають пристрою для виведення за одну операцію (операція об'єднання під час виведення, gather).

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

Спулінг (spooling) — технологія виведення даних із використанням буфера, що працює за принципом FIFO. Такий буфер називають спулом (spool) або ділянкою спула (spool area).

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




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 1033; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.