Systémové volania

Čo je to systémové volanie v systéme Linux a ako to funguje s príkladmi

Čo je to systémové volanie v systéme Linux a ako to funguje s príkladmi

Systémové volanie je funkcia, ktorá umožňuje procesu komunikovať s jadrom Linuxu. Je to iba programový spôsob, ako si môže počítačový program objednať zariadenie z jadra operačného systému. Systémové volania vystavujú zdroje operačného systému používateľským programom prostredníctvom rozhrania API (Application Programming Interface). Systémové volania majú prístup iba k rámcu jadra. Pre všetky služby, ktoré potrebujú zdroje, sú potrebné systémové volania.

Linuxové jadro je patentovaný softvér, ktorý sa načíta a pracuje na zariadení v najmenej potenciálnom štádiu. Jeho úlohou je organizovať všetko, čo sa na stroji deje, od klávesnice, diskovej jednotky a sieťových udalostí až po poskytovanie časových úsekov na súčasné vykonávanie rôznych programov. Oddelenie softvéru a hardvéru vytvára bezpečnú bublinu, ktorá zvyšuje ochranu a spoľahlivosť. Neprivilegované aplikácie nie sú schopné dostať sa na úložisko iného programu a ak niektorý zlyhá, jadro proces pozastaví, aby nepoškodil celý systém.

Tenký obal na oblátky:

Systémové volania systému Linux nie sú v určitých programoch explicitne poskytované jadru. Takmer všetky programy používajú základnú knižnicu C a ponúkajú ľahký, ale nevyhnutný obal cez systémové volania systému Linux. Úložisko potom poskytuje sprievodné volanie stroja Linux po zaistení preloženia parametrov funkcií do správnych registrov procesora. Kedykoľvek modul wrapper prijme údaje zo systémového volania, analyzuje ich a zreteľne ich prispieva do programu. Akákoľvek strojovo interaktívna operácia v programe sa nakoniec prevedie na systémové volanie. Poďme sa teda pozrieť na niektoré z nich. Existuje dlhý zoznam systémových hovorov systému Linux, ktoré môžeme použiť v našom systéme Linux. Tu je zoznam niektorých bežných a väčšinou používaných systémových volaní systému Linux.

Poďme si v našom článku rozobrať niektoré systémové volania Linuxu používajúce jazyk C, aby sme si to vyskúšali.

Otvorené systémové volanie:

Môžeme použiť systémové volanie „Otvoriť“ v našej distribúcii Linuxu na rýchle otvorenie dokumentu, ktorý uvedieme v našom kóde jazyka C. Najskôr spustite príkazový terminál. Môžete použiť skratku „Ctrl + Alt + T“. Predpokladajme, že máte textový súbor „test.txt ”v domovskom adresári a obsahuje v ňom určitý obsah. Na začiatku teda musíte vytvoriť nový názov súboru typu C „nový.c ”v termináli pomocou nano editora. Vyskúšajte preto jednoduchú nano inštrukciu nižšie.

$ nano nové.c

Teraz bol spustený editor Nano. Zadajte nižšie zobrazený kód. V kóde máme dva deskriptory súborov. Oba súbory je možné otvoriť pomocou otvoreného systémového volania. Prvý deskriptor obsahuje volanie čítania a druhý obsahuje funkciu zápisu. Prvým otvoreným hovorom je otvorenie textového súboru „test.txt “a uloženie jeho obsahu do deskriptora súboru„ fd “. Druhým otvoreným systémovým volaním je vytvorenie súboru s názvom „cieľ“. Cieľ „dokumentu“ bol preplatený deskriptoru súboru „fd1“. Inštrukcia na zápis sa používa na prepis bajtov údajov vo vyrovnávacej pamäti. Klepnutím na „Ctrl + S“ uložíte kód a stlačením klávesovej skratky „Ctrl + X“ súbor ukončíte.

Spustite inštrukciu kompilácie gcc na kompiláciu tohto kódu C.

$ gcc nové.c

Vykonajme kód pomocou jednoduchého „a.out “dotazu v shell takto:

$ ./ a.von

Výstupné údaje boli prenesené do súboru „target“. Poďme skontrolovať „cieľový“ súbor pomocou dotazu „mačka“. Výstupná obrazovka zobrazuje údaje o 20 znakoch v „cieľovom“ súbore.

$ cieľ pre mačky

Systémové volanie Exec:

Systémové volanie exec sa odvoláva na spustenie súboru, ktorý sa práve spracováva. Predchádzajúci spustiteľný súbor sa nahradí a aktuálny súbor sa použije, kedykoľvek sa volá exec. Použitím systémového volania exec môžeme predpokladať, že tým prepíšete starý dokument alebo aplikáciu v slučke novým. Na prepísanie materiálu celého procesu sa používa nový softvér. Dokument, ktorého názov je uvedený vo vyhlásení pri každom vyvolaní príkazu exec (), je nahradený časťou s informáciami o používateľovi, ktorá spúšťa systémové volanie exec () (). Takže otvorte príkazový terminál a pomocou editora nano vytvorte nový súbor typu C nasledovne:

$ nano exp.c

Editor je teraz otvorený. Vyplňte doň celý kód jazyka C. Sú v ňom zahrnuté tri hlavné knižnice. Potom bola vykonaná inštancia hlavnej funkcie. V tlačovom vyhlásení sa zobrazujú údaje o reťazci a ID procesu súboru „exp.c ”. Na tento účel sa použila funkcia getpid (). Potom máme pole typu znaku, v ktorom sú nejaké hodnoty. Systémové volanie exec sa použilo na to, aby sa ako argument vzal názov súboru a jednoriadkový riadok nad poľom. Teraz súbor „ahoj.c “bude spracované. Potom zatiaľ prichádza ďalšie tlačové vyhlásenie, ktoré sa však nikdy nevykoná. Stlačením klávesov „Ctrl + S“ tento súbor uložte. Ukončite stlačením klávesov „Ctrl + X“.

Teraz je čas vytvoriť ďalší súbor c, “ahoj.c ”pomocou nano editora. Použite na to nižšie uvedený dopyt v shelli.

$ nano ahoj.c

Napíšte do nej nasledujúci kód. Tento kód obsahuje dva tlačové príkazy v hlavnej funkcii. Prvý iba tlačí reťazec v ňom uvedený a druhý tlačí reťazec pri načítaní ID procesu aktuálne používaného súboru, ktorý je „ahoj.c ”.

Poďme zostaviť oba súbory jeden za druhým pomocou gcc.

$ gcc -o exp exp.c

$ gcc -o ahoj ahoj.c

Keď vykonáme exp.c súbor, vygeneruje prvý tlačový výpis z exp.c súbor a oba tlačové riadky z ahoj.c súbor.

$ ./ exp

Záver:

Vypracovali sme celú koncepciu systémových hovorov systému Linux a možnosti ich použitia vo vašom systéme Linux. Použili sme Ubuntu 20.04 pri implementácii tohto konceptu.

Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...
Hry HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
Mnoho vývojárov a vydavateľov hier prichádza s remastrom starých hier v rozlíšení HD, aby predĺžili životnosť franšízy. Prosím fanúšikov, ktorí požadu...