Przerwanie vs pułapka
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 lub pułapkami. Wyjątek to automatycznie generowane przerwanie programowe, podczas gdy Pułapka to wywołane programowo przerwanie inicjowane przez programistę. 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 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 sti instrukcja). W maszynach 80 × 86, usunięcie flagi przerwania wpłynie tylko na przerwania sprzętowe.
Co to jest pułapka?
Pułapkę można zidentyfikować jako przekazanie kontroli, inicjowane przez programistę. Termin „pułapka” jest używany zamiennie z terminem „wyjątek” (który jest automatycznie występującym przerwaniem programowym). Ale niektórzy mogą argumentować, że pułapka jest po prostu specjalnym wywołaniem podprogramu. Dlatego należą do kategorii przerwań wywoływanych przez oprogramowanie. Na przykład w maszynach 80 × 86 programista może użyć int instrukcja inicjowania pułapki. Ponieważ pułapka jest zawsze bezwarunkowa, kontrola zawsze zostanie przeniesiona do podprogramu związanego z pułapką. Dokładna instrukcja, która wywołuje procedurę obsługi pułapki, jest łatwa do zidentyfikowania, ponieważ do określenia pułapki używana jest wyraźna instrukcja.
Jaka jest różnica między Przerwaniem a Pułapką?
Przerwania są przerwaniami sprzętowymi, podczas gdy pułapki są przerwaniami wywoływanymi programowo. Wystąpienia przerwań sprzętowych zwykle wyłączają inne przerwania sprzętowe, ale nie dotyczy to pułapek. Jeśli musisz zabronić przerwań sprzętowych, dopóki pułapka nie zostanie obsłużona, musisz jawnie usunąć flagę przerwania. I zwykle flaga przerwania na komputerze wpływa na przerwania (sprzętowe) w przeciwieństwie do pułapek. Oznacza to, że wyczyszczenie tej flagi nie zapobiegnie pułapkom. W przeciwieństwie do pułapek, przerwania powinny zachować poprzedni stan procesora.