Un apel de sistem este o modalitate prin care un program de utilizator se interfață cu sistemul de operare. Programul solicită mai multe servicii, iar sistemul de operare răspunde invocând o serie de apeluri de sistem pentru a satisface cererea. Un apel de sistem poate fi scris în limbaj de asamblare sau într-un limbaj de nivel înalt C sau Pascal . Apelurile de sistem sunt funcții predefinite pe care sistemul de operare le poate invoca direct dacă se folosește un limbaj de nivel înalt.
În acest articol, veți afla despre apelurile de sistem din sistemul de operare și veți discuta despre tipurile lor și multe alte lucruri.
Ce este un apel de sistem?
Un apel de sistem este o metodă prin care un program de calculator solicită un serviciu de la nucleul sistemului de operare pe care rulează. Un apel de sistem este o metodă de interacțiune cu sistemul de operare prin intermediul programelor. Un apel de sistem este o solicitare de la un software de calculator către nucleul unui sistem de operare.
The Interfața programului de aplicație (API) conectează funcțiile sistemului de operare la programele utilizatorului. Acesta acționează ca o legătură între sistemul de operare și un proces, permițând programelor la nivel de utilizator să solicite servicii ale sistemului de operare. Sistemul kernel poate fi accesat numai folosind apeluri de sistem. Apelurile de sistem sunt necesare pentru orice program care utilizează resurse.
Cum se fac apelurile de sistem?
Când un software de calculator trebuie să acceseze nucleul sistemului de operare, efectuează un apel de sistem. Apelul de sistem folosește un API pentru a expune serviciile sistemului de operare la programele utilizatorului. Este singura metodă de a accesa sistemul kernel. Toate programele sau procesele care necesită resurse pentru execuție trebuie să utilizeze apeluri de sistem, deoarece servesc ca interfață între sistemul de operare și programele utilizatorului.
Mai jos sunt câteva exemple despre modul în care un apel de sistem diferă de la o funcție de utilizator.
log4j
- O funcție de apel de sistem poate crea și utiliza procese kernel pentru a executa procesarea asincronă.
- Un apel de sistem are o autoritate mai mare decât o subrutină standard. Un apel de sistem cu privilegii în modul nucleu se execută în domeniul de protecție a nucleului.
- Apelurile de sistem nu au permisiunea de a utiliza biblioteci partajate sau orice simboluri care nu sunt prezente în domeniul de protecție a nucleului.
- Codul și datele pentru apelurile de sistem sunt stocate în memoria globală a nucleului.
De ce aveți nevoie de apeluri de sistem în sistemul de operare?
Există diverse situații în care trebuie să solicitați apeluri de sistem în sistemul de operare. Următoarele situații sunt următoarele:
- Este obligatoriu atunci când un sistem de fișiere dorește să creeze sau să ștergă un fișier.
- Conexiunile la rețea necesită apeluri de sistem pentru trimiterea și primirea pachetelor de date.
- Dacă doriți să citiți sau să scrieți un fișier, trebuie să faceți apeluri de sistem.
- Dacă doriți să accesați dispozitive hardware, inclusiv o imprimantă, un scaner, aveți nevoie de un apel de sistem.
- Apelurile de sistem sunt folosite pentru a crea și gestiona noi procese.
Cum funcționează apelurile de sistem
Aplicațiile rulează într-o zonă de memorie cunoscută sub numele de spațiu utilizator. Un apel de sistem se conectează la nucleul sistemului de operare, care se execută în spațiul nucleului. Când o aplicație creează un apel de sistem, trebuie mai întâi să obțină permisiunea de la nucleu. Realizează acest lucru folosind o cerere de întrerupere, care întrerupe procesul curent și transferă controlul către nucleu.
Dacă cererea este permisă, nucleul efectuează acțiunea solicitată, cum ar fi crearea sau ștergerea unui fișier. Ca intrare, aplicația primește ieșirea nucleului. Aplicația reia procedura după primirea intrării. Când operațiunea este încheiată, nucleul returnează rezultatele în aplicație și apoi mută datele din spațiul kernel-ului în spațiul utilizator din memorie.
Un simplu apel de sistem poate dura câteva nanosecunde pentru a furniza rezultatul, cum ar fi recuperarea datei și orei sistemului. Un apel de sistem mai complicat, cum ar fi conectarea la un dispozitiv de rețea, poate dura câteva secunde. Majoritatea sistemelor de operare lansează un fir de nucleu distinct pentru fiecare apel de sistem pentru a evita blocajele. Sistemele de operare moderne sunt multi-threaded, ceea ce înseamnă că pot gestiona diverse apeluri de sistem în același timp.
Tipuri de apeluri de sistem
Există de obicei cinci tipuri de apeluri de sistem. Acestea sunt după cum urmează:
Acum, veți afla despre toate tipurile diferite de apeluri de sistem unul câte unul.
cum se rulează scriptul în linux
Controlul procesului
Controlul proceselor este apelul de sistem care este utilizat pentru a dirija procesele. Unele exemple de control al procesului includ crearea, încărcarea, anularea, încheierea, executarea, procesarea, terminarea procesului etc.
Gestionarea fișierelor
Gestionarea fișierelor este un apel de sistem care este utilizat pentru a gestiona fișierele. Unele exemple de gestionare a fișierelor includ crearea de fișiere, ștergerea fișierelor, deschiderea, închiderea, citirea, scrierea etc.
Managementul dispozitivelor
Gestionarea dispozitivelor este un apel de sistem care este utilizat pentru a trata dispozitivele. Câteva exemple de gestionare a dispozitivelor includ citirea, dispozitivul, scrierea, obținerea atributelor dispozitivului, eliberarea dispozitivului etc.
Întreținerea informațiilor
Întreținerea informațiilor este un apel de sistem care este utilizat pentru a menține informații. Există câteva exemple de întreținere a informațiilor, inclusiv obținerea datelor de sistem, setarea orei sau data, obținerea orei sau data, setarea datelor sistemului etc.
Comunicare
Comunicarea este un apel de sistem care este utilizat pentru comunicare. Există câteva exemple de comunicare, inclusiv crearea, ștergerea conexiunilor de comunicare, trimiterea, primirea mesajelor etc.
Exemple de apeluri de sistem Windows și Unix
Există diverse exemple de apeluri de sistem Windows și Unix. Acestea sunt enumerate mai jos în tabel:
Proces | Windows | Unix |
---|---|---|
Controlul procesului | CreateProcess() ExitProcess() WaitForSingleObject() | Furculiţă() Ieșire() Aștepta() |
Manipularea fișierelor | CreateFile() ReadFile() WriteFile() CloseHandle() | Deschis() Citit() Scrie() Închide() |
Managementul dispozitivelor | SetConsoleMode() ReadConsole() WriteConsole() | Ioctl() Citit() Scrie() |
Întreținerea informațiilor | GetCurrentProcessID() SetTimer() Dormi() | Getpid() Alarma() Dormi() |
Comunicare | CreatePipe() CreateFileMapping() MapViewOfFile() | teava() Shmget() Mmap() |
Protecţie | SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
Aici veți afla pe scurt câteva metode:
sortare listă java
deschis()
The deschis() apelul de sistem vă permite să accesați un fișier dintr-un sistem de fișiere. Acesta alocă resurse fișierului și oferă un handle la care se poate referi procesul. Multe procese pot deschide un fișier deodată sau printr-un singur proces. Totul se bazează pe sistemul și structura de fișiere.
citit()
Este folosit pentru a obține date dintr-un fișier din sistemul de fișiere. Acceptă trei argumente în general:
- Un descriptor de fișier.
- Un buffer pentru stocarea datelor citite.
- Numărul de octeți de citit din fișier.
Descriptorul de fișier al fișierului de citit ar putea fi folosit pentru a-l identifica și a-l deschide folosind deschis() inainte de a citi.
aștepta()
În unele sisteme, un proces poate fi nevoit să aștepte ca un alt proces să își finalizeze execuția înainte de a continua. Când un proces părinte face un proces copil, execuția procesului părinte este suspendată până când procesul copil este terminat. The aștepta() apelul de sistem este folosit pentru a suspenda procesul părinte. Odată ce procesul copil și-a încheiat execuția, controlul este returnat procesului părinte.
scrie()
Este folosit pentru a scrie date dintr-un buffer utilizator pe un dispozitiv, cum ar fi un fișier. Acest apel de sistem este o modalitate prin care un program poate genera date. Este nevoie de trei argumente în general:
- Un descriptor de fișier.
- Un pointer către bufferul în care sunt salvate datele.
- Numărul de octeți care urmează să fie scrisi din buffer.
furculiţă()
Procesele generează clone ale lor folosind furculiţă() apel de sistem. Este una dintre cele mai comune moduri de a crea procese în sistemele de operare. Când un proces părinte generează un proces copil, execuția procesului părinte este întreruptă până la finalizarea procesului copil. Odată ce procesul copil și-a încheiat execuția, controlul este returnat procesului părinte.
matrice java șiruri
închide()
Este folosit pentru a opri accesul la sistemul de fișiere. Când acest apel de sistem este invocat, înseamnă că programul nu mai necesită fișierul, iar buffer-urile sunt golite, informațiile despre fișier sunt modificate și, ca rezultat, resursele fișierului sunt de-alocate.
exec()
Când un fișier executabil înlocuiește un fișier executabil anterior într-un proces care se execută deja, această funcție de sistem este invocată. Deoarece un proces nou nu este construit, vechiul proces de identificare rămâne, dar noul proces înlocuiește datele, stiva, datele, capul etc.
Ieșire()
The Ieșire() este un apel de sistem care este folosit pentru a termina execuția programului. Acest apel indică faptul că execuția firului de execuție este completă, ceea ce este util mai ales în mediile cu mai multe fire. Sistemul de operare recuperează resursele cheltuite de procesul care urmează utilizării Ieșire() functia sistemului.