In ogni sistema Unix-like, c’è sempre un processo identificato dal caratteristico PID pari ad 1. Questo processo è quindi il primo ad essere avviato dal kernel, ed è responsabile dell’inizializzazione dello user space durante la fase di avvio del sistema.
Fino a qualche anno fa, tale processo era chiamato “init” (che era derivato dal processo di avvio di SysV) ed era utilizzato nella maggior parte dei sistemi operativi Linux.
Esso aveva, però, il difetto principale di essere sostanzialmente lento, e l’unico tentativo di rimpiazzarlo che vale la pena citare fu Upstart, utilizzato su Ubuntu.
Anche in questo caso, però, i miglioramenti non furono significativi, e solo systemd è riuscito a ridurre significativamente i tempi di avvio.
Per capire qual è il motivo per cui systemd ha migliorato la fase di inizializzazione dei sistemi operativi Linux, iniziamo col dire che un efficiente sistema di boot dovrebbe, al tempo stesso, eseguire il minor numeri di servizi (cioè soltanto quelli strettamente necessari all’avvio del sistema), e parallelizzare il più possibile la loro esecuzione.
Di conseguenza, ci viene spontaneo supporre che un buon sistema di boot cercherà di rimandare l’avvio di un servizio come bluetoothd (il cui nome ne suggerisce le funzionalità principali), mentre darà priorità a servizi come syslog (responsabile della gestione dei log di sistema). Ed effettivamente, questo è proprio quello che systemd riesce ad implementare.
Figura 1. Differenza tra la parallelizzazione di SysV, Upstart e systemd (fonte: fedora-it.org)
La figura precedente mostra in modo molto schematico il principio di funzionamento di systemd, messo a confronto con quello di SysV ed Upstart. L’idea che ha consentito a systemd di aumentare il livello di parallelizzazione è stata quella di modificare tutti i demoni dei servizi in modo che essi non richiedano l’inizializzazione dei socket principali, e demandando questa operazione ad una fase di inizializzazione precedente al lancio dei processi, gestita dallo stesso systemd. In tal modo, non solo i processi potranno essere eseguiti in parallelo (in quanto non ci sono problemi di dipendenze), ma se un processo dovesse essere arrestato in un qualsiasi momento, il suo riavvio sarà più rapido in quanto non sarà più necessario inizializzare le socket (operazione già effettuata in fase di avvio).
En mayo de 2011, Fedora se convirtió en la primera distribución principal de Linux en habilitar systemd por defecto.
Distribuciones en las que systemd está habilitado de forma predeterminada:
Fedora 15 y superior, Frugalware 1.5 y superior, Mageia desde la versión 2, Mandriva 2011, openSUSE 12.1 y superior, Arch Linux desde octubre de 2012, Siduction desde diciembre de 2013 y CentOS 7 desde julio de 2014.
Distribuciones en las que systemd está disponible:
Gentoo ofrece paquetes systemd como elementos no soportados oficialmente.
Debian GNU/Linux y Ubuntu han decidido utilizar systemd de forma predeterminada en sus próximas versiones.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog
Nessun commento:
Posta un commento
Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.