Hva er et systemanrop i Linux og hvordan fungerer det med eksempler

Hva er et systemanrop i Linux og hvordan fungerer det med eksempler

En systemanrop er en funksjon som lar en prosess kommunisere med Linux -kjernen. Det er bare en programmatisk måte for et dataprogram å bestille et anlegg fra operativsystemets kjerne. Systemanrop utsetter operativsystemets ressurser for brukerprogrammer gjennom et API (programmeringsgrensesnitt for applikasjoner). Systemanrop kan bare få tilgang til kjernen rammeverket. Systemanrop er nødvendig for alle tjenestene som trenger ressurser.

Linux -kjernen er proprietær programvare som laster og opererer på enheten i det minste potensielle stadiet. Jobben er å organisere alt som skjer på maskinen, fra tastaturet, diskstasjonen og nettverksarrangementer til å gi tidsskiver for samtidig utførelse av forskjellige programmer. Separasjonen av programvare og maskinvare skaper en sikker boble som forbedrer beskyttelse og pålitelighet. Uprivilegerte applikasjoner kan ikke nå andre programmets lagring, og hvis man mislykkes, suspenderer kjernen prosessen slik at den ikke skader hele systemet.

Wafer tynn innpakning:

Linux -systemanropene blir ikke gjengitt eksplisitt til kjernen i visse programmer. Nesten alle programmene bruker det grunnleggende C -biblioteket og tilbyr en lett, men viktig innpakning over Linux -systemanropene. Repotet gir deretter den medfølgende Linux -maskinsamtalen etter å ha sikret at funksjonsparametrene blir oversatt til de riktige prosessorregistrene. Hver gang innpakningen mottar data fra systemanropet, analyserer den det og bidrar med det til programmet tydelig. Enhver maskin-interaktiv operasjon i et program blir til slutt konvertert til et systemanrop. Så la oss se på noen av dem. Det er en lang liste over Linux -systemanrop som vi kan bruke i Linux -systemet vårt. Her er listen over noen vanlige og mest brukte Linux -systemanrop.

  • Åpen
  • Lukk
  • Exec
  • Skrive
  • Lese
  • Lseek
  • Plukke ut

La oss diskutere noen av Linux-systemanropene ved å bruke C-språket i artikkelen vår for å bli praktisk med det.

Åpent systemanrop:

Vi kan bruke det "åpne" systemanropet i Linux -distribusjonen vår for å åpne dokumentet raskt, som vi vil spesifisere i vår Code of C -språk. Start kommandeterminalen for det første. Du kan bruke snarveien “Ctrl+Alt+T”. Anta at du har en tekstfil “Test.txt ”i hjemmekatalogen, og den inneholder noe innhold i den. Så i begynnelsen må du opprette et nytt filnavn på C -typen “Ny.C ”i terminalen via Nano Editor. Prøv derfor den enkle under Nano -instruksjonen.

$ nano ny.c

Nå er Nano -redaktøren lansert. Skriv inn koden nedenfor i den. Vi har to filbeskrivelser i koden. Begge filene kan åpnes ved hjelp av det åpne systemanropet. Den første deskriptoren inneholder en lest samtale, og den andre inneholder skrivefunksjonen. Den første åpne samtalen er å åpne tekstfilen “Test.TXT ”og lagrer innholdet i filbeskrivelsen“ FD ”. Den andre åpne systemanropet er å lage en fil som heter “Target”. Dokumentet "mål" er refundert til en "FD1" -filbeskrivelse. Skrivinstruksjonen brukes til å transkribere byte av data i bufferen. Trykk på “Ctrl+S” for å lagre koden og treffe snarveisnøkkelen “Ctrl+X” for å avslutte filen.

Kjør GCC -kompileringsinstruksjonen for å kompilere denne C -koden.

$ GCC NY.c

La oss utføre koden ved hjelp av den enkle “a.ut ”spørring i skallet som følger:

$ ./en.ute

Utdataene er overført til filen "mål". La oss sjekke "Target" -filen ved hjelp av "Cat" -spørsmålet. Utgangsskjermen viser de 20 tegndataene i "mål" -filen.

$ kattmål

Exec System Call:

Exec -systemanropet blir avgitt for å kjøre en fil som for øyeblikket behandles. Den tidligere kjørbare filen er erstattet, og den nåværende filen blir operert når Exec kalles. Ved å bruke en EXEC -systemanrop, kan vi anta at det vil overskrive det gamle dokumentet eller applikasjonen i løkken med en fersk. Ny programvare brukes til å overstyre hele prosessens materiale. Dokumentet hvis tittel er gitt i uttalelsen når det påkaller Exec () er erstattet med brukerinformasjonsdelen som kjører Exec () System Call (). Så åpne kommandotterminalen, og ved å bruke Nano -redigereren, oppretter du en ny C -type fil som følger:

$ nano exp.c

Redaktøren er åpnet nå. Skriv ut helheten nedenfor C -språkkoden i den. Det er tre hovedbiblioteker inkludert i det. Etter det har hovedfunksjonen blitt instantiert. Utskriftserklæringen har vist strengdataene og prosess -IDen til filen “EXP.C ”. GetPid () -funksjonen har blitt brukt til dette formålet. Så har vi en karaktertype -matrise med noen verdier i den. Exec-systemanropet har blitt brukt til å ta filnavnet og en-linjen over matrisen som et argument. Nå filen “Hei.C ”vil bli behandlet. Etter det kommer en annen utskriftsuttalelse så langt, men den vil aldri bli utført. Trykk “CTRL+S” for å lagre denne filen. Treff “Ctrl+X” for å avslutte.

Nå er det på tide å lage en annen C -fil, “Hei.C ”ved hjelp av Nano Editor. Bruk spørringen nedenfor i skallet for å gjøre det.

$ nano hei.c

Skriv koden nedenfor i den. Denne koden inneholder to utskriftsuttalelser i hovedfunksjonen. Den første er bare å skrive ut en streng gitt i den, og den andre skriver ut strengen mens du henter prosess -IDen til den for øyeblikket brukte filen, som er “Hallo.C ”.

La oss kompilere begge filene etter hverandre ved hjelp av GCC.

$ gcc -o exp exp exp.c
$ gcc -o hei hei.c

Når vi utfører EXP.C -fil, den vil sende ut den første utskriftserklæringen fra EXP.C -fil og begge utskriftslinjene fra hei.C -fil.

$ ./exp

Konklusjon:

Vi har utdypet hele konseptet med Linux -systemanrop og hvordan de kan brukes i Linux -systemet ditt. Vi har brukt Ubuntu 20.04 Mens jeg implementerer dette konseptet.