Il kernel come componente principale
Il kernel e' il software di sistema che e' sempre residente in memoria
principale e sempre in esecuzione. I processi utente vengono eseguiti
dal kernel quasi come se fossero delle subroutines: il kernel li controlla
e li puo' terminare in qualsiasi istante. Il kernel esegue in modalita'
privilegiata: UNIX richiede una CPU che possa eseguire in almeno due
modalita' di cui una privilegiata.
Il kernel e' composto da:
- processi di sistema - che portano avanti i vari aspetti di
gestione processi, files, memoria e risorse varie
- device drivers - che interfacciano lo hardware
- chiamate di sistema - che supportano i processi utente
quando questi chiedono servizi dal kernel
- routines a basso livello - per supportare funzionalita' di
base per il controllo della CPU e per velocizzare al massimo le
operazioni
I sorgenti del kernel di UNIX solo in alcuni casi sono
disponibili al pubblico, a differenza del caso di molti
programmi applicativi. Il codice sorgente del kernel e' scritto
prevalentemente in Linguaggio C, il resto e'
scritto nel linguaggio Assembler per la particolare
CPU su cui lo UNIX e' implementato.
I programmi utente non devono fornire routines a basso livello
per la gestione di files, periferiche, ecc., e di fatto non gli e'
consentito farlo.
Il kernel di UNIX e' come un codice di regole precise per il buon
funzionamento di una comunita' di processi, piu' tutti i servizi necessari
per supportare la comunita' e far si che le regole vengano
rispettate. Le richieste arrivano dai processi al
kernel tramite le chiamate di sistema.