6. Sytuacje wyjątkowe

Inną klasą zdarzeń, która jest obsługiwana w sposób bardzo podobny do przerwań są sytuacje wyjątkowe. Jak sama nazwa wskazuje, sytuacje wyjątkowe wskazują wystąpienie pewnego zdarzenia w systemie, które musi być obsłużone. Mogą to być sytuacje krytyczne, np. błąd sprzętowy, ale również częste i normalne sytuacje podczas pracy komputera, jak np. błąd braku strony, przy stosowaniu pamięci wirtualnej. Generalnie rozróżniamy następujące typy sytuacji wyjątkowych:

  • Wykryte na etapie wykonywania instrukcji przez procesor (dzielenie przez zero, page fault, general protection …).
  • Generowane przez oprogramowanie (INTO - call to interrupt if overflow, INT 3 - breakpoint, INT n).
  • Błędy sprzętowe (ang. machine check exceptions).

Inną klasyfikację sytuacji wyjątkowych można podać ze względu na sposób ich obsługi:

  • Błędy (ang. Faults) – wznowienie działania programu następuje przez ponowienie wykonania instrukcji generującej sytuację wyjątkową.
  • Pułapki (ang. Traps) – w tym przypadku wznowienie wykonywania programu następuje od instrukcji następnej po tej wywołującej sytuację wyjątkową.
  • Porzucenia (ang. Aborts) – są nastawione na usługę poważnych błędów, w tym przypadku następuje zatrzymanie działania systemu, a na ekranie powinniśmy zobaczyć, co spowodowało błąd.