Què és una trucada de sistema a Linux i com funciona amb exemples

What Is System Call Linux



Una trucada al sistema és una funció que permet que un procés es comuniqui amb el nucli Linux. És només una manera programàtica per a un programa d’ordinador d’ordenar una instal·lació des del nucli del sistema operatiu. Les trucades al sistema exposen els recursos del sistema operatiu als programes d’usuari mitjançant una API (Application Programming Interface). Les trucades del sistema només poden accedir al marc del nucli. Les trucades al sistema són necessàries per a tots els serveis que necessiten recursos.

El nucli Linux és un programari propietari que carrega i opera al dispositiu en una etapa mínima potencial. La seva tasca és organitzar tot el que passa a la màquina, des del teclat, la unitat de disc i els esdeveniments de xarxa fins a proporcionar intervals de temps per a l'execució simultània de diferents programes. La separació de programari i maquinari crea una bombolla segura que millora la protecció i la fiabilitat. Les aplicacions no privilegiades no poden accedir a l’emmagatzematge d’un altre programa i, si una falla, el nucli suspèn el procés perquè no danyi tot el sistema.







Embolcall prim d’hòsties:

Les trucades del sistema Linux no es representen explícitament al nucli en determinats programes. Gairebé tots els programes utilitzen la biblioteca C bàsica i ofereixen un embolcall lleuger però essencial sobre les trucades del sistema Linux. A continuació, el dipòsit proporciona la trucada de màquina Linux que l'acompanya després d'assegurar-se que els paràmetres de les funcions es tradueixen als registres de processador adequats. Sempre que l’embolcall rep dades de la trucada del sistema, les analitza i les aporta clarament al programa. Qualsevol operació interactiva amb la màquina en un programa es converteix finalment en una trucada al sistema. Per tant, fem una ullada a alguns d’ells. Hi ha una llarga llista de trucades al sistema Linux que podem utilitzar al nostre sistema Linux. Aquí teniu la llista d'algunes trucades al sistema Linux més habituals i utilitzades.



  • Obert
  • Tanca
  • Exec
  • Escriu
  • Llegiu
  • Lseek
  • Seleccioneu

Analitzem algunes de les trucades del sistema Linux que fan servir el llenguatge C al nostre article per utilitzar-les de manera pràctica.



Obre la trucada al sistema:

Podem utilitzar la trucada del sistema Open a la nostra distribució Linux per obrir ràpidament el document, que especificarem al nostre codi de llenguatge C. Inicieu primer el terminal d’ordres. Podeu utilitzar la drecera Ctrl + Alt + T. Suposem que teniu un fitxer de text test.txt al directori inicial i que conté contingut. Per tant, al principi, heu de crear un nou nom de fitxer de tipus C new.c al terminal mitjançant nano editor. Per tant, proveu la següent instrucció nano senzilla.





$nanonou.c

Ara s’ha llançat l’editor Nano. Escriviu el codi que es mostra a continuació. Tenim dos descriptors de fitxers al codi. Tots dos fitxers es poden obrir mitjançant la trucada del sistema obert. El primer descriptor conté una trucada de lectura i el segon conté la funció d’escriptura. La primera trucada oberta és obrir el fitxer de text test.txt i desar-ne el contingut al descriptor de fitxers fd. La segona trucada del sistema obert està creant un fitxer anomenat objectiu. La destinació del document s'ha reembossat a un descriptor de fitxer fd1. La instrucció d'escriptura s'utilitza per transcriure els bytes de dades al buffer. Toqueu Ctrl + S per desar el codi i premeu la tecla de drecera Ctrl + X per sortir del fitxer.



Executeu la instrucció de compilació gcc per compilar aquest codi C.

$gccnou.c

Executem el codi mitjançant la senzilla consulta a.out del shell de la manera següent:

$./a.out

Les dades de sortida s’han transmès a la destinació del fitxer. Comproveu el fitxer de destinació mitjançant la consulta de cat. La pantalla de sortida mostra les dades de 20 caràcters al fitxer de destinació.

$gatobjectiu

Trucada del sistema Exec:

La trucada del sistema exec s’està rebutjant per executar un fitxer que s’està processant actualment. Es substitueix l'anterior fitxer executable i el fitxer actual s'executa sempre que es crida execut. En utilitzar una trucada al sistema exec, podem suposar que en fer-ho se sobreescriurà el document o l’aplicació antiga al bucle amb un de nou. El nou programari s’utilitza per anul·lar tot el material del procés. El document el títol del qual apareix a la declaració cada vegada que invoca exec () substitueix la secció d'informació de l'usuari que executa la trucada al sistema exec (). Per tant, obriu el terminal d’ordres i, mitjançant l’editor nano, creeu un fitxer de tipus C nou de la manera següent:

$nanoexp.c

L'editor s'ha obert ara. Escriviu-hi tot el codi d’idioma C. Hi ha tres biblioteques principals incloses. Després d'això, s'ha instanciat la funció principal. La declaració d'impressió mostra les dades de la cadena i l'identificador de procés del fitxer exp.c. La funció getpid () s'ha utilitzat amb aquest propòsit. Després tenim una matriu de tipus de caràcters amb alguns valors. S'ha utilitzat la trucada del sistema exec per prendre el nom del fitxer i la matriu d'una línia superior com a argument. Ara es processarà el fitxer hello.c. Després d'això, arriba una altra declaració d'impressió fins ara, però mai s'executarà. Premeu Ctrl + S per desar aquest fitxer. Feu clic a Ctrl + X per sortir.

Ara és hora de crear un altre fitxer c, hello.c amb l'editor nano. Utilitzeu la consulta següent a l'intèrpret d'ordres per fer-ho.

$nanohola.c

Escriviu-hi el codi següent. Aquest codi conté dues sentències d'impressió a la funció principal. La primera només imprimeix una cadena que s’hi indica i la segona imprimeix la cadena mentre s’obté l’identificador de procés del fitxer utilitzat actualment, que és hello.c.

Compilem els dos fitxers un darrere l’altre mitjançant gcc.

$gcc–O exp expc

$gcc–O hola hola.c

Quan executem el fitxer exp.c, sortirà la primera instrucció d'impressió del fitxer exp.c i les dues línies d'impressió del fitxer hello.c.

$./exp

Conclusió:

Hem elaborat tot el concepte de trucades al sistema Linux i com es poden utilitzar al vostre sistema Linux. Hem utilitzat Ubuntu 20.04 mentre implementàvem aquest concepte.