Mis on süsteemikõne Linuxis ja kuidas see näidetega töötab

What Is System Call Linux



Süsteemikõne on funktsioon, mis võimaldab protsessil suhelda Linuxi tuumaga. See on lihtsalt programmiline viis arvutiprogrammil tellida võimalus operatsioonisüsteemi tuumast. Süsteemikõned paljastavad operatsioonisüsteemi ressursid kasutajaprogrammidele API (Application Programming Interface) kaudu. Süsteemikõnedele pääseb juurde ainult tuumaraamistikule. Kõigi ressursse vajavate teenuste jaoks on vaja süsteemikõnesid.

Linuxi kernel on patenteeritud tarkvara, mis laadib seadet ja töötab sellel võimalikult vähe. Selle ülesanne on korraldada kõik masinas toimuv, alates klaviatuurist, kettaseadmest ja võrgusündmustest kuni erinevate programmide samaaegse täitmise ajaviilude pakkumiseni. Tarkvara ja riistvara eraldamine loob turvalise mulli, mis parandab kaitset ja töökindlust. Privileegitud rakendused ei pääse teise programmi salvestusruumi ja kui üks ebaõnnestub, peatab tuum protsessi, nii et see ei kahjustaks kogu süsteemi.







Vahvli õhuke ümbris:

Teatud programmides ei renderdata Linuxi süsteemikõnesid selgesõnaliselt tuumale. Peaaegu kõik programmid kasutavad C -põhiteeki ja pakuvad Linuxi süsteemikõnedele kerget, kuid olulist ümbrist. Seejärel tagab hoidla kaasneva Linuxi masinakõne pärast seda, kui on taganud, et funktsiooniparameetrid tõlgitakse õigetesse protsessoriregistritesse. Kui ümbris saab süsteemikõnest andmeid, analüüsib see neid ja panustab programmi selgelt. Iga programmiga masinaga interaktiivne toiming muudetakse lõpuks süsteemikõneks. Niisiis, vaatame mõnda neist. Seal on pikk nimekiri Linuxi süsteemikõnedest, mida saame oma Linuxi süsteemis kasutada. Siin on mõned levinumad ja enamasti kasutatavad Linuxi süsteemikõned.



  • Avatud
  • Sulge
  • Exec
  • Kirjutage
  • Loe
  • Lseek
  • Valige

Arutame mõningaid Linuxi süsteemikõnesid, kasutades meie artiklis C-keelt, et sellega hakkama saada.



Avage süsteemikõne:

Dokumendi kiireks avamiseks saame oma Linuxi distributsioonis kasutada avatud süsteemi kõnet, mille määrame oma C -keele koodis. Esmalt käivitage käsuterminal. Võite kasutada kiirklahvi Ctrl+Alt+T. Oletame, et kodukataloogis on tekstifail test.txt ja see sisaldab teatud sisu. Niisiis, alguses peate terminalis nanoredaktori kaudu looma uue C -tüüpi failinime new.c. Seetõttu proovige allolevat lihtsat nanojuhendit.





$nanouus.c

Nüüd on käivitatud Nano redaktor. Sisestage sinna allpool näidatud kood. Meil on koodis kaks failikirjeldust. Mõlemad failid saab avada avatud süsteemikõne abil. Esimene kirjeldus sisaldab lugemiskõnet ja teine ​​kirjutamisfunktsiooni. Esimene avatud kõne on tekstifaili test.txt avamine ja selle sisu salvestamine failikirjeldusse fd. Teine avatud süsteemi kõne loob faili nimega target. Dokumendi sihtmärk on fd1 -faili deskriptorile tagasi makstud. Kirjutamisjuhiseid kasutatakse puhvris olevate andmete baitide transkribeerimiseks. Koodi salvestamiseks toksake Ctrl+S ja failist väljumiseks vajutage kiirklahvi Ctrl+X.



Selle C -koodi kompileerimiseks käivitage käsk gcc compile.

$gccuus.c

Käivitame koodi, kasutades kesta lihtsat a.out päringut järgmiselt:

$./a. välja

Väljundandmed on edastatud faili sihtmärgile. Kontrollime sihtfaili kassi päringu abil. Väljundekraan näitab sihtfaili 20 tähemärgi andmeid.

$kasssihtmärk

Käivita süsteemikõne:

Hetkel töödeldava faili käivitamiseks tühistatakse täitmissüsteemi kõne. Varasem käivitatav fail asendatakse ja praegust faili käitatakse iga kord, kui käivitatakse fail. Kasutades täitmissüsteemi kõnet, võime eeldada, et see kirjutab vana dokumendi või rakenduse ringis uuega üle. Kogu tarkvara materjali alistamiseks kasutatakse uut tarkvara. Dokument, mille pealkiri on avalduses antud alati, kui käivitada exec (), asendatakse kasutajainfo jaotisega, mis käivitab exec () süsteemikõne (). Avage käsuterminal ja looge nanoredaktori abil uus C -tüüpi fail järgmiselt:

$nanoeksp. c

Toimetaja on nüüd avatud. Kirjutage sinna alla kogu C -keele kood. Siia kuulub kolm peamist raamatukogu. Pärast seda on põhifunktsioon ilmutatud. Prindiavalduses on näidatud stringi andmed ja faili exp.c protsessi ID. Selleks on kasutatud funktsiooni getpid (). Siis on meil märgi tüüpi massiiv, milles on mõned väärtused. Süsteemi käivitamist on kasutatud failinime ja üherealise massiivi kohal oleva argumendina. Nüüd töödeldakse faili hello.c. Pärast seda tuleb veel üks trükiväljaanne, kuid seda ei täideta kunagi. Selle faili salvestamiseks vajutage Ctrl+S. Väljumiseks vajutage Ctrl+X.

Nüüd on aeg luua uus c -fail, hello.c, kasutades nanoredaktorit. Selleks kasutage kesta allolevat päringut.

$nanotere.c

Kirjutage sinna alla kood. See kood sisaldab põhifunktsioonis kahte printimislauset. Esimene neist on ainult selles sisalduva stringi printimine ja teine ​​stringi printimine praegu kasutatava faili protsessi ID toomisel, milleks on hello.c.

Kompileerime mõlemad failid gcc abil üksteise järel.

$gcc–O exp exp.c

$gcc- tere tere. C

Kui käivitame faili exp.c, väljastab see esimese printimisavalduse failist exp.c ja mõlemad trükiridad failist hello.c.

$./exp

Järeldus:

Oleme välja töötanud kogu Linuxi süsteemikõnede kontseptsiooni ja selle, kuidas neid saab teie Linuxi süsteemis kasutada. Oleme selle kontseptsiooni rakendamisel kasutanud Ubuntu 20.04.