Sistemski pozivi

Što je sistemski poziv u Linuxu i kako to funkcionira s primjerima

Što je sistemski poziv u Linuxu i kako to funkcionira s primjerima

Sistemski poziv funkcija je koja omogućuje procesu komuniciranje s Linux jezgrom. To je samo programski način na koji računalni program može naručiti objekt iz jezgre operacijskog sustava. Sistemski pozivi izlažu resurse operativnog sustava korisničkim programima putem API-ja (sučelje za programiranje aplikacija). Sistemski pozivi mogu pristupiti samo okviru jezgre. Pozivi sustava potrebni su za sve usluge koje trebaju resurse.

Linux jezgra vlasnički je softver koji se učitava i radi na uređaju u najmanje potencijalnoj fazi. Njegov je posao organizirati sve što se događa na stroju, od tipkovnice, diskovnog pogona i mrežnih događaja do pružanja vremenskih odsječaka za istovremeno izvršavanje različitih programa. Odvajanje softvera i hardvera stvara siguran mjehurić koji poboljšava zaštitu i pouzdanost. Neprivilegirane aplikacije ne mogu doći do pohrane drugog programa, a ako jedan ne uspije, kernel obustavlja postupak tako da ne ošteti cijeli sustav.

Tanki omot za oblatne:

Pozivi sustava Linux ne izriču se eksplicitno kernelu u određenim programima. Gotovo svi programi koriste osnovnu C biblioteku i nude lagan, ali bitan omot preko Linux sistemskih poziva. Repozitorij zatim pruža prateći Linux strojni poziv nakon što osigura da su parametri značajke prevedeni u prave registre procesora. Kad god omotač primi podatke iz sistemskog poziva, analizira ih i jasno doprinosi programu. Bilo koja interakcija stroja u programu na kraju se pretvara u sistemski poziv. Pa, pogledajmo neke od njih. Dug je popis Linux sistemskih poziva koje možemo koristiti u našem Linux sustavu. Ovdje je popis nekih uobičajenih i najčešće korištenih Linux sistemskih poziva.

Razgovarajmo o nekim Linuxovim sistemskim pozivima koji koriste jezik C u našem članku kako bismo ga upoznali.

Otvoreni sistemski poziv:

Možemo koristiti sistemski poziv „Otvori“ u našoj distribuciji Linuxa za brzo otvaranje dokumenta, što ćemo odrediti u našem kodu jezika C. Prvo pokrenite naredbeni terminal. Možete koristiti prečac "Ctrl + Alt + T". Pretpostavimo da imate "test" tekstualne datoteke.txt ”u početnom direktoriju i u njemu se nalazi određeni sadržaj. Dakle, na početku morate stvoriti novi naziv datoteke tipa C „novo.c ”u terminalu putem nano uređivača. Stoga isprobajte jednostavnu donju nano upute.

$ nano novo.c

Sada je pokrenut Nano editor. U njega upišite dolje prikazani kôd. U kodu imamo dva deskriptora datoteka. Obje se datoteke mogu otvoriti pomoću otvorenog sistemskog poziva. Prvi deskriptor sadrži poziv za čitanje, a drugi sadrži funkciju pisanja. Prvi otvoreni poziv je otvaranje tekstualne datoteke „test.txt "i spremanje njegovog sadržaja u deskriptor datoteke" fd ". Drugi otvoreni sistemski poziv stvara datoteku pod nazivom „target“. "Cilj" dokumenta nadoknađen je opisu datoteke "fd1". Uputa za pisanje koristi se za prepisivanje bajtova podataka u međuspremnik. Dodirnite “Ctrl + S” da biste spremili kôd i pritisnite tipku prečaca “Ctrl + X” da biste zatvorili datoteku.

Pokrenite naredbu za sastavljanje gcc za sastavljanje ovog C koda.

$ gcc novo.c

Izvršimo kôd pomoću jednostavnog „a.upit “u ljusci na sljedeći način:

$ ./ a.van

Izlazni podaci preneseni su u datoteku “target”. Provjerimo "ciljnu" datoteku pomoću upita "mačka". Izlazni zaslon prikazuje podatke od 20 znakova u "ciljnoj" datoteci.

$ mačka meta

Exec sistemski poziv:

Sistemski poziv exec odbacuje se radi pokretanja datoteke koja se trenutno obrađuje. Zamjenjuje se bivša izvršna datoteka, a trenutnom se upravlja kad god se pozove exec. Korištenjem exec sistemskog poziva možemo pretpostaviti da ćemo time prebrisati stari dokument ili aplikaciju u petlji, svježim. Novi softver koristi se za nadjačavanje cjelokupnog materijala procesa. Dokument čiji je naslov naveden u izjavi svaki put kad se poziva exec () zamijeni odjeljak s korisničkim informacijama koji pokreće sistemski poziv exec () (). Dakle, otvorite naredbeni terminal i pomoću nano uređivača stvorite novu datoteku tipa C na sljedeći način:

$ nano exp.c

Urednik je sada otvoren. U njega zapišite cijeli jezični kod ispod. U nju su uključene tri glavne knjižnice. Nakon toga je pokrenuta glavna funkcija. Izjava za ispis prikazuje niz podataka i ID procesa datoteke „exp.c ". U tu svrhu korištena je funkcija getpid (). Tada imamo niz znakova s ​​nekim vrijednostima. Sistemski poziv exec korišten je za uzimanje imena datoteke i gornjeg niza u jednom retku kao argumenta. Sada je datoteka “zdravo.c ”će se obraditi. Nakon toga zasad dolazi još jedna izjava za ispis, ali ona se nikada neće izvršiti. Pritisnite “Ctrl + S” da biste spremili ovu datoteku. Pritisnite "Ctrl + X" za izlaz.

Sada je vrijeme za stvaranje još jedne c datoteke, „zdravo.c ”pomoću nano uređivača. Upotrijebite donji upit u ljusci da biste to učinili.

$ nano zdravo.c

U njega napišite donji kod. Ovaj kôd sadrži dvije ispisne izjave u glavnoj funkciji. Prvi ispisuje samo niz koji je u njemu naveden, a drugi ispis niza dok se preuzima ID procesa trenutno korištene datoteke, a to je „zdravo.c ".

Sastavimo obje datoteke jednu za drugom koristeći gcc.

$ gcc -o exp exp.c

$ gcc -o zdravo zdravo.c

Kada izvršimo exp.c datoteku, ispisat će prvi ispis iz naredbe exp.c datoteku i obje linije za ispis iz hello.c datoteka.

$ ./ exp

Zaključak:

Razradili smo čitav koncept Linux sistemskih poziva i kako se oni mogu koristiti u vašem Linux sustavu. Koristili smo Ubuntu 20.04 tijekom provedbe ovog koncepta.

Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...
Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...
Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...