logo

Різниця між ISR і викликом функції

У цій статті ви дізнаєтеся про різницю між ISR і виклик функції , але перш ніж обговорювати відмінності, ви повинні коротко знати про ISR і виклик функції.

Що таке ISR?

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

Хоча ISR може переміщувати дані з регістра ЦП або апаратного порту в буфер пам’яті, як правило, він покладається на виділений потік переривань (або завдання), який називається потоком обслуговування переривань (IST), щоб виконати більшу частину необхідної обробки. Якщо потрібна додаткова обробка, ISR повертає ядру значення логічного переривання. Потім він відображає номер фізичного переривання на значення логічного переривання.

Механізм обробки переривань

Нижче наведено механізм обробки переривань на наступних етапах, наприклад:

  • Переривання - це умова, яка змушує ЦП призупинити поточну програму та виконати ISR. ISR — це спеціально написана програма для обслуговування стану, який викликав переривання.
  • Після того, як переривання обслуговується, ЦП повертається до головної програми точно за наступною інструкцією, з якої він залишився.
  • Під час передачі даних, керованої перериваннями, щоразу, коли пристрій вводу/виводу готовий до передачі даних, він перериває ЦП. У ISR ЦП виконуватиме передачу даних.
  • Цей метод кращий, ніж опитування, тому що ЦП не витрачає час на перевірку стану пристрою вводу/виводу. Клавіатура є хорошим прикладом доступу до вводу/виводу, керованого перериваннями.
  • Замість того, щоб перевіряти ЦП, клавіатура повинна переривати ЦП під час натискання клавіші. Таким чином, час не витрачатиметься на багаторазову перевірку клавіатури, коли користувач взагалі не друкує.
  • Пристрій введення/виведення запитує переривання, надсилаючи $overline{INTR}$ сигнал до ЦП.
  • Щоразу, коли ЦП отримує $overline{INTR}$ сигнал, він завершує виконання поточної інструкції, а потім виконує ISR. Коли ЦП готовий, він надсилає сигнал підтвердження через WHILE лінія.
  • ISR виконується, і ЦП повертається до основної програми.
  • Пристрої введення/виведення вимикаються $overline{INTR}$ сигнал після виконання.
Різниця між ISR і викликом функції

Наприклад: У наведеному нижче прикладі передача вводу-виводу за допомогою вводу-виводу, керованого перериваннями.

  • Якщо пристрій вводу/виводу, який хоче виконати передачу даних із процесором, повинен перервати процесор.
  • Переривання - це умова, яка змушує процесор виконувати процедуру обслуговування переривань.
  • У ISR процесор виконуватиме передачу даних із пристроєм введення/виведення.

У цьому прикладі перервіть запит, натиснувши клавішу клавіатури,

  • Замість того, щоб процесор перевіряв, чи натиснуто клавішу, клавіатура перериває процесор під час натискання клавіші.
  • У ISR клавіатури, яка є частиною програмного забезпечення драйвера клавіатури, процесор зчитує дані з клавіатури.
Різниця між ISR і викликом функції

Переваги ISR

Нижче наведено такі переваги ISR, як-от:

  • Асинхронні події ISR можуть виникати в будь-який час під час виконання програми.
  • ISR зберігає ПК, прапори та реєструє в стеку, вимикає всі переривання та завантажує адресу ISR.
  • ISR не може мати аргументів, які можна йому передати.
  • ISR не може повернути значення.
  • ISR дозволяє переривання.
  • Як правило, ISR невеликий, оскільки він займає час іншого процесу.
  • Деякі ISR мають власний стек.

Що таке виклик функції?

Виклик функції також називається викликом підпрограми. Підпрограма — це набір інструкцій, які програма потребує постійно. Це частина більшої програми, яка відповідає за виконання конкретного завдання. Більша програма може виконувати велике робоче навантаження, а підпрограма може виконувати просто просте завдання, яке також не залежить від залишкового програмного коду.

Функція закодована таким чином, що її можна викликати кілька разів і з різних місць (навіть з інших функцій). Коли функція викликається, процесор може перейти туди, де знаходиться код функції, і виконати інструкції функції одну за одною. Після виконання функцій процесор повернеться туди, де зупинився, і продовжить виконання, починаючи з наступної інструкції.

Функції є чудовим інструментом для повторного використання коду. Багато сучасних мов програмування підтримують функції. Набір функцій називається a бібліотека . Бібліотеки часто використовуються як засоби обміну та торгівлі програмним забезпеченням. У деяких випадках вся програма може бути послідовністю підпрограм.

У випадку процесора 8086 підпрограма викликається a ДЗВОНІТЬ інструкція, а контроль повертається a ПРАВИЛЬНО інструкція. Це зменшує розмір програми.

рядок java до int

Різниця між ISR і викликом функції

Функція має бути викликана явно, і вона є частиною того самого контексту та потоку виконання, що й її виклик. Апаратний ISR не викликається явно, а викликається якоюсь зовнішньою подією. Контекст поточного потоку автоматично зберігається, коли викликається переривання перед перемиканням контексту на ISR.

Натомість відбувається зворотне перемикання контексту, відновлюючи стан процесора до переривання, щоб виконання продовжилося з точки переривання. Нижче наведено ще деякі відмінності між ISR і викликом функції.

ISR Виклик функції
Переривання зазвичай ініціюється внутрішнім або зовнішнім сигнальним мікропроцесором, а не виконанням інструкцій. ISR виконується після збереження поточного стану програми в стеку.
ISR виконує різні завдання в залежності від перерваного пристрою або інструкцій, написаних програмістом.
Виклик функції викликається виконанням інструкцій, які виконують певні завдання та зменшують розмір програми.
Апаратне забезпечення визначає адресу ISR.
Адреса ISR записується в таблиці векторів переривань, і адреса ISR для кожного переривання є фіксованою.
Адреса підпрограми записується всередині інструкції, яка записана всередині основного коду програми.
ISR використовується для всіх завдань загального призначення. Виклики функцій здійснюються для виконання програмно-специфічних завдань.
Коли під час виконання поточної програми виникає переривання, отже, після виконання поточної інструкції процесор виконує ISR. Після виконання ISR процесор повинен відновити програму так само, як і до переривання.
Для цього зберігається вміст ПК, регістри µP і деякі умови стану. Сукупність усіх станів бітів стану в мікропроцесорі називається PSW (слово стану програми).
  • Під час циклу переривання вміст ПК і PSW надсилається в стек. Адреса розгалуження для конкретного переривання потім передається на ПК, і новий PSW завантажується в регістр стану.
  • Остання інструкція в ISR є поверненням із перерваної інструкції. Коли ця інструкція виконується, старий PSW і адреса повернення витягуються зі стеку.
Тут лише ПК зберігається в стеку, щоб отримати адресу наступної інструкції в головній програмі.
Підпрограма повинна мати доступ до даних із викликаної підпрограми та повертати результати до цієї підпрограми. Таким чином, параметри підпрограми та зв’язування даних виконуються.
Це можна зробити через
  • Регістр змінного струму можна використовувати для одного вхідного параметра та одного вихідного параметра. У комп’ютерах із кількома процесорними регістрами таким чином можна передати більше параметрів.
  • Інший спосіб передачі даних у підпрограму — через пам'ять.