X Window System
Minha idéia inicial era fazer algo sobre o uso de clientes X para o aproveitamento de máquinas antigas ou com menor capacidade de memória. Decidi começar com uma introdução ao sistema de janelas X e isto tornou o artigo um pouco maior do que planejado incialmente, portanto decidi dividi-lo em duas partes: uma conceitual e outra prática.
Espero que ambas sejam proveitosas.
Aviso
Este artigo é um pouco pesado, conceitualmente. Consiste em uma boa parte de tradução e comentários adicionados. A fonte de pesquisa tomada como base é citada no final deste.
Os principais conceitos a se entender são:
- cliente e servidor X
- servidor de aplicação, cliente e servidor X
- o X é um protocolo de rede
- há uma abstração da rede, tornando fácil seu uso para os servidores X e não permitindo a perda de desempenho local ou remotamente
Entendendo o “X ” do artigo
O ambiente gráfico nos sistemas *nix é disponibilizado de acordo com um padrão cliente-servidor permitindo algumas coisas interessantes, como a que será explicada neste artigo.
O
Em 1993, foi fundado o
Todos os direitos sobre o X foram transferidos pelo MIT ao
O protocolo X
O protoclo X surgiu em meados de 1980, com o objetivo de disponibilizar uma interface gráfica transparente e funcionando no ambiente Unix. O X disponibiliza os meios para a exibição e gerência de informações gráficas.
A diferença para outras alternativas, como o Windows, é a estrutura do protocolo. O Windows, por exemplo, preocupa-se em disponibiliar uma interface gráfica para a máquina local enquanto o X preocupa-se em especificar uma relação cliente-servidor em nível de aplicação.
A parte da aplicação que sabe o que fazer é chamada de cliente X, enquanto que a parte que implementa o modo de fazer, de exibir, é chamada de servidor X. Os clientes X podem ser executados em máquinas remotas com grande poder de processamento e exibir seus dados em um servidor X. Com isso tem-se uma verdadeira arquitetura cliente-servidor e também processamento distribuído.
Definição
A aplicação é chamada de cliente X, nesta relação cliente-servidor, enquanto que o local onde será exibida a tela é chamado de servidor X. Há, então, um sistema comum com uma camada dependente do dispositivo e uma independente do mesmo, e para realizar a comunicação entre estas duas camadas há um protocolo de rede assíncrono. Na verdade, o protocolo X esconde as peculiaridades do sistema operacional e do hardware. Este ocultamento simplifica a elaboração de clientes X e é uma das bases para a alta portabilidade do sistema de janelas X.
A parte dependente do hardware é o servidor X.
As vantagens de tal abordagem são muitas, dentre as quais:
- O
look and feel (visual e usabilidade) de uma aplicação são, tanto para o desenvolvedor quanto para o usuários, os mesmos com a aplicação sendo executada local ou remotamente. - O servidor X é altamente portável, permitindo o suporte de diversas linguagens e sistemas operacionais.
- O clientes X também têm um alto grau de portabilidade.
- O X pode suportar qualquer protocolo de rede orientado a um
stream de bytes, seja ele local ou remoto. - As aplicações não têm seu desempenho penalizado.
O projeto do protocolo X especifica uma relação de cliente-servidor entre a aplicação e o display. No X o software que gerencia uma única tela, teclado e mouse é conhecido como servidor X. Um cliente X é uma aplicação que mostra informações no servidor X. O cliente X envia solicitações para o servidor X, por exemplo uma imagem ou solicitação de informação. O servidor X aceita tais solicitações a partir de múltiplos clientes e retorna para cada um a resposta, dados de entrada de usuário e erros.
O servidor X
- É executado localmente.
- Aceita e demultiplexa solicitações de clientes X vindas da rede (ou de conexões locais) e toma ações sobre elas.
O servidor X, portanto:
- exibe as solicitações de desenho/imagem na tela
- responde às solicitações de informações
- relata erros em uma solicitação
- gerencia o teclado, mouse e o monitor
- multiplexa entradas de teclado e mouse na rede (ou conexão local) para o respectivo cliente X (eventos X)
- cria, mapeia e destrói janelas
- escreve e desenha em janelas
O cliente X
O cliente X é essencialmente uma aplicação escrita com o auxílio de bibliotecas (e.g. Xlib, Xt) que aproveita o protocolo X.
- envia solicitações ao servidor
- recebe eventos do servidor
- recebe erros do servidor
Mensagens do Protocolo
Solicitações
- Os clientes X fazem solicitações ao servidor X pror determinadas ações como por exemplo criar uma janela
- Para aumentar o desempenho, o cliente X normalmente não espera e nem aguarda uma respota. A solicitação é tipicamente deixada para que a rede entregue-a de modo confiável
- As solicitações X são feitas em múltiplos de 4 bytes
Respostas
- O servidor X responde às solicitações do cliente X que exigem uma resposta. Como citado, nem todas as solicitações demandam uma resposta.
- As respostas X são feitas em múltiplos de 4 bytes, com um mínimo de 32 bytes.
Eventos
- O servidor X repassa ao cliente X um evento que a aplicação esteja esperando. Isto inclui entrada via mouse ou teclado. Para minimizar o tráfego na rede, apenas os eventos esperados são enviados aos clientes X.
- Os eventos X têm 32 bytes
Erros
- O servidor X reportará erros nas solicitações do cliente X. Os erros são similares aos eventos, mas são tratados de modo diferenciado.
- Os erros do X possuem o mesmo tamanho que os eventos para simplificar seu manuseio. Eles são enviados para a rotina de tratamento de erros do cliente X (possuem 32 bytes).
Projeto do Servidor X
O projeto de um servidor X depende enormemente da plataforma (hardware) e do sistema operacional no qual será implementado. Conforme as capacidades das tecnologias sob as quais o servidor X se apoiará são ampliadas, o poder e a capacidade do servidor X também é ampliado.
Camada dependente de dispositivo
- É a camada responsável por localizar o servidor X nativo do ambiente, seja ele Windows NT ou Solaris.
- Esta camada troca os bytes de dados de máquinas com ordenação diferente. A ordenação dos bytes (MSB e LSB) é indicada em cada solicitação X.
- Esta camada esconde as diferenças arquiteturais no hardware e no sistema operacional.
- Mantém os drivers para dispositivos como mouse, teclado e vídeo.
Arquiteturas do ambiente
- Arquiteturas com uma thread única — O servidor X é um único processo seqüencial usando as fatias de tempo nativas para agendar a demultiplexação das solicitações e multiplexação das resposta, eventos e erros entre os diversos clientes X.
- Arquiteturas com múltiplas threads — O servidor X é um processo com múltiplas threads capazes de usar os recursos do sistema operacional através da quebra das tarefas em múltiplas threads para que sejam realizadas pelo sistema operacional e pelo hardware. Ambientes com multitarefa preemptiva e com suporte a múltiplas threads oferecem um elevadíssimo poder ao servidor X.
Servidores X hoje em dia
Workstations
- poderosas o suficiente para lidar com exigências computacionais complexas
- geralmente mostram clientes X locais e uma pequena porcentagem de clientes X remotos
Terminais X
- Terminais burros com capacidade gráfica.
- Fazem download do software do servidor X do servidor.
- Mais baratas que as workstations — mais simples de manter
Servidores X em PCs
- integram o PC e um servidor de aplicações remota em um único ambiente de trabalho comum.
- permitem usar o investimento feito em PCs e os conhecimentos dos usuários (manipulação do ambiente de trabalho e acessos)
- flexibilidade — gerenciamento de janelas local ou remoto, de acordo com a escolha do usuário.
- facilidade de uso
Nos últimos anos o desktop evoluiu de um ambiente de produtividade centrado no usuário para um focado em administração centralizada, cercado de adaptações para protocolos web e interfaces baseadas em navegadores. As últimas versões o X permitem a integração de aplicações X e navegadores, permitindo uma implantação rápida, sem recodificação e de forma segura.
Fonte das informações
Website X.org
Sobre este documento
Autor: Jorge Godoy
Data: 17 de setembro de 2004
Última atualização: 17 de setembro de 2004