/виводу« опитуються »але не на операції введення/виводу виконуються не дуже багато часу тим самим відбувається простий даремно процесором, коли є інша робота, яка може бути виконана за цей час. Крім того, якщо конкретний пристрій має свої дані, доступні тільки протягом короткого часу, дані можуть бути пропущені, тому що вхід не тестувався у відповідний час, що може призвести до важко вловлює помилкам і невизначеним поведінку системи.
Програмно керований введення/висновок часто використовується для простих операцій, які повинні бути виконані послідовно.
Наприклад, наступне може бути використано в пристрої для регулювання температури в приміщенні:
while (1) {// Нескінченний ціклt=get_room_temperature (); tu=get_user_temperature ();
if (t gt; tu)//температура кімнати перевищує задану
set_heat_off ();// Отключіть_heat_on ();// Включити опалення
sleep (SLEEP_TIMER);// Очікування-простої системи на опр. час
}
2. Введення/висновок керований перериванням
Введення/висновок керований перериванням зменшує вираженість двох проблем, згаданих у програмно-керованому введенні/виведенні, дозволяючи пристрою, почати процедуру обслуговування пристрою в процесорі. Це досягається за рахунок того що, пристрій вводу/виводу генерує сигнал переривання, який йде безпосередньо в апаратному забезпеченні процесора. Коли переривання на вхід процесора виявляється активним, сам процесор ініціює виклик підпрограми в десь в пам'яті процесора; Зокрема адресу, за якою процесор гілки на переривання залежить від переривань засобами, наявними в процесорі.
Найпростіший тип установки переривань, де процесор виконує підпрограму гілка в деякій певною адресою, коли вхідна переривання, виявленого процесора. Зворотна адреса (місце розташування наступної команди в програмі, яка була перервана) зберігається процесором, як частина процесу переривання.
Якщо є кілька пристроїв, які здатні переривати процесор, то з цим простою схемою переривання програма обробки переривання повинна вивчити кожен пристрій, щоб визначити, який з них викликав переривання. Крім того, так як тільки одне переривання може бути оброблено в той час, як правило, є апаратна `` пріоритетний кодер «, який дозволяє пристрою з найвищим пріоритетом, щоб перервати процесор, якщо кілька пристроїв намагаються перервати процесор одночасно. На малюнку 4.8, `` рукостискання з виходи будуть підключені до пріоритетних кодером для реалізації цього типу I/O. інші сполуки залишаються однаковими. (Деякі системи використовують «систему пріоритетів визначити, які з переривають пристроїв обслуговується первим.`` За цепочке` `по ланцюжку» пріоритет дозвіл Розглядаються: пізніше).
У більшості сучасних процесорів, переривання повернення точки зберігаються на `` стек в пам'яті, таким же чином, як адреси повернення для викликів підпрограм будуть збережені. Справді, переривання, часто можна розглядати як підпрограма, яка викликається за допомогою зовнішнього пристрою. Якщо стек використовується для збереження адреси повернення для переривання, то тоді можна дозволити одне перервати обробку переривань, іншого переривання. У сучасних комп'ютерних системах, часто кілька `` рівнів пріоритету переривань, кожен з яких може бути відключений, або `` маскувати. Існує правило, один тип введення переривання, які не можуть бути відключені (немаскируемое переривання), який має пріоритет над усіма іншими переривань. Це переривання вхід використовується для попередження процесор потенційно катастрофічних подій, таких як неминучий відмова харчування, щоб процесор закрити впорядкованим чином і зберегти якомога більше інформації, як це можливо.
Більшість сучасних комп'ютерів використовують `` вектор переривань. У вектореном перериванні, відповідальність лежить на переривати пристрої надавати адресу в основній пам'яті до обслуговуючої переривання службі для цього пристрою. Це означає, що звичайно, що сам пристрій повинні мати достатню `` інформацію «, щоб забезпечити цю адресу при запиті процесора, а також бути спочатку запрограмовані 'з цією інформацією звертатися до процесора. Хоча кілька більш складним, ніж простої системи переривань, описаної раніше, векторні переривань надають таку значну перевагу в швидкості обробки переривань і простоти реалізації (тобто окремі процедура для кожного пристрою), що цей метод майже повсюдно використовуються в сучасних комп'ютерних системах.
Деякі процесори мають ряд спеціальних входів для векторних переривань (кожна з яких діє так само, як прості переривання були описані вище). Інші вимагають, щоб переривання сам пристрій заб...