Järjestelmäpuhelut

Mikä on järjestelmäkutsu Linuxissa ja miten se toimii esimerkkien kanssa

Mikä on järjestelmäkutsu Linuxissa ja miten se toimii esimerkkien kanssa

Järjestelmäkutsu on toiminto, jonka avulla prosessi voi kommunikoida Linux-ytimen kanssa. Se on vain ohjelmallinen tapa tietokoneohjelmalle tilata tila käyttöjärjestelmän ytimeltä. Järjestelmäpuhelut paljastavat käyttöjärjestelmän resurssit käyttäjäohjelmille API: n (Application Programming Interface) kautta. Järjestelmäpuhelut voivat käyttää vain ytimen kehystä. Järjestelmäkutsuja tarvitaan kaikille resursseja tarvitseville palveluille.

Linux-ydin on oma ohjelmisto, joka lataa ja toimii laitteessa vähiten potentiaalisessa vaiheessa. Sen tehtävänä on järjestää kaikki koneella tapahtuvat, näppäimistöstä, levyasemasta ja verkkotapahtumista aina viipaleiden tarjoamiseen eri ohjelmien samanaikaiselle suorittamiselle. Ohjelmistojen ja laitteistojen erottaminen luo turvallisen kuplan, joka parantaa suojausta ja luotettavuutta. Etuoikeutetut sovellukset eivät pääse toisen ohjelman tallennustilaan, ja jos yksi epäonnistuu, ydin keskeyttää prosessin, jotta se ei vahingoita koko järjestelmää.

Ohut vohvelikääre:

Linux-järjestelmäpuheluja ei välitetä nimenomaisesti ytimelle tietyissä ohjelmissa. Lähes kaikki ohjelmat käyttävät C-peruskirjastoa ja tarjoavat kevyen mutta välttämättömän kääreen Linux-järjestelmän puheluille. Sitten arkisto tarjoaa mukana olevan Linux-konepuhelun varmistettuaan, että ominaisuusparametrit on käännetty oikeisiin prosessorirekistereihin. Aina kun kääre vastaanottaa tietoja järjestelmäkutsusta, se analysoi ne ja antaa ne ohjelmalle selvästi. Kaikki koneen vuorovaikutteiset toiminnot ohjelmassa muunnetaan lopulta järjestelmäkutsuksi. Joten katsotaanpa joitain heistä. Linux-järjestelmäkutsuista on pitkä luettelo, jota voimme käyttää Linux-järjestelmässämme. Tässä on luettelo joistakin yleisimmistä ja enimmäkseen käytetyistä Linux-järjestelmäpuheluista.

Keskustellaan joistakin Linux-järjestelmän puheluista artikkelissamme olevan C-kielen avulla, jotta voimme saada siitä käytännön apua.

Avaa järjestelmäkutsu:

Voimme käyttää Linux-jakelumme "Open" -järjestelmäkutsua avaamaan nopeasti asiakirjan, jonka määritämme C-kielikoodissamme. Käynnistä ensin komentoterminaali. Voit käyttää pikanäppäintä "Ctrl + Alt + T". Oletetaan, että sinulla on tekstitiedostotesti.txt ”kotihakemistossa, ja siinä on jonkin verran sisältöä. Joten alussa sinun on luotava uusi C-tyyppinen tiedostonimi “uusi.c ”päätelaitteessa nanoeditorin kautta. Siksi kokeile alla olevaa yksinkertaista nano-ohjetta.

$ nano uusi.c

Nyt Nano-editori on käynnistetty. Kirjoita siihen alla esitetty koodi. Koodissa on kaksi tiedostojen kuvaajaa. Molemmat tiedostot voidaan avata avoimen järjestelmäkutsun avulla. Ensimmäinen kuvaaja sisältää luetun puhelun ja toinen kirjoitusfunktion. Ensimmäinen avoin puhelu avaa tekstitiedostotestin.txt "ja sen sisällön tallentaminen tiedostokuvaajaan" fd ". Toinen avoin järjestelmäpuhelu luo tiedoston nimeltä "kohde". ”Kohde” -asiakirja on hyvitetty ”fd1” -tiedoston kuvaajaan. Kirjoitusohjetta käytetään puskurin datatavujen transkriptointiin. Napauta “Ctrl + S” koodin tallentamiseksi ja paina pikanäppäintä “Ctrl + X” sulkeaksesi tiedoston.

Suorita gcc-kääntöohje tämän C-koodin kääntämiseksi.

$ gcc uusi.c

Suoritetaan koodi yksinkertaisen a.out ”-kysely kuoressa seuraavasti:

$ ./ a.ulos

Lähtötiedot on lähetetty tiedostoon "kohde". Tarkistetaan kohde-tiedosto käyttämällä kissa-kyselyä. Lähtönäytössä näkyy 20 merkkitietoa kohdetiedostossa.

$ kissa tavoite

Exec-järjestelmän kutsu:

Exec-järjestelmäkutsu lähetetään parhaillaan käsiteltävän tiedoston suorittamiseksi. Entinen suoritettava tiedosto korvataan ja nykyistä tiedostoa käytetään aina kun exec kutsutaan. Exec-järjestelmäkutsun avulla voidaan olettaa, että näin tekemällä korvaa silmukan vanha asiakirja tai sovellus uudella. Uutta ohjelmistoa käytetään korvaamaan koko prosessin materiaali. Asiakirja, jonka otsikko annetaan lausekkeessa aina, kun exec (): n käynnistäminen käynnistetään, korvataan käyttäjätiedot-osalla, joka suorittaa exec () -järjestelmän kutsun (). Joten avaa komentoterminaali ja luo nanoeditorilla uusi C-tyyppinen tiedosto seuraavasti:

$ nano exp.c

Toimittaja on nyt avattu. Kirjoita siihen koko alla oleva C-kielikoodi. Siihen sisältyy kolme pääkirjastoa. Sen jälkeen päätoiminto on instantoitu. Tulostuslausekkeessa on näytetty merkkijonodata ja tiedoston prosessin tunnus “exp.c ”. Getpid () -funktiota on käytetty tähän tarkoitukseen. Sitten meillä on hahmotyyppinen taulukko, jossa on joitain arvoja. Exec-järjestelmän kutsua on käytetty tiedostonimen ja taulukon yläpuolisen yhden rivin argumenttina. Nyt tiedosto “hei.c ”käsitellään. Sen jälkeen uusi tulostuslausunto tulee niin pitkälle, mutta sitä ei koskaan suoriteta. Tallenna tiedosto painamalla "Ctrl + S". Poistu painamalla "Ctrl + X".

Nyt on aika luoda toinen c-tiedosto “hei.c ”käyttämällä nanoeditoria. Käytä alla olevaa kyselyä kuoressa.

$ nano hei.c

Kirjoita siihen alla oleva koodi. Tämä koodi sisältää kaksi tulostuslauseketta päätoiminnossa. Ensimmäinen tulostaa vain siinä annetun merkkijonon ja toinen tulostaa merkkijonon haettaessa tällä hetkellä käytetyn tiedoston prosessitunnusta, joka on "hei.c ”.

Kootaan molemmat tiedostot yksi toisensa jälkeen gcc: llä.

$ gcc -o exp exp.c

$ gcc -o hei hei.c

Kun suoritamme exp.c-tiedosto, se tuottaa ensimmäisen tulostuslausekkeen exp.c-tiedosto ja molemmat tulostusviivat hei.c-tiedosto.

$ ./ exp

Päätelmä:

Olemme käsitelleet koko Linux-järjestelmäkutsun konseptin ja sen, miten niitä voidaan käyttää Linux-järjestelmässäsi. Olemme käyttäneet Ubuntu 20: ta.04 toteutettaessa tätä konseptia.

Parhaat komentorivipelit Linuxille
Komentorivi ei ole vain suurin liittolainen Linuxia käytettäessä - se voi olla myös viihteen lähde, koska voit käyttää sitä pelaamaan monia hauskoja p...
Parhaat Linux-peliohjaimen kartoitussovellukset
Jos haluat pelata pelejä Linuxissa peliohjaimella tyypillisen näppäimistön ja hiiren syöttöjärjestelmän sijaan, on sinulle hyödyllisiä sovelluksia. Mo...
Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...