Vad är användarläge vs kärnläge i Windows

Du kanske har hört talas om applikationer som körs i "kärna" eller "användarläge". Allt beror på hur operativsystem fungerar när de gör sitt jobb. När du väl förstår det är det lätt att förstå skillnaden mellan användarläge och kärnläge.

Förstå vad ett operativsystem gör(Does)

En dator består av hårdvara, elektroniska komponenter och mjukvara, datorkoden som exekveras av den hårdvaran. Men det som kanske är mindre tydligt är hur de fungerar tillsammans.

En dators viktigaste element är biten eller "binär siffra. ” Allt(” Everything) en dator gör representeras som ettor och nollor. Olika(Different) datorkomponenter representerar bitar på olika sätt. I en CPU representerar mikroskopiska transistorer ettor och nollor genom att antingen vara på eller av. Dessa transistorer är arrangerade i logiska strukturer, kallade logiska grindar.

I elektroniskt datorminne representeras bitar av minnesceller som antingen har en laddning över eller under en viss tröskel. På en mekanisk hårddisk representeras bitar som magnetiska fluktuationer mätt på en snurrande tallrik. På optiska skivor gör gropar och landområden som reflekterar eller inte reflekterar laserljus samma jobb. 

Oavsett hur den fysiska representationen av binär kod uppnås, kan du så småningom reducera alla konsumentdatorkomponenter till denna råa maskinkod.

Så hur går man från det människovänliga gränssnittet på en dator till de råa processerna på låg nivå i själva datorn? Det är där operativsystemet kommer in. Det styr direkt datorns hårdvara. 

Denna programvara översätter allt applikationer (och därmed användaren) vill ha till maskinkodinstruktionerna som CPU och andra komponenter förstår. Den mest kritiska mjukvaran i denna process är kärnan.

Vad är kärnan?

Kärnan är, som namnet antyder, kärnan i operativsystemet. Kärnan är programvara som finns i RAM och styr allt som datorn gör. När något skrivs in i minnet är det kärnan som styr exekveringen.

Kärnan vet hur man samverkar med hårdvara som GPU:er(GPUs) och nätverkskort, men den kanske inte vet hur man använder dem till sin fulla potential, eftersom den förlitar sig på generiska standarder inom datorindustrin.

Hårdvarudrivrutinerna spelar in här. Drivrutiner talar om för ditt operativsystem hur man arbetar med specifika komponenter, varför du till exempel behöver olika drivrutiner för Nvidia och AMD GPU(AMD GPUs) .

Utrustad med rätt drivrutiner är kärnan den ultimata auktoriteten inom datorn, inklusive att göra saker som katastrofalt kan förstöra data.

Rollen för applikationsprogrammeringsgränssnitt(Application Programming Interfaces) ( API(APIs) ) _(Role)

På MS-DOS(MS-DOS) dagar var mjukvaruutvecklare tvungna att skriva sin programvara specifikt för användarens hårdvara. Det mest ökända exemplet på detta på MS-DOS- system var drivrutiner för ljudkort.

Ett givet videospel skulle behöva stödja de mest populära korten ( Sound Blaster , Ad-lib , Gravis Ultrasound , etc.) och hoppas att de flesta spelarna var täckta. Idag fungerar saker väldigt annorlunda, tack vare API:er(APIs) .

Microsoft DirectX är ett bra exempel. Om du vill ha en djupgående förklaring, kolla in Vad är DirectX och varför är det viktigt? (What Is DirectX and Why Is It Important?)Det viktigaste att veta är dock att API :et erbjuder ett standardsätt för mjukvaruutvecklare att be om hårdvaruresurser från komponenter som GPU . Dessutom måste maskinvarutillverkare bara se till att deras produkter överensstämmer med DirectX för att säkerställa full kompatibilitet med all mjukvara som också är kompatibel.

API(APIs) :er erbjuder ett lager av översättning mellan mjukvaruapplikationer och lågnivåkärnan med dess hårdvarudrivrutiner. Ja, detta kommer med ett litet prestationsstraff. Ändå, på moderna datorer, är detta försumbart, och det kommer med en mängd fördelar, vilket är där vi äntligen kommer till användarläge och kärnläge.

Användarläge kontra kärnläge

Moderna operativsystem kör hundratals eller tusentals "processer" samtidigt, vilket dynamiskt ger dem CPU- tid efter behov baserat på deras prioriteringar och krav på beräkningskraft.

När du startar ett program genererar det processer och CPU :n kan köra dem i antingen användarläge eller kärnläge.

En Windows -process som körs i användarläge har bara tillgång till sitt eget privata virtuella minnesadressutrymme och hanteringstabell. Programvaran använder dessa tabeller för att lagra data i RAM och begära resurser. Det finns ingen direkt tillgång till minne eller annan hårdvara, och det är upp till operativsystemet att mappa dessa virtuella utrymmen till datorns faktiska hårdvara.

Detta är bra av många anledningar, men den mest avgörande fördelen är att applikationen inte kan skriva över eller ändra data utanför sitt virtuella minnesadressutrymme. Dessutom är vissa funktioner förbjudna för processer i användarläge, främst sådana som kan krascha systemet eller förstöra data.

När en process startar eller höjs till kärnläge har den full tillgång till systemresurser, även de som är reserverade för operativsystemet. Så i teorin kan det skriva över avgörande data som operativsystemet behöver för att fungera korrekt.

Fällor och undantag

Det är viktigt att förstå att dessa två lägen upprätthålls på hårdvarunivå av processorn(CPU) själv. Om ett program som körs i användarläge försöker göra något som kräver åtkomst i kärnläge, genererar det en "fälla" eller "undantag". Operativsystemet kommer sedan att hantera applikationen, vanligtvis genom att stänga av den och generera en kraschlogg så att utvecklarna kan se vad som hände i minnet när saker gick av stapeln.

The Dangers of Kernel Mode : The Blue Screen of Death

Om du någonsin har upplevt en Blue Screen of Death (vem har inte gjort det?) som tvingade din dator att stänga av eller starta om, finns det en god chans att det var en process i kärnläge att skylla på.

När en process i kärnläge gör något den inte är tänkt att göra, kan operativsystemet inte återhämta sig från det, och hela datorn stannar. När en process i användarläge går i stå är det bara applikationen som kraschar, och resten av programvaran och operativsystemet kan fortsätta utan problem.

Detta är ett område där API(APIs) :er spelar en viktig roll eftersom det är API :et som ber om kärnlägesprivilegier. Användarlägesapplikationer delegerar i huvudsak förfrågningar som skulle ha krävt kärnlägesprivilegier till API :et .

Detta är anledningen till att kärnläge vanligtvis bara ges till systemprocesser på låg nivå som behöver komma åt datorns hårdvara direkt. Vanligtvis utökas denna behörighet till en process eftersom den behöver mer prestanda än vad användarläget kan ge. Vissa CPU- instruktioner fungerar bara i kärnläge, så om en process behöver använda dessa funktioner måste den höjas.

Om du har problem med Blue Screen of Death , se till att läsa vår Blue Screen of Death-felsökningsguide för Windows 10(Blue Screen of Death Troubleshooting Guide for Windows 10) !



About the author

Jag är Windows MVP och har arbetat med Windows sedan 2007. Min erfarenhet inkluderar mjukvaruutveckling, hårdvara och ljud samt Windows-appar. Jag letar alltid efter de bästa sätten att förbättra användarupplevelsen i mitt arbete, så om du behöver hjälp med att designa eller utveckla en mjukvaruapplikation kan jag definitivt erbjuda mina tjänster.



Related posts