La shell utilizza un dispositivo TTY (se è collegato a uno) per ottenere l'input dell'utente e produrre output, e non molto altro. Il fatto che una shell sia connessa a un TTY è determinato da getty
(e conservato da login
); il più delle volte alla shell non importa se è connessa o meno a un TTY. La sua interazione con il kernel avviene tramite chiamate di sistema.
Un server X11 non è a conoscenza degli accessi (proprio come una shell). Il processo di accesso in X11 funziona in due modi:
- l'utente accede al terminale e quindi avvia X (in genere utilizzando
startx
);
- oppure un server X viene avviato con un "display manager" che richiede all'utente un login e una password (o qualsiasi altra informazione di autenticazione richiesta).
Il modo in cui i server X11 ottengono input e producono output è molto diverso rispetto a una shell. Sul lato input, X conosce i dispositivi che le shell non hanno, a partire dai mouse; in genere gestisce quelli direttamente con i propri driver. Anche per le tastiere, X ha i suoi driver che completano la gestione del kernel (quindi, a quanto ho capito, su Linux, ad esempio, X usa il driver TTY per leggere l'input non elaborato dalla tastiera, ma poi lo interpreta usando il proprio driver). Sul lato output, le unità X visualizzano i dispositivi direttamente, con o senza l'aiuto del kernel e senza passare attraverso un dispositivo TTY.
Server X11 su molti sistemi fanno dispositivi uso TTY però, per la sincronizzazione con il kernel: sui sistemi che supportano terminali virtuali, X ha bisogno di “riserva” del VT su cui sta girando, e la commutazione maniglia VT. Ci sono alcune altre sottigliezze lungo la strada; quindi su Linux, X modifica il TTY per disabilitare GPM (un programma che consente l'uso in modalità testo di mouse). X può anche condividere un VT ...
In alcune workstation in passato, non c'era molta sincronizzazione esplicita con il kernel; se non hai eseguito xconsole
, potresti finire con i messaggi del kernel visualizzati in "modalità testo" nella parte superiore del display X11.