il kernel

10 Giu

Il kernel, termine inglese per nucleo, è la base del sistema operativo. Il suo compito è  quello di gestire i tempi di accesso dei diversi programmi all’hardware e di controllare che il tutto avvenga in sicurezza. Ovviamente  la sua assenza non determina il mancato funzionamento di un computer, ma è certamente importante nell’ottimizzazione dello svolgimento dei vari processi. A seconda del grado di astrazione della parte hardware, resa necessaria per la sua complessità, i kernel si dividono in kernel monolitici, microkernel, kernel ibridi ed esokernel.

schema funzionamento

Il kernel coordina: la memoria, i processi, l’accesso all’hardware del sistema, il file system, l’accesso alle risorse da parte dei processi. Inoltre suddivide la memoria in parti più piccole e “maneggevoli” dette pagine, che vengono scaricate sulla memoria di massa (hardisk) quando non servono più e ricaricate da quest’ultima in memoria centrale quando se ne presenta la necessità (tecnica dello swap) ; si arriva così a creare una memoria virtuale teoricamente illimitata da far vedere alle applicazioni mentre il SO utilizza una contenuta quantità di memoria.

Processi e memoria devono essere coordinati tra loro in modo che le pagine di programma che sono attualmente in esecuzione o che contengono dati attualmente utilizzati, possano risiedere in memoria centrale.  Il processo viene sospeso e passa in stato di attesa se una pagina necessaria ad un processo in esecuzione non si trova in memoria centrale; il processo torna ad essere pronto per l’esecuzione dopo l’operazione di input da memoria di massa della pagina necessaria.

Il kernel può essere considerato la naturale evoluzione dei programmi debugger, cioè di quei software, utilizzati sui primi elaboratori e caricati su una memoria ROM, in grado di resettare il sistema alla fine dell’esecuzione di un programma e di prepararlo ad uno successivo. Il kernel ha il vantaggio di riuscire a gestire in modo efficiente il multitasking,  rendendo possibile la virtualizzazione dei processi: in pratica l’utente percepisce come contemporanee le esecuzioni di due o più programmi, che nella realtà avvengono in modo alternato.

Il concetto di time-sharing è alla base del multitasking e permette la condivisione della CPU tra più processi concorrenti; il tempo di esecuzione del processore è condiviso tra più processi/utenti e ogni processo in esecuzione  ha a disposizione dei quanti di tempo della CPU. Se viene chiesto al sistema di eseguire contemporaneamente due processi A e B, la CPU attuerà un meccanismo di time-sharing, cioè eseguirà per qualche istante (quanto di tempo) il processo A, poi per qualche istante il processo B,poi ritornerà ad eseguire il processo A e così via … Il passaggio dal processo A al processo B e viceversa viene definito cambio di contesto (contest switch).

Le decisioni riguardanti l’esecuzione di un cambio di contesto tra due programmi vengono intraprese da un componente del sistema operativo (software) detto scheduler. Questo programma   stabilisce un ordinamento temporale per l’esecuzione di un insieme di richieste di accesso ad una risposta.

Viene definito scheduling la ripartizione del tempo di CPU tra tutti processi concorrenti . Lo scheduling è un operazione molto importante per il corretto ed efficiente funzionamento del calcolatore consentendo di migliorare l’utilizzo del processore massimizzandone l’utilizzo e la produttività e minimizzando il tempo di attesa e quello di risposta.

Il Kernel è un passaggio fondamentale nell’evoluzione dei sistemi operativi, perché nella sua struttura e funzione ne costituisce l’idea basilare. Come molte altre  invenzioni, il kernel nasce dall’esigenza di agevolare il lavoro dell’uomo: in questo caso migliorare l’operatività dei programmi, lasciando il compito di gestirli ad un altro software. Chiunque può usare il computer adoperando vari programmi contemporaneamente  non preoccupandosi di come il processore debba analizzare le informazioni. Questo rende il pc alla portata di tutti.

Il multitasking, reso fattibile dal kernel, è un fattore determinate nello sviluppo della società perché modifica il nostro accesso all’informazione e quindi la nostra capacità critica. Se possiamo accedere a più notizie contemporaneamente siamo in grado di fare collegamenti tra fatti diversi e avere visione più ampia del mondo. Inoltre il multitasking rende possibile lo svolgimento di più compiti contemporaneamente migliorando l’efficienza.

Ariel Belga Fedeli

Fonti: www.diit.unict.it, http://vandali.org/DanieleMasini/MyLinux/MyLinuxsu93.php, http://it.m.wikipedia.org/wiki/Kernel

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: