lt.phhsnews.com


lt.phhsnews.com / Kodėl "x86" procesoriai naudoja tik dvi iš keturių "žiedų"?

Kodėl "x86" procesoriai naudoja tik dvi iš keturių "žiedų"?


Jei norite sužinoti daugiau apie tai, kaip operacinės sistemos ir aparatinė įranga, kurioje jie veikia, dirba ir sąveikauja vienas su kitu, galite būti nustebinti pamatyti, kas atrodo kvailiai ar nepakankamai išnaudojami "ištekliai". Kodėl tai? Šiandieninė "SuperUser" Q & A ataskaita turi atsakymą į įdomų skaitytojo klausimą.

Šiandienos klausimų ir atsakymų sesija ateina pas mus "SuperUser" - "Stack Exchange", bendruomenės pagrįstos Q & A tinklalapių grupės dalimi.

Nuotraukų draudimas iš Lemsipmatt (Flickr).

Klausimas

SuperUser skaitytojas AdHominem nori sužinoti, kodėl x86 procesoriai naudoja tik du iš keturių žiedų:

"Linux" ir "Windows x86" sistemos naudoja tik Ring 0 branduolio režimas ir žiedas 3 naudotojo režimui. Kodėl procesoriai netgi išskiria keturis skirtingus žiedus, jei jie visi tik naudoja tik du iš jų vistiek? Ar tai pasikeitė naudojant AMD64 architektūrą?

Kodėl x86 procesoriai naudoja tik du iš keturių žiedų?

Answerer

SuperUser autorius Jamie Hanrahan atsakė mums:

Yra dvi pagrindinės priežastys.

Pirmoji yra tai, kad nors x86 procesoriai siūlo keturis atminties apsaugos žiedus, jų siūlomos apsaugos detalumas yra tik vieno segmento lygmenyje. Tai reiškia, kad kiekvienam segmentui gali būti nustatytas tam tikras žiedas (privilegijos lygis) kartu su kitomis apsaugos priemonėmis, pvz., Neįrašyta. Tačiau nėra daugelio segmentų deskriptorių. Dauguma operacinių sistemų norėtų turėti daug smulkesnę apsaugą nuo atminties, pvz., ... atskiriems puslapiams.

Taigi įveskite puslapio lentelių apsaugą. Dauguma, jei ne visos, šiuolaikinės "x86" operacinės sistemos daugiau ar mažiau ignoruoja segmentavimo mechanizmą (tiek, kiek jis vistiek gali) ir remtis apsauga, kurią galima gauti iš žemo lygio bitų puslapio lentelės įrašuose. Vienas iš jų vadinamas "privilegijuotu" bitu. Šiek tiek patikrinama, ar procesorius turi būti vienoje iš "privilegijuotų" lygių, kad galėtumėte pasiekti puslapį. "Privilegijuoti" lygiai yra PL 0, 1 ir 2 . Bet tai tik vienas, taigi puslapio apsaugos lygiu "režimų" skaičius, kiek tai susiję su atminties apsauga, yra tik du: puslapis gali būti pasiekiamas iš ne privilegijuoto režimo arba ne. Taigi, tik du žiedai. Kad kiekvienas puslapis galėtų turėti keturis galimus žiedus, kiekvieno puslapio lentelės įraše turėtų būti du apsauginiai bitai, koduojantys vieną iš keturių galimų skambučių numerių (taip pat kaip ir segmentų aprašus). Tačiau jie neturi.

Kita priežastis yra operacinės sistemos perkėlimo noras. Tai ne tik x86; "Unix" mums išmokė, kad operacinė sistema galėtų būti palyginti lengvai perkeliama į keletą procesorių architektūrų, ir kad tai buvo geras dalykas. Kai kurie procesoriai palaiko tik du žiedus. Nepriklausomai nuo kelių žiedų architektūroje, operacinės sistemos diegėjai padarė operacines sistemas labiau perkeliamos.

Yra trečioji priežastis, kuri būdinga "Windows NT" plėtrai. NT dizaineriai (David Cutler ir jo komanda, kuriuos "Microsoft" pasamdė iš "DEC Western Region Labs") turėjo plačią ankstesnę patirtį VMS srityje; iš tikrųjų Cutleris ir keletas kitų buvo tarp VMS originalių dizainerių. Ir VXS procesorius, kurio VMS buvo suprojektuotas, turi keturis žiedus (VMS naudoja keturis žiedus).

Tačiau komponentai, kurie paleidžiami VMS " " žieduose 1 ir 2 (atitinkamai "Record Management Services" ir CLI) buvo pašalinti iš NT dizaino. Ring 2 VMS nebuvo iš tikrųjų apie operacinės sistemos saugumą, o apie tai, kaip išsaugoti vartotojo CLI aplinką iš vienos programos į kitą, o Windows neturėjo šios sąvokos; CLI veikia kaip įprastas procesas. Kalbant apie VMS Ring 1 , RMS kodą Ring 1 reikėjo gana dažnai skambėti Ring 0 , o skambučių perėjimai yra brangūs. Paaiškėjo, kad yra daug efektyvesnis, jei norite eiti į Ring 0 ir atlikti su juo, o ne turėti Ring 0 perėjimų per Ring 1 kodas (dar kartą, kad NT dar neturi nieko panašaus į RMS).

Kalbant apie tai, kodėl "x86" įdiegė keturis žiedus, o operacinės sistemos jų nenaudojo, jūs kalbate apie tolimiausio dizaino operacines sistemas, negu "x86". Daugelis x86 sistemos programavimo funkcijų buvo sukurtos ilgai prieš tai, kai NT buvo įdiegtos "NT" ar tikrosios "Unix-ish" branduolys, ir jie tikrai nežinojo, ką naudos operacinė sistema. Tai buvo tik tada, kai mes sukūrėme x86 piktogramą, kad galėtume įdiegti tikrus "Unix-ish" arba "VMS" tipo branduolius.

Ne tik šiuolaikinės "x86" operacinės sistemos daugiausia ignoruoja segmentavimą (jie tik sukūrė segmentus C, D ir S bazinis adresas yra 0 ir dydis 4 GB; F ir G segmentai kartais naudojami siekiant nurodyti pagrindines operacinės sistemos duomenų struktūras), jie taip pat daugiausia ignoruoja tokius dalykus kaip "užduoties būsenos segmentai". TSS mechanizmas buvo aiškiai suprojektuotas, kad būtų galima keisti gijų kontekstą, tačiau paaiškėja, kad jis turi per daug šalutinių poveikių, todėl modernios x86 operacinės sistemos tai daro "rankomis". Vienintelis x86 NT keitimo aparatūros uždavinys yra kai kurių tikrai išskirtinių sąlygų, pavyzdžiui, dvigubos gedimų išimties.

Dėl x64 architektūros, daugelis šių neveikiančių funkcijų buvo paliktos. Savo ruožtu AMD iš tikrųjų kalbėjo su operacinės sistemos branduolio komandomis ir paklausė, ko jiems reikia iš "x86", ko jiems nereikėjo ar nenorėjo, ir ką jie norėtų pridėti. "X64" segmentai egzistuoja tiktai tai, kas gali būti vadinama "vestigian" formule, užduoties būsenos perjungimas neegzistuoja ir tt, o operacinėse sistemose ir toliau naudoti tik du žiedus.


Ar turite ką nors įtraukti į paaiškinimą? Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų? Patikrinkite visą diskusijų temą čia.


Kaip naudoti ir konfigūruoti

Kaip naudoti ir konfigūruoti "Windows 10" "Battery Saver" režimą

"Windows 10" "Battery Saver" režimas, skirtas praplėsti savo nešiojamojo kompiuterio ar planšetinio kompiuterio baterija. "Windows" automatiškai įjungs "Battery Saver", kai jūsų kompiuterio akumuliatorius išsikraus, tačiau jūs galite tai valdyti ir tiksliai išsirinkti, ką veikia "Battery Saver". Kas tiksliai veikia "Battery Saver" režimas?

(how-to)

Kaip kurti keletą pakatalogių su viena

Kaip kurti keletą pakatalogių su viena "Linux" komanda

Jei norite sukurti katalogą, kuriame yra kelios pakatalogio arba katalogo medžio, naudojant komandinę eilutę Linux, paprastai turite naudoti mkdir komandą keletą kartų. Tačiau tai yra greitesnis būdas tai padaryti. Tarkime, kad sukūrėme katalogą, pavadintą htg, ir norime sukurti keturis pakatalogius.

(how-to)