Jak funguji zaporne ringy? Myslel sem ze instrukce jsou rozdeleny podle ring 0..3 a pokud napr. Aplikace z userspace zkusi vykonat zmenu pametove stranky (ring 0), tak to zpusobi preruseni. Takhle jsou rozdeleny vsechny instr. Z instrukcni sady cpu. Ale jak jsou implementovany -ring? Nikde jsem nic ppdobneho nevidel?
záporné ringy nevstupují do samotných vykonávaných instrukcí a přímo je nikterak neovlivňují, procesor je nezohledňuje při vykonávání kódu. Stojí ale venku a mohu sami vyvolat přerušení, mohu sami přečíst registry a paměť, mohou třeba použít neveřejné instrukce procesoru k jeho další činnosti. Mají přístup na sběrnice, mohou si po nich posílat instrukce.
(profesně se tím nezabývám, je to můj laický pohled)
Predstav si to trebas tak, ze vemes (idealni) voltmetr a budes merit napeti. Aplikace (trebas vypinac) nevi, ze ty vis, jestli je sepnutej nebo ne. Co vic, ty mas krome toho jeste zdroj, kterym muzes ten stav menit, aniz by se to projevilo zvenku, na stavu toho vypinace (packa se nepohne ... ale stav se zmeni).
Tahle vec funguje stejne. Z pohledu aplikace (OS) se vykonavaji nejaky instrukce, prideluje se pamet ... ale ze HW dela jeste neco dalsiho (trebas ze vsechny provadeny instrukce posila intelu), to nemas sanci zjistit.
2Tomáš2: Moc bych si nedelal iluze o tom nezasahovani do provadenych instrukci. CPU ma mikrokod, kterej muze (i pomerne razantne) zmenit provadeni instrukci a predpokladam, ze na tyhle urovni do toho muzes zasahovat i doslova za chodu.