загрузка...
загрузка...
На головну

Організація переривання програм

  1.  A) Структури пакетів прикладних програм
  2.  HTML не є мовою програмування, він тільки управляє розташуванням інформації в вікні браузера.
  3.  I. ПРОГРАМА КУРСУ
  4.  I. РОБОЧА ПРОГРАМА
  5.  II. ПРОГРАМА КУРСУ
  6.  II. Вимоги до результатів освоєння основної освітньої програми основної загальної освіти
  7.  III. Організація діяльності ПМПК

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

Сигнали переривання. Причини, що призводять до генерування сигналів переривання, прийнято поділяти залежно від джерел переривання на наступні групи.

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

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

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

4. Переривання при зверненні до супервізору. Для виконання дій, що виходять за рамки можливостей непривілейованих операцій, використовуються програми супервізора. Звернення до них ініціюється командою ЗВЕРНЕННЯ ДО супервізори, при виконанні якої процесор перемикається в стан супервизор і управління передається супервізору. Дана команда перериває роботу процесора - припиняє виконання прикладної програми і ініціює роботу супервізора.

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

Кожна причина (сигнал) переривання ідентифікується номером 1, 2, ..., званим кодом причини переривання. Код причини переривання формується процесором в момент надходження сигналу, що викликає переривання.

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

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

Для управління переривань використовується маска переривань, Що представляє собою двійкове слово M = m1 m2 ... mk з числом розрядів, що дорівнює кількості маскуються причин переривання. Якщо розряд маски mk = 0, то переривання через k заборонено (замасковано), якщо розряд маски mk = 1, то переривання через k дозволено (НЕ замасковано). Маска переривань зберігається в процесорі, куди вона завантажується командою Встановити маску А, де А - Адреса. За цією командою слово з адресою А завантажується в якості маски в процесор і визначає ставлення процесора до сигналів переривання. Якщо все розряди маски дорівнюють нулю, процесор не реагує ні на одну причину переривання.

У найпростіших комп'ютерах використовується наступний спосіб маскування переривань. У систему команд комп'ютера вводяться дві системні команди ЗАБОРОНИТИ ПЕРЕРИВАННЯ і ВИРІШИТИ ПЕРЕРИВАННЯ, виконання яких призводить до заборони і дозволу переривань одночасно з усіх причин.

Команди, що маскують переривання, відносяться до групи привілейованих команд.

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

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

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

Організація переривань на основі рівнів.Переривання організовується за схемою, представленої на рис. 3.15. Для зберігання інформації про перерваної програмі використовується область основний пам'яті, що складається з Q осередків з адресами 0, 1, ... Q-1. Для зберігання інформації про одну програму використовується q осередків, сукупність яких називається рівнем переривання. В осередку рівня може записана вся інформація, що характеризує стан процесора (а тим самим і програми) на момент переривання: адреса команди АК, Перед виконанням якої відбулося переривання; маска М переривань; код причини переривання К; стан підсумкового регістра R і т. д. Число осередків q в рівні визначається кількістю такої інформації. Для кожної з n причин прериванія0, 1, ..., n-1 Виділяється свій рівень з відповідним номером.

 Рівень 0 займатимуть осередки з адресами 0, ..., q-1, Рівень 1 - осередки q, ..., 2q-1 І т. Д. Рівням 0, ..., n-1 Відповідають програми, збережені в основний пам'яті. Коли програма завантажується в пам'ять, вона приписується деякому рівні J і в осередку рівня завантажується вся інформація про програму: адреса програми АК; маска М переривань, що характеризує відношення програми до різних причин переривання, і. т. д. Якщо процесор виконує програму, приписаних рівню L, То номер рівня L зберігається в процесорі.

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

1. Інформація про стан процесора записується в рівень L, До якого належить поточна програма. При цьому значення АК, M, K, R і т. д., що характеризують стан процесора, записуються в комірки Lq, Lq + 1, ..., Lq + (q - 1) рівня L.

2. З рівня J, Відповідного причину переривання, інформація завантажується в процесор. При цьому значення, що зберігаються в осередках Jq, Jq + 1, ..., Jq + (q - 1) рівня J, присвоюються соответственноадресу команди АК, масці М і т.д.

3. Змінюється номер рівня L: =J, Що визначає програму, і починається виконання команди з адресою АК, рівним пусковому адресою програми J. Тим самим ініціюється програма-наступник, яка обслуговує переривання через J.

Якщо в процесі виконання програми з'явиться черговий сигнал переривання, то стан процесора буде записано в рівень J і з відповідного рівня в процесор завантажена інформація про нову програму-наступника.

Програми, які обслуговують переривання, є програмами супервізора. Вони ініціюються відповідними сигналами переривання. Прикладні програми також приписуються рівням, зазвичай останнім. Ці програми можуть бути перервані і інформація про них буде збережена в осередках відповідного рівня. Прикладні програми ініціюються супервизором, для чого використовується команда ПЕРЕХІД ДО РІВНЯ J, десьJ номер рівня. Кількість рівнів залежить від числа причин переривання і максимального коефіцієнта мультипрограмування, що визначає граничну кількість паралельно оброблюваних прикладних програм.

Організація переривань на основі слів станів програм. Інформація про стан процесора в момент переривання може розглядатися як одне слово - слово стану програми (ССП), окремі поля якого використовуються для представлення адреси команди, маски переривань і т. Д. ССП може мати наступну структуру:


 поле М містить маску захисту від переривань. поле КС складається з бітів, що визначають стану процесора: завдання - супервізор, рахунок - очікування і т. д. У поле К розміщується код причини переривання, в поле ПР - Ознака результату, а в поле АК - Адреса команди і т. Д. Таким чином, ССП аналогічно рівню переривання, але на відміну від останнього містить мінімальну кількість інформації про переривається програмі.

З використанням ССП переривання обробляються за схемою рис. 3.16. Для кожної причини переривання призначається окреме ССП: ССП1 - Для зовнішніх переривань, ССП2 - Для переривань при зверненні до супервізору, ССП3 - Для програмних переривань, ССП4 - Для переривань від схем контролю, ССП5 - Для переривань від введення-виведення. Інформація про перерваних програмах представляється в старих ССП, а інформація про програми-наступників - в новихССП. Для зберігання кожного ССП в основний пам'яті виділяється фіксована область довжиною, наприклад, 8 байт. старі ССП1, ..., ССП5 зберігаються в пам'яті за адресами ?1, ..., ?5 і нові ССП за адресами ?1, ..., ?5. Сигнал переривання ?К, Що надходить в процесор, ініціює операцію переривання, яка виконується в такий спосіб. Спочатку запам'ятовується інформація про переривається програмі. Для цього з слів М, КС, ПР, АК і т. д. Формується поточне ССП, що має структуру (3. 1). Поточне ССП записується в пам'ять на місце ССПk, Відповідного причину переривання. Так, якщо сигнал ?Кє перериванням від введення-виведення, то поточний ССП записується на місце старого ССП5, Т. Е. За адресою ?5. Потім в процесор завантажується ССП, що містить інформацію про програму-наступника. Це виконується шляхом передачі в процесор нового ССПК, Номер якого відповідає причину переривання. В результаті передачі в процесорі встановлюється маска М, стан КС, Ознака результату ПР і пусковий адреса АК, Відповідний програмі-наступниці. Після виконання цих дій процесор починає виконувати команду з адресою АК, Т. Е. Програму-наступник в режимі, визначеному новим ССП.

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

На основі інформації, що міститься в старих ССП, супервізор встановлює причину переривання і управляє порядком обробки завдань. Супервизор звільняє від інформації область старих ССП, шляхом передачі інформації з осередків ?1, ..., ?5 в виділену для цих цілей область основний пам'яті, що належить супервізору. Супервизор готує перервану програму до подальшої обробки передачею відповідного ССП в область нових ССП. Черговий сигнал переривання викличе завантаження цього ССП в процесор, і виконання програми буде продовжено. Супервизор може ініціювати програму шляхом завантаження ССП в процесор за допомогою команди ЗАГРУЗИТЬ ССП А, де А - адреса комірки основної пам'яті, починаючи з якої розміщується ССП. Дана команда є привілейованою.

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

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




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

загрузка...
© um.co.ua - учбові матеріали та реферати