GaPiL - Guida alla Programmazione in Linux (User space e kernel space) -Parte 4
 |
A cura di Simone Piccardi 2005-09-21 |
| Iniziamo la pubblicazione, su autorizzazione dell'autore, di una serie di articoli tratti da GaPil - Guida alla Programmazione in Linux. |
User space e kernel space
Uno dei concetti fondamentali su cui si basa l'architettura dei sistemi Unix è quello della distinzione fra il cosiddetto user space, che contraddistingue l'ambiente in cui vengono eseguiti i programmi, e il kernel space, che è l'ambiente in cui viene eseguito il kernel. Ogni programma vede sé stesso come se avesse la piena disponibilità della CPU e della memoria ed è, salvo i meccanismi di comunicazione previsti dall'architettura, completamente ignaro del fatto che altri programmi possono essere messi in esecuzione dal kernel.
Per questa separazione non è possibile ad un singolo programma disturbare l'azione di un altro programma o del sistema e questo è il principale motivo della stabilità di un sistema unix-like nei confronti di altri sistemi in cui i processi non hanno di questi limiti, o che vengono per vari motivi eseguiti al livello del kernel.
Pertanto deve essere chiaro a chi programma in Unix che l'accesso diretto all'hardware non può avvenire se non all'interno del kernel; al di fuori dal kernel il programmatore deve usare le opportune interfacce che quest'ultimo fornisce allo user space. |
|