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

What Is System Call Linux



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

Jadro Linuxu je proprietárny softvér, ktorý sa načítava a funguje v zariadení v najmenej potenciálnej fáze. Jeho úlohou je organizovať všetko, čo sa deje na počítači, od klávesnice, diskovej jednotky a sieťových udalostí až po poskytovanie časových úsekov na súbežné spúšťanie rôznych programov. Oddelenie softvéru a hardvéru vytvára bezpečnú bublinu, ktorá zvyšuje ochranu a spoľahlivosť. Neprivilegované aplikácie sa nedokážu dostať do úložiska iného programu, a ak niektorý zlyhá, jadro proces pozastaví, aby nepoškodilo celý systém.







Tenký obal na oblátku:

Systémové volania systému Linux nie sú v určitých programoch explicitne vykreslené do jadra. Takmer všetky programy používajú základnú knižnicu C a ponúkajú ľahký, ale zásadný obal nad systémovými hovormi Linuxu. Úložisko potom poskytne sprievodné volanie počítača so systémom Linux po zaistení prekladu parametrov funkcie do správnych registrov procesora. Kedykoľvek wrapper prijme údaje zo systémového volania, analyzuje ich a jasne ich prispeje do programu. Akákoľvek strojovo interaktívna operácia v programe sa nakoniec prevedie na systémové volanie. Pozrime sa teda 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 hovorov Linuxu.



  • Otvorené
  • Zavrieť
  • Exec
  • Napíšte
  • Čítať
  • Lseek
  • Vyberte

Poďme diskutovať o niektorých systémových hovoroch Linuxu pomocou jazyka C v našom článku, aby sme si ich vyskúšali.



Otvorené systémové volanie:

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





$nanonový.c

Teraz bol spustený editor Nano. Zadajte doň nižšie uvedený 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 hovor na čítanie 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é otvorené systémové volanie je vytvorenie súboru s názvom target. Cieľ dokumentu bol preplatený do deskriptora 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 kód uložíte 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.

$gccnový.c

Spustime kód pomocou jednoduchého a.out dotazu v shelli nasledovne:

$./a.out

Výstupné údaje boli prenesené do cieľa súboru. Skontrolujme cieľový súbor pomocou dotazu mačka. Výstupná obrazovka zobrazuje 20 znakov v cieľovom súbore.

$katcieľ

Systémový hovor Exec:

Systémové volanie exec je prerušené, aby sa spustil súbor, ktorý sa práve spracováva. Predchádzajúci spustiteľný súbor je nahradený a aktuálny súbor je používaný vždy, keď sa zavolá príkaz exec. Použitím systémového volania exec môžeme predpokladať, že tým prepíšeme starý dokument alebo aplikáciu v slučke novým. Na nahradenie materiálu celého procesu sa používa nový softvér. Dokument, ktorého názov je uvedený vo výkaze vždy, keď sa vyvolá príkaz exec (), nahradí sekciu s informáciami o používateľovi, ktorá spúšťa systémové volanie exec () (). Otvorte teda príkazový terminál a pomocou editora nano vytvorte nový súbor typu C nasledovne:

$nanoexp.c

Editor je teraz otvorený. Napíšte doň celý nižšie uvedený kód jazyka C. Obsahuje tri hlavné knižnice. Potom sa spustí hlavná funkcia. V tlačovom vyhlásení sa zobrazujú údaje reťazca a ID procesu súboru exp.c. Na tento účel bola použitá funkcia getpid (). Potom tu máme pole typu znak, v ktorom sú niektoré hodnoty. Systémové volanie exec bolo použité ako argument ako názov súboru a jednoriadkový riadok nad poľom. Teraz bude spracovaný súbor hello.c. Potom príde ďalší tlačový výpis, ktorý však nebude nikdy vykonaný. Tento súbor uložte stlačením klávesov Ctrl+S. Ukončite stlačením Ctrl+X.

Teraz je načase vytvoriť ďalší súbor c, hello.c, pomocou nano editora. Na to použite nižšie uvedený dotaz v shelli.

$nanoahoj.c

Napíšte doň nasledujúci kód. Tento kód obsahuje dve tlačové príkazy v hlavnej funkcii. Prvým je iba vytlačenie reťazca, ktorý je v ňom uvedený, a druhým je vytlačenie reťazca pri načítaní ID procesu aktuálne použitého súboru, ktorým je hello.c.

Zostavme oba súbory jeden po druhom pomocou gcc.

$gcc–O exp expc. C

$gcc–Ahoj ahoj.c

Keď spustíme súbor exp.c, vydá prvý príkaz pre tlač zo súboru exp.c a oba tlačové riadky zo súboru hello.c.

$./exp

Záver:

Podrobne sme rozpracovali celý koncept systémových hovorov Linuxu a spôsob ich použitia vo vašom systéme Linux. Pri implementácii tohto konceptu sme použili Ubuntu 20.04.