Wywołanie systemowe to sposób, w jaki program użytkownika może połączyć się z systemem operacyjnym. Program żąda kilku usług, a system operacyjny odpowiada, wywołując serię wywołań systemowych w celu zaspokojenia żądania. Wywołanie systemowe może być napisane w języku asemblera lub języku wysokiego poziomu, np C Lub Pascal . Wywołania systemowe to predefiniowane funkcje, które system operacyjny może bezpośrednio wywołać, jeśli używany jest język wysokiego poziomu.
W tym artykule dowiesz się o wywołaniach systemowych w systemie operacyjnym, omówisz ich rodzaje i wiele innych rzeczy.
Co to jest wywołanie systemowe?
Wywołanie systemowe to metoda, za pomocą której program komputerowy może zażądać usługi od jądra systemu operacyjnego, na którym jest uruchomiony. Wywołanie systemowe to metoda interakcji z systemem operacyjnym za pośrednictwem programów. Wywołanie systemowe to żądanie oprogramowania komputerowego skierowane do jądra systemu operacyjnego.
The Interfejs programu aplikacji (API) łączy funkcje systemu operacyjnego z programami użytkownika. Działa jako łącznik pomiędzy systemem operacyjnym a procesem, umożliwiając programom na poziomie użytkownika żądanie usług systemu operacyjnego. Dostęp do systemu jądra można uzyskać jedynie za pomocą wywołań systemowych. Wywołania systemowe są wymagane w przypadku wszystkich programów korzystających z zasobów.
W jaki sposób wykonywane są wywołania systemowe?
Kiedy oprogramowanie komputerowe potrzebuje dostępu do jądra systemu operacyjnego, wykonuje wywołanie systemowe. Wywołanie systemowe wykorzystuje interfejs API do udostępniania usług systemu operacyjnego programom użytkownika. Jest to jedyna metoda uzyskania dostępu do systemu jądra. Wszystkie programy lub procesy wymagające zasobów do wykonania muszą korzystać z wywołań systemowych, ponieważ służą one jako interfejs między systemem operacyjnym a programami użytkownika.
Poniżej znajduje się kilka przykładów tego, jak wywołanie systemowe różni się od funkcji użytkownika.
double do napisania Java
- Funkcja wywołania systemowego może tworzyć i wykorzystywać procesy jądra do wykonywania przetwarzania asynchronicznego.
- Wywołanie systemowe ma większe uprawnienia niż standardowy podprogram. Wywołanie systemowe z uprawnieniami trybu jądra jest wykonywane w domenie ochrony jądra.
- Wywołania systemowe nie mogą wykorzystywać bibliotek współdzielonych ani żadnych symboli, których nie ma w domenie ochrony jądra.
- Kod i dane wywołań systemowych są przechowywane w globalnej pamięci jądra.
Dlaczego potrzebujesz wywołań systemowych w systemie operacyjnym?
Istnieją różne sytuacje, w których musisz wymagać wywołań systemowych w systemie operacyjnym. Poniżej przedstawiono następujące sytuacje:
- Jest to konieczne, gdy system plików chce utworzyć lub usunąć plik.
- Połączenia sieciowe wymagają wywołań systemowych do wysyłania i odbierania pakietów danych.
- Jeśli chcesz przeczytać lub zapisać plik, musisz wywołać wywołania systemowe.
- Jeśli chcesz uzyskać dostęp do urządzeń sprzętowych, w tym drukarki, skanera, potrzebujesz wywołania systemowego.
- Wywołania systemowe służą do tworzenia nowych procesów i zarządzania nimi.
Jak działają wywołania systemowe
Aplikacje działają w obszarze pamięci zwanym przestrzenią użytkownika. Wywołanie systemowe łączy się z jądrem systemu operacyjnego, które jest wykonywane w przestrzeni jądra. Kiedy aplikacja tworzy wywołanie systemowe, musi najpierw uzyskać pozwolenie od jądra. Osiąga to za pomocą żądania przerwania, które wstrzymuje bieżący proces i przekazuje kontrolę do jądra.
Jeśli żądanie jest dozwolone, jądro wykonuje żądaną akcję, taką jak utworzenie lub usunięcie pliku. Jako dane wejściowe aplikacja otrzymuje dane wyjściowe jądra. Aplikacja wznawia procedurę po otrzymaniu danych wejściowych. Po zakończeniu operacji jądro zwraca wyniki do aplikacji, a następnie przenosi dane z przestrzeni jądra do przestrzeni użytkownika w pamięci.
Proste wywołanie systemowe może zająć kilka nanosekund, aby uzyskać wynik, np. pobranie daty i godziny systemowej. Bardziej skomplikowane wywołanie systemowe, takie jak połączenie z urządzeniem sieciowym, może zająć kilka sekund. Większość systemów operacyjnych uruchamia odrębny wątek jądra dla każdego wywołania systemowego, aby uniknąć wąskich gardeł. Nowoczesne systemy operacyjne są wielowątkowe, co oznacza, że mogą obsługiwać różne wywołania systemowe w tym samym czasie.
10 z 40
Rodzaje wywołań systemowych
Zwykle istnieje pięć typów wywołań systemowych. Są to następujące:
Teraz poznasz po kolei wszystkie typy wywołań systemowych.
Kontrola procesu
Sterowanie procesem to wywołanie systemowe używane do kierowania procesami. Niektóre przykłady kontroli procesu obejmują tworzenie, ładowanie, przerywanie, kończenie, wykonywanie, przetwarzanie, kończenie procesu itp.
Zarządzanie plikami
Zarządzanie plikami to wywołanie systemowe używane do obsługi plików. Niektóre przykłady zarządzania plikami obejmują tworzenie plików, usuwanie plików, otwieranie, zamykanie, odczytywanie, zapisywanie itp.
Zarządzanie urządzeniami
Zarządzanie urządzeniami to wywołanie systemowe używane do obsługi urządzeń. Niektóre przykłady zarządzania urządzeniami obejmują odczyt, urządzenie, zapis, pobieranie atrybutów urządzenia, zwalnianie urządzenia itp.
Konserwacja informacji
Konserwacja informacji to wywołanie systemowe używane do konserwacji informacji. Istnieje kilka przykładów konserwacji informacji, w tym uzyskiwanie danych systemowych, ustawianie godziny lub daty, uzyskiwanie godziny lub daty, ustawianie danych systemowych itp.
Komunikacja
Komunikacja to wywołanie systemowe używane do komunikacji. Istnieje kilka przykładów komunikacji, w tym tworzenie, usuwanie połączeń komunikacyjnych, wysyłanie, odbieranie wiadomości itp.
Przykłady wywołań systemowych Windows i Unix
Istnieją różne przykłady wywołań systemowych Windows i Unix. Są one wymienione poniżej w tabeli:
rodzaje drzew binarnych
Proces | Okna | Uniksa |
---|---|---|
Kontrola procesu | Proces tworzenia() Zakończ proces() WaitForSingleObject() | Widelec() Wyjście() Czekać() |
Manipulacja plikami | Utwórz plik() Przeczytaj plik() Zapisz plik() ZamknijUchwyt() | Otwarty() Czytać() Pisać() Zamknąć() |
Zarządzanie urządzeniami | Ustaw tryb konsoli() Czytaj konsolę() WriteConsole() | Ioctl() Czytać() Pisać() |
Konserwacja informacji | GetCurrentProcessID() Ustaw minutnik() Spać() | Getpid() Alarm() Spać() |
Komunikacja | Utwórz rurę() Utwórz mapowanie pliku() MapViewOfFile() | Rura() Szmget() Mmap() |
Ochrona | UstawPlikZabezpieczenia() ZainicjujDescriptorSecurity() SetSecurityDescriptorgroup() | Chmod() umaska() Chown() |
Tutaj dowiesz się pokrótce o niektórych metodach:
otwarty()
The otwarty() wywołanie systemowe umożliwia dostęp do pliku w systemie plików. Przydziela zasoby do pliku i zapewnia uchwyt, do którego proces może się odwoływać. Wiele procesów może otworzyć plik jednocześnie lub tylko w ramach jednego procesu. Wszystko opiera się na systemie plików i strukturze.
Czytać()
Służy do uzyskiwania danych z pliku w systemie plików. Ogólnie przyjmuje trzy argumenty:
- Deskryptor pliku.
- Bufor do przechowywania odczytanych danych.
- Liczba bajtów do odczytania z pliku.
Deskryptor pliku, który ma zostać odczytany, może zostać użyty do jego identyfikacji i otwarcia za pomocą otwarty() przed czytaniem.
Czekać()
W niektórych systemach proces może poczekać, aż inny proces zakończy swoje działanie, zanim będzie mógł kontynuować. Kiedy proces nadrzędny tworzy proces potomny, wykonywanie procesu nadrzędnego jest zawieszane do czasu zakończenia procesu potomnego. The Czekać() wywołanie systemowe służy do zawieszenia procesu nadrzędnego. Gdy proces potomny zakończy swoje działanie, kontrola wraca do procesu nadrzędnego.
pisać()
Służy do zapisywania danych z bufora użytkownika na urządzeniu takim jak plik. To wywołanie systemowe jest jednym ze sposobów generowania danych przez program. Ogólnie rzecz biorąc, przyjmuje trzy argumenty:
np.log
- Deskryptor pliku.
- Wskaźnik do bufora, w którym zapisywane są dane.
- Liczba bajtów do zapisania z bufora.
widelec()
Procesy generują swoje klony za pomocą widelec() wywołanie systemowe. Jest to jeden z najpopularniejszych sposobów tworzenia procesów w systemach operacyjnych. Kiedy proces nadrzędny tworzy proces potomny, wykonywanie procesu nadrzędnego zostaje przerwane do czasu zakończenia procesu potomnego. Gdy proces potomny zakończy swoje działanie, kontrola wraca do procesu nadrzędnego.
zamknąć()
Służy do zakończenia dostępu do systemu plików. Wywołanie tego wywołania systemowego oznacza, że program nie potrzebuje już pliku, bufory są opróżniane, informacje o pliku ulegają zmianie, w wyniku czego zasoby pliku zostają zwolnione.
wykonanie()
Kiedy plik wykonywalny zastępuje wcześniejszy plik wykonywalny w już wykonywanym procesie, wywoływana jest ta funkcja systemowa. Ponieważ nowy proces nie jest budowany, stara identyfikacja procesu pozostaje, ale nowy proces zastępuje dane, stos, dane, głowę itp.
Wyjście()
The Wyjście() to wywołanie systemowe używane do zakończenia wykonywania programu. To wywołanie wskazuje, że wykonywanie wątku zostało zakończone, co jest szczególnie przydatne w środowiskach wielowątkowych. System operacyjny odzyskuje zasoby wykorzystane przez proces po użyciu Wyjście() funkcja systemu.