K vyvolání výjimky dochází při nestandardních operacích při běhu programu nebo i nezávisle na běhu programu (např. neznámá instrukce, výpadek stránky, ale také přerušení). Procesor tehdy skočí na rutinu, která se o obsluhu daného přerušení má postarat. Tato rutina musí před vlastní obsluhou nejprve uložit stav proceroru (na zásobník aktuálního vlákna) - při obsluze se totiž změní některé registry apod. - a před návratem do původního místa tento stav obnovit - přerušený program nesmí poznat, že k výjimce došlo. Záleží na druhu výjimky, jestli se z obsluhy vrací na instrukci, při které doško k výjimce, nebo na instrukci následující (např. instrukce BREAK vyvolá výjimku Break Point a je nutné se vracet za tuto instrukci, aby nedošlo k zacyklení; stejné chování požaduje také instrukce SYSCALL). Přerušení Mezi výjimky patří také přerušení (např. přerušení časovače či klávesnice). Ke kterému přerušení došlo, určují jednotlivé bity v masce přerušení v registru koprocesoru 0 (CP0), Cause. Důležité je upozornit na to, že současně může být signalizováno více přerušení a že je lepší volat obsluhu přerušení časovače až jako poslední, aby např. znaky z klávesnice byly posílány aktualnímu vláknu a ne až vláknu, na které se přeplánuje. Signál přerušení je smazán až po správné obsluze přerušení (u časovače to je naprogramování dalšího přerušení časovače, u klávasnice vyzvednutí znaku z adresy klávasnice). Pokud nebude správná obsluha zajištěna, bude se přerušení vyvolávat pořád dokola. Přerušení časovače K přerušení časovače dochází tehdy, pokud se hodnoty registrů CP0 Count a Compare vyrovnají. Count je inkrementován automaticky při provedení každé instrukce, Compare si nastavuje obsluha přerušení časovače. Vedlejším efektem zapsání hodnoty do Compare registru je smazání signálu přerušení časovače. Obsluha přerušení tedy "naprogramuje", kdy se má vyvolat další, dále inkrementuje hodnotu na vnitřních hodinách plánovače, a pokud nedošlo k vyvolání přerušení časovače v průběhu plánovaní (důvod viz dokumentace k plánovači), zavolá plánovač. S přerušeními souvisí makra a funkce: disable_interrupts() Makro, které zakáže přerušení. enable_interrupts() Makro, které povolí přerušení. void disable_interrupts_save() Rekurzivně zakazuje přerušení - stejně-krát musí být zavolána enable_interrupts_restore(), aby opravdu k povolení přerušení došlo. K povolení přerušení však nedojde tehdy, pokud před (rekurzivně) prvním voláním disable_interrupts_save() byla přerušení už zakázána. void enable_interrupts_restore() Rekurzivně povoluje přerušení.