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 awarią oprogramowania lub sprzętu. Przerwania sprzętowe nazywane są (po prostu) przerwaniami, podczas gdy przerwania programowe nazywane są wyjątkami. Gdy pojawi się przerwanie (programowe lub sprzętowe), sterowanie jest przekazywane do specjalnego podprogramu o nazwie ISR (Procedura obsługi przerwania), 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 dla procesora. Przerwania sprzętowe zwykle pochodzą z wielu różnych źródeł, takich jak układ czasowy, urządzenia peryferyjne (klawiatura, 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 przerwania sprzętowe prawie nigdy nie występują z powodu jakiegoś zdarzenia związanego z wykonywanym programem. Na przykład zdarzenie takie jak naciśnięcie klawisza na klawiaturze przez użytkownika lub przekroczenie limitu czasu wewnętrznego sprzętowego timera może wywołać tego rodzaju przerwanie i może poinformować procesor, że określone urządzenie wymaga uwagi. W takiej sytuacji procesor zatrzyma to, co kiedykolwiek robił (tj. Wstrzyma bieżący program),zapewnia usługę wymaganą przez urządzenie i wróci do normalnego programu. Kiedy występują przerwania sprzętowe i CPU uruchamia ISR, inne przerwania sprzętowe są wyłączane (np. W maszynach 80 × 86). Jeśli potrzebujesz innych przerwań sprzętowych, aby wystąpiły podczas działania ISR, musisz to zrobić jawnie, usuwając flagę przerwania (za pomocą instrukcji sti). W maszynach 80 × 86 wyczyszczenie flagi przerwania będzie miało wpływ tylko na przerwania sprzętowe.wyczyszczenie flagi przerwania wpłynie tylko na przerwania sprzętowe.wyczyszczenie flagi przerwania wpłynie tylko na przerwania sprzętowe.
Co to są wyjątki?
Wyjątkiem jest przerwanie programowe, 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 zainicjowane przez programistę). Zasadniczo nie ma konkretnych instrukcji związanych z wyjątkami (pułapki są generowane przy użyciu określonej instrukcji). Tak więc wyjątek występuje z powodu „wyjątkowego” stanu, który występuje podczas wykonywania programu. Na przykład dzielenie przez zero, wykonanie niedozwolonego kodu operacji lub błędu związanego z pamięcią może spowodować wyjątki. Za każdym razem, gdy pojawia się wyjątek, procesor tymczasowo zawiesza wykonywany program i uruchamia ISR. ISR będzie zawierał informacje o tym, co należy zrobić z wyjątkiem. Może rozwiązać problem, a jeśli nie jest to możliwe, może z wdziękiem przerwać działanie programu, drukując odpowiedni komunikat o błędzie. Chociaż konkretna instrukcja nie powoduje wyjątku, wyjątek zawsze będzie powodowany 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ątki są przerwaniami programowymi. Wystąpienia przerwań sprzętowych zwykle wyłączają inne przerwania sprzętowe, ale nie dotyczy to wyjątków. Jeśli chcesz zabronić przerwań sprzętowych do czasu obsłużenia wyjątku, musisz jawnie wyczyścić flagę przerwania. I zwykle flaga przerwań na komputerze wpływa na (sprzętowe), a nie na wyjątki. Oznacza to, że wyczyszczenie tej flagi nie zapobiegnie wyjątkom.