Systémová volání

Co je to systémové volání v Linuxu a jak to funguje s příklady

Co je to systémové volání v Linuxu a jak to funguje s příklady

Systémové volání je funkce, která umožňuje procesu komunikovat s jádrem Linuxu. Je to jen programový způsob, jak si počítačový program může objednat zařízení z jádra operačního systému. Systémová volání vystavují prostředky operačního systému uživatelským programům prostřednictvím API (Application Programming Interface). Systémová volání mají přístup pouze k rámci jádra. Systémová volání jsou potřebná pro všechny služby, které potřebují prostředky.

Linuxové jádro je proprietární software, který se načítá a pracuje na zařízení v nejméně potenciální fázi. Jeho úkolem je organizovat vše, co se děje na stroji, od klávesnice, diskové jednotky a síťových událostí až po poskytování časových úseků pro souběžné provádění různých programů. Oddělení softwaru a hardwaru vytváří bezpečnou bublinu, která zlepšuje ochranu a spolehlivost. Neprivilegované aplikace nejsou schopny dosáhnout úložiště jiného programu a pokud některý selže, jádro pozastaví proces, aby nepoškodil celý systém.

Tenký obal na oplatky:

Systémová volání systému Linux nejsou v některých programech explicitně vykreslována jádru. Téměř všechny programy používají základní knihovnu C a nabízejí lehký, ale nezbytný obal přes volání systému Linux. Úložiště poté poskytuje doprovodné volání stroje Linux poté, co se ujistí, že parametry funkce jsou přeloženy do správných registrů procesoru. Kdykoli modul wrapper obdrží data ze systémového volání, analyzuje je a jasně do programu přispěje. Jakákoli strojově interaktivní operace v programu se nakonec převede na systémové volání. Pojďme se tedy podívat na některé z nich. Existuje dlouhý seznam systémových volání systému Linux, která můžeme v našem systému Linux použít. Zde je seznam některých běžných a nejčastěji používaných systémových volání systému Linux.

Pojďme si v našem článku promluvit o některých systémových voláních systému Linux pomocí jazyka C, abychom se s nimi seznámili.

Otevřené systémové volání:

Můžeme použít systémové volání „Otevřít“ v naší distribuci Linuxu k rychlému otevření dokumentu, který uvedeme v našem kódu jazyka C. Nejprve spusťte příkazový terminál. Můžete použít zkratku „Ctrl + Alt + T“. Předpokládejme, že máte textový soubor „test.txt “v domovském adresáři a obsahuje v něm určitý obsah. Na začátku tedy musíte vytvořit nový název souboru typu C „nový.c ”v terminálu pomocí nano editoru. Vyzkoušejte proto jednoduchou níže uvedenou nano instrukci.

$ nano nové.C

Nyní byl spuštěn editor Nano. Zadejte níže zobrazený kód. V kódu máme dva deskriptory souborů. Oba soubory lze otevřít pomocí otevřeného systémového volání. První deskriptor obsahuje čtení a druhý obsahuje funkci zápisu. První otevřený hovor otevírá textový soubor „test.txt “a uložení jeho obsahu do deskriptoru souboru„ fd “. Druhým otevřeným systémovým voláním je vytvoření souboru s názvem „target“. Dokument „target“ byl vrácen deskriptoru souboru „fd1“. Instrukce pro zápis se používá k přepisu bajtů dat ve vyrovnávací paměti. Klepnutím na „Ctrl + S“ uložte kód a stisknutím klávesové zkratky „Ctrl + X“ soubor ukončete.

Spusťte instrukci kompilace gcc a zkompilujte tento kód C.

$ gcc nové.C

Pojďme spustit kód pomocí jednoduchého „a.out ”dotaz v shellu takto:

$ ./A.ven

Výstupní data byla přenesena do souboru „target“. Podívejme se na „cílový“ soubor pomocí dotazu „kočka“. Výstupní obrazovka zobrazuje 20 znaků v „cílovém“ souboru.

$ kočka cíl

Systémové volání Exec:

Odvolává se systémové volání exec, aby se spustil soubor, který se právě zpracovává. Bývalý spustitelný soubor je nahrazen a aktuální soubor je obsluhován, kdykoli se volá exec. Použitím systémového volání exec můžeme předpokládat, že tím přepíšete starý dokument nebo aplikaci ve smyčce novým. K přepsání materiálu celého procesu se používá nový software. Dokument, jehož název je uveden v příkazu, kdykoli vyvoláním příkazu exec () je nahrazena část s informacemi o uživateli, která spouští systémové volání exec () (). Takže otevřete příkazový terminál a pomocí nano editoru vytvořte nový soubor typu C následujícím způsobem:

$ nano exp.C

Editor byl nyní otevřen. Napište do ní celý níže uvedený kód jazyka C. Jsou v něm zahrnuty tři hlavní knihovny. Poté byla vytvořena instance hlavní funkce. Tiskový výpis zobrazuje data řetězce a ID procesu souboru „exp.C". Pro tento účel byla použita funkce getpid (). Pak máme pole typu znaků s několika hodnotami. Systémové volání exec bylo použito k převzetí názvu souboru a jednoho řádku nad polem jako argumentu. Nyní soubor „ahoj.c “bude zpracováno. Poté přichází další tiskové prohlášení, ale nikdy nebude provedeno. Stisknutím „Ctrl + S“ tento soubor uložte. Ukončete stisknutím klávesy „Ctrl + X“.

Nyní je čas vytvořit další soubor c, “ahoj.c ”pomocí nano editoru. Použijte níže uvedený dotaz v shellu.

$ nano ahoj.C

Napište do ní níže uvedený kód. Tento kód obsahuje dva tiskové příkazy v hlavní funkci. První pouze tiskne řetězec v něm zadaný a druhý tiskne řetězec při načítání ID procesu aktuálně používaného souboru, což je „ahoj.C".

Zkompilovejme oba soubory jeden po druhém pomocí gcc.

$ gcc -o exp exp.C

$ gcc -o ahoj ahoj.C

Když provedeme exp.c soubor, odešle první tiskový výpis z exp.c soubor a oba tiskové řádky z ahoj.soubor c.

$ ./ exp

Závěr:

Vypracovali jsme celou koncepci systémových volání systému Linux a jejich použití ve vašem systému Linux. Použili jsme Ubuntu 20.04 při provádění tohoto konceptu.

Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...
Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...
Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...