Multitasking multi -user operativsystemer har svært kraftige arkitekturer . De forventes å opprettholde mange brukere som logger inn via nettverket på en sentral server eller arbeidsstasjon . Operativsystemkjernen - kjernen eller sentrum rundt som den ytre funksjonaliteten i OS er lagdelt - snakker til bare- bones hardware via enhetsdrivere og til programvaren via sin prosess - kontroll delsystem. Kjernen tar kontroll over ressursallokering og prosess planlegging . Det driver prosessene i og ut av aktive moduser, våkner sovende prosesser , ringer alarmer og sender signaler . Prosessen
Enhver kjørbar stykke kode som kan lastes inn i systemet minne og utføre handlinger er en prosess. Det er systemet prosesser og bruker prosesser. En prosess gafler eller gyter et barn prosess . Med unntak av den opprinnelige OS prosess , kalt prosess 0 i Unix, blir alle prosessene laget på denne måten , og derfor ha en overordnet prosess . En prosess får CPU oppmerksomhet bare når kjernen tillater det.
Bruker-og Kernel Modes
En prosess kjører i enten bruker modus eller kernel -modus og vedlikeholder to separate stabler når du bytter mellom modusene . Noen operativsystemer kan ha flere moduser . Hvis du skriver et program , bygge den, og kjøre den, er den løpende prosessen brukernivå. Det går inn kernel -modus når den gjør et systemkall eller mottar et avbrudd signal. Signalet kan komme fra en annen bruker prosess eller selve kjernen . Når en prosess er i kernel -modus , eskalerer kjernen sin prioritet i planleggingen ordningen. Det heller ikke forrang i kernel- modus prosess til den er ferdig den kritiske systemet fungerer , etter som det er tilbake i brukernivå . En prosess i bruker-modus kan bare få tilgang til sine egne instruksjoner og data eller prosess plass . Den kernel- modus prosess kan få tilgang til adresser i kjernen. Et godt eksempel er et stykke assembly kode som gjør et hopp til et avbrudd .
System Calls
p Som nevnt tidligere , er det systemet samtalen , uansett hvem som gjør det og hvordan, som bringer en prosess i kernel -modus. Et system samtale er en påkallelse av et lavt nivå operativsystem funksjon som krever tilgang og manipulerer lavt nivå enhet enheter og reserverte områder av minne. Det er praktisk talt OS kode . Funksjoner som opererer på OS-enheter som filer, rør og semaforer er systemkall . Åpne ( ) , lukker ( ) , lese ( ) , skrive ( ) , låsen () , unlock ( ) , init ( ) , gaffel ( ) , sleep ( ) , reaktivering () og signal ( ) er systemkall . De kontrollerer OS ressurser og prosesser akkurat som kjernen ville. Signal-og avbrudds- behandlingen er også det område av kjernen og ikke brukerprosessen . I kernel-modus , er kontrollen gitt til systemet samtalen som gjør systemet oppgaver , eller det arbeidet som kjernen ville gjøre noe annet. Det er kode som får tilgang spesielt minne og registrerer reservert for OS oppgaver.
Avbryter og privilegert Instruksjoner
Noen maskininstruksjoner er privilegert og resultere i feil hvis henrettet i brukernivå . For eksempel bør en prosess i brukernivå ikke få lov til å endre prosessen status register . Registre og privilegert kernel minne bistå kjernen i sin prosess kontrollarbeidet. Hvis noen andre kommer og endrer dem , kan resultatene være uforutsigbar. Når en annen prosess eller kjernen avbryter en bruker prosess , sparer kjernen den nåværende tilstanden i prosessen på stakken , bestemmer årsaken til avbruddet , tjenester avbruddet og bringer kontrollen tilbake til hva prosessen gjorde. Kjernen spretter prosessen bunken slik at brukeren prosessen kan fortsette der den slapp.