Hvorfor er der behov for dobbelttilstande
Dobbelttilstande (ofte benævnt kernetilstand og brugertilstand ) er vigtige for operativsystemer til:
* Beskyt systemet mod ondsindede eller buggy brugerprogrammer: Brugerprogrammer, der kører i brugertilstand, har begrænset adgang til systemressourcer og kan ikke direkte ændre kernekode. Dette forhindrer dem i at ødelægge operativsystemet eller andre programmer.
* Sørg for fair ressourcefordeling: Ved at begrænse brugerprogrammernes adgang til ressourcer kan operativsystemet sikre, at intet enkelt program monopoliserer systemets ressourcer, hvilket fører til retfærdighed og stabilitet.
* Aktivér effektiv udførelse: Kernen, der kører i privilegeret kernetilstand, kan direkte få adgang til hardware og udføre kritiske opgaver, hvilket muliggør effektiv brug af systemressourcer.
Uden dobbelttilstande kunne brugerprogrammer potentielt:
* Korrupt operativsystemet: Ved direkte adgang og ændring af kerne -kode.
* styrt systemet: Ved at få adgang til og manipulere hardware uden korrekt tilladelse.
* forstyrrer andre programmer: Ved at få adgang til og ændre andre programmers data.
Sammenfattende giver dobbeltformer et afgørende lag af beskyttelse og kontrol, der giver operativsystemet mulighed for at styre ressourcer og sikre stabilitet og sikkerhed.
Systemopkald og tilstande
Systemopkald er broen mellem brugerprogrammer og operativsystemets kerne. De er den mekanisme, hvormed brugerprogrammer anmoder om tjenester fra kernen, såsom adgang til filer, oprettelse af processer eller håndtering af netværksforbindelser.
Her er, hvordan systemopkald vedrører tilstande:
1. Brugerprogrammer kører i brugertilstand: De har begrænset adgang til systemressourcer og kan ikke direkte interagere med hardware.
2. For at få adgang til privilegerede ressourcer skal brugerprogrammer foretage systemopkald: Disse opkald er specielle softwareafbrydelser, der skifter CPU fra brugertilstand til kernetilstand.
3. Kernen udfører systemopkaldet i privilegeret kernetilstand: Det har fuld adgang til systemressourcer og kan udføre den anmodede handling på vegne af brugerprogrammet.
4. Kernen returnerer kontrol til brugerprogrammet: Brugerprogrammet fortsætter udførelsen i brugertilstand, uvidende om de underliggende privilegerede operationer udført af kernen.
I bund
Eksempel: Et brugerprogram ønsker at åbne en fil. Det kan ikke direkte få adgang til filsystemet i brugertilstand. I stedet bruger den et systemopkald (som `åben ()` eller `fopen ()`) til at anmode kernen om at åbne filen. Kernen udfører derefter anmodningen i Kernel -tilstand og giver adgang til filen og returnerer kontrol til brugerprogrammet.
Denne adskillelse af tilstande og brugen af systemopkald sikrer et sikkert og kontrolleret miljø for brugerprogrammer, der giver operativsystemet mulighed for at styre og beskytte sine ressourcer effektivt.