Apel de sistem în sistemul de operare (Operating System): Ce este, Tipuri și Exemple
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.
Exemplu de apel de sistem
De exemplu, dacă trebuie să scriem un cod de program pentru a citi datele dintr-un fișier, copiați acele date într-un alt fișier. Prima informație pe care programul le solicită este numele celor două fișiere, fișierele de intrare și de ieșire.
Într-un sistem interactiv, acest tip de execuție a programului necesită unele apeluri de sistem de către OS.
- Primul apel este să scrieți un mesaj de solicitare pe ecran
- În al doilea rând, să citim de la tastatură caracterele care definesc cele două fișiere.
Cum funcționează apelul de sistem?
Iată pașii pentru apelul de sistem în sistemul de operare:
După cum puteți vedea în diagrama exemplu de apel de sistem dată mai sus.
Pas 1) Procesele executate în modul utilizator până în momentul în care un apel de sistem îl întrerupe.
Pas 2) După aceea, apelul de sistem este executat în modul kernel pe o bază prioritară.
Pas 3) Odată ce execuția apelului de sistem s-a încheiat, controlul revine la modul utilizator.,
Pas 4) Execuția proceselor utilizatorului a fost reluată în Modul kernel.
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, cum ar fi scaner, imprimantă, necesită un apel de sistem.
Tipuri de apeluri de sistem
Iată cele cinci tipuri de apeluri de sistem în sistemul de operare:
- Controlul proceselor
- Gestionarea fișierelor
- Device Management
- Întreținerea informațiilor
- Comunicații
Controlul proceselor
Aceste apeluri de sistem îndeplinesc sarcina de creare a procesului, de terminare a procesului etc.
Funcţii posibile:
- Încheiere și Avortare
- Î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/detașați în mod 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
Comunicare
Aceste tipuri de apeluri de sistem sunt utilizate în mod special pentru comunicațiile între procese.
Funcţii posibile:
- Creați, ștergeți conexiuni de comunicații
- Trimiteți, primiți mesaj
- Ajută OS să transfere informații despre stare
- Atașați sau detașați dispozitivele de la distanță
Reguli pentru transmiterea parametrilor pentru apelul de sistem
Iată reguli generale comune pentru transmiterea parametrilor la apelul de sistem:
- Parametrii ar trebui să fie introduși sau scoș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, ar trebui să fie stocați într-un bloc, iar adresa blocului ar trebui să fie transmisă ca parametru unui registru.
Apeluri de sistem importante utilizate în sistemul de operare
aștepta()
În unele sisteme, un proces trebuie să aștepte ca un alt proces să își finalizeze execuția. Acest tip de situație apare atunci când un proces părinte creează un proces copil, iar execuția procesului părinte rămâne suspendată până la executarea procesului său copil.
Suspendarea procesului părinte are loc automat cu un apel de sistem wait(). Când procesul copil își încheie execuția, controlul se mută înapoi la procesul părinte.
furculiţă()
Procesele folosesc acest apel de sistem pentru a crea procese care sunt o copie a lor. Cu ajutorul acestui sistem Apelarea procesului părinte creează un proces copil, iar execuția procesului părinte va fi suspendată până la executarea procesului copil.
exec()
Acest apel de sistem rulează atunci când un fișier executabil în contextul unui proces care rulează deja, care înlocuiește fișierul executabil mai vechi. Cu toate acestea, identificatorul original al procesului rămâne, deoarece un proces nou nu este construit, dar stiva, datele, capul, datele etc. sunt înlocuite de noul proces.
ucide()
Apelul de sistem kill() este folosit de OS pentru a trimite un semnal de terminare unui proces care îndeamnă procesul să iasă. Cu toate acestea, un apel de sistem kill nu înseamnă neapărat uciderea procesului și poate avea diferite semnificații.
Ieșire()
Apelul de sistem exit() este folosit pentru a termina execuția programului. În special în mediul multi-thread, acest apel definește că execuția firului este completă. Sistemul de operare revendică resursele care au fost folosite de proces după utilizarea apelului de sistem exit().
Rezumat
Categorii | Windows | Unix |
---|---|---|
Controlul procesului | CreateProcess() ExitProcess() WaitForSingleObject() |
furculiţă() Ieșire() aștepta() |
Manipularea dispozitivului | SetConsoleMode() ReadConsole() WriteConsole() |
loctl() citit() scrie() |
Manipularea fișierelor | CreateFile() ReadFile() WriteFile() CloseHandle() |
Deschis() Citit() scrie() închide!) |
Mentinerea informatiilor | GetCurrentProcessID() SetTimer() Dormi() |
getpid() alarma() dormi() |
Comunicare | CreatePipe() CreateFileMapping() MapViewOfFile() |
teava() shm_open() mmap() |
Protecţie | SetFileSecurity() InitializeSecurityDescriptsau() SetSecurityDescriptsauGrup () |
Chmod() Umask() Chown() |