Che cos'è la modalità utente rispetto alla modalità kernel in Windows

Potresti aver sentito parlare di applicazioni in esecuzione in modalità "kernel" o "utente". Dipende tutto da come funzionano i sistemi operativi quando svolgono il loro lavoro. Una volta compreso questo, è facile capire la differenza tra la modalità utente e la modalità kernel.

Capire cosa fa un sistema operativo(Does)

Un computer è costituito da hardware, componenti elettronici e software, il codice del computer eseguito da quell'hardware. Ma ciò che potrebbe essere meno chiaro è come lavorano insieme.

L'elemento più essenziale di un computer è il bit o “cifra binaria. Tutto ciò(” Everything) che fa un computer è rappresentato come uno e zero. Diversi(Different) componenti del computer rappresentano i bit in modi diversi. In una CPU , transistor microscopici rappresentano uno e zero essendo accesi o spenti. Questi transistor sono organizzati in strutture logiche, chiamate porte logiche.

Nella memoria dei computer elettronici, i bit sono rappresentati da celle di memoria con una carica superiore o inferiore a una certa soglia. Su un disco rigido meccanico, i bit sono rappresentati come fluttuazioni magnetiche misurate su un piatto rotante. Sui dischi ottici, le fosse e le terre che riflettono o meno la luce laser svolgono lo stesso lavoro. 

Indipendentemente da come viene ottenuta la rappresentazione fisica del codice binario, alla fine è possibile ridurre tutti i componenti del computer di consumo a questo codice macchina grezzo.

Quindi, come si passa dall'interfaccia umana di un computer ai processi grezzi e di basso livello nel computer stesso? È qui che entra in gioco il sistema operativo. Controlla direttamente l'hardware del computer. 

Questo software traduce tutto ciò che le applicazioni (e quindi l'utente) desiderano nelle istruzioni del codice macchina che la CPU e gli altri componenti comprendono. Il software più critico in questo processo è il kernel.

Qual è il kernel?

Il kernel è, come suggerisce il nome, il cuore del sistema operativo. Il kernel è un software che risiede nella RAM e dirige tutto ciò che fa il computer. Quando qualcosa viene scritto in memoria, è il kernel che dirige l'esecuzione.

Il kernel sa come interfacciarsi con hardware come GPU(GPUs) e schede di rete, ma potrebbe non sapere come farle funzionare al massimo delle loro potenzialità, basandosi su standard generici nell'industria dei computer.

I driver hardware entrano in gioco qui. I driver indicano al tuo sistema operativo come lavorare con componenti specifici, motivo per cui hai bisogno di driver diversi per GPU Nvidia e AMD(AMD GPUs) , ad esempio.

Dotato dei driver giusti, il kernel è l'autorità suprema all'interno del computer, incluso fare cose che possono distruggere i dati in modo catastrofico.

Il ruolo(Role) delle interfacce di programmazione(Application Programming Interfaces) delle applicazioni ( API(APIs) )

Ai tempi di MS-DOS , gli sviluppatori di software dovevano scrivere il loro software specificamente per l'hardware dell'utente. L'esempio più noto di ciò sui sistemi MS-DOS(MS-DOS) erano i driver della scheda audio.

Un determinato videogioco dovrebbe supportare le schede più popolari ( Sound Blaster , Ad-lib , Gravis Ultrasound , ecc.) e sperare che la maggior parte dei giocatori sia coperta. Oggi le cose funzionano in modo molto diverso, grazie alle API(APIs) .

Microsoft DirectX è un ottimo esempio. Se desideri una spiegazione approfondita, dai un'occhiata a Cos'è DirectX e Perché è importante? (What Is DirectX and Why Is It Important?)Tuttavia, la cosa più importante da sapere è che l' API offre un modo standard per gli sviluppatori di software per richiedere risorse hardware da componenti come la GPU . Inoltre, i produttori di hardware devono solo assicurarsi che i loro prodotti siano conformi a DirectX per garantire la piena compatibilità con qualsiasi software altrettanto conforme.

Le API(APIs) offrono un livello di traduzione tra le applicazioni software e il kernel di basso livello con i suoi driver hardware. Sì, questo comporta una leggera penalizzazione delle prestazioni. Tuttavia, sui computer moderni, questo è trascurabile e presenta una serie di vantaggi, ed è qui che arriviamo finalmente alla modalità utente e alla modalità kernel.

Modalità utente e modalità kernel

I moderni sistemi operativi eseguono centinaia o migliaia di "processi" contemporaneamente, fornendo loro in modo dinamico il tempo della CPU(CPU) in base alle loro priorità e ai requisiti di potenza di calcolo.

Quando si avvia un'applicazione, vengono generati processi e la CPU può eseguirli sia in modalità utente che in modalità kernel.

Un processo Windows in esecuzione in modalità utente ha accesso solo al proprio spazio di indirizzi di memoria virtuale privata e alla propria tabella di handle. Il software utilizza queste tabelle per memorizzare i dati nella RAM e richiedere risorse. Non c'è accesso diretto alla memoria o ad altro hardware e spetta al sistema operativo mappare quegli spazi virtuali all'hardware effettivo del computer.

Questo è positivo per molte ragioni, ma il vantaggio più cruciale è che l'applicazione non può sovrascrivere o alterare i dati al di fuori del suo spazio di indirizzi di memoria virtuale. Inoltre, alcune funzioni sono off-limits per i processi in modalità utente, principalmente quelli che potrebbero mandare in crash il sistema o distruggere i dati.

Quando un processo viene avviato o elevato alla modalità kernel, ha pieno accesso alle risorse di sistema, anche quelle riservate al sistema operativo. Quindi, in teoria, potrebbe sovrascrivere i dati cruciali di cui il sistema operativo ha bisogno per funzionare correttamente.

Trappole ed eccezioni

È importante capire che queste due modalità sono applicate a livello hardware dalla CPU stessa. Se un'applicazione in esecuzione in modalità utente tenta di fare qualcosa che richiede l'accesso in modalità kernel, genera una "trappola" o "eccezione". Il sistema operativo si occuperà quindi dell'applicazione, di solito spegnendola e generando un registro degli arresti anomali in modo che gli sviluppatori possano vedere cosa è successo in memoria quando le cose sono andate fuori dai binari.

I pericoli(Dangers) della modalità kernel(Kernel Mode) : la schermata blu(Blue Screen) della morte(Death)

Se hai mai riscontrato una schermata blu(Blue Screen) della morte(Death) (chi non l'ha fatto?) che ha costretto il tuo computer a spegnersi o riavviarsi, ci sono buone probabilità che sia colpa di un processo in modalità kernel.

Quando un processo in modalità kernel fa qualcosa che non dovrebbe, il sistema operativo non può ripristinarsi e l'intero computer si arresta. Quando un processo in modalità utente va in tilt, solo l'applicazione si arresta in modo anomalo e il resto del software e del sistema operativo può continuare senza problemi.

Questa è un'area in cui le API(APIs) svolgono un ruolo essenziale poiché è l' API che richiede privilegi in modalità kernel. Le applicazioni in modalità utente delegano essenzialmente le richieste che avrebbero richiesto privilegi in modalità kernel all'API(API) .

Questo è il motivo per cui la modalità kernel è solitamente concessa solo ai processi di sistema di basso livello che devono accedere direttamente all'hardware del computer. Di solito, questo privilegio viene esteso a un processo perché richiede più prestazioni di quelle che la modalità utente può fornire. Alcune istruzioni della CPU(CPU) funzionano solo in modalità kernel, quindi se un processo ha bisogno di usare quelle funzioni, deve essere elevato.

Se hai problemi con la schermata blu(Blue Screen) della morte(Death) , assicurati di leggere la nostra Guida alla risoluzione dei problemi della schermata blu della morte per Windows 10(Blue Screen of Death Troubleshooting Guide for Windows 10) !



About the author

Sono un MVP di Windows e lavoro con Windows dal 2007. La mia esperienza include sviluppo software, hardware e suoni e app di Windows. Sono sempre alla ricerca dei modi migliori per migliorare l'esperienza dell'utente nel mio lavoro, quindi se hai bisogno di aiuto per progettare o sviluppare un'applicazione software, posso sicuramente offrire i miei servizi.



Related posts