Różnica między przerwaniem a wyjątkiem

Przerwanie a wyjątek

Na każdym komputerze podczas normalnego wykonywania programu mogą wystąpić zdarzenia, które mogą spowodować tymczasowe zatrzymanie procesora. Takie zdarzenia nazywane są przerwaniami. Przerwania mogą być spowodowane usterkami oprogramowania lub sprzętu. Przerwania sprzętowe nazywane są (po prostu) Przerwaniami, a przerwania programowe nazywane są wyjątkami. Po podniesieniu przerwania (oprogramowania lub sprzętu) sterowanie jest przekazywane do specjalnego podprogramu o nazwie ISR (Interrupt Service Routine), który może obsłużyć warunki wywołane przez przerwanie.

Co to jest Przerwanie?

Termin Przerwanie jest zwykle zarezerwowany dla przerwań sprzętowych. Są to przerwy w sterowaniu programem spowodowane zewnętrznymi zdarzeniami sprzętowymi. Tutaj zewnętrzny oznacza zewnętrzny procesor. Przerwania sprzętowe zwykle pochodzą z wielu różnych źródeł, takich jak układ czasowy, urządzenia peryferyjne (klawiatury, mysz itp.), Porty I / O (szeregowe, równoległe itp.), Napędy dysków, zegar CMOS, karty rozszerzeń (karta dźwiękowa, wideo karta itp.). Oznacza to, że przerwy sprzętowe prawie nigdy nie występują z powodu pewnych zdarzeń związanych z wykonującym programem. Na przykład zdarzenie, takie jak naciśnięcie klawisza na klawiaturze przez użytkownika lub przekroczenie limitu czasu przez wewnętrzny sprzętowy licznik czasu, może wywołać tego rodzaju przerwanie i może poinformować procesor, że pewne urządzenie wymaga uwagi. W takiej sytuacji procesor zatrzyma to, co kiedykolwiek robił (tj. Wstrzyma bieżący program), zapewni usługę wymaganą przez urządzenie i powróci do normalnego programu. Kiedy występują przerwania sprzętowe, a CPU uruchamia ISR, inne przerwania sprzętowe są wyłączone (np. W maszynach 80 × 86). Jeśli potrzebujesz innych przerwań sprzętowych podczas działania ISR, musisz to zrobić jawnie, usuwając flagę przerwania (z instrukcją sti). W maszynach 80 × 86, usunięcie flagi przerwania wpłynie tylko na przerwania sprzętowe.

Co to są wyjątki?

Wyjątek stanowi przerwanie oprogramowania, które można zidentyfikować jako specjalną procedurę obsługi. Wyjątek można zidentyfikować jako automatycznie występującą pułapkę (pułapkę można zidentyfikować jako przekazanie kontroli, inicjowane przez programistę). Zasadniczo nie ma konkretnych instrukcji związanych z wyjątkami (pułapki są generowane przy użyciu konkretnej instrukcji). Tak więc występuje wyjątek z powodu „wyjątkowego” stanu, który występuje podczas wykonywania programu. Na przykład dzielenie przez zero, wykonanie niedozwolonego kodu operacyjnego lub błąd związany z pamięcią może powodować wyjątki. Za każdym razem, gdy zgłaszany jest wyjątek, CPU tymczasowo zawiesza wykonywany program i uruchamia ISR. ISR będzie zawierał informacje o tym, co zrobić z wyjątkiem. Może to rozwiązać problem lub, jeśli nie jest to możliwe, może przerwać program z wdziękiem, drukując odpowiedni komunikat o błędzie. Chociaż określona instrukcja nie powoduje wyjątku, wyjątek zawsze będzie spowodowany przez instrukcję. Na przykład błąd dzielenia przez zero może wystąpić tylko podczas wykonywania instrukcji dzielenia.

Jaka jest różnica między Przerwaniem a Wyjątkiem?

Przerwania są przerwaniami sprzętowymi, a wyjątkami są przerwania programowe. Wystąpienia przerwań sprzętowych zwykle wyłączają inne przerwań sprzętowych, ale nie jest to prawdą w przypadku wyjątków. Jeśli musisz zabronić przerwań sprzętowych, dopóki nie zostanie obsłużony wyjątek, musisz jawnie wyczyścić flagę przerwania. I zwykle flaga przerwania na komputerze wpływa na przerwania (sprzętowe) w przeciwieństwie do wyjątków. Oznacza to, że wyczyszczenie tej flagi nie zapobiegnie wyjątkom.