Systemopkald i OS (Operating System): Hvad er, typer og eksempler
Hvad er System Call in Operating System?
A systemopkald er en mekanisme, der giver grænsefladen mellem en proces og operativsystemet. Det er en programmatisk metode, hvor et computerprogram anmoder om en tjeneste fra kernen af operativsystemet.
System call tilbyder operativsystemets tjenester til brugerprogrammerne via API (Application Programming Interface). Systemkald er de eneste indgangspunkter for kernesystemet.
Eksempel på systemkald
For eksempel, hvis vi skal skrive en programkode for at læse data fra en fil, kopier disse data til en anden fil. Den første information, som programmet kræver, er navnet på de to filer, input- og outputfilerne.
I et interaktivt system kræver denne type programudførelse nogle systemkald fra OS.
- Første opkald er at skrive en meddelelse på skærmen
- For det andet, at læse fra tastaturet de tegn, der definerer de to filer.
Hvordan fungerer systemopkald?
Her er trinene til systemopkald i OS:
Som du kan se i det ovenfor givne systemopkald eksempeldiagram.
Trin 1) De processer, der udføres i brugertilstand, indtil et systemopkald afbryder det.
Trin 2) Derefter udføres systemkaldet i kernetilstanden på prioritetsbasis.
Trin 3) Når systemopkaldsudførelsen er slut, vender kontrollen tilbage til brugertilstand.,
Trin 4) Udførelsen af brugerprocesser blev genoptaget i Kernetilstand.
Hvorfor har du brug for systemopkald i OS?
Følgende er situationer, der kræver systemkald i OS:
- Læsning og skrivning fra filer kræver systemopkald.
- Hvis et filsystem ønsker at oprette eller slette filer, er systemkald påkrævet.
- Systemkald bruges til oprettelse og styring af nye processer.
- Netværksforbindelser kræver systemopkald til afsendelse og modtagelse af pakker.
- Adgang til hardwareenheder som scanner, printer kræver et systemopkald.
Typer af systemopkald
Her er de fem typer systemopkald i OS:
- processtyring
- Filhåndtering
- Device Management
- Informationsvedligeholdelse
- Kommunikation
processtyring
Dette systemkald udfører opgaven med procesoprettelse, procesafslutning osv.
Funktioner:
- Afslut og afbryd
- Indlæs og udfør
- Opret proces og afslut proces
- Vent og Signal Begivenhed
- Tildel og frigør hukommelse
Filhåndtering
Filhåndteringssystemopkald håndterer filmanipulationsjob som at oprette en fil, læse og skrive osv.
Funktioner:
- Opret en fil
- Slet fil
- Åbn og luk fil
- Læs, skriv og flyt
- Hent og indstil filattributter
Device Management
Enhedshåndtering udfører opgaven med enhedsmanipulation som læsning fra enhedsbuffere, skrivning i enhedsbuffere osv.
Funktioner:
- Anmod om og frigiv enhed
- Logisk tilslut/afmonter enheder
- Hent og indstil enhedsattributter
Informationsvedligeholdelse
Den håndterer information og dens overførsel mellem OS og brugerprogrammet.
Funktioner:
- Hent eller indstil tid og dato
- Få proces- og enhedsattributter
Kommunikation
Disse typer systemopkald bruges specielt til kommunikation mellem processer.
Funktioner:
- Opret, slet kommunikationsforbindelser
- Send, modtag besked
- Hjælp OS med at overføre statusoplysninger
- Tilslut eller afmonter eksterne enheder
Regler for videregivelse af parametre for systemkald
Her er generelle almindelige regler for videregivelse af parametre til systemkaldet:
- Parametre skal skubbes på eller springes ud af stakken af operativsystemet.
- Parametre kan overføres i registre.
- Når der er flere parametre end registre, skal det gemmes i en blok, og blokadressen skal videregives som en parameter til et register.
Vigtige systemopkald, der bruges i OS
vente()
I nogle systemer skal en proces vente på, at en anden proces fuldfører sin eksekvering. Denne type situation opstår, når en overordnet proces opretter en underordnet proces, og udførelsen af den overordnede proces forbliver suspenderet, indtil dens underordnede proces udføres.
Suspensionen af den overordnede proces sker automatisk med et wait() systemkald. Når den underordnede proces afslutter eksekveringen, flytter kontrollen tilbage til den overordnede proces.
gaffel()
Processer bruger dette systemkald til at skabe processer, der er en kopi af dem selv. Ved hjælp af dette system opretter Call parent-processen en underordnet proces, og udførelsen af den overordnede proces vil blive suspenderet, indtil den underordnede proces udføres.
exec()
Dette systemkald kører, når en eksekverbar fil i sammenhæng med en allerede kørende proces, der erstatter den ældre eksekverbare fil. Den oprindelige procesidentifikator forbliver dog, da en ny proces ikke bygges, men stak, data, hoved, data osv. erstattes af den nye proces.
dræbe()
Kill()-systemkaldet bruges af OS til at sende et termineringssignal til en proces, der opfordrer processen til at afslutte. Et dræbsystemkald betyder dog ikke nødvendigvis, at processen dræbes og kan have forskellige betydninger.
Afslut ()
Exit()-systemkaldet bruges til at afslutte programafviklingen. Specielt i multi-threaded-miljøet definerer dette kald, at trådudførelsen er fuldført. OS genindvinder ressourcer, der blev brugt af processen efter brugen af exit()-systemkaldet.
Resumé
Kategorier | Windows | Unix |
---|---|---|
Proces kontrol | CreateProcess() ExitProcess() WaitForSingleObject() |
gaffel() Afslut () vente() |
Enhedsmanipulation | SetConsoleMode() ReadConsole() WriteConsole() |
loctl() Læs() skrive() |
Fil manipulation | CreateFile() ReadFile() WriteFile() Luk Håndtag() |
Åben() Læs() skrive() tæt!) |
Vedligeholdelse af information | GetCurrentProcessID() SetTimer() Søvn() |
blid() alarm() søvn() |
Kommunikation | CreatePipe() CreateFileMapping() MapViewOfFile() |
Rør() shm_open() mmap() |
Beskyttelse | SetFileSecurity() InitializeSecurityDescripteller() Indstil sikkerhedDescripteller Gruppe () |
Chmod() Umask() Chown() |