Hvorfor bruger x86 CPU'er kun to ud af fire “ringe”?

Apr 22, 2025
Hardware
UCACHED INDHOLD

Når du lærer mere om, hvordan operativsystemer og hardware, de kører på, fungerer og interagerer med hinanden, kan du blive overrasket over at se, hvad der synes at være underlige eller underudnyttelse af "ressourcer", der forekommer. Hvorfor det? Dagens SuperUser Q & A-indlæg har svaret på en nysgerrig læsers spørgsmål.

Dagens spørgsmål og svar-session kommer til os med tilladelse fra SuperUser - en underinddeling af Stack Exchange, en community-driven gruppe af Q&A websteder.

Foto med tilladelse til Lemsipmatt (Flickr) .

Spørgsmålet

SuperUser-læser AdHominem vil vide, hvorfor x86-CPU'er kun bruger to ud af fire ringe:

Linux- og Windows-baserede x86-systemer bruger kun Ring 0 til kernetilstand og Ring 3 til brugertilstand. Hvorfor adskiller processorer endda fire forskellige ringe, hvis de alle ender med at bruge to af dem alligevel? Er dette ændret med AMD64-arkitekturen?

Hvorfor bruger x86 CPU'er kun to ud af fire ringe?

Svaret

SuperUser-bidragyder Jamie Hanrahan har svaret til os:

Der er to primære årsager.

Den første er, at selvom x86-CPU'erne tilbyder fire ringe med hukommelsesbeskyttelse, er granulariteten af ​​den beskyttelse, der tilbydes derved kun på niveauet pr. Segment. Det vil sige, at hvert segment kan indstilles til en bestemt ring (privilegieniveau) sammen med andre beskyttelser som skrivehæmmet. Men der er ikke så mange segmentbeskrivelser til rådighed. De fleste operativsystemer vil gerne have en meget finere detaljeret hukommelsesbeskyttelse, som ... for de enkelte sider.

Så indtast sidetabelbaseret beskyttelse. De fleste, hvis ikke alle, moderne x86-operativsystemer ignorerer mere eller mindre segmenteringsmekanismen (så meget som de alligevel kan) og stoler på den beskyttelse, der er tilgængelig fra bitene med lav ordre i sidetabelposter. En af disse kaldes "privilegeret" bit. Denne bit styrer, om processoren skal være på et af de "privilegerede" niveauer for at få adgang til siden. De "privilegerede" niveauer er PL 0, 1 og 2 . Men det er kun en smule, så på beskyttelsesniveau side-for-side er antallet af tilgængelige "tilstande", hvad hukommelsesbeskyttelse angår, kun to: En side kan være tilgængelig fra ikke-privilegeret tilstand eller ej. Derfor kun to ringe. For at have fire mulige ringe til hver side, skulle de have to beskyttelsesbits i hver sidetabelindgang for at kode en af ​​fire mulige ringnumre (ligesom segmentbeskrivere). Men det gør de ikke.

Den anden årsag er et ønske om operativsystemportabilitet. Det handler ikke kun om x86; Unix lærte os, at et operativsystem kunne være relativt bærbart til flere processorarkitekturer, og at det var en god ting. Og nogle processorer understøtter kun to ringe. Ved ikke at være afhængig af flere ringe i arkitekturen gjorde operativsystemimplementerne operativsystemerne mere bærbare.

Der er en tredje grund, der er specifik for Windows NT-udvikling. NTs designere (David Cutler og hans team, som Microsoft hyrede væk fra DEC Western Region Labs) havde omfattende tidligere erfaring med VMS; faktisk var Cutler og nogle få af de andre blandt VMS originale designere. Og VAX-processoren, som VMS blev designet til, har fire ringe (VMS bruger fire ringe).

Men de komponenter, der kørte i VMS Ringe 1 og 2 (Henholdsvis Record Management Services og CLI) blev udeladt af NT-designet. Ring 2 i VMS handlede det ikke rigtig om operativsystemsikkerhed, men snarere om at bevare brugerens CLI-miljø fra det ene program til det næste, og Windows havde ikke dette koncept; CLI kører som en almindelig proces. Hvad angår VMS'er Ring 1 , RMS-koden i Ring 1 måtte ringe ind Ring 0 temmelig ofte, og ringovergange er dyre. Det viste sig at være langt mere effektivt at bare gå til Ring 0 og gøres med det i stedet for at have en masse Ring 0 overgange inden for Ring 1 kode (igen, ikke at NT alligevel har noget som RMS).

Med hensyn til hvorfor x86 implementerede fire ringe, mens operativsystemer ikke brugte dem, taler du om operativsystemer med langt nyere design end x86. Mange af systemprogrammeringsfunktionerne i x86 blev designet længe før NT eller ægte Unix-ish-kerner blev implementeret på den, og de vidste ikke rigtig, hvad operativsystemet ville bruge. Først da vi fik en personsøgning på x86, kunne vi implementere ægte Unix-ish eller VMS-lignende kerner.

Ikke kun ignorerer moderne x86-operativsystemer segmentering (de opsætter bare C-, D- og S-segmenterne med en basisadresse på 0 og størrelse på 4 GB; F- og G-segmenter bruges undertiden til at pege på centrale operativsystemdatastrukturer ), ignorerer de også stort set ting som “task state segmenter”. TSS-mekanismen var tydeligt designet til at skifte trådkontekst, men det viser sig at have for mange bivirkninger, så moderne x86-operativsystemer gør det "manuelt". Den eneste gang x86 NT skifter hardwareopgaver er for nogle virkelig usædvanlige forhold, som en dobbeltfejlundtagelse.

Med hensyn til x64-arkitektur blev mange af disse ubrugte funktioner udeladt. Til deres ære talte AMD faktisk med operativsystemets kerneteam og spurgte, hvad de havde brug for fra x86, hvad de ikke havde brug for eller ikke ønskede, og hvad de gerne ville tilføjet. Segmenter på x64 findes kun i hvad der kan kaldes vestigial form, skift af opgavetilstand findes ikke osv., Og operativsystemer bruger fortsat kun to ringe.


Har du noget at tilføje til forklaringen? Lyd fra i kommentarerne. Vil du læse flere svar fra andre teknisk kyndige Stack Exchange-brugere? Tjek den fulde diskussionstråd her .

.indgangsindhold .indgangsfod

Why Do X86 CPUs Only Use Two Out Of Four “Rings”?

Why Do X86 CPUs Only Use 2 Out Of 4 Rings?

Lord Of The X86 Rings: A Portable User Mode Privilege Separation Architecture On X86


Hardware - Mest populære artikler

Hvorfor skader støjreducerende hovedtelefoner mine ører?

Hardware Jun 18, 2025

Gang Liu/Shutterstock Sætter dit nye par støjreducerende hovedtelefoner en smertefuld følelse af "pres" på dine ører? Det viser sig, at dit ..


Kan du udskifte batteriet i din MacBook?

Hardware Apr 26, 2025

Batteriet er ofte den første del, der virkelig svigter i ældre MacBooks. Hvis dette sker for dig, vil du være glad for at høre, at du måske bare er i stand til at udskifte det ..


Sådan får du Xbox One S-controlleren til at fungere korrekt med Android

Hardware Oct 27, 2025

År efter smartphone-boom er der hundredvis af forskellige Bluetooth-controllere til Android. De fleste af dem fungerer fint ud af kassen, men der er undtagelser som Microsofts nye ..


Fire måder peg-og-skyd-kameraer slår stadig smartphones

Hardware Jan 1, 2025

UCACHED INDHOLD Smartphone-kameraer bliver bedre og bedre hvert år, og selvom ingen vil argumentere for, at DSLR'er er det bedste valg til seriøs fotografering, har smartphones ..


Sådan startes Android Auto automatisk med NFC

Hardware Dec 9, 2024

UCACHED INDHOLD Android Auto for nylig gjorde sin vej til telefoner , hvilket eliminerer behovet for en hovedenhed på $ 1000+ for at få sine vejvenlig..


Hvorfor har nogle netværksstik omslag, og nogle er nøgne?

Hardware Jan 9, 2025

UCACHED INDHOLD Hæng rundt på et kontor længe nok, så får du en tydelig tendens inden for netværkskabler. Nogle kabler har et tildækket stik, og nogle kabler er nøgne. Hva..


Det bedste af CES (Consumer Electronics Show) i 2011

Hardware Jan 14, 2025

I år var How-To Geeks egen Justin på stedet på Consumer Electronics Show i Las Vegas, hvor enhver gadgetproducent viser deres nyeste kreationer, og han var i stand til at sætte ..


Hvad er forskellen mellem HDMI og DVI? Hvilken er bedre?

Hardware Jul 3, 2025

Er du forvirret af spærringen af ​​videokabler, der er tilgængelige i dag? Lad os se på de vigtigste videokabler i dag, HDMI og DVI, og se hvad der er forskell..


Kategorier