Apeluri de sistem

Ce este un apel de sistem în Linux și cum funcționează cu exemple

Ce este un apel de sistem în Linux și cum funcționează cu exemple

Un apel de sistem este o funcție care permite unui proces să comunice cu nucleul Linux. Este doar o modalitate programatică pentru un program de calculator de a comanda o facilitate din nucleul sistemului de operare. Apelurile de sistem expun resursele sistemului de operare programelor de utilizator printr-un API (Application Programming Interface). Apelurile de sistem pot accesa doar cadrul nucleului. Apelurile de sistem sunt necesare pentru toate serviciile care au nevoie de resurse.

Kernel-ul Linux este un software propriu care încarcă și operează pe dispozitiv în stadiul cel puțin potențial. Sarcina sa este de a organiza tot ceea ce se întâmplă pe mașină, de la tastatură, unitate de disc și evenimente de rețea până la furnizarea de feluri de timp pentru executarea simultană a diferitelor programe. Separarea de software și hardware creează un balon sigur care îmbunătățește protecția și fiabilitatea. Aplicațiile neprivilegiate nu pot accesa spațiul de stocare al altui program și, dacă unul nu reușește, nucleul suspendă procesul, astfel încât să nu afecteze întregul sistem.

Înveliș subțire pentru napolitane:

Apelurile de sistem Linux nu sunt redate explicit către nucleu în anumite programe. Aproape toate programele utilizează biblioteca C de bază și oferă un înveliș ușor, dar esențial peste apelurile de sistem Linux. Depozitul oferă apoi apelul de mașină Linux însoțitor după ce se asigură că parametrii caracteristicii sunt traduși în registrele procesorului corecte. Ori de câte ori ambalajul primește date de la apelul de sistem, acesta le analizează și le contribuie în mod clar la program. Orice operație interactivă a mașinii într-un program este convertită în cele din urmă într-un apel de sistem. Deci, să aruncăm o privire asupra unora dintre ele. Există o listă lungă de apeluri de sistem Linux pe care le putem folosi în sistemul nostru Linux. Iată lista unor apeluri de sistem Linux obișnuite și cele mai utilizate.

Să discutăm câteva dintre apelurile de sistem Linux folosind limbajul C în articolul nostru pentru a ne ajuta cu el.

Apel sistem deschis:

Putem utiliza apelul de sistem „Deschis” în distribuția noastră Linux pentru a deschide rapid documentul, pe care îl vom specifica în codul limbajului C. Lansați mai întâi terminalul de comandă. Puteți utiliza comanda rapidă „Ctrl + Alt + T”. Să presupunem că aveți un fișier text „test.txt ”în directorul principal și conține un conținut în el. Deci, la început, trebuie să creați un nou nume de fișier de tip C „nou.c ”în terminal prin nano editor. Prin urmare, încercați instrucțiunile simple de mai jos nano.

$ nano nou.c

Acum, editorul Nano a fost lansat. Introduceți codul de mai jos. Avem doi descriptori de fișiere în cod. Ambele fișiere pot fi deschise folosind apelul de sistem deschis. Primul descriptor conține un apel citit, iar al doilea conține funcția de scriere. Primul apel deschis deschide fișierul text „test.txt ”și salvarea conținutului său în descriptorul de fișiere„ fd ”. Al doilea apel de sistem deschis creează un fișier numit „țintă”. Documentul „țintă” a fost rambursat la un descriptor de fișier „fd1”. Instrucțiunea de scriere este utilizată pentru a transcrie octeții de date în buffer. Atingeți „Ctrl + S” pentru a salva codul și apăsați tasta de comandă rapidă „Ctrl + X” pentru a părăsi fișierul.

Rulați instrucțiunea de compilare gcc pentru a compila acest cod C.

$ gcc nou.c

Să executăm codul folosind simplul „a.interogare ”în shell după cum urmează:

$ ./A.afară

Datele de ieșire au fost transmise către fișierul „țintă”. Să verificăm fișierul „țintă” folosind interogarea „pisică”. Ecranul de ieșire afișează datele de 20 de caractere din fișierul „țintă”.

$ pisică țintă

Apel sistem Exec:

Apelul de sistem exec este respins pentru a rula un fișier care este în curs de procesare. Fostul fișier executabil este înlocuit, iar fișierul curent este operat ori de câte ori este chemat execut. Utilizând un apel de sistem exec, putem presupune că acest lucru va suprascrie vechiul document sau aplicație în buclă cu unul nou. Un nou software este utilizat pentru a suprascrie întregul material al procesului. Documentul al cărui titlu este dat în declarație ori de câte ori se invocă exec () este înlocuit cu secțiunea de informații despre utilizator care execută apelul de sistem exec (). Deci, deschideți terminalul de comandă și, utilizând editorul nano, creați un nou fișier de tip C după cum urmează:

exp. $ nano.c

Editorul a fost deschis acum. Scrieți întregul cod de limbă C de mai jos. Există trei biblioteci principale incluse în acesta. După aceea, funcția principală a fost instanțiată. Declarația de tipărire a arătat datele șirului și ID-ul procesului fișierului „exp.c ”. Funcția getpid () a fost utilizată în acest scop. Apoi avem o matrice de tipuri de caractere cu câteva valori în ea. Apelul de sistem exec a fost folosit pentru a lua numele fișierului și matricea de o linie de deasupra ca argument. Acum fișierul „salut.c ”va fi procesat. După aceea, o altă declarație tipărită vine până acum, dar nu va fi executată niciodată. Apăsați „Ctrl + S” pentru a salva acest fișier. Apăsați pe „Ctrl + X” pentru a ieși.

Acum este timpul să creați un alt fișier c, „salut.c ”folosind editorul nano. Utilizați interogarea de mai jos din shell pentru a face acest lucru.

$ nano salut.c

Scrieți codul de mai jos în el. Acest cod conține două instrucțiuni de imprimare în funcția principală. Primul este doar tipărirea unui șir dat în acesta, iar al doilea tipărește șirul în timp ce preia ID-ul procesului fișierului utilizat în prezent, care este „salut.c ”.

Să compilăm ambele fișiere unul după altul folosind gcc.

$ gcc -o exp exp.c

$ gcc -o salut salut.c

Când executăm exp.c, va afișa prima declarație de tipărire din exp.fișierul c și ambele linii de imprimare de pe Hello.fișier c.

$ ./ exp

Concluzie:

Am dezvoltat întregul concept al apelurilor de sistem Linux și modul în care acestea pot fi utilizate în sistemul dvs. Linux. Am folosit Ubuntu 20.04 în timpul implementării acestui concept.

Instalați cel mai recent joc de strategie OpenRA pe Ubuntu Linux
OpenRA este un motor de jocuri de strategie în timp real Libre / Free care recreează primele jocuri Westwood, cum ar fi clasicul Command & Conquer: Re...
Instalați cel mai recent Dolphin Emulator pentru Gamecube și Wii pe Linux
Emulatorul Dolphin vă permite să jucați jocurile alese de Gamecube și Wii pe computerele personale Linux (PC). Fiind un emulator de joc liber disponi...
Cum se folosește GameConqueror Cheat Engine în Linux
Articolul acoperă un ghid despre utilizarea sistemului de înșelăciune GameConqueror în Linux. Mulți utilizatori care joacă jocuri pe Windows folosesc ...