logo

Różnica między ISR a wywołaniem funkcji

W tym artykule dowiesz się jaka jest różnica pomiędzy ISR I wywołanie funkcji , ale przed omówieniem różnic musisz w skrócie dowiedzieć się o ISR i wywołaniu funkcji.

Co to jest ISR?

Procedura obsługi przerwania (ISR) to procedura programowa, którą sprzęt wywołuje w odpowiedzi na przerwanie. ISR sprawdza przerwanie, określa, jak sobie z nim poradzić, wykonuje je i zwraca wartość przerwania logicznego. Jeśli nie jest wymagana żadna dalsza obsługa, ISR powiadamia jądro o zwracanej wartości. ISR musi działać bardzo szybko, aby uniknąć spowolnienia działania urządzenia i działania wszystkich ISR o niższym priorytecie.

Chociaż ISR może przenosić dane z rejestru procesora lub portu sprzętowego do bufora pamięci, generalnie opiera się na dedykowanym wątku przerwań (lub zadaniu), zwanym wątkiem obsługi przerwań (IST), aby wykonać większość wymaganego przetwarzania. Jeśli wymagane jest dodatkowe przetwarzanie, ISR zwraca do jądra wartość przerwania logicznego. Następnie odwzorowuje numer przerwania fizycznego na wartość przerwania logicznego.

Mechanizm obsługi przerwań

Poniżej przedstawiono mechanizm obsługi przerwań w następujących krokach, takich jak:

  • Przerwanie to stan, który powoduje, że procesor zawiesza bieżący program i wykonuje ISR. ISR to specjalnie napisany program obsługujący warunek, który spowodował przerwanie.
  • Po obsłużeniu przerwania procesor powraca do programu głównego, dokładnie od następnej instrukcji, w której ją opuścił.
  • W przypadku transferu danych sterowanego przerwaniami, ilekroć urządzenie we/wy będzie gotowe do przesyłania danych, spowoduje to przerwanie pracy procesora. W ISR procesor będzie wykonywał transfer danych.
  • Ta metoda jest lepsza niż odpytywanie, ponieważ procesor nie musi tracić czasu na sprawdzanie stanu urządzenia we/wy. Klawiatura jest dobrym przykładem dostępu do wejść/wyjść sterowanego przerwaniami.
  • Zamiast sprawdzać procesor, klawiatura powinna przerywać działanie procesora po naciśnięciu klawisza. Dzięki temu czas nie będzie marnowany na wielokrotne sprawdzanie klawiatury, gdy użytkownik w ogóle nie pisze.
  • Urządzenie we/wy żąda przerwania, wysyłając komunikat $overline{INTR}$ sygnał do procesora.
  • Ilekroć procesor otrzyma $overline{INTR}$ sygnału, kończy wykonywanie bieżącej instrukcji, a następnie wykonuje ISR. Gdy procesor jest gotowy, wysyła sygnał potwierdzenia przez CHWILA linia.
  • ISR zostaje wykonany, a procesor powraca do programu głównego.
  • Urządzenia we/wy wyłączają $overline{INTR}$ sygnał po wykonaniu.
Różnica między ISR a wywołaniem funkcji

Na przykład: W poniższym przykładzie transfer we/wy za pomocą wejść/wyjść sterowanych przerwaniami.

  • Jeśli urządzenie we/wy, które chce wykonać transfer danych z procesorem, musi przerwać działanie procesora.
  • Przerwanie to stan, który powoduje, że procesor wykonuje procedurę obsługi przerwania.
  • W ISR procesor będzie wykonywał transfer danych z urządzeniem wejścia/wyjścia.

W tym przykładzie przerwij żądanie, naciskając klawisz klawiatury,

  • Zamiast sprawdzania przez procesor, czy naciśnięto klawisz, klawiatura przerywa procesorowi po naciśnięciu klawisza.
  • W ISR klawiatury, który jest częścią oprogramowania sterownika klawiatury, procesor będzie odczytywał dane z klawiatury.
Różnica między ISR a wywołaniem funkcji

Zalety ISR

Poniżej znajdują się następujące zalety ISR, takie jak:

  • Zdarzenia asynchroniczne ISR mogą wystąpić w dowolnym momencie wykonywania programu.
  • ISR zapisuje komputer, flagi i rejestry na stosie, wyłącza wszystkie przerwania i ładuje adres ISR.
  • ISR nie może mieć argumentów, które można mu przekazać.
  • ISR nie może zwracać wartości.
  • ISR włącza przerwania.
  • Ogólnie rzecz biorąc, ISR jest niewielki, ponieważ zajmuje czas innego procesu.
  • Niektóre ISR mają swój własny stos.

Co to jest wywołanie funkcji?

Wywołanie funkcji nazywane jest także wywołaniem podprogramu. Podprogram to zestaw instrukcji potrzebnych programowi wielokrotnie. Jest częścią większego programu, który odpowiada za wykonanie określonego zadania. Większy program może wykonywać duże obciążenie, a podprogram może wykonywać proste zadanie, które jest również niezależne od pozostałego kodu programu.

Funkcja jest kodowana w taki sposób, że można ją wywołać wielokrotnie i z różnych miejsc (nawet z poziomu innych funkcji). Kiedy funkcja jest wywoływana, procesor może udać się do miejsca, w którym znajduje się kod funkcji i wykonać instrukcje funkcji jedna po drugiej. Po zakończeniu funkcji procesor powróci dokładnie do miejsca, w którym przerwał i będzie kontynuował wykonywanie począwszy od następnej instrukcji.

Funkcje są doskonałym narzędziem do ponownego wykorzystania kodu. Wiele nowoczesnych języków programowania obsługuje funkcje. Zbiór funkcji nazywa się a biblioteka . Biblioteki są często wykorzystywane jako środki do udostępniania i handlu oprogramowaniem. W niektórych przypadkach cały program może być sekwencją podprogramów.

W przypadku procesora 8086 podprogram jest wywoływany przez a DZWONIĆ instrukcji i zwrotów kontrolnych przez a PRAWIDŁOWY instrukcja. Zmniejsza rozmiar programu.

Różnica między ISR a wywołaniem funkcji

Funkcja musi zostać wywołana jawnie i stanowi część tego samego kontekstu i wątku wykonania, co jej osoba wywołująca. Sprzętowy ISR nie jest wywoływany jawnie, ale raczej wywoływany przez jakieś zdarzenie zewnętrzne. Kontekst bieżącego wątku jest automatycznie zachowywany, gdy wywołane zostanie przerwanie przed przełączeniem kontekstu na ISR.

W zamian następuje odwrotne przełączenie kontekstu, przywracając stan procesora sprzed przerwania, dzięki czemu wykonywanie jest kontynuowane od momentu przerwania. Poniżej znajduje się więcej różnic między ISR a wywołaniem funkcji.

ISR Wywołanie funkcji
Przerwanie jest zwykle inicjowane przez wewnętrzny lub zewnętrzny mikroprocesor sygnałowy, a nie przez wykonanie instrukcji. ISR jest wykonywany po zapisaniu bieżącego stanu programu na stosie.
ISR wykonuje różne zadania w zależności od przerwanego urządzenia lub instrukcji napisanych przez programistę.
Wywołanie funkcji następuje poprzez wykonanie instrukcji, które realizują określone zadania i zmniejszają rozmiar programu.
Sprzęt określa adres ISR.
Adres ISR jest zapisywany w tablicy wektorów przerwań, a adres ISR dla każdego przerwania jest stały.
Adres podprogramu jest zapisany wewnątrz instrukcji, która jest zapisana w głównym kodzie programu.
ISR jest używany do wszystkich zadań ogólnego przeznaczenia. Wywołania funkcji są wykonywane dla zadań specyficznych dla programu.
Kiedy podczas wykonywania bieżącego programu nastąpi przerwanie, zatem po wykonaniu bieżącej instrukcji procesor wykonuje ISR. Po wykonaniu ISR procesor musi wznowić program dokładnie tak, jak przed wystąpieniem przerwania.
W tym celu przechowywana jest zawartość komputera, rejestry µP i niektóre warunki stanu. Zbiór wszystkich warunków bitów stanu w mikroprocesorze nazywany jest PSW (słowo statusu programu).
  • Podczas cyklu przerwania zawartość PC i PSW jest wypychana na stos. Adres rozgałęzienia dla konkretnego przerwania jest następnie przekazywany do komputera PC, a nowy PSW jest ładowany do rejestru stanu.
  • Ostatnią instrukcją w ISR jest powrót z przerwanej instrukcji. Po wykonaniu tej instrukcji stary PSW i adres zwrotny są usuwane ze stosu.
Tutaj tylko komputer jest przechowywany na stosie, aby uzyskać adres następnej instrukcji w programie głównym.
Podprogram musi mieć dostęp do danych z podprogramu wywołującego i zwracać wyniki do tego podprogramu. Dlatego też wykonywane są parametry podprogramów i łączenie danych.
Można to zrobić poprzez
  • Rejestr AC może być używany dla pojedynczego parametru wejściowego i pojedynczego parametru wyjściowego. W komputerach z wieloma rejestrami procesora można w ten sposób przekazać więcej parametrów.
  • Innym sposobem przekazywania danych do podprogramu jest wykorzystanie pamięci.