Różnica między przerwaniem a pułapką

Różnica między przerwaniem a pułapką
Różnica między przerwaniem a pułapką

Wideo: Różnica między przerwaniem a pułapką

Wideo: Różnica między przerwaniem a pułapką
Wideo: Naukowa różnica między byciem sexy, a pięknem - Joe Rogan & Bret Weinstein 2024, Lipiec
Anonim

Przerwanie kontra pułapka

W każdym komputerze, podczas normalnego wykonywania programu, mogą wystąpić zdarzenia, które mogą spowodować tymczasowe zatrzymanie procesora. Zdarzenia takie jak te nazywane są przerwaniami. Przerwy mogą być spowodowane błędami oprogramowania lub sprzętu. Przerwania sprzętowe nazywane są (po prostu) przerwaniami, podczas gdy przerwania programowe nazywane są wyjątkami lub pułapkami. Wyjątek to automatycznie wygenerowane przerwanie programowe, podczas gdy pułapka to przerwanie wywołane programowo, zainicjowane przez programistę. Po zgłoszeniu przerwania (oprogramowania lub sprzętu) sterowanie jest przekazywane do specjalnego podprogramu o nazwie ISR (Procedura obsługi przerwań), 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 w stosunku do 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 licznika sprzętowego 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. zatrzyma bieżący program), wykona usługę wymaganą przez urządzenie i wróci do normalnego programu. Gdy wystąpią przerwania sprzętowe i CPU uruchomi ISR, inne przerwania sprzętowe są wyłączone (np.g. 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 (instrukcją sti). W maszynach 80×86 wyczyszczenie flagi przerwań będzie miało wpływ tylko na przerwania sprzętowe.

Co to jest pułapka?

Pułapkę można zidentyfikować jako przekazanie kontroli, które jest inicjowane przez programistę. Termin Trap jest używany zamiennie z terminem Exception (który jest automatycznie występującym przerwaniem programowym). Ale niektórzy mogą twierdzić, że pułapka to po prostu specjalny wywołanie podprogramu. Tak więc należą do kategorii przerwań wywoływanych programowo. Na przykład w maszynach 80×86 programista może użyć instrukcji int do zainicjowania pułapki. Ponieważ pułapka jest zawsze bezwarunkowa, kontrola będzie zawsze przekazywana do podprogramu powią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 instrukcja jawna.

Jaka jest różnica między przerwaniem a pułapką?

Przerwania to przerwania sprzętowe, a pułapki to przerwania wywoływane przez oprogramowanie. Wystąpienie przerwań sprzętowych zwykle wyłącza inne przerwania sprzętowe, ale nie dotyczy to pułapek. Jeśli potrzebujesz zabronić przerwań sprzętowych, dopóki pułapka nie zostanie obsłużona, musisz jawnie wyczyścić flagę przerwania. I zwykle flaga przerwań na komputerze wpływa na przerwania (sprzętowe), a nie na pułapki. Oznacza to, że usunięcie tej flagi nie zapobiegnie pułapkom. W przeciwieństwie do pułapek, przerwania powinny zachowywać poprzedni stan procesora.

Zalecana: