Systemanrop i OS (Operating System): Vad är, typer och exempel

⚡ Smart sammanfattning

Systemanrop är det kontrollerade gränssnitt som en process använder för att begära kärntjänster som filåtkomst, processkontroll och enhetskommunikation, och säkert växla processorn från användarläge till privilegierat kärnläge.

  • 🔑 Definition: Den enda ingångspunkten där användarprogram når operativsystemtjänster.
  • 🔄 Så fungerar det: Processen fångas in i kärnan, som kör begäran och återgår till användarläge.
  • 🗂️ typer: Processkontroll, fil-, enhets-, informationsunderhåll och kommunikation.
  • ⚙️ Exempel: fork(), exec(), wait(), exit(), open(), read() och write().
  • 🤖 AI-vinkel: Maskininlärning skannar syscall tracför att upptäcka intrång; Copilot snabbar upp syscall-kodning.

Systemanrop in Operating System

Vad är System Call in Operating System?

A systemsamtal är en mekanism som tillhandahåller gränssnittet mellan en process och operativsystemet. Det är en programmatisk metod där ett datorprogram begär en tjänst från kärnan i operativsystemet.

Systemanrop erbjuder operativsystemets tjänster till användarprogrammen via API (Application Programming Interface). Systemanrop är de enda ingångspunkterna för kärnsystemet.

Systemanropar in Operating System

Systemanropar in Operating System

Exempel på systemanrop

Till exempel, för att skriva ett program som läser data från en fil och kopierar den till en annan, behöver programmet först namnen på de två filerna: indata- och utdatafilerna.

I ett interaktivt system kräver den här typen av programkörning vissa systemanrop från operativsystemet.

  • Det första uppmaningen är att skriva ett uppmanande meddelande på skärmen.
  • Det andra är att läsa, från tangentbordet, de tecken som definierar de två filerna.

Hur fungerar systemsamtal?

Här är stegen för ett systemanrop i OS:

Systemsamtal fungerar

Architecture av systemanropet

Architecture av systemanropet

Som du kan se i systemanropsdiagrammet ovan:

Steg 1) Processerna körs i användarläge tills ett systemanrop avbryter dem.

Steg 2) Därefter körs systemanropet i kernelläge med prioritet.

Steg 3) När systemanropet är avslutat återgår kontrollen till användarläge.

Steg 4) Utförandet av användarprocesser återupptas och växlar mellan användarläge och kärnläge såsom krävs.

Varför behöver du systemsamtal i OS?

Följande är situationer som kräver systemanrop i operativsystemet:

  • Att läsa och skriva från filer kräver systemanrop.
  • Om ett filsystem vill skapa eller ta bort filer krävs systemanrop.
  • Systemanrop används för att skapa och hantera nya processer.
  • Nätverksanslutningar behöver systemanrop för att skicka och ta emot paket.
  • Åtkomst till hårdvaruenheter som en skanner eller skrivare kräver ett systemanrop.

Typer av systemanrop

Här är de fem typerna av systemanrop i operativsystemet:

  • Processkontroll
  • Filhantering
  • Enhetshantering
  • Informationsunderhåll
  • Kommunikation

Typer av systemsamtal

Typer av systemanrop i operativsystemet

Processkontroll

Dessa systemanrop utför uppgiften att skapa processer, avsluta processer etc.

Funktioner:

  • Avsluta och avbryta
  • Ladda och kör
  • Skapa process och avsluta process
  • Vänta och Signal Event
  • Tilldela och frigör minne

Filhantering

Filhanteringssystemanrop hanterar filmanipuleringsjobb som att skapa en fil, läsa och skriva, etc.

Funktioner:

  • Skapa en fil
  • Radera fil
  • Öppna och stäng fil
  • Läs, skriv och placera om
  • Hämta och ställ in filattribut

Enhetshantering

Enhetshantering gör jobbet med enhetsmanipulation som att läsa från enhetsbuffertar, skriva i enhetsbuffertar, etc.

Funktioner:

  • Begär och frigör enhet
  • Anslut eller koppla loss enheter logiskt
  • Hämta och ange enhetsattribut

Informationsunderhåll

Den hanterar information och dess överföring mellan operativsystemet och användarprogrammet.

Funktioner:

  • Hämta eller ställ in tid och datum
  • Få process- och enhetsattribut

Kommunikation

Dessa typer av systemanrop används speciellt för kommunikation mellan processer.

Funktioner:

  • Skapa och ta bort kommunikationsanslutningar
  • Skicka och ta emot meddelanden
  • Hjälp med statusinformationen för överföring av operativsystem
  • Anslut eller koppla loss fjärrenheter

Regler för att skicka parametrar för systemanrop

Här är de allmänna reglerna för att skicka parametrar till systemanropet:

  • Parametrar bör läggas till eller tas bort från stacken av operativsystemet.
  • Parametrar kan skickas i register.
  • När det finns fler parametrar än register bör de lagras i ett block, och blockadressen bör skickas i ett register.

Viktiga systemsamtal som används i OS

vänta()

I vissa system måste en process vänta på att en annan ska slutföras. Detta inträffar när en förälderprocess skapar en underprocess, och föräldern förblir pausad tills underprocessen slutförs.

Förälderns paus sker automatiskt med ett wait() systemanrop. När barnet avslutar körningen flyttas kontrollen tillbaka till föräldern.

gaffel()

Processer använder detta systemanrop för att skapa processer som är en kopia av sig själva. Med hjälp av fork() skapar en förälderprocess en underprocess, och förälderprocessen pausas tills underprocessen körs.

exec ()

Detta systemanrop kör en körbar fil inom en redan körande process och ersätter den äldre. Den ursprungliga processidentifieraren bibehålls eftersom ingen ny process byggs, men stacken, data, heap etc. ersätts av den nya processen.

döda()

Systemanropet kill() används av operativsystemet för att skicka en avslutningssignal till en process och uppmana den att avsluta. Ett kill system-anrop betyder dock inte nödvändigtvis att processen avslutas och kan ha olika betydelser.

utgång()

Systemanropet exit() används för att avsluta programkörning. Speciellt i en flertrådad miljö definierar detta anrop att trådkörningen är klar. Operativsystemet återtar de resurser som används av processen efter exit()-anropet.

Vanliga frågor

Ett API är en uppsättning funktioner som anropar applikationer. Ett systemanrop är den lågnivåförfrågan som går in i kärnan.

En biblioteksfunktion körs i användarutrymmet; ett systemanrop går in i kärnan. Anrop som fopen() anropar ofta open() internt.

Nej. printf() är en C-biblioteksfunktion som formaterar och buffrar text. Den anropar write() endast när bufferten töms.

Användarläget begränsar åtkomst till hårdvara och minne; kärnläget har fullständiga rättigheter. Ett systemanrop växlar säkert mellan dem.

Windows använder CreateProcess(), ReadFile() och WriteFile(). Linux använder fork(), read() och write(). Båda täcker process-, fil-, enhets- och kommunikationstjänster.

Ja. Ett systemanrop växlar till kernelläge, vilket ökar overhead. Vanliga funktionsanrop stannar kvar i användarutrymmet och körs snabbare.

Säkerhetsverktyg tillämpar maskininlärning på systemanrop traces, flaggar skadlig kod och intrång som signaturskannrar ofta missar.

Ja. GitHub Copilot kan föreslå syntax för anrop som fork(), read() och write(). Utvecklare måste fortfarande verifiera felhanteringen.

Sammanfatta detta inlägg med: