Potresti aver sentito parlare di applicazioni eseguite in modalità "kernel" o "utente". Dipende tutto da come funzionano i sistemi operativi quando svolgono il loro lavoro. Una volta capito questo, è facile cogliere la differenza tra modalità utente e modalità kernel.
Capire cosa fa un sistema operativo
Un computer è costituito da hardware, componenti elettronici e software, ovvero il codice informatico eseguito da tale hardware. Ma ciò che potrebbe essere meno chiaro è il modo in cui lavorano insieme.
L'elemento più essenziale di un computer è il bit o "cifra binaria". Tutto ciò che fa un computer è rappresentato da uno e zero. Diversi componenti del computer rappresentano i bit in modi diversi. In uno processore, i transistor microscopici rappresentano gli uno e gli 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 aventi una carica superiore o inferiore a una determinata soglia. Su un disco rigido meccanico, i bit sono rappresentati come fluttuazioni magnetiche misurate su un piatto rotante. Sui dischi ottici, cavità e zone che riflettono o meno la luce laser svolgono lo stesso lavoro.
Non importa come viene ottenuta la rappresentazione fisica del codice binario, alla fine puoi ridurre tutti i componenti dei computer di consumo a questo codice macchina grezzo.
Quindi come si passa dall'interfaccia user-friendly di un computer ai processi grezzi e di basso livello del 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 comprensibili alla CPU e agli altri componenti. La parte software più critica in questo processo è il kernel.
Cos'è il kernel?
Il kernel è, come suggerisce il nome, il nucleo del sistema operativo. Il kernel è un software che risiede in RAM e dirige tutto ciò che fa il computer. Quando qualcosa viene scritto in memoria, è il kernel che ne dirige l'esecuzione.
Il kernel sa come interfacciarsi con hardware come GPU e schede di rete, ma potrebbe non sapere come sfruttarli al massimo delle loro potenzialità, affidandosi a standard generici nel settore informatico..
Qui entrano in gioco i driver hardware. I driver dicono al tuo sistema operativo come funzionare con componenti specifici, motivo per cui hai bisogno di driver diversi, ad esempio, per le GPU Nvidia e AMD.
Dotato dei driver giusti, il kernel è l'autorità massima all'interno del computer, comprese le azioni che possono distruggere in modo catastrofico i dati.
Il ruolo delle interfacce di programmazione delle applicazioni (API)
Ai tempi di MS-DOS, gli sviluppatori di software dovevano scrivere il proprio software appositamente per l'hardware dell'utente. L'esempio più noto di ciò sui sistemi MS-DOS erano i driver della scheda audio.
Un dato videogioco dovrebbe supportare le schede più popolari (Sound Blaster, Ad-lib, Gravis Ultrasound, ecc.) e sperare che la maggior parte dei giocatori ne sia coperta. Oggi le cose funzionano in modo molto diverso, grazie alle API.
Microsoft DirectX è un ottimo esempio. Se desideri una spiegazione approfondita, consulta Cos'è DirectX e perché è importante?. Tuttavia, la cosa più importante da sapere è che l'API offre agli sviluppatori di software un modo standard per richiedere risorse hardware a componenti come la GPU. Inoltre, i produttori di hardware devono solo garantire che i loro prodotti siano conformi a DirectX per garantire la piena compatibilità con qualsiasi software altrettanto conforme.
Le API offrono un livello di traduzione tra le applicazioni software e il kernel di basso livello con i relativi driver hardware. Sì, questo comporta una leggera penalità in termini di 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 sistemi operativi moderni eseguono centinaia o migliaia di "processi" simultaneamente, assegnando loro in modo dinamico il tempo della CPU necessario in base alle priorità e ai requisiti di potenza di calcolo.
Quando avvii un'applicazione, genera processi e la CPU può eseguirli in modalità utente o kernel.
Un processo Windows in esecuzione in modalità utente ha accesso solo al proprio spazio di indirizzi di memoria virtuale privato e alla tabella degli handle. Il software utilizza queste tabelle per archiviare i dati nella RAM e richiedere risorse. Non è possibile accedere direttamente alla memoria o ad altro hardware e spetta al sistema operativo mappare questi spazi virtuali sull'hardware effettivo del computer..
Ciò è positivo per molte ragioni, ma il vantaggio più importante è che l'applicazione non può sovrascrivere o alterare i dati al di fuori dello spazio degli indirizzi della memoria virtuale. Inoltre, alcune funzioni sono vietate ai processi in modalità utente, principalmente quelle che potrebbero mandare in crash il sistema o distruggere dati.
Quando un processo viene avviato o viene elevato in modalità kernel, ha pieno accesso alle risorse di sistema, anche quelle riservate al sistema operativo. Quindi, in teoria, potrebbe sovrascrivere dati cruciali di cui il sistema operativo ha bisogno per funzionare correttamente.
Trappole ed eccezioni
È importante comprendere che queste due modalità vengono applicate a livello hardware dalla CPU stessa. Se un'applicazione in esecuzione in modalità utente tenta di eseguire qualcosa che richiede l'accesso in modalità kernel, genera una "trappola" o "eccezione". Il sistema operativo si occuperà quindi dell'applicazione, solitamente chiudendola 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 della modalità kernel: la schermata blu della morte
Se ti è mai capitato di riscontrare una schermata blu (a chi non è capitato?) che ha costretto il computer a spegnersi o riavviarsi, è molto probabile che la colpa sia del processo in modalità kernel.
Quando un processo in modalità kernel fa qualcosa che non dovrebbe fare, il sistema operativo non può ripristinarlo e l'intero computer si blocca. 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 possono funzionare senza problemi.
Questa è un'area in cui le API svolgono un ruolo essenziale poiché sono le API che richiedono privilegi in modalità kernel. Le applicazioni in modalità utente delegano essenzialmente all'API le richieste che avrebbero richiesto i privilegi in modalità kernel.
Questo è il motivo per cui la modalità kernel viene 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é necessita di maggiori prestazioni rispetto a quelle che la modalità utente può fornire. Alcune istruzioni della CPU funzionano solo in modalità kernel, quindi se un processo deve utilizzare tali funzioni, deve essere elevato.
Se riscontri problemi con la schermata blu della morte, assicurati di leggere i nostri Guida alla risoluzione dei problemi relativi alla schermata blu della morte per Windows 10!.
.