Recentemente enfrentei pela primeira vez o conceito "X Window Server". Depois de ler muito sobre isso e me esforçar para entender a maioria de seus conceitos básicos - principalmente porque nasci na "era da computação moderna", nunca tendo tocado em um "terminal real" ou em "PCs não poderosos o suficiente para executar um cliente X" - Fiquei confuso com uma coisa:
Por que o X Server é um servidor e não uma biblioteca com um conjunto de funções predefinidas?
Pude aprender muito com algumas perguntas feitas anteriormente aqui, principalmente estas:
- Por que o X Window System usa um servidor?
- Qual é a relação servidor-cliente entre [...] um gerenciador de janelas e um processo de servidor X?
Entendi que o X Server foi inicialmente projetado para suportar também a comunicação através de redes, já que alguns computadores antigos não eram poderosos o suficiente para executar elementos gráficos. Esta é a única razão pela qual o X Server foi projetado para atuar como um servidor? Receber “solicitações” através de uma rede e responder com “elementos gráficos”?
Existe algum outro motivo pelo qual o X Server atua como um servidor, mesmo localmente? Provavelmente estou faltando algum detalhe e é exatamente isso que estou tentando entender para “conectar” tudo que aprendi até agora.
Se possível, vocês poderiam me dar um exemplo real de como os terminais costumavam se comunicar com os servidores X Window no passado? Tudo o que posso imaginar é um prédio cheio de computadores terminais (executando nada além de uma tela preta de terminal) e com apenas um único computador capaz de executar interfaces gráficas. As pessoas costumavam compartilhar este computador para se comunicar com os terminais para realizar tarefas pesadas?
Obrigado!
Responder1
Você parece ter um grande mal-entendido em relação aos terminais.
Havia terminais de texto e terminais X11. Os terminais X11 rodavam um servidor X. Isso também foi chamado de thin client.
Você também pode ter uma estação de trabalho executando um servidor X. Ele se conectaria a um servidor de processo. Uma máquina poderosa no porão.
Outras vantagens são:
- É apenas um processo (com acesso ao hardware gráfico, teclado e dispositivo apontador), mas apenas um processo. Isto tem vantagens. Você pode ter um sem acesso a hardware gráfico, teclado e dispositivo apontador. Também poderia ser um servidor VNC, formando uma ponte X11-vnc. Ele poderia ser usado para testes (ter um processo de robô para controlá-lo, no lugar de um humano).
- É um processo separado: atualizei meu computador para multicódigo. Ele usa esses núcleos, sem necessidade de alterações no software (até alguns núcleos).
- Se você tiver vários monitores, teclados e mouses, então, arquitetonicamente, é fácil transformá-los em assentos (terminais) separados.
- Isso facilita a implementação do switch-user.
- Não dando a outros processos acesso ao hardware. Como você faria com a abordagem de biblioteca, é mais seguro (o Note X11 tem alguns problemas de segurança, que podem ser resolvidos com um redesenho).
- O gerenciador de janelas também é um processo separado. Isso permite a escolha de ambientes de desktop. Portanto, um processo para o servidor X11, um para o gerenciador de janelas, um para o gerenciador de exibição (serviço de login), um para isso e aquilo. Isso o torna flexível, você pode alterar seu ambiente de área de trabalho sem precisar sair.
Responder2
É um servidor porque fornece e coordena um serviço de exibição em uma única peça de hardware (conceitualmente uma estação de trabalho) que pode ter vários teclados, outros dispositivos de entrada e vários monitores.
Vários processos podem se conectar a ele, local ou remotamente, e negociar espaço na tela, foco de entrada, slots de mapa de cores e outros recursos. Os processos não podem negociar entre si diretamente ou conciliar as suas exigências díspares. O servidor X windows fornece o serviço que faz com que todos os processos clientes acreditem ter acesso a todas as funcionalidades da estação de trabalho.