Połączenie systemowe a przerwanie
Typowy procesor wykonuje instrukcje jedna po drugiej. Ale mogą zaistnieć sytuacje, w których procesor musi chwilowo zatrzymać się i zatrzymać bieżącą instrukcję oraz wykonać inny program lub segment kodu (znajdujący się w innym miejscu). Po wykonaniu tej czynności procesor powraca do normalnego wykonywania i kontynuuje od miejsca, w którym został przerwany. Takie sytuacje to wywołanie systemowe i przerwanie. Wywołanie systemowe to wywołanie podprogramu wbudowanego w system. Przerwanie to przerwanie sterowania programem 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 potrzebuje poprosić o usługę (do której sam 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 współdziałające z systemem operacyjnym. Na przykład, aby komunikować się z zewnętrznym urządzeniem we/wy lub wchodzić w interakcje z innymi procesami, program musi używać wywołań systemowych.
Co to jest przerwanie?
Podczas normalnego wykonywania programu komputerowego mogą wystąpić zdarzenia, które mogą spowodować tymczasowe zatrzymanie procesora. Zdarzenia takie jak to 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. 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.
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 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. wstrzyma bieżący program), wykona 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 to zdarzenie, które powoduje, że procesor tymczasowo wstrzymuje bieżące wykonanie. Jednak jedną z głównych różnic jest to, że wywołania systemowe są synchroniczne, podczas gdy przerwania nie są. Oznacza to, że wywołania systemowe występują w ustalonym czasie (zwykle określonym 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 za każdym razem, gdy pojawia się wywołanie systemowe, procesor musi tylko pamiętać, dokąd ma wrócić, ale w przypadku przerwania, procesor musi pamię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.