Init
In un sistema operativo Unix, il processo denominato init è il primo processo che il Kernel manda in esecuzione dopo aver terminato il suo bootstrap. Esso ha il compito di portare il sistema in uno stato operativo, avviando i programmi e servizi necessari.
Dato che init è sempre il primo processo eseguito, esso ha tipicamente il PID 1.
Il suo file di configurazione, sulla maggior parte dei sistemi, è /etc/inittab.
Indice |
[modifica] I runlevel
Solitamente, init viene configurato in modo da potere portare il sistema in diversi livelli operativi con caratteristiche diverse, detti runlevel. Ad esempio, può esistere un runlevel in cui il sistema fornisce servizi di rete, come HTTP e FTP, e può essere comodo avere un altro runlevel in cui tali servizi non sono forniti, da utilizzare nei casi in cui la connettività di rete sia mancante o quando è necessario eseguire interventi di manutenzione. init ha il compito di impostare il runlevel iniziale, e di portare il sistema da un runlevel ad un altro.
[modifica] Differenza tra sistemi in stile System V e quelli in stile BSD
Esistono due filosofie per organizzare il funzionamento di init:
- Nel metodo System V, a ogni runlevel corrisponde una directory (solitamente /etc/init.d/rcX.d, dove X è il numero del runlevel), nella quale risiedono una serie di script i cui nomi iniziano per K (= Kill) o per S (= Start), seguite da un numero. I primi vengono eseguiti quando si abbandona il runlevel, e hanno il compito di terminare i servizi in esecuzione, mentre i secondi vengono eseguiti quando si entra nel runlevel, e servono ad avviare i suoi servizi caratteristici.
- Nel metodo BSD, a ogni runlevel corrisponde uno script (solitamente chiamato /etc/rc.d/rc.X), che ha il compito di prendere tutti i provvedimenti necessari a portare il sistema nel runlevel richiesto.
Un esempio di sistema attuale che utilizza il metodo System V è Debian, mentre Slackware preferisce il metodo BSD.
[modifica] Processi orfani
| Per approfondire, vedi la voce Processo orfano. |
Altro compito importante delegato al processo init è quello di prendere in affidamento i processi orfani, che altrimenti non avrebbero più un parent PID valido, assicurandosi di recuperare alla loro terminazione il loro valore di uscita tramite le chiamate di sistema wait() o waitpid(), in modo da evitare che essi restino nel sistema come processi zombie.
[modifica] Voci correlate
- UNIX
- runlevel
- initng - Candidato sostituto di init per sistemi unix-like
- launchd - Un altro progetto che mira a rimpiazzare init, cominciato da membri da Apple
- upstart - Usato da Ubuntu e in via di adozione anche in Fedora