cs.phhsnews.com


cs.phhsnews.com / Proč procesory x86 používají pouze dva ze čtyř "kroužků"?

Proč procesory x86 používají pouze dva ze čtyř "kroužků"?


Když se dozvíte více o tom, jak fungují operační systémy a hardware, abychom zjistili, co se zdá být zvláštností nebo nedostatečným využitím "zdrojů", k nimž dochází. Proč je to tak? Dnešní příspěvek SuperUser Q & A má odpověď na otázku zvědavé čtenáře.

Současná otázka a odpověď se k nám dostala s laskavým svolením SuperUseru - subdivize Stack Exchange, komunitně řízeného seskupování webových stránek Otázky a odpovědi. Lemsipmatt (Flickr)

Otázka

čtečka SuperUser AdHominem chce vědět, proč procesory x86 používají pouze dva ze čtyř kroužků:

Systémy x86 systému Linux a Windows používají pouze

Ring 0 režimu jádra a Prsten 3 pro uživatelský režim. Proč procesory dokonce rozlišují čtyři různé kroužky, pokud všichni nakonec jen používají dva z nich? Je to změněno s architekturou AMD64? Proč procesory x86 používají pouze dva ze čtyř kroužků?

Odpověd:

Odpověď:

Existují dva hlavní důvody.

Prvním je to, že ačkoli procesory x86 nabízejí čtyři kroužky s ochranou paměti, poskytuje granularita ochrany pouze na úrovni jednotlivých segmentů. To znamená, že každý segment může být nastaven na konkrétní prsten (úroveň oprávnění) spolu s dalšími ochranami, jako je zapisování. Neexistuje však mnoho deskriptorů segmentů. Většina operačních systémů by chtěla mít mnohem jemnější granularitu ochrany paměti, například ... pro jednotlivé stránky.

Takže zadejte ochranu tabulky stránek. Většina, ne-li všechny, moderní operační systémy x86 ignorují mechanismus segmentace (stejně jako mohou) a spoléhají se na ochranu dostupné z bitů nízkého pořadí v položkách tabulky stránek. Jeden z nich se nazývá "privilegovaný" bit. Tento bit řídí, zda musí být procesor v jedné z "privilegovaných" úrovní pro přístup k této stránce. "Privilegované" úrovně jsou

PL 0, 1 a 2 . Jedná se však pouze o jeden bit, takže při úrovni ochrany jednotlivých stránek je počet "dostupných" režimů, pokud jde o ochranu paměti, pouze dvě: Stránky mohou být přístupné z režimu bez privilegovaného přístupu nebo ne. Proto mají jen dva kroužky. Aby každá stránka měla čtyři možné kroužky, měly by mít v každé položce tabulky stránek dva ochranné bity, aby kódovaly jedno ze čtyř možných čísel (stejně jako deskriptory segmentů). Ale ne. Jiným důvodem je touha po přenositelnosti operačního systému. Nejde jen o x86; Unix nás učil, že operační systém může být poměrně přenosný pro architekturu více procesorů a že je to dobrá věc. Některé procesory podporují pouze dva kroužky. Tím, že závisí na více kruzích v architektuře, implementátoři operačního systému učinili operační systémy přenosnější.

Existuje třetí důvod, který je specifický pro vývoj Windows NT. Návrháři společnosti NT (David Cutler a jeho tým, kteří Microsoft najali z DEC Western Labs) měli rozsáhlé předchozí zkušenosti s VMS; ve skutečnosti byl Cutler a několik dalších mezi původními návrháři VMS. A procesor VAX, pro který byl navržen VMS, má čtyři kroužky (VMS používá čtyři kroužky).

Ale komponenty, které běží v VMS

Prsteny 1 a 2 (Record Management Services a CLI) byly z návrhu NT vynechány. Prsten 2 ve VMS nebyl opravdu o zabezpečení operačních systémů, spíše o zachování prostředí CLI uživatele z jednoho programu na další a Windows neměl tento koncept; CLI běží jako běžný proces. Co se týče VMS Ring 1 , musel RMS kód Ring 1 volat do Ring 0 poměrně často a přechody prstenů jsou drahé. Ukázalo se, že je mnohem efektivnější jednoduše jít na Prsten 0 a udělat s tím spíše než mít spousty Ring 0 přechody Prsten 1 kód (opět, že NT nemá nic jako RMS). Pokud jde o důvod, proč x86 implementoval čtyři kroužky, zatímco operační systémy je nepoužívaly, mluvíte o operačních systémech s mnohem novějším designem než x86. Mnoho vlastností systému pro programování x86 bylo navrženo dlouho předtím, než byly implementovány NT nebo skutečné jádra Unix-ish a nevěděli, co by operační systém použil. Až do chvíle, kdy jsme na serveru x86 dostali stránkování, jsme schopni implementovat pravdivá jádra typu Unix-ish nebo VMS.

Nejmodernější x86 operační systémy většinou ignorují segmentaci (pouze nastavují segmenty C, D a S základní adresa 0 a velikost 4 GB, segmenty F a G se někdy používají k odkazování na klíčové struktury operačního systému), většinou také ignorují věci jako "segmenty úloh". Mechanismus TSS byl jasně navržen pro přepínání kontextu závitů, ale ukázalo se, že má příliš mnoho vedlejších efektů, takže moderní operační systémy x86 to dělají "ručně". Jediný čas, kdy x86 NT změní hardwarové úlohy, je pro některé skutečně výjimečné podmínky, jako je dvojitá výjimka chyby.

Pokud jde o architekturu x64, mnoho těchto nepoužívaných funkcí bylo vynecháno. AMD ve skutečnosti hovořila s týmy jádra operačního systému a zeptala se, co od x86 potřebují, co nepotřebovali nebo nechtěli a co by chtěli přidat. Segmenty na platformě x64 existují pouze v tom, co se může nazývat formální formulář, přepnutí stavu úlohy neexistuje atd. A operační systémy používají pouze dva kruhy.

Musíte něco přidat k vysvětlení? Zní to v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.



Chcete předplatit kabel? Využijte služeb

Chcete předplatit kabel? Využijte služeb "TV všude"

Online streamingové služby jsou obvykle považovány za alternativu k drahým předplaceným kabelům pro řezače kabelů. Televizní sítě se to pokoušejí měnit už léta a vydali více a více služeb, které vám umožňují volný přístup k videu na vyžádání, pokud máte předplacené služby. Pokud máte předplacenou kabelovou linku, tak je dobrou šanci, že máte přístup k mnoha službám "TV Everywhere".

(how-to)

Co dělat, když se nedaří připojit k síti Wi-Fi kvůli předchozímu heslu?

Co dělat, když se nedaří připojit k síti Wi-Fi kvůli předchozímu heslu?

Pokud jste noví pracující s sítěmi Wi-Fi, pak změny provedené rodinou nebo přátelé vás mohou nechat v špatné situaci bez připojení. Takže jak se znovu připojujete? Dnešní příspěvek SuperUser Q & A má odpověď, aby pomohl frustrovanému čtenáři, aby se opět připojil ke své síti Wi-Fi. Dnešní zasvěcování o otázce a odpovědi se nám stalo s laskavým svolením SuperUseru - subdivize Stack Exchange, Otázka Otázka čtečka praxe SuperUser chce vědět, jak odstranit staré heslo Wi-Fi a přidat nové: Můj bratr se změnil heslo pro síť Wi-Fi, kterou používám k připojení notebooku k Internetu, když se přestěhoval do jiného města.

(how-to)