Sistemski poziv je način na koji se korisnički program povezuje s operativnim sustavom. Program zahtijeva nekoliko usluga, a OS odgovara pozivanjem niza sistemskih poziva kako bi udovoljio zahtjevu. Sistemski poziv može biti napisan asemblerskim jezikom ili jezikom visoke razine poput C ili Pascal . Sistemski pozivi su unaprijed definirane funkcije koje operativni sustav može izravno pozvati ako se koristi jezik visoke razine.
U ovom članku naučit ćete o sistemskim pozivima u operativnom sustavu i raspravljati o njihovim vrstama i mnogim drugim stvarima.
Što je sistemski poziv?
Sistemski poziv je metoda kojom računalni program zahtijeva uslugu od jezgre operativnog sustava na kojem se izvodi. Sistemski poziv je metoda interakcije s operativnim sustavom putem programa. Sistemski poziv je zahtjev računalnog softvera prema jezgri operativnog sustava.
The Sučelje aplikacijskog programa (API) povezuje funkcije operacijskog sustava s korisničkim programima. Djeluje kao veza između operacijskog sustava i procesa, dopuštajući programima na korisničkoj razini da zatraže usluge operacijskog sustava. Sustavu kernela može se pristupiti samo pomoću sistemskih poziva. Sistemski pozivi su potrebni za sve programe koji koriste resurse.
Kako se obavljaju sistemski pozivi?
Kada računalni softver treba pristupiti jezgri operativnog sustava, upućuje sistemski poziv. Sistemski poziv koristi API za izlaganje usluga operativnog sustava korisničkim programima. To je jedini način pristupa sustavu kernela. Svi programi ili procesi koji zahtijevaju resurse za izvršenje moraju koristiti sistemske pozive, jer oni služe kao sučelje između operativnog sustava i korisničkih programa.
Ispod je nekoliko primjera kako se poziv sustava razlikuje od korisničke funkcije.
upcasting
- Funkcija sistemskog poziva može stvoriti i koristiti procese jezgre za izvršavanje asinkrone obrade.
- Sistemski poziv ima veći autoritet od standardne potprograma. Sistemski poziv s privilegijom načina rada jezgre izvršava se u domeni zaštite jezgre.
- Sistemskim pozivima nije dopušteno koristiti dijeljene biblioteke ili bilo koje simbole koji nisu prisutni u domeni zaštite jezgre.
- Kod i podaci za sistemske pozive pohranjeni su u globalnoj memoriji jezgre.
Zašto su vam potrebni sistemski pozivi u operativnom sustavu?
Postoje različite situacije u kojima morate zahtijevati sistemske pozive u operativnom sustavu. Sljedeće situacije su sljedeće:
- Mora se zahtijevati kada datotečni sustav želi stvoriti ili izbrisati datoteku.
- Mrežne veze zahtijevaju pozive sustava za slanje i primanje paketa podataka.
- Ako želite čitati ili pisati datoteku, trebate sistemske pozive.
- Ako želite pristupiti hardverskim uređajima, uključujući pisač, skener, potreban vam je sistemski poziv.
- Sistemski pozivi koriste se za stvaranje i upravljanje novim procesima.
Kako funkcioniraju sistemski pozivi
Aplikacije se izvode u području memorije poznatom kao korisnički prostor. Sistemski poziv povezuje se s jezgrom operativnog sustava, koja se izvršava u prostoru jezgre. Kada aplikacija kreira sistemski poziv, prvo mora dobiti dopuštenje od kernela. To postiže korištenjem zahtjeva za prekid, koji pauzira trenutni proces i prenosi kontrolu na kernel.
Ako je zahtjev dopušten, kernel izvodi traženu radnju, poput stvaranja ili brisanja datoteke. Kao ulaz, aplikacija prima izlaz kernela. Aplikacija nastavlja postupak nakon što primi unos. Kada je operacija završena, kernel vraća rezultate aplikaciji i zatim premješta podatke iz prostora kernela u korisnički prostor u memoriji.
Jednostavan poziv sustava može potrajati nekoliko nanosekundi da pruži rezultat, poput dohvaćanja datuma i vremena sustava. Složeniji sistemski poziv, kao što je povezivanje s mrežnim uređajem, može potrajati nekoliko sekundi. Većina operativnih sustava pokreće zasebnu nit kernela za svaki sistemski poziv kako bi se izbjegla uska grla. Moderni operacijski sustavi su multi-threaded, što znači da mogu upravljati različitim sistemskim pozivima u isto vrijeme.
Vrste sistemskih poziva
Obično postoji pet vrsta sistemskih poziva. To su sljedeći:
Sada ćete naučiti o svim različitim vrstama sistemskih poziva jedan po jedan.
Kontrola procesa
Kontrola procesa je sistemski poziv koji se koristi za usmjeravanje procesa. Neki primjeri kontrole procesa uključuju kreiranje, učitavanje, prekid, završetak, izvršenje, obradu, prekid procesa itd.
Upravljanje datotekama
Upravljanje datotekama je sistemski poziv koji se koristi za rukovanje datotekama. Neki primjeri upravljanja datotekama uključuju stvaranje datoteka, brisanje datoteka, otvaranje, zatvaranje, čitanje, pisanje itd.
primjer stabla binarnog pretraživanja
Upravljanje uređajem
Upravljanje uređajima je sistemski poziv koji se koristi za rukovanje uređajima. Neki primjeri upravljanja uređajem uključuju čitanje, uređaj, pisanje, dobivanje atributa uređaja, otpuštanje uređaja itd.
Održavanje informacija
Održavanje informacija je sistemski poziv koji se koristi za održavanje informacija. Postoje neki primjeri održavanja informacija, uključujući dobivanje podataka o sustavu, postavljanje vremena ili datuma, dobivanje vremena ili datuma, postavljanje podataka o sustavu itd.
Komunikacija
Komunikacija je sistemski poziv koji se koristi za komunikaciju. Postoje neki primjeri komunikacije, uključujući stvaranje, brisanje komunikacijskih veza, slanje, primanje poruka itd.
Primjeri Windows i Unix sistemskih poziva
Postoje različiti primjeri Windows i Unix sistemskih poziva. Oni su navedeni u tablici u nastavku:
Postupak | Windows | Unix |
---|---|---|
Kontrola procesa | StvoriProces() Izlaz iz procesa() WaitForSingleObject() | Vilica() Izlaz() Čekati() |
Manipulacija datotekama | CreateFile() ReadFile() WriteFile() CloseHandle() | Otvoren() Čitati() Pisati() Zatvoriti() |
Upravljanje uređajem | PostaviConsoleMode() ReadConsole() WriteConsole() | Ioctl() Čitati() Pisati() |
Održavanje informacija | GetCurrentProcessID() PostaviTimer() Spavati() | Getpid() Alarm() Spavati() |
Komunikacija | Stvori cijev() CreateFileMapping() MapViewOfFile() | Cijev() Shmget() Mmap() |
Zaštita | SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
Ovdje ćete ukratko saznati o nekim metodama:
otvoren()
The otvoren() sistemski poziv omogućuje vam pristup datoteci na datotečnom sustavu. Dodjeljuje resurse datoteci i osigurava rukovanje na koje se proces može odnositi. Mnogi procesi mogu otvoriti datoteku odjednom ili pomoću samo jednog procesa. Sve se temelji na datotečnom sustavu i strukturi.
veličina teksta od lateksa
čitati()
Koristi se za dobivanje podataka iz datoteke u sustavu datoteka. Općenito prihvaća tri argumenta:
- Deskriptor datoteke.
- Međuspremnik za pohranu pročitanih podataka.
- Broj bajtova za čitanje iz datoteke.
Datotečni deskriptor datoteke koja se čita može se koristiti za njezino identificiranje i otvaranje pomoću otvoren() prije čitanja.
čekati()
U nekim sustavima, proces će možda morati pričekati da drugi proces završi svoje izvršenje prije nego što nastavi. Kada nadređeni proces napravi podređeni proces, izvršenje nadređenog procesa se obustavlja dok ne završi podređeni proces. The čekati() sistemski poziv se koristi za obustavu nadređenog procesa. Nakon što proces dijete završi svoje izvršenje, kontrola se vraća procesu roditelju.
pisati()
Koristi se za pisanje podataka iz korisničkog međuspremnika u uređaj poput datoteke. Ovaj sistemski poziv jedan je od načina na koji program generira podatke. Općenito su potrebna tri argumenta:
- Deskriptor datoteke.
- Pokazivač na međuspremnik u kojem se spremaju podaci.
- Broj bajtova koji se trebaju upisati iz međuspremnika.
vilica()
Procesi stvaraju svoje klonove pomoću vilica() sistemski poziv. To je jedan od najčešćih načina za stvaranje procesa u operativnim sustavima. Kada nadređeni proces izrodi podređeni proces, izvođenje nadređenog procesa se prekida dok ne završi podređeni proces. Nakon što proces dijete završi svoje izvršenje, kontrola se vraća procesu roditelju.
Zatvoriti()
Koristi se za prekid pristupa datotečnom sustavu. Kada se pozove ovaj sistemski poziv, to znači da program više ne treba datoteku, a međuspremnici se ispiraju, informacije o datoteci se mijenjaju, a resursi datoteke se kao rezultat de-alociraju.
java unos
exec()
Kada izvršna datoteka zamijeni prethodnu izvršnu datoteku u procesu koji se već izvodi, ova funkcija sustava se poziva. Kako se novi proces ne gradi, stara identifikacija procesa ostaje, ali novi proces zamjenjuje podatke, stog, podatke, glavu itd.
Izlaz()
The Izlaz() je sistemski poziv koji se koristi za završetak izvođenja programa. Ovaj poziv označava da je izvršenje niti dovršeno, što je posebno korisno u okruženjima s više niti. Operativni sustav vraća resurse potrošene procesom nakon upotrebe Izlaz() funkcija sustava.