Wywołanie systemowe vs Przerwanie
Typowy procesor wykonuje instrukcje jeden po drugim. Ale mogą się zdarzyć sytuacje, gdy procesor musi tymczasowo zatrzymać się i wstrzymać bieżącą instrukcję i wykonać inny program lub segment kodu (rezydujący w innym miejscu). Po wykonaniu tego procesor powraca do normalnego wykonywania i kontynuuje od miejsca, w którym został przerwany. Takie wywołanie to wywołanie systemowe i przerwanie. Wywołanie systemowe to wywołanie podprogramu wbudowanego w system. Przerwanie to przerwanie kontroli programu spowodowane przez zewnętrzne zdarzenia sprzętowe.
Co to jest wywołanie systemowe?
Wywołania systemowe zapewniają programom działającym na komputerze interfejs do komunikacji z systemem operacyjnym. Gdy program musi poprosić o usługę (na którą nie ma uprawnień) z jądra systemu operacyjnego, używa wywołania systemowego. Procesy na poziomie użytkownika nie mają takich samych uprawnień jak procesy bezpośrednio wchodzące w interakcje z systemem operacyjnym. Na przykład w celu komunikacji z zewnętrznym urządzeniem we / wy lub interakcji z innymi procesami program musi korzystać z wywołań systemowych.
Co to jest przerwanie?
Podczas normalnego wykonywania programu komputerowego 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. 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.
Jak wspomniano powyżej, 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.
Jaka jest różnica między wywołaniem systemowym a przerwaniem?
Wywołanie systemowe to wywołanie podprogramu wbudowanego w system, podczas gdy Przerwanie jest zdarzeniem, które powoduje, że procesor tymczasowo wstrzymuje bieżące wykonanie. Jedną z głównych różnic jest to, że wywołania systemowe są synchroniczne, podczas gdy przerwania nie. Oznacza to, że wywołania systemowe pojawiają się w ustalonym czasie (zwykle ustalanym przez programistę), ale przerwania mogą wystąpić w dowolnym momencie z powodu nieoczekiwanego zdarzenia, takiego jak naciśnięcie klawisza na klawiaturze przez użytkownika. Dlatego, ilekroć pojawia się wywołanie systemowe, procesor musi tylko pamiętać, do którego miejsca powrócić, ale w przypadku przerwania procesor musi zapamiętać zarówno miejsce powrotu, jak i stan systemu. W przeciwieństwie do wywołania systemowego, przerwanie zwykle nie ma nic wspólnego z bieżącym programem.