Waarom gebruiken x86-CPU's slechts twee van de vier "ringen"?

Apr 22, 2025
Hardware
ONGECAAKTE CONTENT

Als u meer te weten komt over hoe besturingssystemen en de hardware waarop ze draaien, werken en met elkaar omgaan, zult u misschien verbaasd zijn om te zien wat er op het oog eigenaardigheden of onderbenutting van "bronnen" lijkt te gebeuren. Waarom is dat? De SuperUser Q & A-post van vandaag biedt het antwoord op de vraag van een nieuwsgierige lezer.

De vraag- en antwoordsessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een community-gedreven groepering van Q & A-websites.

Foto met dank aan Lemsipmatt (Flickr) .

De vraag

SuperUser-lezer AdHominem wil weten waarom x86-CPU's slechts twee van de vier ringen gebruiken:

Op Linux en Windows gebaseerde x86-systemen gebruiken alleen Ring 0 voor kernelmodus en Ring 3 voor gebruikersmodus. Waarom onderscheiden processors zelfs vier verschillende ringen als ze er uiteindelijk toch maar twee gebruiken? Is dit veranderd met de AMD64-architectuur?

Waarom gebruiken x86-CPU's slechts twee van de vier ringen?

Het antwoord

SuperUser-bijdrager Jamie Hanrahan heeft het antwoord voor ons:

Er zijn twee hoofdredenen.

De eerste is dat, hoewel de x86-CPU's vier ringen van geheugenbescherming bieden, de granulariteit van de bescherming die daardoor wordt geboden alleen op het niveau per segment is. Dat wil zeggen dat elk segment kan worden ingesteld op een specifieke beltoon (privilege-niveau) samen met andere beveiligingen, zoals schrijven uitgeschakeld. Maar er zijn niet zoveel segmentbeschrijvingen beschikbaar. De meeste besturingssystemen willen een veel fijnere granulariteit van geheugenbescherming, zoals… voor individuele pagina's.

Voer dus op paginatabel gebaseerde bescherming in. De meeste, zo niet alle, moderne x86-besturingssystemen negeren min of meer het segmenteringsmechanisme (voor zover ze in ieder geval kunnen) en vertrouwen op de bescherming die beschikbaar is tegen de lage-orde bits in paginatabelinvoer. Een daarvan wordt het "geprivilegieerde" bit genoemd. Deze bit bepaalt of de processor zich in een van de "geprivilegieerde" niveaus moet bevinden om toegang te krijgen tot de pagina. De "bevoorrechte" niveaus zijn PL 0, 1 en 2 . Maar het is maar één bit, dus op het pagina-voor-pagina-beschermingsniveau is het aantal beschikbare "modi" wat betreft geheugenbescherming slechts twee: Een pagina kan toegankelijk zijn vanuit de niet-geprivilegieerde modus, of niet. Dus slechts twee ringen. Om vier mogelijke ringen voor elke pagina te hebben, zouden ze twee beschermingsbits in elke paginatabelvermelding moeten hebben om een ​​van de vier mogelijke ringnummers te coderen (net als de segmentbeschrijvingen). Maar dat doen ze niet.

De andere reden is een verlangen naar portabiliteit van het besturingssysteem. Het gaat niet alleen om x86; Unix heeft ons geleerd dat een besturingssysteem relatief draagbaar kan zijn voor meerdere processorarchitecturen, en dat het een goede zaak was. En sommige processors ondersteunen slechts twee ringen. Door niet afhankelijk te zijn van meerdere ringen in de architectuur, hebben de uitvoerders van het besturingssysteem de besturingssystemen draagbaarder gemaakt.

Er is een derde reden die specifiek is voor de ontwikkeling van Windows NT. De ontwerpers van NT (David Cutler en zijn team, die door Microsoft werden ingehuurd bij DEC Western Region Labs) hadden uitgebreide ervaring met VMS; In feite behoorden Cutler en een paar van de anderen tot de oorspronkelijke ontwerpers van VMS. En de VAX-processor waarvoor VMS is ontworpen, heeft wel vier ringen (VMS gebruikt vier ringen).

Maar de componenten die in VMS's draaiden Ringen 1 en 2 (Record Management Services en de CLI, respectievelijk) werden weggelaten uit het NT-ontwerp. Ring 2 in VMS ging het niet echt om de beveiliging van het besturingssysteem, maar om het behouden van de CLI-omgeving van de gebruiker van het ene programma naar het andere, en Windows had dat concept niet; de CLI werkt als een gewoon proces. Wat betreft VMS's Ring 1 , de RMS-code in Ring 1 moest bellen Ring 0 vrij vaak, en ringovergangen zijn duur. Het bleek veel efficiënter te zijn om gewoon naar toe te gaan Ring 0 en er klaar mee zijn in plaats van er veel van te hebben Ring 0 overgangen binnen de Ring 1 code (nogmaals, niet dat NT in ieder geval zoiets als RMS heeft).

Wat betreft waarom x86 vier ringen implementeerde terwijl besturingssystemen ze niet gebruikten, heb je het over besturingssystemen met een veel recenter ontwerp dan x86. Veel van de systeemprogrammeerfuncties van x86 werden ontworpen lang voordat NT of echte Unix-achtige kernels erop werden geïmplementeerd, en ze wisten niet echt wat het besturingssysteem zou gebruiken. Pas toen we paging op x86 kregen, konden we echte Unix-achtige of VMS-achtige kernels implementeren.

Moderne x86-besturingssystemen negeren niet alleen segmentering grotendeels (ze stellen alleen de C-, D- en S-segmenten in met een basisadres van 0 en een grootte van 4 GB; F- en G-segmenten worden soms gebruikt om te verwijzen naar de belangrijkste datastructuren van het besturingssysteem. ), negeren ze ook grotendeels zaken als "taakstatus-segmenten". Het TSS-mechanisme was duidelijk ontworpen voor het wisselen van threadcontext, maar het blijkt te veel bijwerkingen te hebben, dus moderne x86-besturingssystemen doen het "met de hand". De enige keer dat x86 NT hardwaretaken wijzigt, is voor een aantal echt uitzonderlijke omstandigheden, zoals een dubbele foutuitzondering.

Met betrekking tot x64-architectuur zijn veel van deze niet meer gebruikte functies weggelaten. Het strekt tot hun eer dat AMD daadwerkelijk met kernelteams van het besturingssysteem heeft gesproken en gevraagd wat ze nodig hadden van x86, wat ze niet nodig hadden of niet wilden, en wat ze graag zouden willen toevoegen. Segmenten op x64 bestaan ​​alleen in wat zou kunnen worden genoemd rudimentaire vorm, het wisselen van taakstatus bestaat niet, enz., En besturingssystemen blijven slechts twee ringen gebruiken.


Iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden lezen van andere technisch onderlegde Stack Exchange-gebruikers? Bekijk hier de volledige discussiethread .

.entry-inhoud .entry-footer

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 - Meest populaire artikelen

Wat zijn de MicroLED-tv's van Samsung en hoe verschillen ze van OLED?

Hardware Mar 19, 2025

ONGECAAKTE CONTENT Aan de top van de televisiemarkt heb je twee grote spelers: Samsung en LG. Natuurlijk zijn er andere merken die high-end sets maken en de concurrentie tussen bu..


Hoe u het batterijpercentage op uw Nintendo Switch kunt weergeven

Hardware Jun 27, 2025

ONGECAAKTE CONTENT Standaard toont het startscherm van de Nintendo Switch je een standaard batterijpictogram. Weggestopt in de systeeminstellingen is een optie om een ​​nauwke..


De beste games en paaseieren in Google Assistant

Hardware Jun 20, 2025

ONGECAAKTE CONTENT Google Assistant bevat veel handige spraakopdrachten, maar dan Google Now ook . Assistant onderscheidt zich door ook enkele van de leuke dingen o..


Wat zijn mesh-wifi-systemen en hoe werken ze?

Hardware Feb 2, 2025

Als het wifi-netwerk van je huis dode hoeken heeft, of niet het hele huis bereikt, heb je onlangs misschien overwogen om een ​​mesh-wifi-systeem aan te schaffen. Ze zijn enorm p..


Hoe u uw Nest Thermostat van verwarmen naar koelen schakelt (en vice versa)

Hardware May 20, 2025

Nu het warmere weer eindelijk aanbreekt, schakelen veel huishoudens hun thermostaat over van verwarming naar koeling. Hier is hoe je het op de Nest Thermostat doet. VE..


Een zelfgemaakte draagbare airconditioner maken voor slechts $ 8

Hardware Jun 19, 2025

ONGECAAKTE CONTENT Bent u op zoek naar een goedkope en gemakkelijke manier om de hitte te verslaan? Dan is dit doe-het-zelf-project van de draagbare airconditioner mis..


Uit de tipsbox: Android-audioprofielen, Google-bladwijzers op Android en kabelveters beheren

Hardware Aug 11, 2025

ONGECAAKTE CONTENT Het is een donderdagmiddag en die fooi-tijd-van-week weer. Deze week kijken we naar het beheren van audioprofielen op Android-telefoons, toegang tot Google Book..


Hoe u uw eigen audiopodcast kunt maken en uitvoeren

Hardware Jan 10, 2025

ONGECAAKTE CONTENT Heb je ooit zin gehad om je stem letterlijk naar het web te brengen? Podcasts zijn een geweldige manier om met mensen te communiceren en een blog aan te vullen...


Categorieën