Nell'informatica, Il kernel è un programma per computer che costituisce il nucleo o il cuore di un sistema operativo. Prima di discutere in dettaglio il kernel, comprendiamo innanzitutto il suo sistema operativo di base, ovvero il sistema operativo di un computer.
Sistema operativo
Un sistema operativo o sistema operativo è un software di sistema che funziona come interfaccia tra i componenti hardware e l'utente finale. Consente l'esecuzione di altri programmi. Ogni sistema informatico, sia esso desktop, laptop, tablet o smartphone, deve tutti avere un sistema operativo per fornire funzionalità di base al dispositivo. Alcuni sistemi operativi ampiamente utilizzati lo sono finestre , Linux , MacOS, Android, iOS, ecc.
Cos'è il kernel nel sistema operativo?
- Come discusso in precedenza, il kernel è la parte principale di un sistema operativo (sistema operativo); quindi ha il pieno controllo su tutto nel sistema. Ogni operazione di hardware e software è gestita e amministrata dal kernel.
- Funziona come un ponte tra le applicazioni e l'elaborazione dei dati effettuata a livello hardware. È il componente centrale di un sistema operativo.
- È la parte del sistema operativo che risiede sempre nella memoria del computer e consente la comunicazione tra componenti software e hardware.
- È il programma per computer che viene caricato per primo all'avvio del sistema (dopo il bootloader). Una volta caricato, gestisce i restanti avviamenti. Gestisce inoltre le richieste di memoria, periferiche e I/O dal software. Inoltre, traduce tutte le richieste di I/O in istruzioni di elaborazione dati per la CPU. Gestisce anche altri compiti simili come gestione della memoria, gestione delle attività e gestione del disco .
- Un kernel viene mantenuto e solitamente caricato in uno spazio di memoria separato, noto come spazio kernel protetto. È protetto dall'accesso da parte di programmi applicativi o parti meno importanti del sistema operativo.
- Altri programmi applicativi come browser, elaboratori di testi, lettori audio e video utilizzano uno spazio di memoria separato noto come spazio utente.
- Grazie a questi due spazi separati, i dati dell'utente e quelli del kernel non interferiscono tra loro e non causano alcuna instabilità e lentezza.
Funzioni di un kernel
Un kernel di un sistema operativo è responsabile dell'esecuzione di varie funzioni e ha il controllo sul sistema. Di seguito sono riportate alcune delle principali responsabilità del Kernel:
Per eseguire varie azioni, i processi richiedono l'accesso a dispositivi periferici come mouse, tastiera, ecc., collegati al computer. Un kernel è responsabile del controllo di questi dispositivi utilizzando i driver di dispositivo. Ecco, a driver del dispositivo è un programma per computer che aiuta o consente al sistema operativo di comunicare con qualsiasi dispositivo hardware.
Un kernel mantiene un elenco di tutti i dispositivi disponibili e questo elenco potrebbe essere già noto, configurato dall'utente o rilevato dal sistema operativo in fase di runtime.
Il kernel ha il pieno controllo per l'accesso alla memoria del computer. Ogni processo richiede una certa quantità di memoria per funzionare e il kernel consente ai processi di accedere in modo sicuro alla memoria. Per allocare la memoria, il primo passo è noto come indirizzamento virtuale, che viene fatto mediante paginazione o segmentazione. Indirizzamento virtuale è un processo che fornisce spazi di indirizzi virtuali ai processi. Ciò impedisce alle applicazioni di bloccarsi l'una nell'altra.
Una delle funzionalità importanti del Kernel è condividere le risorse tra vari processi. Deve condividere le risorse in modo che ciascun processo acceda uniformemente alla risorsa.
Il kernel fornisce anche un modo per la sincronizzazione e comunicazione tra processi (IPC). È responsabile del cambio di contesto tra i processi.
Un kernel è responsabile dell'accesso alle risorse del computer come RAM e dispositivi I/O. RAM o memoria ad accesso casuale viene utilizzato per contenere sia dati che istruzioni. Ogni programma deve accedere alla memoria per essere eseguito e richiede principalmente più memoria di quella disponibile. In tal caso, il kernel svolge il suo ruolo e decide quale memoria utilizzerà ciascun processo e cosa fare se la memoria richiesta non è disponibile.
Il kernel alloca anche la richiesta delle applicazioni di utilizzare dispositivi I/O come tastiere, microfoni, stampanti, ecc.
Tipi di kernel
Esistono principalmente cinque tipologie di Kernel, che vengono riportate di seguito:
1. Kernel monolitici
In un kernel monolitico, il lo stesso spazio di memoria viene utilizzato per implementare i servizi utente e i servizi del kernel.
Ciò significa che in questo tipo di kernel non esiste una memoria diversa utilizzata per i servizi utente e i servizi del kernel.
Poiché utilizza lo stesso spazio di memoria, la dimensione del kernel aumenta, aumentando la dimensione complessiva del sistema operativo.
Anche l'esecuzione dei processi è più veloce rispetto ad altri tipi di kernel poiché non utilizza spazio utente e kernel separati.
Esempi dei kernel monolitici sono Unix, Linux, Open VMS, XTS-400, ecc.
qual è la dimensione del mio monitor?
Vantaggi:
- Anche l'esecuzione dei processi è più veloce in quanto non vi è spazio utente separato e spazio kernel e meno software coinvolto.
- Poiché si tratta di un singolo pezzo di software, sia i sorgenti che i moduli compilati sono più piccoli.
Svantaggi:
- Se un servizio genera un errore, potrebbe bloccare l'intero sistema.
- Questi kernel non sono portatili, il che significa che per ogni nuova architettura devono essere riscritti.
- Di grandi dimensioni e quindi difficili da gestire.
- Per aggiungere un nuovo servizio è necessario modificare l'intero sistema operativo.
2. Microkernel
Viene anche chiamato microkernel MK , ed è diverso da un kernel tradizionale o da un kernel monolitico. In questo, i servizi utente e i servizi kernel sono implementati in due diversi spazi di indirizzi: spazio utente e spazio kernel . Poiché utilizza spazi diversi per entrambi i servizi, la dimensione del microkernel diminuisce e ciò riduce anche la dimensione del sistema operativo.
I microkernel sono più facili da gestire e mantenere rispetto ai kernel monolitici. Tuttavia, se ci fosse un numero maggiore di chiamate di sistema e cambi di contesto, ciò potrebbe ridurre le prestazioni del sistema rendendolo lento.
Questi kernel utilizzano un sistema di passaggio di messaggi per gestire la richiesta da un server a un altro server.
Solo alcuni servizi essenziali sono forniti dai microkernel, come la definizione degli spazi degli indirizzi di memoria, IPC (Interprocess Communication) e la gestione dei processi. Altri servizi come il networking non sono forniti dal Kernel e gestiti da un programma user-space noto come server .
Uno dei principali svantaggi dei kernel monolitici è che un errore nel kernel può mandare in crash l'intero sistema, può essere rimosso nel microkernel. Come nel microkernel, se un processo del kernel va in crash, è comunque possibile prevenire il crash dell'intero sistema riavviando i servizi causati dall'errore.
Esempi di Microkernel sono L4, AmigaOS, Minix, K42 , eccetera.
Vantaggi
leggendo da un file CSV in Java
- I microkernel possono essere gestiti facilmente.
- È possibile aggiungere facilmente un nuovo servizio senza modificare l'intero sistema operativo.
- In un microkernel, se un processo del kernel va in crash, è ancora possibile impedire il crash dell'intero sistema.
Svantaggi
- C'è più bisogno di software per l'interfacciamento, il che riduce le prestazioni del sistema.
- La gestione dei processi è molto complicata.
- I bug di messaggistica sono difficili da risolvere.
3. Kernel ibrido
I kernel ibridi sono anche conosciuti come kernel modulari , ed è la combinazione di Monolitico e Microkernel. Sfrutta la velocità dei kernel monolitici e la modularità dei microkernel.
Un kernel ibrido può essere inteso come la versione estesa di un microkernel con proprietà aggiuntive di un kernel monolitico. Questi kernel sono ampiamente utilizzati nei sistemi operativi commerciali, come diverse versioni di MS Windows.
È molto simile a un microkernel, ma include anche del codice aggiuntivo nello spazio del kernel per migliorare le prestazioni del sistema.
I kernel ibridi consentono di eseguire alcuni servizi come stack di rete nello spazio del kernel per ridurre le prestazioni rispetto a un microkernel tradizionale, ma consente comunque di eseguire il codice del kernel (come i driver dei dispositivi) come server nello spazio utente.
Esempi di kernel ibrido sono Windows NT, Netware, BeOS, ecc.
Vantaggi:
- Non è necessario riavviare il sistema per eseguire il test.
- La tecnologia di terze parti può essere integrata rapidamente.
Svantaggi:
algoritmo rr
- Esiste la possibilità che siano presenti più bug con più interfacce da attraversare.
- Può essere un compito confuso mantenere i moduli per alcuni amministratori, soprattutto quando si affrontano problemi come le differenze tra i simboli.
4. Nanokernel
Come suggerisce il nome, in Nanokernel, il codice completo del kernel è molto piccolo, il che significa che il codice eseguito nella modalità privilegiata dell'hardware è molto piccolo . Qui il termine nano definisce un kernel che supporta una risoluzione di clock di nanosecondi.
Esempi di nanokernel sono EROS ecc.
Vantaggi
- Fornisce astrazioni hardware anche di dimensioni molto ridotte.
Svantaggi
topologie
- Il nanokernel è privo di servizi di sistema.
5. Exokernel
Exokernel è ancora in fase di sviluppo e rappresenta l'approccio sperimentale per la progettazione del sistema operativo.
Questo tipo di kernel è diverso dagli altri kernel come in questo; la protezione delle risorse è mantenuta separata dalla gestione, il che ci consente di eseguire personalizzazioni specifiche dell'applicazione.
Vantaggi:
- Il sistema basato su exokernel può incorporare più sistemi operativi di libreria. Ogni libreria esporta un'API diversa, ad esempio una può essere utilizzata per lo sviluppo dell'interfaccia utente di alto livello e l'altra può essere utilizzata per il controllo in tempo reale .
Svantaggi:
- Il design dell'exokernel è molto complesso.
Cos'è il Kernel Panic?
Come abbiamo già discusso, il kernel controlla l'intero sistema informatico; quindi, se si blocca, può distruggere l'intero sistema. In MacOS e Linux, questo evento indesiderato è noto come ' Panico dal kernel.' Per recuperare dal kernel Panic, dobbiamo riavviare il sistema.
Di solito, questi panico del kernel sono causati da problemi di comunicazione hardware. Pertanto, se si verificano ripetuti attacchi di panico del kernel, provare a scollegare i dispositivi meno necessari o non necessari e verificare se il problema è stato risolto o meno.