Como processos de usuário final, ambiente de desktop e gerenciador de janelas se comunicam entre si?

3

No Linux, cada processo se comunica através do kernel. Tanto quanto sei, o X11 é um servidor, o que significa que é um processo. Eu li em algum lugar (não me lembro da fonte, irá fornecer mais tarde) que os processos locais se comunicam com o X11 usando o soquete do domínio Unix enquanto os processos não locais usam o soquete TCP. O protocolo de comunicação com o servidor X11 é o protocolo X11.

Agora, eu li de stackoverflow que o usuário final processa nós usamos não estamos realmente se comunicar diretamente com o X11, mas através do ambiente de desktop e gerenciador de janelas.

Então, agora, não tenho certeza de como os processos de final de usuário, o ambiente de área de trabalho e o gerenciador de janelas se comunicam entre si. (Não tenho certeza se o ambiente de desktop e o gerenciador de janelas são processos ou não.)

    
por Ron Vince 25.09.2015 / 15:04

1 resposta

3

O X11 é um processo cuja responsabilidade é escutar dispositivos de entrada e gravar na tela. (Como isso lida com isso é outra questão, um pouco mais complicado.) Os processos falam com o X11 por meio de soquetes Unix ou TCP, dependendo da configuração (se são soquetes Unix, os arquivos de soquete estão geralmente em /tmp/.X11-unix ). Qualquer processo que lide com o X está falando com o X11 sobre um desses soquetes; não há intermediário na comunicação em si (a menos que você esteja usando uma configuração não padrão, como o encaminhamento de SSH ou xpra).

O gerenciador de janelas é um programa separado, que também fala com o X11 usando o protocolo X em um soquete. Ele usa um conjunto separado de APIs que o X fornece, permitindo que ele emita diretivas para outros aplicativos naquela instância X11 em particular; pode também emitir pedidos de desenho e de entrada, por ex. para desenhar decorações de janelas (como os habituais botões maximizar / minimizar / fechar e barras de título) ou para responder a atalhos globais (em sistemas modernos, normalmente o Ctrl-Alt-Del é tratado aqui). Observe que o gerenciador de janelas, de fato, apenas emite diretivas para os outros programas X, não ordens diretas; programas são capazes de ignorá-los, se eles tomarem algumas medidas especiais. (A situação é um pouco mais complicada com um gerenciador de janelas de composição, já que também manipula a renderização gráfica real para o servidor X como um intermediário para os aplicativos.) Todas as comunicações que ocorrem aqui estão ocorrendo em soquetes usando o protocolo X.

Um ambiente de desktop é um conjunto de programas que fazem várias coisas. Normalmente, o gerenciador de janelas está incluído nisso; ele também pode incluir alguns conjuntos de configuradores gráficos e programas utilitários, um gerenciador de arquivos integrado à área de trabalho, uma bandeja do sistema para exibir atualizações de status diversas e assim por diante. A maior parte disso não é particularmente misteriosa, apenas mais programas X que são renderizados no servidor X. Onde eles têm que se comunicar entre si, eles usam seus próprios protocolos, geralmente usando sockets de algum tipo como back-end. Recentemente, a tendência tem sido longe de aplicativos que escrevem seus próprios protocolos e em direção ao uso de metaprotocolo de alto nível, como dbus .

    
por 25.09.2015 / 17:42

Tags