CPU-tilstande - CPU modes
CPU-tilstande (også kaldet processortilstande, CPU-tilstande, CPU-privilegieniveauer og andre navne) er driftstilstande til den centrale behandlingsenhed i nogle computearkitekturer, der lægger begrænsninger for typen og omfanget af operationer, der kan udføres af visse processer, der køres af CPU'en. Dette design giver operativsystemet mulighed for at køre med flere privilegier end applikationssoftware .
Ideelt set er det kun stærkt pålidelige kernekode , der har tilladelse til at udføre i den ubegrænsede tilstand; alt andet (inklusive ikke-overvågende dele af operativsystemet) kører i en begrænset tilstand og skal bruge et systemopkald til at anmode kernen om at udføre på dens vegne enhver handling, der kan beskadige eller kompromittere systemet, hvilket gør det umuligt for ikke-betroede programmer at ændre eller beskadig andre programmer (eller selve computersystemet).
I praksis tager systemopkald imidlertid tid og kan skade ydelsen af et computersystem, så det er ikke ualmindeligt, at systemdesignere tillader noget tidskritisk software (især enhedsdrivere ) at køre med fulde kerneprivilegier.
Flere tilstande kan implementeres - hvilket giver en hypervisor mulighed for at køre flere operativsystemvejlere under det, hvilket er det grundlæggende design i mange virtuelle maskinsystemer , der er tilgængelige i dag.
Funktionstyper
Den ubegrænsede tilstand kaldes ofte kernetilstand, men der findes mange andre betegnelser ( mastertilstand , overvågningsmodus , privilegeret tilstand osv.). Begrænsede tilstande kaldes normalt brugertilstande, men er også kendt af mange andre navne ( slavetilstand, problemtilstand osv.).
I kernetilstand kan CPU'en udføre enhver handling, der er tilladt af dens arkitektur; enhver instruktion kan udføres, enhver I / O-operation initieres, adgang til ethvert hukommelsesområde osv. I de andre CPU-tilstande håndhæves visse begrænsninger på CPU-operationer af hardware. Visse instruktioner er typisk ikke tilladt (især dem - inklusive I / O-operationer - der kan ændre maskinens globale tilstand), nogle hukommelsesområder kan ikke fås adgang osv. Brugertilstandskapaciteter af CPU'en er typisk en undergruppe af disse tilgængelig i kernetilstand, men i nogle tilfælde, såsom hardwareemulering af ikke-oprindelige arkitekturer, kan de være markant forskellige fra dem, der er tilgængelige i standardkernetilstand.
Nogle CPU-arkitekturer understøtter flere brugertilstande, ofte med et hierarki af privilegier. Disse arkitekturer siges ofte at have ringbaseret sikkerhed, hvor hierarkiet af privilegier ligner et sæt koncentriske ringe med kernetilstand i midten. Multics- hardware var den første betydningsfulde implementering af ringsikkerhed, men mange andre hardwareplatforme er blevet designet langs lignende linjer, inklusive den Intel 80286- beskyttede tilstand , og IA-64 også, skønt den i disse tilfælde omtales med et andet navn. .
Tilstandsbeskyttelse udvides muligvis til ressourcer ud over selve CPU-hardwaren. Hardware registre spore den aktuelle driftstilstand af CPU, men yderligere virtuel hukommelse registre, side-table poster, og andre data kan spore tilstand identifikatorer til andre ressourcer. For eksempel kan en CPU operere i ring 0 som indikeret af et statusord i selve CPU'en, men enhver adgang til hukommelse kan yderligere valideres mod et separat ringnummer for det virtuelle hukommelsesegment målrettet af adgangen og / eller mod et ringetal for den fysiske side (hvis nogen) der er målrettet. Dette er blevet demonstreret med PSP-håndholdte system.
Hardware, der understøtter Popek- og Goldberg-virtualiseringskravene, gør skrivesoftware til effektivt at understøtte en virtuel maskine meget enklere. Et sådant system kan køre software, der "mener", at det kører i overvågningstilstand, men faktisk kører i brugertilstand.