Ce este modul utilizator vs modul kernel în Windows


E posibil să fi auzit despre aplicații care rulează în modul „kernel” sau „utilizator”. Totul depinde de modul în care funcționează sistemele de operare atunci când își fac treaba. Odată ce înțelegeți acest lucru, este ușor să înțelegeți diferența dintre modul utilizator și modul kernel.

Înțelegerea ce face un sistem de operare

Un computer este format din hardware, componente electronice și software, codul computerului executat de acel hardware. Dar ceea ce poate fi mai puțin clar este modul în care lucrează împreună.

Elementul cel mai esențial al unui computer este bitul sau „cifră binară”. Tot ceea ce face un computer este reprezentat ca unu și zero. Diferitele componente ale computerului reprezintă biții în moduri diferite. Într-un CPU, tranzistoarele microscopice reprezintă unu și zero, fie fiind pornite, fie oprite. Acești tranzistori sunt aranjați în structuri logice, numite porți logice.

În memoria computerului electronic, biții sunt reprezentați de celule de memorie care au o sarcină peste sau sub un anumit prag. Pe un hard disk mecanic, biții sunt reprezentați ca fluctuații magnetice măsurate pe un platou care se învârte. Pe discurile optice, gropile și terenurile care reflectă sau nu lumina laser fac aceeași treabă.

Indiferent de modul în care se realizează reprezentarea fizică a codului binar, puteți reduce în cele din urmă toate componentele computerului de consum la acest cod brut de mașină.

Deci, cum treci de la interfața prietenoasă cu oamenii a unui computer la procesele brute, de nivel scăzut, din computerul însuși? Aici intervine sistemul de operare. Acesta controlează direct hardware-ul computerului.

Acest software traduce tot ce doresc aplicațiile (și, prin urmare, utilizatorul) în instrucțiunile codului mașinii pe care CPU și alte componente le înțeleg. Cea mai critică bucată de software în acest proces este nucleul.

Ce este nucleul?

Nucleul este, după cum sugerează și numele, nucleul sistemului de operare. Nucleul este un software care se află în RAM și direcționează tot ceea ce face computerul. Când ceva este scris în memorie, nucleul este cel care dirijează execuția.

Nucleul știe cum să interfațeze cu hardware cum ar fi GPU-urile și plăcile de rețea, dar este posibil să nu știe cum să le opereze la întregul potențial, bazându-se pe standardele generice din industria computerelor..

Driverele hardware intră în joc aici. Driverele spun sistemului dvs. de operare cum să lucreze cu anumite componente, motiv pentru care aveți nevoie de drivere diferite pentru GPU-urile Nvidia și AMD, de exemplu.

Dotat cu driverele potrivite, nucleul este autoritatea supremă în computer, inclusiv în a face lucruri care pot distruge catastrofal datele.

Rolul interfețelor de programare a aplicațiilor (API)

În zilele MS-DOS, dezvoltatorii de software trebuiau să-și scrie software-ul special pentru hardware-ul utilizatorului. Cel mai notoriu exemplu în acest sens pe sistemele MS-DOS au fost driverele plăcii de sunet.

Un anumit joc video ar trebui să accepte cele mai populare cărți (Sound Blaster, Ad-lib, Gravis Ultrasound etc.) și să spere că majoritatea jucătorilor au fost acoperiți. Astăzi, lucrurile funcționează foarte diferit, datorită API-urilor.

Microsoft DirectX este un exemplu grozav. Dacă doriți o explicație aprofundată, consultați Ce este DirectX și de ce este important?. Cu toate acestea, cel mai important lucru de știut este că API-ul oferă o modalitate standard pentru dezvoltatorii de software de a solicita resurse hardware de la componente precum GPU-ul. În plus, producătorii de hardware trebuie doar să se asigure că produsele lor respectă DirectX pentru a asigura compatibilitatea deplină cu orice software compatibil.

API-urile oferă un nivel de traducere între aplicațiile software și nucleul de nivel scăzut cu driverele sale hardware. Da, aceasta vine cu o ușoară penalizare de performanță. Totuși, pe computerele moderne, acest lucru este neglijabil și vine cu o varietate de avantaje, de unde ajungem în sfârșit la modul utilizator și modul kernel.

Modul utilizator versus modul Kernel

Sistemele de operare moderne rulează sute sau mii de „procese” simultan, oferindu-le în mod dinamic timp CPU după cum este necesar, în funcție de prioritățile și cerințele lor de putere de calcul.

Când lansați o aplicație, aceasta generează procese, iar CPU le poate executa fie în modul utilizator, fie în modul kernel.

Un proces Windows care rulează în modul utilizator are acces numai la propriul spațiu de adrese de memorie virtuală privată și la tabelul de gestionare. Software-ul folosește aceste tabele pentru a stoca date în RAM și pentru a solicita resurse. Nu există acces direct la memorie sau la alt hardware și depinde de sistemul de operare să mapați acele spații virtuale la hardware-ul real al computerului..

Acest lucru este bun din multe motive, dar cel mai important beneficiu este că aplicația nu poate suprascrie sau modifica datele din afara spațiului său de adrese de memorie virtuală. În plus, anumite funcții sunt interzise proceselor în modul utilizator, în principal cele care ar putea să blocheze sistemul sau să distrugă datele.

Când un proces se lansează sau este ridicat la modul kernel, acesta are acces deplin la resursele sistemului, chiar și la cele rezervate sistemului de operare. Deci, teoretic, ar putea suprascrie datele cruciale de care sistemul de operare are nevoie pentru a rula corect.

Capcane și excepții

Este important să înțelegeți că aceste două moduri sunt impuse la nivel hardware de procesorul însuși. Dacă o aplicație care rulează în modul utilizator încearcă să facă ceva care necesită acces în modul kernel, generează o „capcană” sau „excepție”. Sistemul de operare se va ocupa apoi de aplicație, de obicei prin închiderea acesteia și generarea unui jurnal de blocare, astfel încât dezvoltatorii să poată vedea ce s-a întâmplat în memorie când lucrurile au ieșit din mers.

Pericolele modului Kernel: Ecranul albastru al morții

Dacă ați avut vreodată un Ecran albastru al morții (cine nu a făcut-o?) care a forțat computerul să se oprească sau să repornească, există șanse mari să fie de vină un proces în modul kernel.

Când un proces în modul kernel face ceva ce nu ar trebui să facă, sistemul de operare nu se poate recupera și întregul computer se oprește. Când un proces în modul utilizator se destramă, numai aplicația se blochează, iar restul software-ului și sistemul de operare pot continua fără probleme.

Acesta este un domeniu în care API-urile joacă un rol esențial, deoarece este API-ul care solicită privilegii pentru modul kernel. Aplicațiile în modul utilizator deleg în esență solicitări care ar fi necesitat privilegii în modul kernel către API.

De aceea, modul kernel este de obicei acordat numai proceselor de sistem de nivel scăzut care trebuie să acceseze direct hardware-ul computerului. De obicei, acest privilegiu este extins la un proces deoarece are nevoie de mai multă performanță decât poate oferi modul utilizator. Unele instrucțiuni ale procesorului funcționează numai în modul kernel, așa că dacă un proces trebuie să folosească acele funcții, acesta trebuie să fie ridicat.

Dacă întâmpinați probleme cu Ecranul albastru al morții, asigurați-vă că citiți Ghid de depanare a ecranului albastru al morții pentru Windows 10!.

.

Postări asemănatoare:


31.12.2021