GNU Hurd

GNU Hurd Descrizione di questa immagine, commentata anche di seguito Il Live CD Hurd Informazione
Sviluppato da Progetto GNU
Ultima versione 0.9 (18 dicembre 2016)
Scritto in Assemblatore , C
Ambiente GNU
genere Micro-kernel arricchito
Licenza GPLv3
Sito web www.gnu.org/s/hurd

GNU Hurd è una raccolta di programmi e librerie che costituiscono la base del sistema operativo GNU . Iniziato intorno al 1990, è un software libero rilasciato sotto licenza GNU GPL .

L'obiettivo è sostituire le funzionalità di un kernel di tipo UNIX , pur mantenendo un'ampia compatibilità con esse. Segue il più possibile le specifiche POSIX , evitando al contempo restrizioni arbitrarie da parte dell'utente.

Il suo nome è un doppio acronimo ricorsivo , "  Hurd  " che significa "  Hird of Unix-Replacing Daemons  " e "  Hird  " "  Hurd of Interfaces Representing Depth  " e un gioco di parole con la vicinanza della parola "herd", che in inglese significa mandria .

Architettura micro-kernel

A differenza dei kernel UNIX convenzionali, che sono essenzialmente monolitici , GNU Hurd si basa su un micro-kernel , che fornisce solo le funzioni di base (accesso di base all'hardware e alla memoria, gestione dei compiti e comunicazione tra loro). Consiste in una serie di servizi (chiamati server ), che forniscono funzioni e astrazioni di livello superiore ( file system , processo Unix, gestione dei permessi, console , driver avanzati ...). Questo design è quindi più modulare e più facile da evolvere dinamicamente. Tuttavia, questi server indipendenti devono comunicare frequentemente, il che influisce sulle prestazioni del sistema.

Il microkernel utilizzato è GNU Mach , un'implementazione Mach . Esistono altri sistemi simili a UNIX che utilizzano Mach , come OSF / 1 , NeXTSTEP , Lites  (en) e MkLinux . Hanno in comune un'architettura basata sul modello server  : il kernel monolitico del tradizionale sistema UNIX viene così sostituito da due componenti distinte, il micro-kernel e un server monolitico che garantisce la compatibilità Unix (il più delle volte BSD , tranne ovviamente MkLinux ) . Mac OS X utilizza anche Mach come base per il suo kernel xnu monolitico .

Scegliere un micro-kernel

Dal 2004, sono stati fatti sforzi per portare Hurd su una nuova generazione di microkernel, l' L4 , ma i progressi sono stati molto lenti a causa della mancanza di tempo e di sviluppatori. Tuttavia, durante il 2005, lo sviluppatore principale di Hurd Neal Walfield ha completato la struttura del gestore della memoria per questa porta, e Marcus Brinkmann ha portato la maggior parte della libreria in linguaggio C ( glibc ), il codice di avvio. Processi, consente l'esecuzione di applicazioni, incluso il famoso programma hello world . Nel frattempo, molti sviluppatori stanno investendo tempo per studiare il microkernel Coyotos sperimentale dal progetto EROS della Johns Hopkins University .

Nel 2006, Marcus Brinkmann e altri hanno collaborato con Jonathan Shapiro , un importante architetto di Coyotos, per discutere il suo possibile utilizzo con GNU / Hurd. Queste discussioni sono continuate lentamente nel 2007. Poi, nel 2008, Neal Walfield ha iniziato a lavorare sulla base del microkernel Viengoos come alternativa. Nel 2009, Jonathan Shapiro ha annunciato che il lavoro di collaborazione era cessato. Nel 2011, lo sviluppo di Viengoos è stato sospeso per mancanza di tempo da parte di Neal Walfield.

Allo stesso tempo, un gruppo di sviluppatori continua a portare sul micro-kernel di partenza, una versione di Mach.

Specificità

GNU Hurd è quindi costituito da un insieme di server interagenti. Invece di un unico imponente programma che include assolutamente tutto, dalla gestione del sincronismo alla rete, ciascuno dei suoi componenti è gestito da un server indipendente. Ogni server fornisce una serie di servizi, sotto forma di chiamate ( RPC ). Queste chiamate sono organizzate in interfacce. Queste interfacce sono definite indipendentemente dai server forniti da detto kernel: dovrebbero essere stabili (sono cambiate solo una volta dal 1999 ) e documentate.

In linea di principio, questo semplifica lo sviluppo di detto kernel. Per sostituire un componente, tutto ciò che devi fare è creare un server che implementa queste stesse interfacce. È anche possibile sostituire e / o modificare componenti non essenziali (la maggior parte) senza spegnere il sistema. Inoltre, se un componente si arresta in modo anomalo, non dovrebbe causare l'estrazione dell'intero sistema.

Nello sviluppo iniziale di Mach, questa idea di un insieme di server interagenti era vista come uno dei principali obiettivi di progettazione, ma GNU Hurd è emerso come il primo sistema basato su Mach a funzionare in questo modo. Ad ogni modo, si è scoperto che il gruppo che sviluppava Mach era troppo impegnato a lavorare su Mach per pensare al sistema operativo nel suo insieme.

Un certo numero di concetti comuni a UNIX sono implementati o estesi in GNU Hurd.

In particolare, sottoscrive la massima Unixiana "tutto è un file" e la estende per rispondere a un problema comune dei sistemi multi-server: l'identificazione dei server e il controllo dell'accesso ad essi. Infatti, due server, per poter comunicare tra loro, devono potersi contattare. Su Internet, gli indirizzi IP e il DNS svolgono questo ruolo. Nel mondo CORBA , questi sono gli IOR. MachOS ha offerto un servizio di denominazione che consente di contattare un server per nome. Tuttavia, questo sistema aggiunge un elemento critico al sistema (il server dei nomi) e non affronta la questione del controllo degli accessi. GNU Hurd si schiera dalla parte dell'uso del filesystem come sistema di denominazione: ad ogni file, associa un programma. Questi programmi sono normali server che implementano una particolare interfaccia: l'accesso ai file (lettura, scrittura, modifica e titolare dei diritti, ecc.): Sono chiamati "traduttori" ( traduttore ). Tutti i server di detto kernel sono traduttori, eccetto auth e proc (per i quali ogni task creato ha automaticamente un mezzo per comunicare con questi server). I file system sono un esempio di traduttore: sono associati a tutti i file forniti dal file system. Ciò che corrisponde al montaggio in UNIX è l'avvio di un traduttore di file in GNU / Hurd. La natura dei traduttori ( programmi ordinari) rende più facile progettare servizi specifici come il traduttore ftpfs consente all'utente di navigare in un sito FTP remoto come in un albero locale, o mirror , che consente all'utente di montare più file system sopra ciascuno altro.

In Unix, ogni programma ha un identificatore, un ID utente o un ID associato , che normalmente corrisponde a quello dell'utente che lo ha avviato. Questo ID determina le azioni consentite da questo programma. Nessun processo esterno può modificare l'ID di un programma in memoria e nessun processo può (normalmente) ottenere un privilegio di cui non dispone all'avvio. Sotto GNU / Hurd, un processo viene eseguito sotto un insieme di identificatori, questo insieme può essere nullo (nessun ID associato) o contenere diversi ID. Un processo con privilegi sufficienti può aggiungere o rimuovere ID da un altro processo. Ad esempio, esiste un server delle password che restituisce un ID quando il login viene convalidato.

L'aspetto più interessante di detto kernel è la capacità dell'utente di avviare il proprio sistema di servizi. Qualsiasi utente può allegare qualsiasi traduttore a un file system per uso personale: un utente può persino sostituire i server di sistema, come il server di autenticazione, con quello di sua scelta. Tutto questo può essere fatto senza influire sugli altri utenti, grazie a privilegi ben definiti. In effetti, è anche possibile, sempre per il semplice utente, riavviare un sistema GNU / Hurd, che sarà poi un sub-Hurd (un Hurd in the Hurd).

Distribuzioni

Richard Stallman , fondatore del progetto GNU, aveva annunciato di sperare nel rilascio di una versione ufficiale del sistema operativo GNU (chiamato anche GNU / Hurd) prima della fine dell'anno 2002 (dichiarazione che ha molto sorpreso gli sviluppatori) . Inizialmente c'era solo una distribuzione basata su Hurd, in fase di sviluppo, ma era possibile utilizzarla per alcune attività non critiche: Debian GNU / Hurd . Questo esiste ancora.

Da allora, sono emerse alcune rare distribuzioni:

Queste distribuzioni usano tutte un boot loader (bootloader) in grado di gestire la specifica multiboot come per conoscere GRUB , che è richiesta per usare il kernel Hurd.

A causa della disponibilità di altri kernel del sistema operativo che consentono l'uso di tutti gli strumenti GNU, lo sviluppo è lento. Questo kernel soffre ancora di limitazioni significative legate al supporto hardware, ad esempio non c'è supporto per le schede audio .

Personalità del progetto

Note e riferimenti

  1. (it) Rilasciato GNU Hurd 0.9, GNU Mach 1.8, 1.8 GNU MIG.  » (Accesso 11 maggio 2018 )
  2. http://kilobug.free.fr/hurd/pres-en/slides/slides.html
  3. https://www.gnu.org/software/hurd/history/port_to_another_microkernel.html
  4. http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00755.html
  5. http://lists.gnu.org/archive/html/l4-hurd/2006-07/msg00004.html
  6. http://walfield.org
  7. http://www.gnu.org/software/hurd/microkernel/viengoos.html
  8. http://www.gnu.org/software/hurd/hurd/faq/which_microkernel.html
  9. http://superunprivileged.org/hurd/live-cd/
  10. https://lists.debian.org/debian-hurd/2013/05/msg00097.html
  11. http://www.gnu.org/software/hurd/news/2015-04-29-debian_gnu_hurd_2015.html
  12. http://www.gnu.org/software/grub/manual/multiboot/

Vedi anche

Articoli Correlati

link esterno