Nesse artigo teremos uma breve introdução sobre sistemas operacionais e discutiremos características em comum entre o X-Window e um SO. A idéia é perceberemos o quão complexo e difícil é seu desenvolvimento.
Depois de aprendermos um pouquinho sobre sistemas operacionais e
já sabermos algo sobre o X, podemos afirmar que ele poderia ser
considerado um "Mini sistema operacional". Mini pelo fato de que
ele precisa rodar sobre um sistema operacional e nenhum
programador que está desenvolvendo o X vai ter que se preocupar em
como fazer uma alocação na memória ou como ele vai gravar um arquivo
em disco. Isso é sempre responsabilidade do sistema operacional.
Assim, o X é um "Mini" sistema, porque ele é o responsável por
gerenciar todo o ambiente gráfico e permite que programas rodem
sobre ele. Do mesmo modo, temos o kernel do nosso sistema que seria
o X Server em si e temos o "shell" que seria o nosso "gerenciador
de janela".
Os "gerenciadores de janelas" são programas que trabalham em
conjunto com o nosso "mini" sistema operacional, possibilitando que
ele seja mais elegante para os nossos olhos e que tenha algumas
características que ele não se responsabiliza. Tudo isso acrescentado
a ele - o X - em tempo de execução. O trabalho exercido pelos
gerenciadores são de requisitar e enviar mensagens para o servidor
X, que vai tratá-la e responder como solicitado se possível.
Outro fato interessante é que o X Server pode ser usado para
liberar uma interface para uma máquina cliente que não possui muitos
recursos, o que também é chamado de "terminal burro". Esse fato do
X poder ser usado como servidor faz com que todos os aplicativos
sejam usados pelo sistema operacional nativo na máquina servidora
do X, isto é, o sistema operacional onde o servidor X está é o
responsável por gerenciar os recursos que o X usa.
Uma coisa interessante é que durante o processo de criação do X foi
desenvolvida uma API chamada X-Lib. Essa lib permite que
tenhamos acesso a funções mais próximas do X, ou seja, do nosso
"mini" kernel. :) Assim, possibilitando mais uma coisa que existe
em sistemas operacionais que é ter uma programação "baixo nível"
se comparado com as API's de gerenciadores de janela que são
"semi-prontos", pois em uma única função podemos ter diversas
requisições ao X.
E assim encerro esse artigo esperando que tenham gostado e
comentários serão bem vindos, pois é sempre bom ter a opinião
de vocês! :)
[3] Comentário enviado por engos em 06/09/2004 - 13:35h
Gostei da forma como você simplificou tudo não se prendendo muito com termos mais técnicos e irrelevantes para o contexto geral.
Achei interessante você relacionar seu artigo com outros, mas achei que a leitura dos outros dois e depois o seu ficou um pouco repetitivo, infelizmente não tinha como você evitar.
Apesar de que não tenho muito interesse em X, reconheço que o artigo é interessante, parabéns.
[4] Comentário enviado por jllucca em 08/09/2004 - 14:43h
Opa,
muito obrigado pelos elogios e pelo visto o artigo deu resultado. O motivo de te-lo escrito era justamente tentar mostrar como pode ser complexo um sistema desse porte. Engos sou o maior entusiasta do X, mas ninguem vai ver eu dizendo que o odeio :p
[5] Comentário enviado por jllucca em 08/09/2004 - 14:44h
Opa,
muito obrigado pelos elogios e pelo visto o artigo deu resultado. O motivo de te-lo escrito era justamente tentar mostrar como pode ser complexo um sistema desse porte. Engos não sou o maior entusiasta do X, mas ninguem vai ver eu dizendo que o odeio :p
[6] Comentário enviado por jllucca em 08/09/2004 - 14:46h
Pessoal, peço desculpas pelos comentarios seguidos acima. Mas, eu pensei que iria dar tempo de corrigir um pequeno errinho(apaguei a palavra não quando tava arrumando a concordancia e nem percebi!).
[7] Comentário enviado por lspecian em 09/09/2004 - 12:21h
Sabe acho que se o X fosse integrado ao kernel do linux, como opcão, não padrão claro, seria muito interessante, se o kernel suportasse nativamente aplicações graficas.
[9] Comentário enviado por sombriks em 26/05/2005 - 01:56h
Não diga isso, incorporar o X ao kernel deixaria o núcleo tão pesado quando o da Microsoft! Além do quê a evolução dele seria de certa forma "barrada", pois mudar algo no X implicaria em mudar algo no kernel.
Ah! e leia-se recursos, como dito lá em cima por processos, de forma que aí sim, se vc ver o próprio teclado como um processo (os módulos carregados no xi, ehehehehe...) fica mais simples entender por que gerenciar e prover inforações estão ligados tão profundamente.
[10] Comentário enviado por jllucca em 26/05/2005 - 19:28h
É separar gerenciamento e provimento de informações ficou estranho do ponto de vista teorico. Mas, no pratico uma camada que gerencia pode não prover nenhuma informação e o que provem informação pode não gerenciar. Pensar em recursos como processos pode ser bem interessante se sempre mantivermos na cabeça que quase 90% das vezes que falamos em recursos nos referimos à mouse, teclado, cdrom, dvd, isto é, algum hardware. E os outros 10%? Bom, nós outros 10% certamente recurso seria praticamente igual a um processo, já que cairia em conseguir informação de algo em execução como posição de outra janela.