Čo je používateľský režim vs režim jadra v systéme Windows

Možno ste už počuli o aplikáciách bežiacich v režime „kernel“ alebo „user“. Všetko závisí od toho, ako fungujú operačné systémy, keď vykonávajú svoju prácu. Keď to pochopíte, je ľahké pochopiť rozdiel medzi používateľským režimom a režimom jadra.

Pochopenie toho, čo robí(Does) operačný systém

Počítač pozostáva z hardvéru, elektronických komponentov a softvéru, počítačového kódu vykonávaného týmto hardvérom. Čo však môže byť menej jasné, je to, ako spolupracujú.

Najdôležitejším prvkom počítača je bit alebo „binárna číslica. “Všetko(” Everything) , čo počítač robí, je reprezentované jednotkami a nulami. Rôzne(Different) počítačové komponenty predstavujú bity rôznymi spôsobmi. V CPU mikroskopické tranzistory predstavujú jednotky a nuly tým, že sú zapnuté alebo vypnuté. Tieto tranzistory sú usporiadané do logických štruktúr, ktoré sa nazývajú logické brány.

V elektronickej počítačovej pamäti sú bity reprezentované pamäťovými bunkami, ktoré majú náboj nad alebo pod určitým prahom. Na mechanickom pevnom disku sú bity reprezentované ako magnetické fluktuácie merané na rotujúcom tanieri. Na optických diskoch, jamky a plochy, ktoré odrážajú alebo neodrážajú laserové svetlo, vykonávajú rovnakú prácu. 

Bez ohľadu na to, ako sa dosiahne fyzická reprezentácia binárneho kódu, môžete nakoniec zredukovať všetky komponenty spotrebiteľského počítača na tento surový strojový kód.

Ako teda prejsť od rozhrania počítača priateľského k človeku k surovým procesom nízkej úrovne v samotnom počítači? Tu prichádza na rad operačný systém. Ten priamo riadi hardvér počítača. 

Tento softvér prekladá všetko, čo aplikácie (a teda aj používateľ) chcú, do inštrukcií strojového kódu, ktorým CPU a ostatné komponenty rozumejú. Najkritickejším softvérom v tomto procese je jadro.

Čo je jadro?

Jadro je, ako už názov napovedá, jadrom operačného systému. Jadro je softvér, ktorý sa nachádza v RAM a riadi všetko, čo počítač robí. Keď sa niečo zapíše do pamäte, je to jadro, ktoré riadi vykonávanie.

Jadro vie, ako sa prepojiť s hardvérom, ako sú GPU(GPUs) a sieťové karty, ale nemusí vedieť, ako ich naplno využívať, spoliehajúc sa na generické štandardy v počítačovom priemysle.

Tu prichádzajú do úvahy ovládače hardvéru. Ovládače povedia vášmu operačnému systému, ako má pracovať s konkrétnymi komponentmi, a preto potrebujete rôzne ovládače napríklad pre GPU Nvidia a AMD(AMD GPUs) .

Jadro vybavené správnymi ovládačmi je najvyššou autoritou v počítači, vrátane robenia vecí, ktoré môžu katastrofálne zničiť dáta.

Úloha aplikačných(Role) programovacích rozhraní(Application Programming Interfaces) ( API(APIs) )

V časoch MS-DOS museli vývojári softvéru napísať svoj softvér špeciálne pre hardvér používateľa. Najznámejším príkladom tohto na systémoch MS-DOS boli ovládače zvukových kariet.

Daná videohra by musela podporovať najpopulárnejšie karty ( Sound Blaster , Ad-lib , Gravis Ultrasound atď.) a dúfať, že väčšina hráčov bude pokrytá. Dnes veci fungujú úplne inak vďaka rozhraniam API(APIs) .

Microsoft DirectX je skvelým príkladom. Ak chcete podrobné vysvetlenie, pozrite si Čo je DirectX a prečo je dôležité? (What Is DirectX and Why Is It Important?)Najdôležitejšie je však vedieť, že rozhranie API(API) ponúka vývojárom softvéru štandardný spôsob, ako požiadať o hardvérové ​​zdroje od komponentov, ako je GPU . Okrem toho musia výrobcovia hardvéru zabezpečiť, aby ich produkty vyhovovali DirectX , aby bola zabezpečená úplná kompatibilita s akýmkoľvek podobne vyhovujúcim softvérom.

Rozhrania API(APIs) ponúkajú vrstvu prekladu medzi softvérovými aplikáciami a nízkoúrovňovým jadrom s jeho hardvérovými ovládačmi. Áno, prichádza to s miernou výkonnostnou penalizáciou. Na moderných počítačoch je to však zanedbateľné a prináša to množstvo výhod, v ktorých sa konečne dostávame k používateľskému režimu a režimu jadra.

Používateľský režim vs. režim jadra

Moderné operačné systémy spúšťajú stovky alebo tisíce „procesov“ súčasne, pričom im dynamicky poskytujú CPU čas podľa potreby na základe ich priorít a požiadaviek na výpočtový výkon.

Keď spustíte aplikáciu, generuje procesy a CPU ich môže vykonávať v užívateľskom režime alebo v režime jadra.

Proces Windows spustený v užívateľskom režime má prístup iba k vlastnému adresnému priestoru súkromnej virtuálnej pamäte a tabuľke manipulácie. Softvér používa tieto tabuľky na ukladanie údajov do pamäte RAM(RAM) a vyžiadanie zdrojov. Neexistuje žiadny priamy prístup k pamäti alebo inému hardvéru a je na operačnom systéme, aby namapoval tieto virtuálne priestory na skutočný hardvér počítača.

To je dobré z mnohých dôvodov, ale najdôležitejšou výhodou je, že aplikácia nemôže prepísať alebo zmeniť údaje mimo svojho adresného priestoru virtuálnej pamäte. Okrem toho sú určité funkcie pre procesy v užívateľskom režime zakázané, najmä tie, ktoré by mohli zrútiť systém alebo zničiť údaje.

Keď sa proces spustí alebo je povýšený do režimu jadra, má plný prístup k systémovým prostriedkom, dokonca aj tým, ktoré sú vyhradené pre operačný systém. Teoreticky by teda mohol prepísať kľúčové údaje, ktoré operačný systém potrebuje na správne fungovanie.

Pasce a výnimky

Je dôležité pochopiť, že tieto dva režimy sú vynútené na hardvérovej úrovni samotným CPU . Ak sa aplikácia spustená v používateľskom režime pokúsi urobiť niečo, čo si vyžaduje prístup v režime jadra, vygeneruje „pascu“ alebo „výnimku“. Operačný systém sa potom s aplikáciou vysporiada, zvyčajne tak, že ju vypne a vygeneruje protokol o zlyhaní, aby vývojári mohli vidieť, čo sa stalo v pamäti, keď veci zmizli.

Nebezpečenstvo režimu jadra(Kernel Mode) : Modrá (Blue Screen)obrazovka(Death) smrti _(Dangers)

Ak ste niekedy zažili modrú (Death)obrazovku(Blue Screen) smrti (kto nie?), ktorá prinútila váš počítač vypnúť alebo reštartovať, je veľká šanca, že to bol proces v režime jadra.

Keď proces v režime jadra urobí niečo, čo by nemal robiť, operačný systém sa z toho nedokáže zotaviť a celý počítač sa zastaví. Keď sa proces používateľského režimu pokazí, zlyhá iba aplikácia a zvyšok softvéru a operačného systému môžu pokračovať bez problémov.

Toto je jedna z oblastí, kde API(APIs) hrajú zásadnú úlohu, pretože je to API , ktoré vyžaduje privilégiá režimu jadra. Aplikácie používateľského režimu v podstate delegujú požiadavky, ktoré by vyžadovali privilégiá režimu jadra, na rozhranie API(API) .

To je dôvod, prečo sa režim jadra zvyčajne poskytuje iba procesom na nízkej úrovni, ktoré potrebujú priamy prístup k hardvéru počítača. Zvyčajne je toto privilégium rozšírené na proces, pretože potrebuje vyšší výkon, ako môže poskytnúť používateľský režim. Niektoré inštrukcie CPU fungujú iba v režime jadra, takže ak proces potrebuje použiť tieto funkcie, musí byť zvýšená.

Ak máte problémy s modrou obrazovkou(Blue Screen) smrti , určite si prečítajte našu príručku na riešenie problémov s modrou obrazovkou smrti (Death)pre Windows 10(Blue Screen of Death Troubleshooting Guide for Windows 10) !



About the author

Som Windows MVP a pracujem s Windows od roku 2007. Moje skúsenosti zahŕňajú vývoj softvéru, hardvéru a zvuku a aplikácií pre Windows. Vždy hľadám najlepšie spôsoby, ako zlepšiť používateľskú skúsenosť pri mojej práci, takže ak potrebujete pomôcť s návrhom alebo vývojom softvérovej aplikácie, určite môžem ponúknuť svoje služby.



Related posts