Processo orfano
# Processo orfano

Un processo orfano, in informatica e più specificatamente nei sistemi distribuiti, è un task che è stato invocato remotamente da un processo client il quale, immediatamente dopo l'invocazione ma prima di ricevere risposta, cessa la propria disponibilità lasciando quindi orfano il processo remoto sul server.

Nei sistemi operativi, soprattutto Unix e Unix-like, il termine processo orfano indica un processo il cui padre locale è stato terminato.

## Processi orfani in sistemi distribuiti

Il caso comune di processo orfano in ambienti distribuiti si verifica durante un'invocazione remota, quando il processo client va in crash dopo aver inviato una richiesta al server, rendendo orfano il processo così avviato sul server, sprecandone di conseguenza le risorse e creando un potenziale pericolo di denial of service.

Per gestire questo problema si adottano diverse tecniche:

* la tecnica dello sterminio è quella più comunemente usata, in questo caso il processo orfano viene ucciso;
* la tecnica della reincarnazione prevede che le macchine individuino periodicamente i processi padri delle computazioni remote, uccidendo i processi di cui non si è localizzato il padre e quindi orfani;
* la tecnica della scadenza prevede che ad ogni processo venga data una certa quantità di tempo entro la quale terminare la propria esecuzione; allo scadere del tempo concesso il processo viene ucciso. Quando necessario, un processo può "chiedere" ulteriore tempo per il proprio completamento.

## Processi orfani nei sistemi Unix e Unix-like

Nei sistemi operativi Unix e Unix-like un processo orfano viene immediatamente adottato dal processo di sistema speciale init (il cui PID è 1), che ne diviene il nuovo processo padre. Questa operazione viene chiamata re-parenting, ed avviene automaticamente a cura del kernel.

La generazione di processi orfani può essere intenzionale, ed è tipica ad esempio dei demoni, i quali effettuano questa operazione al loro avvio in modo da slegare i propri figli dal particolare ambiente da cui sono avviati.

Quando essa non è intenzionale, è d'uso continuare a definirli processi orfani anche dopo l'adozione da parte di init.

