back

Il server è realizzato adottando le funzionalità del kernel gnumach che implementano l'architettura dei translator. Secondo quanto indicato nella "The GNU Hurd Reference Manual" [2] e nella documentazione Debian [3], un translator è un server Hurd che fornisce l'interfaccia base alle funzionalità di un file system collegandosi ad un file o una directory (corrispondenti, in gergo tecnico, ad un nodo di un file system esistente, come - ad esempio - l'extended file system 2 con cui è formattata la partizione del disco rigido all'interno della quale è installato GNU/Hurd). Quando un programma tenta di accedere ai contenuti del nodo collegato ad un translator, il file system in cui esso risiede inoltra la richiesta al translator che si occupa di gestirla in modo specifico.

Nella continuazione della trattazione, per maggior semplicità anche se non del tutto corretto dal punto di vista tecnico, saranno considerati come sinonimi i seguenti termini:

  1. server e translator;
  2. file, directory e nodo di un file system.
Il client

Il client della console hurd (programma /bin/console) trasmette al server i dati acquisiti dalle periferiche e riproduce l'output elaborato dal server.
Il colloquio con le periferiche avviene attraverso componenti software dedicati chiamati drivers. Questi ultimi sono basati su una struttura logica modulare che implementa un'interfaccia software standardizzata rispetto ai diversi dispositivi [src:/hurd-20090404/console-client/driver.h ].

I drivers attualmente implementati sono sia di input che di output; in particolare, è previsto il supporto per:

  • tastiera (con disposizione dei tasti di tipo statunitense);
    • [src:/hurd-20090404/console-client/pc-kbd.c]
  • mouse (con il supporto per i seguenti protocolli: mousesystem, microsoft, ps/2, logitech, mouse7);
    • [src:/hurd-20090404/console-client/pc-mouse.c]
  • scheda grafica VGA a colori (con supporto per i font in grassetto, corsivo oltre che per il caricamente a tempo di runtime di font personalizzati nel formato bitmap distribution format);
    • [src:/hurd-20090404/console-client/vga.c]
  • classica "campanella di sistema" destinata a riprodurre gli eventi acustici generati dal terminale in risposta a determinate situazioni (ad esempio, caratteri non riconosciuti oppure caratteri di controllo);
    • [src:/hurd-20090404/console-client/generic-speaker.c]

I drivers, a loro volta, interagiscono con le periferiche utilizzando le funzionalità del kernel.
L'architettura realizzata, quindi, è particolarmente flessibile e potenzialmente espandibile: il supporto per una nuova o diversa periferica di input o output può essere realizzata attraverso la scrittura di un nuovo driver che, installato come libreria di sistema nel percorso /usr/lib/hurd/console/, può essere richiamato dal client opportunamente istruito a riconoscerlo.

back