Jaka jest różnica między Trap a Interrupt?

Jaka jest różnica między Trap a Interrupt?

Jeśli terminologia jest inna dla różnych systemów, to co oznaczają one na x86?

Author: Peter Cordes, 2010-06-30

9 answers

A pułapka jest wyjątkiem w procesie użytkownika. Jest to spowodowane podziałem przez zero lub nieprawidłowy dostęp do pamięci. Jest to również zwykły sposób wywoływania procedury jądra (wywołanie systemowe ), ponieważ te działają z wyższym priorytetem niż kod użytkownika. Obsługa jest synchroniczna (więc kod użytkownika jest zawieszony i kontynuowany później). W pewnym sensie są "aktywne" - przez większość czasu kod oczekuje, że pułapka się wydarzy i opiera się na tym fakcie.

An interrupt jest czymś generowanym przez sprzęt (urządzenia takie jak dysk twardy, karta graficzna, porty I/O itp.). Są one asynchroniczne (tzn. nie występują w przewidywalnych miejscach w kodzie użytkownika) lub" pasywne", ponieważ obsługa przerwań musi czekać, aż w końcu do nich dojdzie.

Możesz również zobaczyć pułapkę jako rodzaj wewnętrznego przerwania procesora, ponieważ obsługa dla pułapki wygląda jak obsługa przerwań (rejestry i wskaźniki stosu są zapisywane, jest przełącznik kontekstu, wykonanie może zostać wznowione w niektórych przypadkach, gdy przerwał).

 155
Author: Aaron Digulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-27 09:52:59

Pułapki i przerwania są ze sobą ściśle powiązane. Pułapki są rodzajem wyjątku , a wyjątki są podobne do przerwań.

Intel x86 definiuje dwie nakładające się na siebie kategorie, vectored events (interrupts vs exceptions ) i exception Class (faults vs traps vs aborts).

Wszystkie cytaty w tym poście pochodzą z kwietnia 2016 Wersja Intel Software Developer Manual. Na (definitywna i złożona) perspektywa x86, polecam przeczytać rozdział SDM o obsłudze przerwań i WYJĄTKÓW.

Vectored Events

Vectored Events (interrupts i wyjątki ) powodują, że procesor przeskakuje do obsługi przerwań po zapisaniu znacznej części stanu procesora (na tyle, że wykonanie może być kontynuowane później).

Wyjątki i przerwania mają identyfikator, zwany wektorem, który określa, który program obsługi przerwań procesor skacze do. Procedury obsługi przerwań są opisane w tabeli deskryptorów przerwań.

Przerywa

Przerwania występują w losowych momentach podczas wykonywania programu, w odpowiedzi na sygnały ze sprzętu. Zastosowanie sprzętu systemowego przerwania do obsługi zdarzeń zewnętrznych procesora, takich jak żądania serwisowania urządzeń peryferyjnych. Oprogramowanie może również generować przerwania poprzez wykonanie int n Instrukcja.

Wyjątki

Wyjątki występują, gdy procesor wykryje błąd podczas wykonywanie instrukcji, np. dzielenie przez zero. Procesor wykrywa różne warunki błędów, w tym naruszenia ochrony, usterki stron i wewnętrzne usterki maszyn.

Klasyfikacja WYJĄTKÓW

Wyjątki {[2] } klasyfikowane są jako błędy, pułapki lub przerywa w zależności w sposobie ich zgłaszania i czy instrukcja które spowodowały, że wyjątek może być restartowany bez utraty programu lub ciągłość zadań.

Summary: pułapki zwiększają wskaźnik instrukcji, błędy nie robią, a przerywa 'eksplodują'.

Pułapka

A pułapka {[2] } jest wyjątkiem zgłaszanym bezpośrednio po wykonanie instrukcji zalewkowania. Pułapki umożliwiają wykonanie program lub zadanie do kontynuowania bez utraty ciągłości programu. Adres zwrotny dla obsługi pułapki wskazuje na instrukcję do być wykonywane po instrukcji zalewkowania.

Błąd

A błąd jest wyjątkiem, który można ogólnie poprawić i że, po poprawieniu pozwala na ponowne uruchomienie programu bez utraty ciągłość. Po zgłoszeniu usterki procesor przywraca stan Maszyny do stanu sprzed rozpoczęcia wykonywania faulting Instrukcja. Adres zwrotny (zapisana zawartość CS i Rejestry EIP) dla punktów obsługi błędów do błędu instrukcji, a nie instrukcji po wystąpieniu błędu Instrukcja.

Przykład: Błąd strony jest często możliwy do odzyskania. Część przestrzeni adresowej aplikacji mogła zostać zamieniona na dysk z pamięci ram. Aplikacja spowoduje błąd strony, gdy spróbuje uzyskać dostęp do pamięci, która została zamieniona. Jądro może pobierać tę pamięć z dysku do pamięć ram i sterowanie ręczne z powrotem do aplikacji. Aplikacja będzie kontynuowana tam, gdzie została przerwana (w instrukcji powodującej błąd, która uzyskiwała dostęp do wymienionej pamięci), ale tym razem dostęp do pamięci powinien się udać bez powodowania błędu.

Przerwij

An abort jest wyjątkiem, który nie zawsze zgłasza dokładne lokalizacja instrukcji powodującej wyjątek i nie pozwala na ponowne uruchomienie programu lub zadania, które spowodowało wyjątek. Przerwania są używane do zgłaszaj poważne błędy, takie jak błędy sprzętowe i niespójne lub nielegalne wartości w tabelach systemowych.

Edge Cases

Przerwania wywoływane przez oprogramowanie (wyzwalane przez instrukcję INT) zachowują się w sposób podobny do pułapki. Instrukcja kończy się zanim procesor zapisze swój stan i przeskoczy do obsługi przerwań.

 59
Author: ruthafjord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-01 03:42:37

Ogólnie rzecz biorąc, terminy takie jak wyjątki, błędy, przerwania, pułapki i przerwania oznaczają to samo i nazywane są "przerwaniami".

Przejście do różnicy między pułapką a przerwaniem:

Trap: to programator zainicjowany i oczekiwany transfer sterowania do specjalnej procedury obsługi. (Dla ex: 80x86 int Instrukcja jest dobrym przykładem)

Gdzie jako

Interrupt(Hardware): jest sterowaniem programem przerwanie na podstawie zewnętrznego zdarzenia sprzętowego zewnętrznego procesora (np. naciśnięcie klawisza na klawiaturze lub przerwa czasowa na czasomierzu chip)

 8
Author: Cheshar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-18 20:36:50

A trap jest specjalnym rodzajem przerwania, które jest powszechnie określane jako przerwanie programowe. Przerwanie jest bardziej ogólnym terminem obejmującym zarówno przerwy sprzętowe (przerwy od urządzeń sprzętowych), jak i przerwy programowe (przerwy od oprogramowania, takie jak pułapki {2]}).

 5
Author: Paul R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 13:17:40

Pułapka jest wywoływana przez programy podobne do kodu i używana np. do wywoływania procedur systemu operacyjnego (tj. normalnie synchronicznych). Przerwanie jest wywoływane przez zdarzenia (wiele razy sprzętowe, takie jak karta sieciowa odbierająca dane lub timer procesora) i - jak sama nazwa wskazuje - przerywa normalny przepływ sterowania, ponieważ procesor musi przełączyć się na procedurę sterownika, aby obsłużyć Zdarzenie.

 3
Author: Frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 12:28:57

Przerwanie jest sprzętowo generowaną zmianą przepływu w systemie. An interrupt handler jest wezwany, aby zająć się przyczyną przerwania; kontrola jest następnie zwracana do przerwany kontekst i instrukcja. Pułapka jest przerwaniem generowanym przez oprogramowanie. Przerwanie może być używany do sygnalizowania zakończenia wejścia / wyjścia w celu wyeliminowania potrzeby przeprowadzania ankiet urządzeń. Pułapka może być używany do wywoływania procedur systemu operacyjnego lub do wychwytywania błędów arytmetycznych.

 2
Author: dineshreddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-13 16:40:43

Myślę, że pułapki są spowodowane wykonaniem bieżącej instrukcji i dlatego są nazywane zdarzeniami synchronicznymi. gdzie jako przerwania wywołane są przez uruchamianą w procesorze niezależną instrukcję, która jest związana ze zdarzeniami zewnętrznymi i stąd jest znana jako asynchroniczne.

 2
Author: chetan pawar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-28 00:28:49

Przerwania są przerwaniami sprzętowymi, podczas gdy pułapki są przerwaniami wywoływanymi przez oprogramowanie. Wystąpienia przerwań sprzętowych zazwyczaj wyłączają inne przerwania sprzętowe, ale nie jest to prawdą w przypadku pułapek. Jeśli musisz zablokować przerwania sprzętowe do czasu obsługi pułapki, musisz wyraźnie wyczyścić flagę przerwania. Zazwyczaj flaga przerwania na komputerze wpływa na przerwania (sprzętowe) w przeciwieństwie do pułapek. Oznacza to, że usunięcie tej flagi nie zapobiegnie pułapkom. W przeciwieństwie do pułapek, przerywa powinien zachować poprzedni stan procesora.

 2
Author: Anamik Sarvaiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-17 16:09:25

Pułapka jest przerwaniem programowym.Jeśli napiszesz program, w którym zadeklarujesz zmienną o wartości podzielonej przez zero, to będzie ona traktowana jako pułapka.Za każdym razem, gdy uruchomisz ten program, spowoduje to ten sam błąd w tym samym czasie.Wywołanie systemowe jest specjalną wersją trap, w której program prosi system operacyjny o wymaganą usługę. W przypadku przerwania (ogólne słowo o przerwaniach sprzętowych), jak Błąd wejścia / wyjścia,procesor jest przerywany w losowym czasie i z kursu nie jest to wina naszego programmers.It jest sprzęt, który je przywołuje.

 1
Author: Sanketssj5,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-18 18:11:03