logo

Introducció de la trucada al sistema

En informàtica, a trucada al sistema és una manera programàtica en què un programa informàtic sol·licita un servei des del nucli del sistema operatiu en què s'executa. Una trucada al sistema és una manera perquè els programes ho facin interactuar amb el sistema operatiu . Un programa informàtic fa una trucada al sistema quan fa una sol·licitud al nucli del sistema operatiu. Trucada del sistema proporciona els serveis del sistema operatiu als programes d'usuari mitjançant la interfície de programa d'aplicació (API). Proporciona una interfície entre un procés i un sistema operatiu per permetre que els processos a nivell d'usuari sol·licitin serveis del sistema operatiu. Les trucades del sistema són els únics punts d'entrada al nucli sistema. Tots els programes que necessiten recursos han d'utilitzar trucades al sistema.

Un programa d'usuari pot interactuar amb el sistema operatiu mitjançant una trucada al sistema. El programa sol·licita una sèrie de serveis i el sistema operatiu respon llançant una sèrie de trucades al sistema per satisfer la sol·licitud. Una trucada al sistema es pot escriure en llenguatges d'alt nivell com C o Pascal o en llenguatge ensamblador. Si s'utilitza un llenguatge d'alt nivell, el sistema operatiu pot invocar directament trucades al sistema, que són funcions predefinides.



Una trucada al sistema és un mecanisme utilitzat pels programes per sol·licitar serveis des del sistema operatiu (SO). En termes més senzills, és una manera perquè un programa interactuï amb el sistema subjacent, com ara accedir a recursos de maquinari o realitzar operacions privilegiades.

Una trucada al sistema s'inicia pel programa que executa una instrucció específica, que activa un canvi a nucli mode, que permet al programa sol·licitar un servei al sistema operatiu. Aleshores, el sistema operatiu gestiona la sol·licitud, realitza les operacions necessàries i torna el resultat al programa.

Les trucades al sistema són essencials per al bon funcionament d'un sistema operatiu, ja que proporcionen una manera estandarditzada perquè els programes accedeixin als recursos del sistema. Sense les trucades al sistema, cada programa hauria d'implementar els seus propis mètodes per accedir al maquinari i als serveis del sistema, la qual cosa condueix a un comportament inconsistent i propens a errors.



Serveis que ofereixen les trucades del sistema

  • Creació i gestió de processos
  • Gestió de la memòria principal
  • Accés a fitxers, directoris i gestió del sistema de fitxers
  • Manipulació del dispositiu (E/S)
  • Protecció
  • Xarxa, etc.
    • Procés de control: acabar, avortar, crear, acabar, assignar i alliberar memòria.
    • Gestió de fitxers: crear, obrir, tancar, suprimir, llegir fitxers, etc.
    • Gestió de dispositius
    • Manteniment de la informació
    • Comunicació

Característiques de les trucades del sistema

  • Interfície: Les trucades al sistema proporcionen una interfície ben definida entre els programes d'usuari i el sistema operatiu. Els programes fan sol·licituds cridant a funcions específiques i el sistema operatiu respon executant el servei sol·licitat i retornant un resultat.
  • Protecció: Les trucades al sistema s'utilitzen per accedir a operacions amb privilegis que no estan disponibles per als programes d'usuari normals. El sistema operatiu utilitza aquest privilegi per protegir el sistema d'accés maliciós o no autoritzat.
  • Mode del nucli: Quan es fa una trucada al sistema, el programa es canvia temporalment del mode d'usuari al mode del nucli. En el mode nucli, el programa té accés a tots els recursos del sistema, inclosos el maquinari, la memòria i altres processos.
  • Canvi de context: Una trucada al sistema requereix un canvi de context, que implica desar l'estat del procés actual i canviar al mode del nucli per executar el servei sol·licitat. Això pot generar despeses generals, que poden afectar el rendiment del sistema.
  • Gestió d'errors: Les trucades al sistema poden retornar codis d'error per indicar problemes amb el servei sol·licitat. Els programes han de comprovar aquests errors i gestionar-los adequadament.
  • Sincronització: Les trucades del sistema es poden utilitzar per sincronitzar l'accés als recursos compartits, com ara fitxers o connexions de xarxa. El sistema operatiu proporciona mecanismes de sincronització, com ara bloquejos o semàfors, per garantir que diversos programes puguin accedir a aquests recursos de manera segura.

Avantatges de les trucades del sistema

  • Accés als recursos de maquinari: Les trucades al sistema permeten als programes accedir a recursos de maquinari com ara unitats de disc, impressores i dispositius de xarxa.
  • Gestió de la memòria: Les trucades al sistema proporcionen una manera perquè els programes assignin i desassignin memòria, així com accedir als dispositius de maquinari assignats a memòria.
  • Gestió de processos: Les trucades al sistema permeten als programes crear i finalitzar processos, així com gestionar la comunicació entre processos.
  • Seguretat: Les trucades al sistema proporcionen una manera perquè els programes accedeixin a recursos privilegiats, com ara la possibilitat de modificar la configuració del sistema o realitzar operacions que requereixen permisos administratius.
  • Normalització: Les trucades al sistema proporcionen una interfície estandarditzada perquè els programes interactuïn amb el sistema operatiu, garantint la coherència i la compatibilitat entre diferents plataformes de maquinari i versions del sistema operatiu.

Com funciona la trucada del sistema?

Aquí teniu l'explicació detallada pas a pas de com funcionen les trucades del sistema:

  • L'usuari necessita recursos especials: De vegades, els programes han de fer algunes coses especials que no es poden fer sense el permís del sistema operatiu, com ara llegir un fitxer, escriure en un fitxer, obtenir informació del maquinari o sol·licitar un espai a la memòria.
  • El programa fa una sol·licitud de trucada al sistema: Hi ha instruccions especials predefinides per fer una sol·licitud al sistema operatiu. Aquestes instruccions no són més que una trucada al sistema. El programa utilitza aquestes trucades del sistema al seu codi quan cal.
  • El sistema operatiu veu la trucada del sistema: Quan el sistema operatiu veu la trucada del sistema, reconeix que el programa necessita ajuda en aquest moment, de manera que atura temporalment l'execució del programa i dóna tot el control a una part especial de si mateix anomenada 'Nucli'. Ara 'kernel' resol la necessitat del programa.
  • El sistema operatiu realitza les operacions: Ara el sistema operatiu realitza l'operació que demana el programa. Exemple: llegir contingut d'un fitxer, etc.
  • El sistema operatiu retorna el control al programa: Després de realitzar l'operació especial, el sistema operatiu retorna el control al programa per a una posterior execució del programa.

Exemples d'una trucada al sistema a Windows i Unix

Les trucades del sistema per a Windows i Unix tenen moltes formes diferents. Aquestes s'enumeren a la taula següent de la següent manera:

Procés Windows Unix
Procés de control

Crea un procés ()



ExitProcess()

WaitForSingleObject()

Forquilla ()

Sortir()

Espera ()

Manipulació de fitxers

Crea fitxer()

ReadFile()

WriteFile()

Obre()

Llegir()

Escriure ()

Tanca()

Gestió de dispositius

SetConsoleMode()

ReadConsole()

WriteConsole()

Ioctl()

Llegir()

Escriure ()

Manteniment de la informació

GetCurrentProcessID()

SetTimer()

Dormir ()

Getpid()

Alarma()

Dormir ()

Comunicació

CreatePipe()

CreateFileMapping()

MapViewOfFile()

Pipa ()

Shmget()

Mmap()

Protecció

SetFileSecurity()

InitializeSecurityDescriptor()

SetSecurityDescriptorgroup()

Chmod()

desenmascarar()

Chown()

obert(): És possible accedir a un fitxer en un sistema de fitxers amb la crida al sistema open(). Ofereix els recursos del fitxer que necessita i un maneig que el procés pot utilitzar. Un fitxer es pot obrir mitjançant diversos processos simultàniament o només un procés. Tot es basa en l'estructura i el sistema de fitxers.

llegir(): Les dades d'un fitxer del sistema de fitxers es recuperen mitjançant ell. En general, accepta tres arguments:

  1. Descripció d'un fitxer.
  2. Un buffer per a l'emmagatzematge de dades de lectura.
  3. Quants bytes s'han de llegir del fitxer
    Abans de llegir, el fitxer a llegir es podria identificar pel seu descriptor de fitxer i obrir-lo mitjançant la funció open().

espera (): En alguns sistemes, un procés pot haver d'aturar-se fins que un altre procés s'hagi acabat d'executar abans de continuar. Quan un procés principal crea un procés fill, l'execució del procés principal s'atura fins que s'hagi completat. El procés principal s'atura mitjançant la crida al sistema wait(). El procés principal recupera el control un cop s'ha acabat d'executar el procés fill.

escriure (): Les dades d'una memòria intermèdia d'usuari s'escriuen utilitzant-les en un dispositiu com un fitxer. Un programa pot produir dades d'una manera utilitzant això trucada al sistema . generalment, hi ha tres arguments:

  1. Descripció d'un fitxer.
  2. Una referència a la memòria intermèdia on s'emmagatzemen les dades.
  3. La quantitat de dades que s'escriuran des de la memòria intermèdia en bytes.

forquilla (): Els processos utilitzen la crida al sistema fork() per crear còpies d'ells mateixos. És un dels mètodes utilitzats amb més freqüència als sistemes operatius per crear processos. Quan un procés principal crea un procés fill, l'execució del procés principal se suspèn fins que s'acabi el procés secundari. El procés principal recupera el control un cop s'ha acabat d'executar el procés fill.

sortida(): Una crida al sistema anomenada exit() s'utilitza per finalitzar un programa. En entorns amb diversos fils, aquesta crida indica que l'execució del fil ha finalitzat. Després d'utilitzar la funció del sistema exit(), el sistema operatiu recupera els recursos utilitzats pel procés.

Mètodes per passar paràmetres al sistema operatiu

Si es produeix una trucada al sistema, hem de passar un paràmetre a la part Kernal del sistema operatiu.

Per exemple, mireu el donat obert() trucada al sistema:

C




//function call example> #include> int> open(>const> char> *pathname,>int> flags, mode_t mode);>

>

>

Aquí nom de ruta , banderes i mode_t són els paràmetres.

Per tant, cal destacar que:

  • No podem passar els paràmetres directament com en una trucada de funció ordinària.
  • En el mode Kernal hi ha una manera diferent de realitzar una trucada de funció.

Per tant, no podem executar-lo a l'espai d'adreces normal que ja havia creat el procés i, per tant, no podem col·locar els paràmetres a la part superior de la pila perquè no està disponible per al nucli del sistema operatiu per processar-lo. per tant, hem d'adoptar qualsevol altre mètode per passar els paràmetres al nucli del sistema operatiu.

Ho podem fer,

  1. Passar paràmetres en registres
  2. L'adreça del bloc es passa com a paràmetre en un registre.
  3. Els paràmetres s'incorporen a una pila.

Parlem de cada punt en detall:

1. Passar paràmetres en registres.

  • És el mètode més senzill entre els tres
  • Aquí passem directament els paràmetres als registres.
  • Però es limitarà quan el nombre de paràmetres sigui superior al nombre de registres.
  • Aquí teniu el codi del programa C:

C




// Passing parameters in registers.> #include> #include> int> main()> {> >const> char>* pathname =>'example.txt'>;> >int> flags = O_RDONLY;> >mode_t mode = 0644;> >int> fd = open(pathname, flags, mode);> >// in function call open(), we passed the parameters pathanme,flags,mode to the kernal directly> >if> (fd == -1) {> >perror>(>'Error opening file'>);> >return> 1;> >}> >// File operations here...> >close(fd);> >return> 0;> }>

>

>

2. L'adreça del bloc es passa com a paràmetres

  • Es pot aplicar quan el nombre de paràmetres és superior al nombre de registres.
  • Els paràmetres s'emmagatzemen en blocs o taules.
  • L'adreça del bloc es passa a un registre com a paràmetre.
  • S'utilitza més habitualment a Linux i Solaris.
  • Aquí teniu el codi del programa C:

C




//Address of the block is passed as parameters> #include> #include> int> main() {> >const> char> *pathname =>'example.txt'>;> >int> flags = O_RDONLY;> >mode_t mode = 0644;> >int> params[3];> >// Block of data(parameters) in array> >params[0] = (>int>)pathname;> >params[1] = flags;> >params[2] = mode;> >int> fd = syscall(SYS_open, params);> >// system call> >if> (fd == -1) {> >perror>(>'Error opening file'>);> >return> 1;> >}> >// File operations here...> >close(fd);> >return> 0;> }>

>

>

3.Els paràmetres s'empenyen en una pila

  • En aquest mètode, els paràmetres es poden introduir mitjançant el programa i es poden treure mitjançant el sistema operatiu
  • Així, el Kernal pot accedir fàcilment a les dades recuperant informació de la part superior de la pila.
  • Aquí teniu el codi del programa C

C




//parameters are pushed into the stack> #include> #include> #include> int> main() {> >const> char> *pathname =>'example.txt'>;> >int> flags = O_RDONLY;> >mode_t mode = 0644;> >int> fd;> >asm>volatile>(> >'mov %1, %%rdi '> >'mov %2, %%rsi '> >'mov %3, %%rdx '> >'mov , %%rax '> >'syscall'> >:>'=a'> (fd)> >:>'r'> (pathname),>'r'> (flags),>'r'> (mode)> >:>'%rdi'>,>'%rsi'>,>'%rdx'> >);> >if> (fd == -1) {> >perror>(>'Error opening file'>);> >return> 1;> >}> >// File operations here...> >close(fd);> >return> 0;> }>

>

>

Pregunta freqüent

P.1: Com funciona una trucada al sistema?

Resposta:

Quan un programa executa una trucada al sistema, fa la transició del mode d'usuari al mode del nucli, que és un mode de privilegis superiors. La transició s'inicia normalment invocant una funció específica o interrompent una instrucció proporcionada pel llenguatge de programació o el sistema operatiu.

Un cop en mode nucli, la trucada al sistema la gestiona el sistema operatiu. El nucli realitza l'operació sol·licitada en nom del programa i retorna el resultat. Després, el control es retorna al programa a nivell d'usuari, que continua amb la seva execució.

P.2: Per què són necessàries les trucades al sistema?

Resposta:

Les trucades al sistema són necessàries per diversos motius:

Accés a operacions privilegiades: Moltes operacions, com ara la gestió de dispositius de maquinari o la modificació de configuracions del sistema, requereixen privilegis més alts als quals només es pot accedir mitjançant trucades al sistema.

Gestió de recursos: Les trucades al sistema proporcionen una interfície estandarditzada per assignar i gestionar recursos del sistema com ara memòria, fitxers i dispositius, garantint un accés just i controlat per diferents processos.

Abstracció: Les trucades del sistema abstractes de les complexitats subjacents del sistema operatiu, permetent als desenvolupadors d'aplicacions interactuar amb el sistema d'una manera de nivell superior i independent de la plataforma.

funció de fletxa mecanografiada

Seguretat i protecció: Les trucades al sistema imposen polítiques de seguretat i control d'accés, evitant l'accés no autoritzat a recursos sensibles i protegint la integritat del sistema.