Miksi x86-suorittimet käyttävät vain kahta neljästä "renkaasta"?

Apr 22, 2025
Laitteisto
SÄHKÖISETTÖTÖN SISÄLTÖ

Kun opit lisää siitä, miten käyttöjärjestelmät ja niiden käyttämät laitteistot toimivat ja ovat vuorovaikutuksessa toistensa kanssa, saatat olla yllättynyt siitä, että näyttäisi olevan "resurssien" omituisuutta tai alikäyttöä. Miksi niin? Tämän päivän SuperUser Q & A -viestillä on vastaus utelias lukijan kysymykseen.

Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.

Kuva: Lemsipmatt (Flickr) .

Kysymys

SuperUser-lukija AdHominem haluaa tietää, miksi x86-suorittimet käyttävät vain kahta neljästä renkaasta:

Vain Linux- ja Windows-pohjaiset x86-järjestelmät käyttävät Rengas 0 ydintilaa varten ja Rengas 3 käyttäjätilaa varten. Miksi prosessorit erottavat jopa neljä erilaista rengasta, jos ne kaikki päätyvät käyttämään vain kahta niistä? Onko tämä muuttunut AMD64-arkkitehtuurin kanssa?

Miksi x86-suorittimet käyttävät vain kahta neljästä renkaasta?

Vastaus

SuperUser-avustaja Jamie Hanrahanilla on vastaus meille:

On kaksi ensisijaista syytä.

Ensimmäinen on se, että vaikka x86-keskusyksiköt tarjoavatkin neljä muistisuojausrengasta, sen tarjoama suojauksen tarkkuus on vain segmenttikohtaisella tasolla. Eli jokainen segmentti voidaan asettaa tietylle renkaalle (etuoikeustasolle) yhdessä muiden suojausten, kuten kirjoittamisen estävän, kanssa. Mutta segmenttikuvaajia ei ole niin paljon käytettävissä. Useimmat käyttöjärjestelmät haluaisivat paljon tarkemman muistisuojauksen, kuten… yksittäisille sivuille.

Joten kirjoita sivupöytäsuojaus. Suurin osa, ellei kaikki, nykyaikaiset x86-käyttöjärjestelmät jättävät enemmän tai vähemmän huomiotta segmentointimekanismin (niin paljon kuin pystyvät joka tapauksessa) ja luottavat sivutaulukkomerkintöjen matalan kertaluvun biteistä saatavaan suojaukseen. Yksi näistä on nimeltään "etuoikeutettu" bitti. Tämä bitti ohjaa sitä, onko prosessorin oltava jollakin "etuoikeutetulla" tasolla pääsyyn sivulle. "Etuoikeutetut" tasot ovat PL 0, 1 ja 2 . Mutta se on vain yksi bitti, joten sivukohtaisella suojaustasolla käytettävissä olevien "tilojen" määrä muistisuojauksessa on vain kaksi: Sivulle pääsee käsiksi ei-etuoikeutetusta tilasta. Siksi vain kaksi rengasta. Saadakseen neljä mahdollista rengasta kullekin sivulle, heillä on oltava kaksi suojabittiä jokaisessa sivutaulukon merkinnässä koodaamaan yksi neljästä mahdollisesta rengasnumerosta (aivan kuten segmenttikuvaajatkin). He eivät kuitenkaan tee niin.

Toinen syy on halu käyttöjärjestelmän siirrettävyyteen. Kyse ei ole vain x86: sta; Unix opetti meille, että käyttöjärjestelmä voi olla suhteellisen kannettava useille prosessoriarkkitehtuureille ja että se oli hyvä asia. Jotkut prosessorit tukevat vain kahta rengasta. Käyttöjärjestelmän toteuttajat tekivät käyttöjärjestelmistä kannettavamman, koska ne eivät riipu arkkitehtuurin useista renkaista.

On kolmaskin syy, joka liittyy Windows NT -kehitykseen. NT: n suunnittelijoilla (David Cutler ja hänen tiiminsä, jotka Microsoft palkkasi pois DEC Western Region Labsista) oli pitkä kokemus VMS: stä; Itse asiassa Cutler ja muutamat muut olivat VMS: n alkuperäisten suunnittelijoiden joukossa. Ja VAX-prosessorille, jolle VMS on suunniteltu, on neljä rengasta (VMS käyttää neljä rengasta).

Mutta VMS: ssä toimivat komponentit Renkaat 1 ja 2 (Record Management Services ja vastaavasti CLI) jätettiin NT-suunnittelun ulkopuolelle. Rengas 2 VMS: ssä ei oikeastaan ​​ollut kyse käyttöjärjestelmän turvallisuudesta, vaan pikemminkin käyttäjän CLI-ympäristön säilyttämisestä ohjelmasta toiseen, eikä Windowsilla ollut tällaista käsitettä; CLI toimii tavallisena prosessina. Mitä tulee VMS: iin Rengas 1 , RMS-koodi Rengas 1 piti soittaa Rengas 0 melko usein, ja renkaan siirtymät ovat kalliita. Se osoittautui paljon tehokkaammaksi vain mennä Rengas 0 ja tehdä sen sen sijaan, että sinulla olisi paljon Rengas 0 siirtymät Rengas 1 koodi (taas ei, että NT: llä on joka tapauksessa jotain RMS: ää).

Miksi x86 otti käyttöön neljä rengasta, kun taas käyttöjärjestelmät eivät käyttäneet niitä, puhut paljon uudemmasta käyttöjärjestelmästä kuin x86. Suuri osa x86: n järjestelmäohjelmointiominaisuuksista suunniteltiin kauan ennen NT: n tai aitojen Unix-ish-ytimien käyttöönottoa, eivätkä tienneet, mitä käyttöjärjestelmä käyttää. Vasta kun saimme sivutuksen x86: lla, voimme toteuttaa todellisia Unix-ish- tai VMS-tyyppisiä ytimiä.

Paitsi että modernit x86-käyttöjärjestelmät jättävät suurelta osin huomiotta segmentoinnin (ne vain asettavat C-, D- ja S-segmentit, joiden perusosoite on 0 ja koko 4 Gt; F- ja G-segmenttejä käytetään joskus osoittamaan tärkeimpiin käyttöjärjestelmän tietorakenteisiin ), he jättävät myös suurelta osin huomiotta esimerkiksi "tehtävän tilasegmentit". TSS-mekanismi on suunniteltu selkeästi langankontekstikytkentää varten, mutta sillä on osoittautunut olevan liikaa sivuvaikutuksia, joten modernit x86-käyttöjärjestelmät tekevät sen "käsin". Ainoa kerta, kun x86 NT vaihtaa laitteistotehtäviä, on joissakin todella poikkeuksellisissa olosuhteissa, kuten kaksinkertaisen virheen poikkeus.

X64-arkkitehtuurin osalta monet näistä käyttämättömistä ominaisuuksista jätettiin pois. Kiitokseksi heidän ansioksien, että AMD puhui tosiasiassa käyttöjärjestelmän ydinryhmien kanssa ja kysyi, mitä he tarvitsivat x86: sta, mitä he eivät tarvinneet tai eivät halunneet ja mitä haluaisivat lisätä. X64: n segmentit ovat olemassa vain siinä muodossa, jota voidaan kutsua jäännösmuodoksi, tehtävän tilanvaihtoa ei ole jne., Ja käyttöjärjestelmät käyttävät edelleen vain kahta rengasta.


Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .

.entry-sisältö .entry-alatunniste

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


Laitteisto - Suosituimmat artikkelit

Jos asut EU: ssa, sinulla on todennäköisesti parempi gadget-takuu

Laitteisto Feb 14, 2025

SÄHKÖISETTÖTÖN SISÄLTÖ Euroopan unioni on yleensä käyttänyt paljon käytännönläheisempää lähestymistapaa kuluttajien oikeuksiin kuin Yhdysvallat. Jos olet EU: ssa, ..


Mikä on ero Google Homen, Minin ja Maxin välillä?

Laitteisto Oct 4, 2025

SÄHKÖISETTÖTÖN SISÄLTÖ Pyrittäessä kilpailemaan tiiviimmin Amazonin uusimmat lisäykset Echo-kokoonpanoonsa , Google paljasti Google Home Mini ..


Nest vs. Ecobee3 vs. Honeywell Lyric: Minkä älykkään termostaatin sinun pitäisi ostaa?

Laitteisto Sep 12, 2025

Älykkäiden termostaattien suhteen on kourallinen valita, mutta kolme suurinta erottuvaa ovat Pesä , Ecobee 4 ja Honeywell Lyric Round ..


RetroArchin, lopullisen All-In-One Retro Games -emulaattorin, asentaminen

Laitteisto Jul 5, 2025

Haluatko, että voisit selata sohvallasi massiivisen kokoelman retro-pelejä ilman, että sinun tarvitsee liittää joukkoa järjestelmiä tai mukulakiviä eri emulaattoreihin? Retr..


Kaapelimodeemin diagnostiikkasivun lukeminen, kun jotain menee pieleen

Laitteisto Jul 12, 2025

Vaikka kaapelimodeemit ovat tuntemattomia eivätkä useimmat ihmiset sitä ohittaneet, niillä on diagnoosi, joka voi auttaa sinua ratkaisemaan yhteysongelmia. ..


Kuinka pysäyttää Apple Watchisi nukkumasta seisomaan

Laitteisto Dec 5, 2024

Oletko kyllästynyt Apple Watchin kiusaamiseen seisomaan? Et ole yksin. Lue, kun näytämme sinulle, kuinka kertoa pienelle älykello-ihmeelle päästä irti selästäsi. Päinvasto..


Lopeta rahan tuhlaaminen laitekohtaisille autolatureille ja aloita universaalin USB-laturin käyttö

Laitteisto Jul 11, 2025

SÄHKÖISETTÖTÖN SISÄLTÖ Se on yhtä vanha tarina kuin mobiilitekniikan aika: osta uusi puhelin tai laite, osta uusi 12 V: n autolaturi ja toista uudelleen ensi vuonna. Annamm..


Ymmärtäminen Wall Wart -virtalähteistä [Electronics]

Laitteisto Aug 20, 2025

Wall Warts, todennäköisesti käytät niitä päivittäin antamatta heille paljon muuta ajatusta. Mitä tapahtuu tarkalleen niiden paksujen mustien seinälaturien sisällä, jotka muutta..


Luokat