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, è facile comprendere la differenza tra la modalità utente e la modalità kernel.
Capire cosa fa un sistema operativo
Un computer è costituito da hardware, componenti elettronici e software, il codice del computer eseguito da quell’hardware. Ma ciò che potrebbe essere meno chiaro è il modo in cui lavorano insieme.
Sommario
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 una CPU, i transistor microscopici rappresentano gli uno e gli zeri sia quando sono accesi che spenti. Questi transistor sono organizzati in strutture logiche, chiamate porte logiche.
Nella memoria dei computer elettronici, i bit sono rappresentati da celle di memoria che hanno 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, i pit e i terreni che riflettono o non riflettono la luce laser fanno lo stesso lavoro.
Non importa come viene ottenuta la rappresentazione fisica del codice binario, alla fine puoi ridurre tutti i componenti del computer di consumo a questo codice macchina grezzo.
Quindi, come si passa dall’interfaccia a misura d’uomo di un computer alla grezza, bassa-processi a 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) vogliono nelle istruzioni del codice macchina che la CPU e gli altri componenti comprendono. Il pezzo di software più critico in questo processo è il kernel.
Cos’è 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 e schede di rete, ma potrebbe non sapere come utilizzarli al massimo delle loro potenzialità , basandosi su standard generici nel settore informatico.
Qui entrano in gioco i driver hardware. I driver dicono al tuo sistema operativo come lavorare con componenti specifici, motivo per cui hai bisogno di driver diversi per le GPU Nvidia e AMD, ad esempio.
Dotato dei driver giusti, il kernel è l’autorità suprema all’interno del computer , incluse operazioni che possono distruggere i dati in modo catastrofico.
Il ruolo delle interfacce di programmazione delle applicazioni (API)
Ai tempi di MS-DOS, gli sviluppatori di software dovevano scrivere il loro software appositamente per l’hardware dell’utente. L’esempio più noto di ciò sui sistemi MS-DOS sono 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.
La schermata di selezione della scheda audio di Wolf3D
Microsoft DirectX è un ottimo esempio. Se desideri una spiegazione approfondita, consulta Che cos’è DirectX e perché è importante? Tuttavia, la cosa più importante da sapere è che l’API offre un modo standard per gli sviluppatori di software di richiedere risorse hardware da 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 conforme allo stesso modo.
Le API 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 contro modalità kernel
I moderni sistemi operativi eseguono centinaia o migliaia di”processi”contemporaneamente, fornendo loro in modo dinamico il tempo di CPU necessario in base alle loro priorità e ai requisiti di potenza di calcolo.
Quando avvii un’applicazione, essa genera processi e il 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 tabella di gestione. 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 sull’hardware effettivo del computer.
Questo è utile per molte ragioni, ma il vantaggio più importante è 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 vietate ai processi in modalità utente, principalmente quelle che potrebbero arrestare il sistema o distruggere i dati.
Quando un processo viene avviato o viene elevato alla modalità kernel, ha pieno accesso al sistema risorse, anche quelle riservate al sistema operativo. Quindi, in teoria, potrebbe sovrascrivere dati cruciali di cui il sistema operativo ha bisogno per funzionare correttamente.
Trap 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 eseguire operazioni che richiedono l’accesso in modalità kernel, genera una”trappola”o un'”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 della modalità kernel: La schermata blu della morte
Se hai mai visto una schermata blu della morte (chi non l’ha fatto?) che ha costretto il tuo computer a spegnersi o riavviarsi, ci sono buone probabilità che fosse una modalità kernel processo da incolpare.
Quando un processo in modalità kernel fa qualcosa che non dovrebbe, il sistema operativo non può ripristinarlo e l’intero computer si ferma. Quando un processo in modalità utente va in tilt, solo l’applicazione va in crash e il resto del software e del sistema operativo possono andare avanti senza problemi.
Questa è un’area in cui le API svolgono un ruolo essenziale poiché è l’API che richiede privilegi in modalità kernel. Le applicazioni in modalità utente essenzialmente delegano all’API le richieste che avrebbero richiesto privilegi in modalità kernel.
Questo è il motivo per cui la modalità kernel è generalmente 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 funzionano solo in modalità kernel, quindi se un processo deve utilizzare tali funzioni, deve essere elevato.
Se hai problemi con la schermata blu della morte, assicurati di leggere il nostro Blue Screen of Death Guida alla risoluzione dei problemi per Windows 10!