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

What Is System Call Linux



Et 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 (Application Programming Interface). Systemanrop kan bare få tilgang til kjerne -rammeverket. Systemanrop er nødvendig for alle tjenestene som trenger ressurser.

Linux -kjernen er proprietær programvare som laster og opererer på enheten på det minst potensielle stadiet. Jobben er å organisere alt som skjer på maskinen, fra tastaturet, diskstasjonen og nettverkshendelser til å gi tidssnitt 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å lagringen til andre programmer, og hvis en mislykkes, stopper kjernen prosessen slik at den ikke skader hele systemet.







Wafer Thin Wrapper:

Linux -systemanropene gjengis ikke eksplisitt til kjernen i visse programmer. Nesten alle programmene bruker det grunnleggende C -biblioteket og tilbyr en lett, men viktig pakke over Linux -systemsamtalene. Depotet gir deretter den medfølgende Linux -maskinanropet etter å ha sørget for at funksjonsparameterne blir oversatt til de riktige prosessorregistrene. Hver gang innpakningen mottar data fra systemanropet, analyserer den og bidrar tydelig til programmet. Enhver maskininteraktiv operasjon i et program konverteres til slutt til et systemanrop. Så, la oss se på noen av dem. Det er en lang liste over Linux -systemanrop som vi kan bruke i vårt Linux -system. 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 som bruker C-språket i artikkelen vår for å få praktisk erfaring med det.



Åpne systemanrop:

Vi kan bruke Open system -anropet i vår Linux -distribusjon for raskt å åpne dokumentet, som vi vil spesifisere i vår C -kode. Start kommandoterminalen først. 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 av C -typen new.c i terminalen via nano -editor. Prøv derfor den enkle nano -instruksjonen nedenfor.





$nanonytt. c

Nå har Nano -redaktøren blitt lansert. Skriv inn koden som vises nedenfor. Vi har to filbeskrivere i koden. Begge filene kan åpnes ved hjelp av det åpne systemanropet. Den første beskrivelsen inneholder et leseanrop, og den andre inneholder skrivefunksjonen. Den første åpne samtalen er å åpne tekstfilen test.txt og lagre innholdet i filbeskrivelse fd. Det andre åpne systemanropet oppretter en fil som heter target. Dokumentmålet har blitt refundert til en fd1 -filbeskrivelse. Skriveinstruksjonen brukes til å transkribere byte av data i bufferen. Trykk på Ctrl+S for å lagre koden og trykk på hurtigtasten Ctrl+X for å avslutte filen.



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

$gccnytt. c

La oss utføre koden ved å bruke den enkle a.out -spørringen i skallet som følger:

$./a. ut

Utdataene er overført til filmålet. La oss sjekke målfilen ved hjelp av katteforespørselen. Utdataskjermen viser dataene på 20 tegn i målfilen.

$kattmål

Exec System Call:

Exec -systemanropet blir kastet ut for å kjøre en fil som for tiden behandles. Den tidligere kjørbare filen blir erstattet, og den nåværende filen blir betjent når exec kalles. Ved å bruke et exec -systemanrop kan vi anta at det vil overskrive det gamle dokumentet eller programmet i sløyfen med et nytt. Ny programvare brukes til å overstyre hele prosessens materiale. Dokumentet hvis tittel er gitt i uttalelsen når påkallelse av exec () erstattes med brukerinformasjonsdelen som kjører exec () systemanropet (). Så åpne kommandoterminalen, og bruk nano -editoren til å lage en ny C -type fil som følger:

$nanoeksp. c

Redaktøren har blitt åpnet nå. Skriv ut hele C -språkkoden nedenfor. Det er tre hovedbiblioteker inkludert i den. Etter det har hovedfunksjonen blitt instansert. Utskriftserklæringen har vist strengedata og prosess -ID for filen exp.c. Getpid () -funksjonen har blitt brukt til dette formålet. Så har vi en tegntype -matrise med noen verdier i den. Exec-systemanropet har blitt brukt til å ta filnavnet og enlinjen ovenfor array som et argument. Nå vil hello.c -filen bli behandlet. Etter det kommer en ny utskriftserklæring så langt, men den vil aldri bli utført. Trykk Ctrl+S for å lagre denne filen. Trykk Ctrl+X for å avslutte.

Nå er det på tide å lage en annen c -fil, hello.c ved hjelp av nano -editoren. Bruk spørringen nedenfor i skallet for å gjøre det.

$nanoHei C

Skriv koden nedenfor. Denne koden inneholder to utskriftssetninger i hovedfunksjonen. Den første skriver bare ut en streng som er angitt i den, og den andre skriver ut strengen mens du henter prosess -ID -en for filen som brukes nå, som er hello.c.

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

$gcc–O eksp. Eksp

$gcc–O hei hallo. C

Når vi kjører exp.c -filen, sendes den første utskriftssetningen fra exp.c -filen og begge utskriftslinjene fra hello.c -filen.

$./eksp

Konklusjon:

Vi har utdypet hele konseptet med Linux -systemanrop og hvordan de kan brukes i ditt Linux -system. Vi har brukt Ubuntu 20.04 mens vi implementerte dette konseptet.