Poziv sustava u OS-u (Operating sustav): Što je, vrste i primjeri

Što je System Call in Operating sustav?

A sistemski poziv je mehanizam koji osigurava sučelje između procesa i operativnog sustava. To je programska metoda u kojoj računalni program zahtijeva uslugu od kernela OS-a.

System call nudi usluge operativnog sustava korisničkim programima putem API-ja (Application Programming Interface). Sistemski pozivi jedine su ulazne točke za kernel sustav.

Sustav poziva Operating sustav
Sustav poziva Operating sustav

Primjer poziva sustava

Na primjer, ako trebamo napisati programski kod za čitanje podataka iz jedne datoteke, kopirajte te podatke u drugu datoteku. Prva informacija koju program zahtijeva je ime dviju datoteka, ulazne i izlazne datoteke.

U interaktivnom sustavu, ova vrsta izvršavanja programa zahtijeva neke sistemske pozive od strane OS-a.

  • Prvi poziv je pisanje poruke s upitom na zaslonu
  • Drugo, za čitanje s tipkovnice znakova koji definiraju dvije datoteke.

Kako funkcionira sistemski poziv?

Evo koraka za System Call u OS-u:

Sistemski poziv radi

Archistruktura poziva sustava

Archistruktura poziva sustava

Kao što možete vidjeti na gore danom primjeru dijagrama poziva sustava.

Korak 1) Procesi koji se izvršavaju u korisničkom načinu rada do trenutka kada ga sistemski poziv prekine.

Korak 2) Nakon toga, sistemski poziv se izvršava u kernel-modu na bazi prioriteta.

Korak 3) Nakon završetka izvršavanja sistemskog poziva, kontrola se vraća u korisnički način rada.,

Korak 4) Izvršenje korisničkih procesa nastavljeno je u Kernel mod.

Zašto su vam potrebni sistemski pozivi u OS-u?

Slijede situacije koje zahtijevaju sistemske pozive u OS-u:

  • Čitanje i pisanje iz datoteka zahtijeva pozive sustava.
  • Ako datotečni sustav želi stvoriti ili izbrisati datoteke, potrebni su sistemski pozivi.
  • Sistemski pozivi koriste se za kreiranje i upravljanje novim procesima.
  • Mrežne veze trebaju sistemske pozive za slanje i primanje paketa.
  • Za pristup hardverskim uređajima poput skenera, pisača potreban je poziv sustava.

Vrste sistemskih poziva

Evo pet vrsta sistemskih poziva u OS-u:

  • Kontrola procesa
  • Upravljanje datotekama
  • Upravljanje uređajima
  • Održavanje informacija
  • komunikacije
Vrste sistemskih poziva

Vrste sistemskih poziva u OS-u

Kontrola procesa

Ovi pozivi sustava obavljaju zadatak stvaranja procesa, završetka procesa itd.

Funkcije:

  • Kraj i prekid
  • Učitaj i izvrši
  • Stvaranje procesa i završetak procesa
  • Čekaj i Signal događaj
  • Dodijelite i oslobodite memoriju

Upravljanje datotekama

Pozivi sustava za upravljanje datotekama upravljaju poslovima manipulacije datotekama poput stvaranja datoteke, čitanja i pisanja itd.

Funkcije:

  • Stvorite datoteku
  • Izbrisati dateoteku
  • Otvaranje i zatvaranje datoteke
  • Čitajte, pišite i mijenjajte položaj
  • Dobivanje i postavljanje atributa datoteke

Upravljanje uređajima

Upravljanje uređajem obavlja posao manipulacije uređajem poput čitanja iz međuspremnika uređaja, pisanja u međuspremnike uređaja itd.

Funkcije:

  • Zatražite i otpustite uređaj
  • Logično priključite/odspojite uređaje
  • Dobivanje i postavljanje atributa uređaja

Održavanje informacija

On upravlja informacijama i njihovim prijenosom između OS-a i korisničkog programa.

Funkcije:

  • Dobiti ili postaviti vrijeme i datum
  • Dohvatite atribute procesa i uređaja

komunikacija

Ove vrste sistemskih poziva posebno se koriste za međuprocesnu komunikaciju.

Funkcije:

  • Stvaranje, brisanje komunikacijskih veza
  • Pošalji, primi poruku
  • Pomoć OS-u za prijenos informacija o statusu
  • Priključite ili odvojite udaljene uređaje

Pravila za prosljeđivanje parametara za poziv sustava

Ovdje su opća uobičajena pravila za prosljeđivanje parametara pozivu sustava:

  • Parametre bi operativni sustav trebao ubaciti ili izbaciti sa stoga.
  • Parametri se mogu proslijediti u registrima.
  • Kada ima više parametara nego registara, treba ih pohraniti u blok, a adresu bloka treba proslijediti kao parametar u registar.

Važni sistemski pozivi koji se koriste u OS-u

čekati()

U nekim sustavima proces mora čekati da drugi proces dovrši svoje izvršenje. Ova vrsta situacije događa se kada nadređeni proces kreira podređeni proces, a izvršenje nadređenog procesa ostaje obustavljeno dok se njegov podređeni proces ne izvrši.

Obustava nadređenog procesa automatski se događa sa sustavnim pozivom wait(). Kada proces dijete završi s izvođenjem, kontrola se vraća na proces roditelj.

vilica ()

Procesi koriste ovaj sistemski poziv za stvaranje procesa koji su kopija samih sebe. Uz pomoć ovog sustava Call parent proces kreira podređeni proces, a izvršenje nadređenog procesa bit će obustavljeno dok se podređeni proces ne izvrši.

exec()

Ovaj sistemski poziv pokreće se kada se izvršna datoteka nalazi u kontekstu već pokrenutog procesa koji zamjenjuje stariju izvršnu datoteku. Međutim, izvorni identifikator procesa ostaje budući da se novi proces ne gradi, već se novi proces zamjenjuje snopom, podacima, glavom, podacima itd.

ubiti()

Sistemski poziv kill() koristi OS za slanje signala prekida procesu koji potiče proces na izlazak. Međutim, sistemski poziv kill ne mora nužno značiti gašenje procesa i može imati različita značenja.

Izlaz ()

Sistemski poziv exit() koristi se za prekid izvršavanja programa. Posebno u okruženju s više niti, ovaj poziv definira da je izvršenje niti dovršeno. OS vraća resurse koje je proces koristio nakon upotrebe sistemskog poziva exit().

Rezime

Kategorije Windows Unix
Kontrola procesa StvoriProces()
Izlaz iz procesa()
WaitForSingleObject()
vilica ()
Izlaz ()
čekati()
Manipulacija uređajem PostaviConsoleMode()
ReadConsole()
WriteConsole()
loctl()
čitati()
pisati()
Manipulacija datotekama CreateFile()
ReadFile()
WriteFile()
CloseHandle()
Otvoren()
Čitati()
pisati()
Zatvoriti!)
Održavanje informacija GetCurrentProcessID()
PostaviTimer()
Spavati()
getpid()
alarm()
spavati()
komunikacija Stvori cijev()
CreateFileMapping()
MapViewOfFile()
Cijev()
shm_open()
mmap()
Zaštita SetFileSecurity()
InitlializeSecurityDescriptili()
Postavi SigurnostDescriptili grupa ()
Chmod()
Umask()
Chown()