Web Agency and Software House

Cosa si intende per kernel?

Cosa si intende per kernel?

By germana falcone

Indipendentemente dalla macchina che si utilizzi e dal sistema operativo integrato, c’è un elemento strutturale che accomuna ogni sistema operativo: il cosiddetto Kernel. Che si tratti di un dispositivo mobile o desktop, il “nocciolo” o “fulcro”, se lo traduciamo dall’inglese, viene realizzato sulla base delle necessità di ogni sistema operativo per la gestione e l’allocazione delle diverse risorse del computer. La parola fulcro racchiude al meglio quello che è il lavoro svolto dal kernel, visto che si pone come componente centrale di ogni sistema operativo. Svolge l’importante compito di comunicazione tra quelle che sono le componenti hardware di un computer, come processore, RAM e hard disk, e i programmi in esecuzione sulla macchina stessa. Data la sua rilevanza, è sempre il primo programma ad essere avviato quando si accende il PC e sempre l’ultimo a venir arrestato in fase di spegnimento.

I compiti svolti dal Kernel

Come già accennato nelle scorse righe, il Kernel si pone come ponte tra le componenti interne del computer e le applicazioni o i programmi che vengono eseguiti dall’utente. Mette quindi a disposizione di programmi esterni le risorse utili alle gestione e alla visualizzazione a schermo delle richieste effettuate da chi utilizza il dispositivo. Definisce, inoltre, lo spazio degli indirizzi di memoria per i vari programmi in esecuzione, carica in memoria i file con il codice dell’applicazione e imposta l’ordine di esecuzione delle varie applicazioni e dei programmi attivi in modo gerarchico basandosi sul grado di importanza. Volendo riassumere i compiti del kernel, possiamo riassumere quattro funzioni principali che interessano altrettanti ambiti applicativi:

    • gestione dei processi per l’esecuzione dei programmi;
    • gestione e allocazione della memoria controllando input ed output del PC;
  • gestione della parte hardware del computer e delle periferiche ad esso connesse;
  • gestione delle richieste del sistema e delle chiamate in caso di necessità.

Diverse tipologie di kernel

  1. Kernel monolitico: contiene in uno e ed unico file tutte le funzioni principali legate al funzionamento del sistema operativo e delle periferiche connesse a quest’ultimo. Le funzioni da svolgere e le periferiche vengono organizzate in pacchetti di file, i famosi moduli. Al crescere della dimensione del file cresce anche il numero di moduli che lo compongono e di conseguenza il tempo per caricare ogni informazione in memoria. Grazie alla sua peculiarità di poter essere personalizzabile, eliminando i moduli non necessari, un kernel monolitico può arrivare ad occupare pochissimo spazio e può quindi essere molto prestante e veloce rispetto ad altri. Ad ogni nuova periferica installata sarà però necessario aggiornare i moduli, con la possibilità che i diversi moduli non si integrino e causino problemi al funzionamento del PC, oltre a bug pericolosi per la sicurezza personale.
  2. Microkernel

Rispetto al monolitico che integra tutti i moduli possibili per il funzionamento del computer e degli accessori connessi, il microkernel offre solo alcune funzioni basilari lasciando il resto del lavoro ai server esterni. I driver in questo modo vengono gestiti all’esterno del sistema kernel, assicurando all’utilizzatore che se uno dei server dovesse smettere di funzionare, il sistema potrebbe lo stesso continuare la sua esecuzione, magari caricando il modulo difettoso solo nel momento in cui ce ne fosse bisogno. 

  1. Kernel ibrido

La tipologia ibrida di Kernel nasce dalla fusione dei due appena descritti e ne unisce i punti di forza. Gli esempi più palesi di kernel ibridi sono quelli utilizzati per Microsoft Windows e Mac OS, che in realtà possono essere considerati più come delle estensioni dei microkernel. Il numero di moduli principali è maggiore a cui vengono aggiunti una serie di moduli “non essenziali” che però permettono un netto miglioramento nella gestione delle risorse e quindi nelle prestazioni generali del sistema.

Syrus