Apel de sistem în sistemul de operare (Operating System): Ce este, Tipuri și Exemple

⚡ Rezumat inteligent

Apelul de sistem este interfața controlată pe care un proces o folosește pentru a solicita servicii de kernel, cum ar fi accesul la fișiere, controlul proceselor și comunicarea cu dispozitivele, comutând în siguranță CPU-ul din modul utilizator în modul kernel privilegiat.

  • 🔑 Definiție: Singurul punct de intrare prin care programele utilizatorului ajung la serviciile sistemului de operare.
  • 🔄 Cum funcționează: Procesul se blochează în kernel, care execută cererea și revine la modul utilizator.
  • 🗂️ tipuri: Controlul proceselor, fișierele, dispozitivele, întreținerea informațiilor și comunicarea.
  • ⚙️ Exemple: fork(), exec(), wait(), exit(), open(), read() și write().
  • 🤖 Unghiul AI: Învățarea automată scanează apelurile de sistem traces pentru detectarea intruziunilor; Copilot accelerează codarea apelurilor de sistem.

Apel de sistem în Operating System

Ce este apelul de sistem Operating System?

A apel de sistem este un mecanism care asigură interfața dintre un proces și sistemul de operare. Este o metodă programatică în care un program de calculator solicită un serviciu de la nucleul sistemului de operare.

System call oferă serviciile sistemului de operare programelor utilizatorului prin API (Application Programming Interface). Apelurile de sistem sunt singurele puncte de intrare pentru sistemul kernel.

Apeluri de sistem Operating System

Apeluri de sistem Operating System

Exemplu de apel de sistem

De exemplu, pentru a scrie un program care citește date dintr-un fișier și le copiază în altul, programul are nevoie mai întâi de numele celor două fișiere: fișierul de intrare și cel de ieșire.

Într-un sistem interactiv, acest tip de execuție a programului necesită unele apeluri de sistem din partea sistemului de operare.

  • Primul apel este de a scrie un mesaj de îndrumare pe ecran.
  • Al doilea este citirea, de la tastatură, a caracterelor care definesc cele două fișiere.

Cum funcționează apelul de sistem?

Iată pașii pentru un apel sistem în sistemul de operare:

Apelul de sistem funcționează

Architectura apelului de sistem

Architectura apelului de sistem

După cum puteți vedea în diagrama apelului de sistem de mai sus:

Pas 1) Procesele se execută în modul utilizator până când un apel sistem le întrerupe.

Pas 2) După aceea, apelul sistem este executat în modul kernel în funcție de prioritate.

Pas 3) Odată ce execuția apelului sistem s-a terminat, controlul revine la modul utilizator.

Pas 4) Execuția proceselor utilizatorului se reia, trecând între modul utilizator și modul kernel după cum este necesar.

De ce aveți nevoie de apeluri de sistem în sistemul de operare?

Următoarele sunt situații care necesită apeluri de sistem în sistemul de operare:

  • Citirea și scrierea din fișiere necesită apeluri de sistem.
  • Dacă un sistem de fișiere dorește să creeze sau să ștergă fișiere, sunt necesare apeluri de sistem.
  • Apelurile de sistem sunt folosite pentru crearea și gestionarea de noi procese.
  • Conexiunile de rețea necesită apeluri de sistem pentru trimiterea și primirea pachetelor.
  • Accesul la dispozitive hardware precum un scaner sau o imprimantă necesită un apel sistem.

Tipuri de apeluri de sistem

Iată cele cinci tipuri de apeluri de sistem din sistemul de operare:

  • Controlul proceselor
  • Gestionarea fișierelor
  • Device Management
  • Întreținerea informațiilor
  • Comunicarea

Tipuri de apeluri de sistem

Tipuri de apeluri de sistem în sistemul de operare

Controlul proceselor

Aceste apeluri de sistem îndeplinesc sarcina de creare a proceselor, terminare a proceselor etc.

Funcţii posibile:

  • Încheiere și abandonare
  • Încărcați și executați
  • Creați un proces și încheiați procesul
  • Așteaptă și Signal eveniment
  • Alocați și eliberați memorie

Gestionarea fișierelor

Apelurile sistemului de gestionare a fișierelor gestionează lucrări de manipulare a fișierelor, cum ar fi crearea unui fișier, citirea și scrierea etc.

Funcţii posibile:

  • Creați un fișier
  • Sterge fisierul
  • Deschideți și închideți fișierul
  • Citiți, scrieți și repoziționați
  • Obțineți și setați atributele fișierului

Device Management

Gestionarea dispozitivului face treaba de manipulare a dispozitivului, cum ar fi citirea din bufferele dispozitivului, scrierea în bufferele dispozitivului etc.

Funcţii posibile:

  • Solicitați și eliberați dispozitivul
  • Atașați sau detașați logic dispozitivele
  • Obțineți și setați atributele dispozitivului

Întreținerea informațiilor

Se ocupă de informații și transferul acestora între sistemul de operare și programul utilizatorului.

Funcţii posibile:

  • Obțineți sau setați ora și data
  • Obțineți atribute de proces și dispozitiv

Comunicarea

Aceste tipuri de apeluri sistem sunt utilizate în special pentru comunicarea interprocese.

Funcţii posibile:

  • Crearea și ștergerea conexiunilor de comunicare
  • Trimiteți și primiți mesaje
  • Ajută informațiile despre starea transferului sistemului de operare
  • Atașați sau detașați dispozitivele de la distanță

Reguli pentru transmiterea parametrilor pentru apelul de sistem

Iată regulile generale pentru transmiterea parametrilor către apelul sistem:

  • Parametrii ar trebui să fie inserați sau eliminați din stivă de către sistemul de operare.
  • Parametrii pot fi trecuți în registre.
  • Când există mai mulți parametri decât registre, aceștia ar trebui stocați într-un bloc, iar adresa blocului ar trebui transmisă într-un registru.

Apeluri de sistem importante utilizate în sistemul de operare

aștepta()

În unele sisteme, un proces trebuie să aștepte finalizarea altuia. Acest lucru se întâmplă atunci când un proces părinte creează un proces copil, iar părintele rămâne suspendat până când copilul se termină.

Suspendarea elementului părinte are loc automat cu un apel sistem wait(). Când execuția copilului termină, controlul revine la elementul părinte.

furculiţă()

Procesele folosesc acest apel sistem pentru a crea procese care sunt o copie a lor însele. Cu ajutorul fork(), un proces părinte creează un proces copil, iar părintele este suspendat până când procesul copil se execută.

exec()

Acest apel sistem rulează un fișier executabil în cadrul unui proces deja existent, înlocuindu-l pe cel mai vechi. Identificatorul original al procesului rămâne, deoarece nu se construiește niciun proces nou, dar stiva, datele, memoria heap etc. sunt înlocuite de noul proces.

ucide()

Apelul de sistem kill() este utilizat de sistemul de operare pentru a trimite un semnal de terminare unui proces, îndemnându-l să se încheie. Cu toate acestea, un apel de sistem kill nu înseamnă neapărat terminarea procesului și poate avea diverse semnificații.

Ieșire()

Apelul de sistem exit() este utilizat pentru a termina execuția programului. Mai ales într-un mediu multi-threaded, acest apel definește faptul că execuția firului de execuție este completă. Sistemul de operare recuperează resursele utilizate de proces după apelul exit().

Întrebări frecvente

O API este un set de apeluri de funcții ale aplicațiilor. Un apel de sistem este cererea de nivel scăzut care intră în kernel.

O funcție de bibliotecă rulează în spațiul utilizatorului; un apel sistem intră în kernel. Apeluri precum fopen() invocă adesea open() intern.

Nu. printf() este o funcție a bibliotecii C care formatează și stochează textul în buffer. Apelează write() doar atunci când buffer-ul se golește.

Modul utilizator limitează accesul la hardware și memorie; modul kernel are privilegii complete. Un apel sistem comută în siguranță între ele.

Windows folosește CreateProcess(), ReadFile() și WriteFile(). Linux folosește fork(), read() și write(). Ambele acoperă procese, fișiere, dispozitive și servicii de comunicații.

Da. Un apel sistem trece în modul kernel, adăugând o suprasarcină. Apelurile de funcții obișnuite rămân în spațiul utilizatorului și se execută mai rapid.

Instrumentele de securitate aplică învățarea automată la apelurile de sistem tracsemnalând programe malware și intruziuni pe care scanerele de semnături le ratează adesea.

Da. GitHub Copilot poate sugera sintaxa pentru apeluri precum fork(), read() și write(). Dezvoltatorii trebuie să verifice în continuare gestionarea erorilor.

Rezumați această postare cu: