O shell usa um dispositivo TTY (se estiver conectado a um) para obter entrada do usuário e produzir saída, e não muito mais. O fato de um shell estar conectado a um TTY é determinado por getty
(e preservado por login
); na maioria das vezes, o shell não se importa se está conectado a um TTY ou não. Sua interação com o kernel acontece via chamadas do sistema.
Um servidor X11 não sabe sobre logins (como um shell). O processo de login no X11 funciona de duas maneiras:
- o usuário efetua login no terminal e, em seguida, inicia o X (geralmente usando
startx
); - ou um servidor X é iniciado com um "gerenciador de exibição" que solicita ao usuário um login e uma senha (ou qualquer outra informação de autenticação necessária).
A maneira como os servidores X11 obtêm entrada e produzem saída é muito diferente em comparação a um shell. No lado da entrada, X conhece os dispositivos que as conchas não usam, começando com os mouses; normalmente gerencia esses diretamente com seus próprios drivers. Mesmo para teclados, o X tem seus próprios drivers que complementam o manuseio do kernel (pelo que entendi, no Linux, por exemplo, o X usa o driver TTY para ler entrada bruta do teclado, mas interpreta isso usando seu próprio driver). No lado da saída, as unidades X exibem dispositivos diretamente, com ou sem a ajuda do kernel, e sem passar por um dispositivo TTY.
Os servidores X11 em muitos sistemas usam os dispositivos TTY, para sincronizar com o kernel: em sistemas que suportam terminais virtuais, o X precisa “reservar” o VT que está sendo executado e lidar com a comutação VT. . Existem algumas outras sutilezas ao longo do caminho; portanto, no Linux, X ajusta o TTY para desabilitar o GPM (um programa que permite o uso em modo texto de mouses). X também pode compartilhar um VT ...
Em algumas estações de trabalho no passado, não havia muita sincronização explícita com o kernel; Se você não executou xconsole
, poderá acabar com as mensagens do kernel exibidas no "modo de texto" na parte superior da exibição do X11.