Varför använder x86-processorer bara två av fyra ”ringar”?

Apr 22, 2025
Hårdvara
OBEHANDLAT INNEHÅLL

När du lär dig mer om hur operativsystem och hårdvaran de kör på fungerar och interagerar med varandra, kan du bli förvånad över att se vad som verkar vara konstiga eller underutnyttjande av "resurser". Varför är det så? Dagens SuperUser Q & A-inlägg har svaret på en nyfiken läsares fråga.

Dagens Fråga & Svar-session kommer till oss med tillstånd av SuperUser - en underavdelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Foto med tillstånd av Lemsipmatt (Flickr) .

Frågan

SuperUser-läsare AdHominem vill veta varför x86-processorer bara använder två av fyra ringar:

Linux- och Windows-baserade x86-system använder endast Ring 0 för kärnläge och Ring 3 för användarläge. Varför skiljer processorer till och med fyra olika ringar om de ändå bara använder två av dem? Har detta förändrats med AMD64-arkitekturen?

Varför använder x86-processorer bara två av fyra ringar?

Svaret

SuperUser-bidragsgivaren Jamie Hanrahan har svaret för oss:

Det finns två primära skäl.

Den första är att, även om x86-processorerna erbjuder fyra ringar av minnesskydd, är det detaljerade skyddet som erbjuds därmed bara på per segmentnivå. Det vill säga, varje segment kan ställas in på en specifik ring (privilegienivå) tillsammans med andra skydd som skrivfunktioner. Men det finns inte så många segmentbeskrivare tillgängliga. De flesta operativsystem skulle vilja ha en mycket finare detaljerad minneskydd, som ... för enskilda sidor.

Så ange sidtabellbaserat skydd. De flesta, om inte alla, moderna x86-operativsystem ignorerar mer eller mindre segmenteringsmekanismen (så mycket de ändå kan) och förlitar sig på det skydd som finns tillgängligt från lågordensbitarna i sidtabellposter. En av dessa kallas "privilegierad" bit. Denna bit kontrollerar om processorn måste vara på en av de "privilegierade" nivåerna för att komma åt sidan. De "privilegierade" nivåerna är PL 0, 1 och 2 . Men det är bara en bit, så på skyddsnivån sida för sida är antalet tillgängliga "lägen" vad gäller minneskydd bara två: En sida kan nås från icke-privilegierat läge eller inte. Därför bara två ringar. För att ha fyra möjliga ringsignaler för varje sida måste de ha två skyddsbitar i varje sidtabellpost för att koda en av fyra möjliga ringsiffror (precis som segmentbeskrivarna). Men det gör de inte.

Den andra anledningen är en önskan om operativsystems portabilitet. Det handlar inte bara om x86; Unix lärde oss att ett operativsystem kan vara relativt bärbart för flera processorarkitekturer, och att det var bra. Och vissa processorer stöder bara två ringar. Genom att inte bero på flera ringar i arkitekturen gjorde operativsystemsimplementörerna operativsystemen mer bärbara.

Det finns en tredje anledning som är specifik för Windows NT-utveckling. NT: s designers (David Cutler och hans team, som Microsoft anlitade från DEC Western Region Labs) hade omfattande tidigare erfarenhet av VMS; faktiskt så var Cutler och några av de andra bland VMS originaldesigners. Och VAX-processorn som VMS designades för har fyra ringar (VMS använder fyra ringar).

Men komponenterna som kördes i VMS Ringar 1 och 2 (Record Management Services respektive CLI) lämnades utanför NT-designen. Ring 2 i VMS handlade det inte riktigt om operativsystemsäkerhet, utan snarare om att bevara användarens CLI-miljö från ett program till ett annat, och Windows hade inte det konceptet; CLI körs som en vanlig process. När det gäller VMS Ring 1 , RMS-koden i Ring 1 var tvungen att ringa in Ring 0 ganska ofta, och ringövergångar är dyra. Det visade sig vara mycket effektivare att bara gå till Ring 0 och vara klar med det snarare än att ha mycket Ring 0 övergångar inom Ring 1 kod (återigen, inte att NT har något som RMS ändå).

När det gäller varför x86 implementerade fyra ringar medan operativsystem inte använde dem, talar du om operativsystem med mycket nyare design än x86. Många av systemprogrammeringsfunktionerna i x86 designades långt innan NT eller äkta Unix-ish-kärnor implementerades på den, och de visste inte riktigt vad operativsystemet skulle använda. Det var inte förrän vi fick sökning på x86 som vi kunde implementera äkta Unix-ish eller VMS-liknande kärnor.

Inte bara ignorerar moderna x86-operativsystem i hög grad segmentering (de ställer bara in C-, D- och S-segmenten med en basadress på 0 och storlek på 4 GB; F- och G-segment används ibland för att peka på viktiga operativsystemdatastrukturer ), ignorerar de till stor del saker som ”uppgiftsstatssegment”. TSS-mekanismen var tydligt utformad för trådkontextväxling, men det visar sig ha för många biverkningar, så moderna x86-operativsystem gör det "för hand". Den enda gången x86 NT byter maskinvaruuppgifter är för några riktigt exceptionella förhållanden, som ett dubbelfelundantag.

När det gäller x64-arkitektur utelämnades många av dessa nedlagda funktioner. Till deras kredit pratade AMD faktiskt med operativsystemets kärnteam och frågade vad de behövde från x86, vad de inte behövde eller inte ville och vad de skulle vilja lägga till. Segment på x64 finns bara i vad som kan kallas vestigial form, uppgiftsstatusväxling existerar inte etc., och operativsystem använder bara två ringar.


Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniskt kunniga Stack Exchange-användare? Kolla in hela diskussionstråden här .

.post-innehåll .inmatningsfot

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


Hårdvara - Mest populära artiklar

Xeon vs Core: Är Intels dyra processorer värda en premium?

Hårdvara Jul 16, 2025

Apple gjorde ett stort stänk i juni 2019 när det introducerade en översyn av Mac Pro stationär dator droppande med processorkraft och grafik. De primära komponen..


Varför ska du köpa AMD: s 2019-processorer för din nästa dator

Hårdvara Jul 3, 2025

OBEHANDLAT INNEHÅLL AMD AMD är ofta det bästa valet när du letar efter värde i en processor, men snart kan det ta kronan för topprestanda från Intel ..


Hur man inaktiverar rörelseutjämning på en Vizio TV

Hårdvara Feb 6, 2025

Vice Nya Vizio-TV-apparater använder rörelseutjämning för att göra innehållet du tittar på jämnare. Detta ser bra ut för en del innehåll, som sport,..


Så här ställer du in och optimerar Steam-länken för streaming av internt spel

Hårdvara Feb 24, 2025

Ventiler Steam Link är ett elegant och enkelt sätt att strömma spel från din dator till en TV någon annanstans i ditt hem. Du ansluter Steam Link till din dator ..


Hur laddar du din Halloween som ett proffs med en digital projektor

Hårdvara Oct 23, 2025

Halloween är en av de helgdagar som verkligen tar fram tinkeren i många nördar. Det finns en verklig tvättlista över saker att distribuera, modifiera och förbättra allt på j..


Hur du använder din iPhone för att spela in professionella filmer

Hårdvara Jun 10, 2025

OBEHANDLAT INNEHÅLL Att göra filmer på din smartphone har alltid varit enkelt, men oftare kan du förvänta dig att kvaliteten kommer att drabbas på grund av skakiga bilder, o..


Microsoft kunde ha varit på topp: 10 produktmöjligheter som Microsoft saknade

Hårdvara May 1, 2025

OBEHANDLAT INNEHÅLL När människor tänker på innovativa teknikföretag tänker de generellt inte på Microsoft. Microsoft har faktiskt haft en historia av innovativa produkter..


Vad du sa: Hur säkerhetskopierar du dina data?

Hårdvara Sep 16, 2025

OBEHANDLAT INNEHÅLL Med en ökande mängd av våra liv lagrade i digitalt format - ekonomiska dokument, familjefoton, arbetsprojekt - blir det allt viktigare att säkerhetskopier..


Kategorier