hur Unix -system kallar fungerar
Systemsamtal är det grundläggande gränssnittet mellan ett användarprogram och operativsystemets kärna. De tillåter program att begära tjänster från kärnan, till exempel åtkomst till hårdvara, hantera processer och interagera med filer. Här är en uppdelning av hur de fungerar:
1. Användarprogramförfrågan:
* Ett användarprogram, som körs i användarutrymme, behöver en specifik tjänst, som att läsa en fil, skapa en ny process eller komma åt en enhet.
* Programmet använder en biblioteksfunktion (t.ex. `open ()`, `gaffel ()`, `läst ()`) för att göra begäran.
2. Biblioteksfunktionssamtal:
* Biblioteksfunktionen ansvarar för att bygga en specifik systemsamtalstruktur. Denna struktur innehåller information om önskat systemsamtal (t.ex. funktionsnummer, argument).
* Denna struktur överförs sedan till kärnan med hjälp av en speciell instruktion som kallas systemsamtal avbrott (ofta `int 0x80` eller` syscall`).
3. Kärnhantering:
* Avbrottet orsakar en kontextbrytare som överför kontrollen från användarprogrammet till kärnan.
* Kärnan identifierar det begärda systemsamtalet baserat på dess nummer.
* Kärnan validerar systemets samtalargument och kontrollerar för behörigheter.
* Kärnan kör den begärda tjänsten och potentiellt involverar interaktioner med hårdvara, filsystem eller andra processer.
4. Returvärde:
* När kärnan har slutfört den begärda tjänsten returnerar den en statuskod och potentiellt data till användarprogrammet.
* Biblioteksfunktionen tolkar statuskoden och returnerar ett resultat till användarprogrammet.
5. Användarprogramsvar:
* Användarprogrammet får resultatet, bearbetar det och fortsätter sin exekvering.
Nyckelpunkter:
* Systemsamtal är de grundläggande byggstenarna för alla UNIX-liknande operativsystem.
* De tillhandahåller ett standardiserat, säkert och kontrollerat gränssnitt mellan användarprogram och kärnan.
* Kärnan skyddar systemresurserna och säkerställer att program inte kan komma åt eller ändra systemnivåkomponenter utan tillstånd.
* Systemsamtalgränssnittet är i allmänhet konsekvent över olika UNIX-liknande system, vilket säkerställer portabilitet för applikationer.
Exempel:
Låt oss överväga systemsamtalet "Läs (). Ett program kan använda biblioteksfunktionen `Read ()` för att läsa data från en fil. Den här funktionen:
1. Bygger en systemsamtalstruktur med funktionsnumret () ", filbeskrivaren, buffertadressen och antalet byte att läsa.
2. Utför systemsamtalet för att överföra kontroll till kärnan.
3. Kärnan validerar argumenten, hämtar data från filen och kopierar dem till den användar som levereras.
4. Kärnan returnerar antalet byte som läses till användarprogrammet.
5. Användarprogrammet får resultatet och använder data efter behov.
Att förstå hur system kallar arbete är viktigt för att förstå de inre funktionerna i Unix-liknande operativsystem och skrivprogram som effektivt interagerar med kärnan.