Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Статус Брэда (2017) смотреть онлайн читать дальше. | Кубик рубика 3х3 купить в москве тут.

Переривання

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

Переривання в Pdp-11
Для прикладу розглянемо організацію переривань в машинах сімейства Pdp-11. Процесори даної архітектури зараз практично не використовуються в машинах спільного призначення, але проводяться і застосовуються як мікроконтроллери. Ряд архітектурних вирішень Pdp-11, розробленою на початку 70-х років, не втратили актуальності і понині. Зокрема, підхід до реалізації переривань вважається класичним [Кейслер 1986].
Процесори сімейства Pdp-11 розрізняють 128 типів переривань і виключень (чим переривання відрізняється від виключення, див. далі). Кожному типові відповідає процедура-обробник. Адреси точок входу всіх процедур зібрані в таблицю векторів переривань. Ця таблиця займає 256 слів фізичної пам'яті, починаючи з нульової адреси. Кожен елемент таблиці (вектор) містить адреса обробника і нове слово достатку процесора. Пізніше буде пояснено, для чого це зроблено.
Процесор дізнається про виникнення переривання, якщо на один з входів запиту поданий сигнал. Зазвичай цей сигнал генерується одним із зовнішніх пристроїв. Наприклад, переривання може сигналізувати про завершення операції переміщення голівки дисковода або передачі даних в режимі ПДП.
Кожен вхід відповідає певному рівню пріоритету. Pdp-11 має вісім рівнів пріоритету переривання. Переривання відбувається лише коли рівень пріоритету процесора нижчий за пріоритет запрошуваного переривання. Якщо в процесора встановлений пріоритет, рівний 7, зовнішні переривання заборонені. Пріоритет процесора задається його словом достатку. Отримавши запит, процесор завершує виконання поточної команди і виставляє
сигнал готовності до переривання. Після цього зовнішній пристрій виставляє на шині даних номер вектора переривання.
Процесор прочитує номер і викликає відповідну процедуру з таблиці. При цьому виклик обробника переривання відрізняється від виклику звичайної процедури: при звичайному виклику в стеку зберігається лише адреса команди, на яку слід повернути управління. При перериванні ж в стеку зберігаються два значення: адреси команди і слова достатку процесора. Нове слово достатку береться з таблиці векторів.
При цьому пріоритет процесора автоматично встановлюється рівним тому значенню, яке розробник програми обробки вважає за правильне. Звернете увагу: не рівним пріоритету оброблюваного переривання, а тому, яке вимагає розробник.
При завершенні процедури обробки викликається команда RTI (Return from Interrupt— повернення з переривання). Ця команда виштовхує із стека адресу перерваної команди і старе слово достатку, тим самим і продовжуючи виконання перерваної програми, і відновлюючи пріоритет процесора. [Кичев/некрасов 1988].
Для порівняння: у процесорах сімейства 180x86 вектор переривання містить лише адресу програми-обробника, а пріоритет процесора задається не словом достатку процесора, а регістром зовнішнього устройства— контроллера переривань. Контроллер переривань зазвичай встановлює пріоритет, рівним пріоритету переривання, що обробляється в даний момент. Щоб підвищити або знизити цей рівень, обробник переривання повинен програмувати контроллер. Перед завершенням обробника необхідно повернути контроллер переривань у вихідний достаток, виконавши над ним серію магічних команд — епілог переривання.
Обробка переривань в системах з віртуальною пам'яттю декілька ускладнюється: адже окрім адреси обробника нам треба ще задати адресний простір, в якому ця адреса визначена. У моделях Pdp-11, що мають диспетчер пам'яті, ця проблема вирішується просто: для процесора в кожен момент часу задано два адресні простори: призначене для користувача і системне. Всі переривання обробляються в системному адресному просторі. Для реалізації цього процесор має два набори регістрів диспетчера пам'яті. Їх наявність, з одного боку, знімає з обробника переривання обов'язок перемикати адресні простори, а з іншою дозволяє ядру при обробці системних викликів звертатися до сегменту даних призначеного для користувача процесу.
У захищеному режимі процесорів 180x86 використаний гнучкіший механізм установки адресного простору для обробника. По суті, з кожним обробником може бути асоційоване свій віртуальний адресний простір. Про спосіб, яким це досягається, краще прочитати в літературі по відповідних процесорах, наприклад [Паппас/маррі 1993].

Переривання позбавлені недоліків, які ми вказали і вище для обробки подій за допомогою опиту: чекаючи події, процесор може займатися якій-небудь іншою корисною роботою, а коли подія станеться, він приступить до обробки, не чекаючи повного завершення цієї роботи.
Проте цей механізм має і власні недоліки. Зокрема, обробка переривання зв'язана з набагато більшими накладними витратами чим перевірка прапора і умовний перехід в режимі чекання. В оптимізованих для обробки подій мікроконтроллерів різниця невелика або навіть може бути на користь механізму переривань: приведений в прикладі 6.1 цикл опиту займає 5 циклів процесора, а обробник переривання в PIC викликається протягом 3—4 циклів ([www.microchip.com Picmicro] стверджує, що середня затримка переривання складає 3,75 циклу). Таким чином, середній час реакції на подію в режимі опиту складає 2,5 циклу (по середньому часу опит у виграші), а максимальне -5 циклів (в даному випадку перевага на стороні переривань).
Проте в процесорів спільного призначення, які при обробці переривання вимушені зберігати декілька регістрів і здійснювати відносно складний діалог з пристроєм, що викликав переривання, затримка між установкою сигналу переривання і виконання першої команди його обробника — цей інтервал і називається затримкою переривання (interrupt latency) — складає десятки тактів.
Сучасні суперскалярні процесори при обробці переривань вимушені скидати чергу попередньої вибірки команд і, принаймні, частину кешів команд і даних, тому в .ніх накладні витрати ще більші. Затримка переривання в сучасних реалізацій архітектури х86 лише ненамного краще, ніж в 80386 хоча за швидкістю виконань послідовних програм сучасні процесори перевершують 80386 на декілька порядків. Тому молодші моделі процесорів з архітектурою х86, 8086 і навіть 8085, хоча і не знаходять вживання в персональних комп'ютерах, але продовжують випускатися для використання у вбудовуваних застосуваннях або як периферійні процесори.
Так, наприклад, "марсоход" Sojoumer використовував як процесор, що управляє, 8085 на сапфіровій підкладці (для забезпечення радіаційної стійкості).
Ця ж обставина є додатковим аргументом на користь включення в систему канальних процесорів, в даному випадку з метою звільнення центрального процесора не від опиту, а від обробки переривань. Розробники великих комп'ютерів часто реалізовували канальні процесори старших моделей на основі центральних процесорів молодших моделей тієї ж серії.

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017