Przerwanie i wyjątek to dwa różne pojęcia, ale są podobne w tym sensie, że oba powodują, że procesor wstrzymuje normalny przepływ wykonywania instrukcji w celu wykonania innego programu w przestrzeni jądra, aby je obsłużyć. Kluczowa różnica polega na tym, jak radzą sobie z nieoczekiwanymi zdarzeniami, które występują gdzieś w systemie, procesorze lub w samym programie.

Przerwanie

Interrupt to sygnał wysyłany do procesora z urządzeń zewnętrznych dołączonych do komputera lub programu z wnętrza systemu, który wymaga od OS-u interwencji w trwający proces. Przerwy, jak sama nazwa wskazuje, są nagłe zdarzenia, które umieścić normalny przepływ wykonywania instrukcji do zatrzymania. Skłania to system operacyjny do podjęcia natychmiastowych działań, co należy zrobić dalej. Te nieoczekiwane zdarzenia są zwykle związane z urządzeniem I/O, które w większości przypadków zajmuje się światem zewnętrznym. Na przykład, gdy naciskasz klawisz na klawiaturze lub poruszasz myszką, wyzwala to przerwania sprzętowe, które powodują, że procesor odczytuje naciśnięcie klawisza lub ruch myszy. Tak więc, gdy pojawia się przerwanie, procesor uruchamia specjalną „procedurę obsługi przerwania” lub „Interrupt Handler”, aby zająć się zdarzeniem, które spowodowało je w pierwszej kolejności. Kontrola jest przekazywana do systemu operacyjnego zaraz po wystąpieniu przerwania, co skłania go do podjęcia natychmiastowego działania. Przerwania są traktowane priorytetowo, co oznacza, że przerwania o wysokim priorytecie wymagają natychmiastowej uwagi i muszą być obsługiwane w pierwszej kolejności.

Wyjątek





Termin wyjątek jest skrótem od exceptional event i odnosi się do nieoczekiwanych zdarzeń, które istnieją gdzieś w systemie, procesorze lub w programie, który wymaga uwagi CPU. Wyjątki, podobnie jak przerwania, zakłócają normalny przepływ instrukcji, ale występują podczas wykonywania programu, które są wyjątkowe i z którymi nie można sobie poradzić w ramach samego programu. Na przykład, jeśli polecisz procesorowi podzielić liczbę przez zero, to poda on wyjątek divide-by-zero, co spowoduje, że komputer wstrzyma obliczenia lub wyświetli komunikat o błędzie. W momencie wystąpienia wyjątku procesor przerywa trwający proces i natychmiast reaguje na wyjątek, wywołując określoną funkcję obsługi wyjątku, w zależności od rodzaju wykonania. Wyjątki można ogólnie sklasyfikować jako wyjątki wykryte przez procesor i wyjątki zaprogramowane. Pierwsze z nich występują, gdy procesor wykryje jakąkolwiek anomalię podczas wykonywania instrukcji, natomiast drugie są generowane na żądanie programisty.

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

Definicja

– Przerwania, jak sama nazwa wskazuje, są nieoczekiwanymi zdarzeniami, które powodują zatrzymanie normalnego przepływu wykonywania instrukcji, zmieniając sekwencję instrukcji wykonywanych przez procesor. Kontrola jest przekazywana do systemu operacyjnego, gdy tylko pojawi się przerwanie, skłaniając go do podjęcia natychmiastowego działania. Wyjątki natomiast to zdarzenia wyjątkowe, które zakłócają normalny przepływ instrukcji, ale występują podczas wykonywania programu, które są wyjątkowe i nie mogą być obsłużone w ramach samego programu. Informacje o wyjątku, w tym jego źródło i typ, są przechowywane w obiekcie zwanym obiektem exceptional.

Źródło



– Wciśnięcie klawisza na klawiaturze lub poruszenie myszką powoduje wyzwolenie przerwań sprzętowych, które skłaniają procesor do odczytania naciśnięcia klawisza lub ruchu myszki. Przerwania programowe mogą być wyzwalane przez błędy wykonania programu i często są nazywane wyjątkami. Wyjątki są generowane gdzieś w systemie, procesorze lub wewnątrz programu, który wymaga uwagi CPU. Na przykład, jeśli rozkażesz procesorowi podzielić liczbę przez zero, poda on wyjątek divide-by-zero, powodując, że komputer wstrzyma obliczenia lub wyświetli komunikat o błędzie.



Typ

– Przerwania można ogólnie sklasyfikować jako przerwania synchroniczne i asynchroniczne. Przerwania synchroniczne są wywoływane przy każdym wykonaniu instrukcji przez procesor i nazywane są synchronicznymi, ponieważ procesor wydaje je dopiero po zakończeniu wykonywania instrukcji. Przerwania asynchroniczne występują, gdy zewnętrzna anomalia przerywa pracę procesora. Wyjątki można ogólnie sklasyfikować jako wyjątki wykryte przez procesor i wyjątki zaprogramowane. Pierwsze z nich występują, gdy procesor wykryje jakąkolwiek anomalię podczas wykonywania instrukcji, natomiast drugie generowane są na żądanie programisty.

Obsługa strony

– Przerwanie jest klasą wyjątku, a wyjątek dzieli się głównie na cztery klasy: interrupt, fault, trap i abort. Zarówno przerwania, jak i wyjątki powodują nagłe zatrzymanie bieżącego przepływu wykonywania instrukcji. Przerwania są traktowane priorytetowo, co oznacza, że przerwania o wysokim priorytecie wymagają natychmiastowej uwagi i są obsługiwane w pierwszej kolejności. Gdy wykryte zostanie przerwanie lub wyjątek, procesor wykonuje obsługę przerwania lub wyjątku, zawieszając jednocześnie trwający proces. Procesor wznawia kontrolę nad przerwanym procesem, gdy tylko wykonanie handler’a zostanie zakończone.

Podsumowanie



Zarówno przerwania jak i wyjątki są nieoczekiwanymi zdarzeniami występującymi gdzieś w systemie, procesorze lub wewnątrz programu, które wymagają natychmiastowej uwagi CPU. Oba gwałtownie doprowadzają do zatrzymania dotychczasowego przepływu wykonywania instrukcji. Po wykryciu przerwania lub wyjątku procesor wykonuje obsługę przerwania lub wyjątku, zawieszając jednocześnie trwający proces. Procesor wznawia kontrolę nad przerwanym procesem, gdy tylko wykonanie handler’a zostanie zakończone. Jeśli istnieje wiele przerwań, przerwanie o najwyższym priorytecie powinno być obsługiwane jako pierwsze. Jedną z kluczowych różnic pomiędzy tymi dwoma stanami jest to, że przerwania są wywoływane przez zdarzenia zewnętrzne, natomiast wyjątki są wywoływane z wnętrza procesora.