Студопедия — Тема: Переривання. Дії апаратного та програмного забезпечення
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Тема: Переривання. Дії апаратного та програмного забезпечення






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

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

Через якийсь час символ відображається на екрані. Тепер може початися переривання. Нижче перераховані основні кроки (у спрощеній формі).

Дії апаратного забезпечення:

1. Контролер пристрою встановлює лінію переривання на системній шині.

2. Коли центральний процесор готовий до обробки переривання, він встановлює символ підтвердження переривання на шині.

3. Коли контролер пристрою довідається, що сигнал переривання був підтверджений, він поміщає невелике ціле число на інформаційні лінії, щоб "представитися" (тобто показати, що це за пристрій). Це число називається вектором переривань.

4. Центральний процесор видаляє вектор переривання із шини і тимчасово його зберігає.

5. Центральний процесор поміщає в стек лічильник команд і слово стану програми.

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

Дії програмного забезпечення:

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

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

3. Тепер можна зчитувати будь-яку іншу інформацію про переривання, наприклад коди стану.

4. Якщо відбувається помилка вводу-виводу, її потрібно обробити тут.

5. Глобальні перемінні ptr і count обновляються. Перша збільшується на 1, щоб показувати на наступний байт, а друга зменшується на 1, щоб указати, що залишилося вивести на 1 байт менше. Якщо count усе ще більше 0, виходить, ще не всі символи виведені на екран. Той символ, на який у даний момент указує ptr, копіюється у вихідний буферний регістр.

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

7. Відновлюються всі збережені регістри.

8. Виконання команди RETURN FROM INTERRUPT (вихід з переривання): повернення центрального процесора в той стан, у якому він знаходився до переривання. Після цього комп'ютер продовжує роботу з того місця, в якому його призупинили.

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

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

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

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

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

Оскільки самі програми обробки переривань піддаються перериванню, кращий спосіб строгого керування - зробити так, щоб усі переривання були прозорими. Розглянемо простий приклад з декількома перериваннями. Комп'ютер має три пристрої вводу-виводу: принтер, диск і лінію RS232 із пріоритетами 2,4 і 5 відповідно. Спочатку (t=0; t - час) працює користувальницька програма. Раптом при t=10 принтер робить переривання. Запускається програма обробки переривання принтера, як показано на мал. 7.5.

При t-15 лінія RS232 породжує сигнал переривання. Тому що лінія RS232 має більш високий пріоритет (5), чим принтер (2), переривання відбувається. Стан машини, при якому працює програма обробки переривання принтера, зберігається в стеці, і починається виконання програми обробки переривання RS232.

Набагато пізніше, при t-20, диск завершує свою роботу. Однак його пріоритет (4) нижче, ніж пріоритет працюючої в даний момент програми обробки переривань (5), тому центральний процесор не підтверджує прийом сигналу переривання, і диск змушений простоювати. При t-25 закінчується програма RS232, і машина повертається в той стан, у якому вона знаходилася до переривання RS232, тобто в той стан, коли працювала програма обробки переривання принтера з пріоритетом 2. Як тільки центральний процесор переключається на пріоритет 2, ще до того як буде виконана перша команда, диск із пріоритетом 4 робить переривання і запускається програма обробки переривань диска. Після її завершення знову продовжується програма обробки переривань принтера. Нарешті, при t-40 усі програми обробки переривань завершуються і виконання користувальницької програми починається з того місця, на якому вона перервалася.

З часів процесора 8088 усі процесори Intel мають два рівні (пріоритету) переривань: масковані і немасковані переривання. Немасковані переривання звичайно використовуються тільки для повідомлення про дуже серйозні ситуації, наприклад про помилки парності в пам'яті. Усі пристрої вводу-виводу використовують одні масковані переривання.

Коли пристрій вводу-виводу викликає переривання, центральний процесор використовує вектор переривання при індексуванні таблиці з 256 елементів, щоб знайти адресу програми обробки переривань. Елементи таблиці являють собою 8-байтные дескриптори сегмента. Таблиця може починатися в будь-якому місті пам'яті. Глобальний регістр указує на її початок.

При наявності тільки одного рівня переривань центральний процесор не може зробити так, щоб пристрій з більш високим пріоритетом переривав роботу програми обробки переривань з більш низьким пріоритетом і щоб пристрій з більш низьким пріоритетом не зміг переривати виконання програми обробки переривань з більш високим пріоритетом. Для рішення цієї проблеми центральні процесори Intel звичайно використовують зовнішній контролер переривання (наприклад, 8259А). При першому перериванні (наприклад, із пріоритетом n) робота процесора припиняється. Якщо після цього відбувається ще одне переривання з більш високим пріоритетом, контролер переривання викликає переривання в друг раз. Якщо друге переривання має більш низький пріоритет, воно не реалізується до закінчення першого. Щоб ця система працювала, контролер переривання повинний яким-небудь чином дізнаватися про завершення поточної програми обробки переривань. Тому коли поточне переривання цілком оброблене, центральний процесор повинний посилати спеціальну команду контролеру переривань.

 

 

Контрольні питання:

1. Поняття переривання.

2. Загальні кроки обробки переривань (дії апаратного та програмного забезпечення).

3. Поняття прозорості.

4. Обробка переривань при наявності декількох ПВВ.

 







Дата добавления: 2015-04-16; просмотров: 957. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия