IMPLEMENTACÃO DE UM TERMINAL X PARA O SISTEMA OPERACIONAL PLURIX Luiz Fernado Huet de Bacellar TESE SUBMETIDA PROGRAMAS FEDERAL DO DE CORPO DOCENTE DA COORDENAÇÃO DOS PÓS-GRADUAÇÃO DE ENGENHARIA DA UNIVERSIDADE RIO NECESSARIOS AO DE JANEIRO COMO PARTE DOS REQUISITOS PARA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS EM ENGENHARIA DE SISTEMAS E COMPUTAÇÃO. Aprovada por: Prof. Newton Faller, Ph.D. (presidente) RIO DE JANEIRO, RJ - BRASIL MARCO DE 1990 BACELLAR, LUIZ FERNANDO HUET DE Implementação de um Terminal X para o Sistema Operacional Plurix [Rio de Janeiro] 1990 IX, 104 p. 29,7 cm (COPPE/UFRJ, M.Sc., Engenharia de Sistemas e Computação, 1990) Tese - Universidade Federal do Janeiro, COPPE 1. Sistemas Computacionais Gráficos I. COPPE/UFRJ . 11. Título (série) Rio de A m i n h a esposa A d r i a n a AGRADECIMENTOS Ao Doutor Newton Faller pelo apoio, incentivo e orientação fornecidos no transcorrer deste trabalho. Aos Doutores Edil severiano Tavares Fernandes e Júlio Salek Aude pela honra de tê-los participando da banca. Aos meus Pais por terem tornado possível a chegada a este ponto. Aos Amigos do NCE que de para alguma forma contribuiram a realização deste trabalho e ao NCE por ter tornado viável o desenvolvimento e a implementação do trabalho. Resumo da Tese apresentada a requisitos COPPE/UFRJ como parte dos necessários para obtenção do grau de Mestre em Ciências (M. Sc.) IMPLEMENTAÇÃO DE UM TERMINAL X PARA O SISTEMA OPERACIONAL PLURIX Luiz Fernando Huet de Bacellar Março, 1990 Orientador: Prof. Newton Faller, Ph.D. Programa: Engenharia de Sistemas e Computação Este trabalho consiste na definição e implementação de um sistema integrado de hardware e software, denominado Terminal X. O objetivo principal é dotar o Plurix, um sistema operacional com filosofia ~ n i x ,de uma interface gráfica com seus usuários. Apresentamos primeiramente o sistema Window, que foi utilizado para a definição da de janelas X arquitetura do ~erminalX implementado. A seguir demonstramos como foi realizada a implementação do Terminal X e ao final fazemos uma avaliação melhorias do trabalho executado, sugerindo possíveis ampliações no sistema. Abstract of Thesis presented fulfillment o£ to COPPE/UFRJ as partia1 the requirements for the degree of Master o£ Science (M. Sc.) AN X TERMINAL IMPLEMENTATION FOR THE PLURIX OPERATING SYSTEM Luiz Fernando Huet de Bacellar March, 1990 Thesis Supervisor: Prof. Newton Faller, Ph.D. Department: Systems Engineering and Computer Science This work implementation o£ consists a o£ hardware the and definition software system named X ~erminal.Its main purpose is and integrated to provide Plurix, an Unix-like operating system, with a graphic user interface. First we present the X Window system, which was used to define the architecture o£ the explain how the X ~erminal. Later we X ~erminalwas actually implemented and finally we make an evaluation of the work done, suggesting possible improvements and extensions to the system. I . ........................................ 1 1.1. Apresentação do Trabalho.................... 1 1.2. Motivação Introdução 1.3. 1.4. I1 . ................................... Proposições Adotadas no Trabalho ............ Organização do Trabalho ..................... 4 ............................... 8 O Sistema X Window 11.1. A Arquitetura de um Sistema de Janelas 11.2. A Arquitetura do Sistema X Window 2 5 ..... .......... 11.2.1. Características Básicas .............. 11.2.2. O Modelo Cliente-Servidor ............ 11.2.3. O Modelo Cliente-Servidor no Sistema X Window ............................. 11.2.4. Protocolo O para X Cliente-Servidor 11.2.5. Os X 11.2.6. . ..................... .................................... Suporte do Sistema Operacional para o ............................ Arquiteturas para um Terminal X 111.1. Motivação para o .................. Desenvolvimento 27 dos ............................... 28 Definição de Arquiteturas para Terminais X 30 Terminais X 111.2. Comunicação Recursos Fornecidos pelo Servidor Sistema X I11 a 111.2.1. Arquitetura Tradicional Usando Rede. 111.2.2. Arquitetura Alternativa Usando .................... Interface Seria1 111.3. IV. Arquitetura Utilizada no 30 32 Terminal X Implementado............................ 34 Implementação do Cliente......................... 39 IV.1. Implementação da Comunicação com o Servidor X................................. 40 IV.l.l. Implantação do Módulo para Conexão. IV.1.2. Implantação do Módulo para IV.2. Troca .. 41 de Mensagens ........................... 48 Modificações Realizadas no Ambiente Plurix. 50 IV.2.1. Modificações nos Compiladores do Plurix ............................... 50 IV.2.2. Inclusão de Rotinas na Biblioteca C.. 52 IV.2.3. Implantação dos Arquivos de Inclusão. 53 IV.2.4. Incompatibilidades com os Utilitários V.1. Definição do Hardware do Terminal X......... 59 V.2. Implementação do Servidor X................. 63 V.2.1. Arquitetura do Servidor X............. 65 V.2.2. Implantação da Camada DIX no Terminal X............................ V.2.3. Implementação da Camada OS 67 no Terminal X............................ V.2.4. Implementação da Camada 69 DDX no Terminal X............................ VI. Testes e Avaliação da Implementação .............. 77 87 1.1. Apresentação do Trabalho Este trabalho consiste na definição e implementação de um sistema integrado de hardware e software, denominado Terminal X, para dotar o sistema operacional Plurix de uma interface gráfica com seus usuários. O sistema operacional Plurix, um sistema com filosofia Unix, foi desenvolvido no Núcleo de Computação Eletrônica da Universidade Federal do Rio de Janeiro e é executado no computador Pegasus-32X, também desenvolvido no mesmo local [l - 2 - 31. A definição da arquitetura Terminal X baseou-se no sistema de janelas X Window, desenvolvido no Massachusetts Institute of Technology, EUA. É um sistema que fornece ao seu usuário uma biblioteca de rotinas gráficas para utilizadas na criação recursos gráficos. O de aplicações sistema X Window serem que necessitem de tem seu código colocado em domínio público. O hardware do Terminal X foi definido de acordo com as características da arquitetura a ser utilizada e de forma a suportar todas as exigências quanto aos recursos a serem oferecidos pelo sistema X Window. O software do Terminal X foi implementado através da adaptação das funções do sistema X Window a arquitetura e ao hardware do Terminal X. Para a adaptação do X Window ao Terminal X foi necessário modificar seu código original e implementar novos procedimentos de software para a interação com o hardware definido. O Terminal X apesar de ter sido implementado para o sistema operacional Plurix, tem versão final, poder ser o objetivo ligado, através de, de em sua redes de computadores, a qualquer sistema computacional que utilize o sistema X Window como interface gráfica com seus usuários. O Terminal X foi desenvolvido e implementado no Núcleo de Computação Eletrônica da Universidade Federal do Rio de Janeiro. I. 2 Motivação O advento das estações de trabalho com suas telas exibição de alta resolução, trouxeram interfaces gráficas para uma variedade de interfaces gráficas uso e entendimento gráficas o potencial das aplicações. As facilitam o processo de aprendizado, das proprietárias aplicações. Diversas interfaces surgiram, provocando dificuldades no transporte de aplicações desenvolvidas computacional de em um sistema que utilize uma determinada interface, para outro com interface distinta. Diante deste fato, surgiu a necessidade da uma interface gráfica que computacionais de diferentes idéia, foi sistema camadas ou tem em de sistemas fabricantes. Baseado nesta EUA o sistema de janelas X desenvolvido nos Window. Este diversas fosse padrão busca sua níveis. arquitetura dividida em Essas camadas se sobrepõem conforme aumenta a complexidade das bibliotecas gráficas oferecidas ao usuário. A finalidade é permitir ao usuário a utilização das diversas bibliotecas de acordo com as necessidades de sua aplicação. O sistema X Window foi colocado em domínio público e sua arquitetura passou a ser adotada sistemas gráficos. como um padrão No entanto, somente a camada do nível básico do sistema X Window passou a ser utilizada como padrão de um fato. Foi iniciada uma intensa discussão sobre como seriam definidas as camadas de mais utilizariam em as rotinas alto nível que do nível básico para fornecer ao usuário um ambiente gráfico sofisticado. Concorrentemente desenvolvido no Surgiu então a interface NCE/UFRJ necessidade que desenvolvimento a estes o de foi sistema operacional Plurix. de permitisse acontecimentos, dotar aos aplicações o Plurix seus de uma usuários o Porém, o gráficas. Pegasus-32X, computador no qual o Plurix é executado, não possui o suporte de um hardware gráfico. foi projetado como Como o Pegasus computador protótipo em 1984 e ainda hoje funciona desta forma, procurou-se uma solução que se tornasse independente deste computador. A solução encontrada veio com o Terminal X. Estes produtos surgiram nos EUA no final basicamente serviço de como de sistemas computacionais exibição gráfica. fato O e 1988 funcionam dedicados dos ao Terminais X utilizarem o sistema X Window para serem implementados foi fundamental sistema X na escolha da solução. Somente as camadas do Window necessárias para que a vão até o a básico são implementação dos Terminais X. Desta forma, adotou-se uma solução gráfica possibilitará nível para o Plurix que implantação das demais camadas que serão executadas sobre a camada básica, assim que for definido um padrão para estas. Proposições Adotadas no Trabalho 1.3. Duas proposições básicas foram adotadas orientações no trabalho de desenvolvimento do como Terminal X para o sistema operacional Plurix. A primeira proposição e manter total compatibilidade entre o software sistema de implementado para janelas X Window. o Terminal X e Esta linha foi seguida a partir do fato do nível básico do sistema X Window ter tornado um padrão em ambientes que de ser se oferecem recursos gráficos. Sem tal compatibilidade, o Terminal X inviável o se torna aproveitado para execução de aplicações genéricas já existentes para o sistema X Window, inclusive -5- aquelas comerciais. A compatibilidade aplicações que permite tenham sido não só a execução implementadas sistemas computacionais que utilizem o sistema 1.4. em X de outros Window, Organização do Trabal Este trabalho está organizado em mais seis capítulos alem deste sistema de introdução. O capítulo I1 apresenta o de janelas X Window. São definidos os componentes -6- de um sistema de janelas e principais Window. a características seguir, da Procura-se mostrar envolvidos neste sistema mostradas arquitetura os e são as do sistema X principais conceitos suas dependências quanto ao ambiente computacional no qual está sendo executado. No capítulo I11 é feita a definição de um Terminal e dos São motivos que proporcionaram o seu desenvolvimento. explicadas implementação X as e é arquiteturas mostrada a existentes arquitetura X adotados na implementação do Terminal para sua e o caminho realizada neste trabalho. Nos capítulos e IV V é explicado como foi feita a implementação do Terminal X Plurix. capítulo O IV para o descreve sistema a implementação recursos necessários para o desenvolvimento de gráficas no implementação X. Terminal da parte do O operacional aplicações capítulo V sistema X dos Window trata da que irá interagir com o hardware definido para o Terminal X. O capítulo ambiente V I relata como foram feitos os testes no X Plurix/Terminal implementado. Procura-se mostrar as principais metodologias adotadas e os problemas encontrados durante análise desempenho do este do trabalho. sistema É feita também uma desenvolvido e são sugeridas áreas de atuação para possíveis melhorias. Por fim, no capítulo VI1 são apresentadas as conclusões tiradas em função do das proposições mostrar o caminho iniciais a ser trabalho deste seguido desenvolvido trabalho. para a e Procura-se evolução Terminal X como um sistema computacional gráfico. do CAPITULO 11 O SISTEMA X WINDOW sistema O X Window, ou simplesmente X, nasceu da necessidade de se poder utilizar estações de diferentes fabricantes de uma trabalho forma transparente sob o ponto de vista da aplicação a ser criada. O começo de desenvolvimento data do ano de rotinas gráficas para as estações fabricante. baixo nível aplicações que A idéia inicial [4]. sistema de janelas com que pudesse ser facilmente transportado de Esse um seu no Massachusetts 1984 Institute o£ Technology (MIT) nos EUA era desenvolver o nucleo de de trabalho nucleo llbit-mappedll de forneceria permitiriam o rotinas qualquer básicas de desenvolvimento de de mais alto nível que pudessem ser executadas nas diversas estações de trabalho, praticamente sem ser transporte, foi necessário a realização de adaptações. Junto a idéia da facilidade de incorporada a possibilidade de, através do usuário uma poder rede interagir que grande estações de poderá exibir os o trabalho e porte, a aplicação gráfica de um usuário que está utilizando qualquer um dos rede, X, com um ambiente distribuído. Em interligue computadores de sistema resultados elemento que possua uma tela gráfica. em elementos qualquer da outro A partir destas idéias foram versões do desenvolvidas sistema X Window. Este sistema aparece também como seqüência aos sistemas de janelas desenvolvidos VGTS e W, ambos para o sistema V, um software para sistemas distribuídos construído na Universidade de [4]. diversas Stanford, EUA De ambos, o sistema X herdou diversas características como, por exemplo, o conceito de hierarquia com relação aos recursos oferecidos pelo sistema. Com a versão 10.4 o sistema pelo MIT como X Window foi colocado um sistema de domínio público. Isto gerou uma grande popularidade do mesmo, fazendo com que diversas aplicações e variações fossem desenvolvidas em cima sistema, deste dentre as quais podemos citar os Terminais X que tratamos neste trabalho. A versão do sistema X utilizada para o desenvolvimento do Terminal X foi a 11.2. 11.1. As Partes de um Sistema de Janelas Para que um sistema de janelas seja 'mportante primeiramente se fazer a definição janela e de alguns termos associados [5]. Uma formal de memória para armazenamento de uma imagem (I1frame memoryI1 ou I1framebufferI1) é um buffer refrescamento da utilizado de elétrons tela de imagem fósforo. para o informação visual exibida em um monitor através da varredura de um feixe de definido é Uma memória convencional tem pelo menos a quantidade sobre ' uma llbit-mappedll necessária para armazenar um valor correspondente a cada pixel na tela de exibição. Em dividida quais várias aplicações tela de exibição é por software ou firmware em janelas, através das diferentes tarefas regiões a retangulares desenhadas, representa dentro armazenadas um são e executadas. das quais manipuladas. Janelas são imagens são Cada janela pedaço da memória de imagem. Janelas podem se sobrepor na tela, com uma janela totalmente visível e outras parcialmente, ou totalmente, ocultas. Um sistema controlar onde tamanho e de uma janelas janela tem como aparece funções básicas na tela, qual seu alterar o seu conteúdo. Para desempenhar estas funções um sistema de janelas é dividido em três partes segundo SCHEIFLER e GETTYS [ 4 ] : Um o gerenciador de janelas; o gerenciador de entradas; o sistema de janelas básico. sistema de janelas, sob o ponto aplicação, ou seja de um procedimento que irá de vista da utilizá-lo para exibir seus resultados, possui diversas interfaces de acordo com SCHEIFLER e GETTYS implementadas pelas três partes, compõem é [4]. Essas interfaces são acima mencionadas, que o sistema. Para se definir cada uma destas partes importante primeiro analisar as interfaces de um sistema de janelas. A interface de programação é uma biblioteca de rotinas e tipos fornecida em uma determinada linguagem de programação que permite a interação da aplicação com o sistema de janelas. As interfaces de programação podem ser de baixo nível ou de alto nível, sendo ambas normalmente desenvolvidas junto com o sistema de janelas básico. A interface de programação é dita de alto nível quando são desenvolvidas rotinas que utilizam a biblioteca de baixo nível para a elaboração de objetos gráficos mais complexos do que as esta biblioteca. compõem a primitivas Normalmente interface de gráficas fornecidas por o conjunto das rotinas que programação de alto nível é denominado "toolkitVV . A interface com a aplicação é a interação mecânica do usuário com a aparência determinada aplicação. Ela visual define específica como a de uma informação é apresentada e manipulada dentro da aplicação. A interface de gerenciamento é a interação mecânica do usuário tratando com o controle geral do dispositivo de hardware em si e dos quais o sistema de dispositivos de entrada são os janelas e as aplicações estão sendo executadas. A interface de gerenciamento aplicações sobre define como as arrumadas e rearrumadas na tela, e como o usuário troca de aplicação. A interface com o usuário é a junção da interface com a aplicação e a interface de gerenciamento. A interface com o usuário responde por toda a interação entre o usuário e o sistema computacional por ele utilizado para executar a aplicação desejada. Uma vez feita a análise das funções das interfaces de um sistema de janelas, pode-se definir como as três partes nas quais um sistema de janelas é dividido, irão implementar as funções de cada interface. O gerenciador interface de de gerenciamento. É como uma aplicação, utiliza a interface de programação posicionamento das implementa janelas janelas parte da apenas um programa que, tal biblioteca para de controlar das rotinas da o tamanho e o aplicações na tela de exibição. Ao gerenciador de janelas é dada uma autorização especial para realizar esta função, autorização que as demais aplicações não possuem. O gerenciador de janelas tipicamente permite que aplicação uma mova ou redimensione as suas janelas e controle a pilha de janelas que se sobrepõem de acordo pré-definidas. O conjunto de com regras regras que especificam os tamanhos permitidos e a posição das janelas é a política para o layout das janelas de um sistema. O gerenciador de en radas implementa o restante da interface de gerenciamento. Ele controla qual aplicação enxerga uma sinalização proveniente de um dos dispositivos de entrada do sistema, normalmente um teclado ou um llmousell. A finalidade do gerenciador de entradas é que aplicações evitar que não estejam ativas ou associadas a um dispositivo de entrada não sejam interrompidas por sinais enviados por este dispositivo. A principal parte de um sistema janelas é o de sistema de janelas básico. Ele é o substrato no qual as aplicações e os gerenciadores de janelas e de entradas são construídos. No sistema de janelas básico estão as rotinas que realizam a interface do sistema com o dispositivo de hardware em si e com os dispositivos de entrada. Para a implementação do trabalho, foi utilizada básico do sistema biblioteca que X a parte Window, As demais janelas o gerenciador definido neste do sistema de janelas junto partes com como de as rotinas o gerenciador entradas, transportadas automaticamente para o básico, X da implementam a interface de programação de baixo nível. e Terminal sistema por de de serem janelas e a interface de programação de alto nível, que é implantada sobre a interface de programação de baixo nível, não fazem parte do escopo deste trabalho. A Arquitetura do Sistema X Window 11.2. 11.2.1. O ~aracteristicasBásicas desenvolvimento do sistema X Window foi baseado em duas importantes características quanto a sua arquitetura A [4]. primeira que é as aplicações devem ser independentes do sistema computacional no qual estão sendo executadas. A segunda, computacionais de o uma sistema deve utilizar redes forma transparente sob o ponto de vista da aplicação executada. Sobre a independência do sistema quanto X ao computador no qual o sistema está sendo executado, existem diversos fatores a se ressaltar. Ao se utilizar um sistema com este tipo de independência, pode-se transportar uma aplicação de um sistema computacional para outro distinto praticamente sistemas sem modificações. Caso os dois executem um sistema operacional compatível m%smo e possuam um processador central, o transporte pode ser feito ao nível do programa objeto da aplicação. A independência quanto obtida ao sistema computacional sistema X através da padronização da interface no de programação. Através desta padronização, uma encontra é as mesmas funções gráficas qualquer sistema X independentemente das aplicação disponíveis em característica do dispositivo de exibição gráfica suportado pelo sistema. Quanto a transparência computacionais, o sistema X sejam executadas em um permite rede, Normalmente possivelmente estes dois acesso que a redes aplicações que determinado computador da rede, possam exibir seus resultados em desta de algum uma sistemas outro estação são de computador trabalho. distintos, com arquitetura e sistema operacional diferentes. Estas características sistema X a se basear no levaram modelo a arquitetura do cliente-servidor. Neste possível implementar naturalmente um sistema de modelo, é janelas com uma filosofia que coincide com as duas características citadas. O Modelo Cliente-Servidor 11.2.2. conceito O do modelo cliente-servidor é definido em COMER [ 6 ] , a partir de um ambiente onde interligando diversos cliente-servidor é uma exista uma rede sistemas computacionais. O modelo extensão natural da comunicação entre processos em um único sistema computacional. termo O servidor se aplica a qualquer programa que ofereça um serviço que possa ser rede. O servidor aceita serviço e retorna o as resultado requisitado através da requisições, realiza o seu ao sistema que gerou a requisição. Um programa em execução é denominado cliente quando ele envia uma requisição a um servidor através da Normalmente rede e os servidores são programas aplicativos, ou seja, processos, sendo executados em um determinado sistema. Desta forma, o servidor de um determinado serviço pode ser executado em um sistema compartilhando tempo com outros processos, ou pode ser executado em computacional específico algum sistema para ele, podendo ser inclusive em computadores pessoais. Múltiplos servidores podem oferecer o mesmo serviço e podem ser executados na mesma máquina ou em várias máquinas. Isto acarreta que servidores de um mesmo serviço que estejam em máquinas distintas, distintos, um para cada máquina. cada uma mesmo destas máquinas, subendereço ou No estes porta. O tenham entanto, endereços dentro de servidores possuem um número das portas de servidores bastante difundidos e conhecidos pelos usuários da rede é fixo, de forma que ao se desejar um destes serviços, conhecendo-se o endereço da máquina onde está servidor, basta enviar requisições para a o porta correspondente a este servidor. O Modelo Cliente-Servidor no Sistema X Window 11.2.3. O modelo cliente-servidor no sistema forma X funciona de a manter a independência da aplicação em relação ao hardware que dispositivo a exibe físico de [4]. Assim exibição para controlá-lo, de forma a sendo, para cada irá existir um servidor manter a aplicação/cliente independente do dispositivo. Um dispositivo constituído de um físico ou mais é de exibição, ou lldisplayll, monitores que utilizem a tecnologia de exibição por varredura, de um teclado, de um llmouselle do hardware para controle destes dispositivos. Um sistema computacional pode possuir mais de um lldisplayll e nesse caso tem-se um servidor sendo executado para lldisplaytl. E cada importante notar que um l1displayUpode ter mais de um monitor a ele ligado, desde que todos os monitores sejam controlados por um hardware único. Uma aplicação/cliente através de qualquer canal se de comunica com um servidor comunicação bidirecional, confiável e que se possa enviar mensagens de tamanho igual a um byte. Existe um protocolo definido pelo sistema X, o protocolo X, que faz a comunicação do cliente com o servidor através do canal de comunicação. Se o cliente e o servidor estão na mesma máquina, o canal pode ser baseado em qualquer mecanismo de comunicação entre processos. Caso contrário, se o cliente e o distintas interligadas servidor estão em máquinas através de uma rede, é necessário estabelecer uma conexão entre os dois através da rede. O fato do sistema X Window não necessitar de um canal de comunicação complexo para a comunicação entre o cliente e o servidor, faz com que o sistema possa ser utilizado em diversos ambientes. Como exemplo, pode-se citar o protocolo X sobre os protocolos (I1TransmissionControl Protocol / de Internet uso rede do TCP/IP ProtocolI1) e DECNET (I1DigitalEquip. Corp. Network Protocol1I) [ 4 ] . Pode-se ter no sistema X vários clientes com conexões abertas simultaneamente a um Único servidor e um cliente pode abrir conexões a vários servidores ao mesmo tempo. tarefa básica diversos do clientes controla, e servidor em é multiplexar os pedidos dos relação separar as ao I1displayl1 que sinalizações de ele entrada enviando-as para provenientes do teclado e do llmousell, cliente apropriado. utilização do De visualização A sistema X Window é de um exemplo mostrada na do de figura fundamentais para interfaces com hardware são o usuário. colocadas no se hardware. Além disso, o e servidor comunicação, fazendo realmente é implementar Todas seja protocolo que o fazendo com independente de independente com diversas as dependências com o servidor cliente/aplicação qualquer janelas sistema X Window. Ele fornece os recursos e os mecanismos cliente o acordo com as definições do item 11.1, o servidor do sistema X, ou servidor X, engloba o sistema de básico A deste comunicação do meio que entre físico de cliente/aplicação seja independente da máquina na qual o servidor está sendo executado. O sistema X fornece uma interface de lioteca X [7], na qual estão todas necessárias para que o cliente/aplicação com o servidor e solicite programação, faça a as rotinas a conexão as tarefas desejadas. Ao se ligar a aplicação as rotinas fornecidas pela biblioteca X, a forma de comunicação com o servidor se torna totalmente CLIENTE 1 CLIENTE 2 COMPUTADOR 1 FIGURA . I1 1 -20- transparente para o cliente. Nas rotinas da biblioteca estão todas as dependências quanto ao mecanismo utilizado para enviar as mensagens aplicação utiliza estas rotinas para servidor ou do que será protocolo X. A especificar a qual servidores ela fará conexão para exibir seus resultados. 11.2.4. O Protocolo X para a Comunicação Cliente-Servidor O protocolo X [7] foi projetado de forma servidor está cliente, ele clientes. esperando deve poder por uma resposta continuar a que, se o de um certo servir outros Isto evita que, no caso de um cliente com erro, troca da ordem dos bytes vindos do cliente. Caso as ordens que sejam iguais nada é feito, evitando assim o lloverheadll existiria se a ordem dos bytes na comunicação fosse fixa e tanto o cliente quanto o servidor estivessem em máquinas com ordem oposta a ordem fixada. Além do comunicação, problema existe quanto a ordem protocolo byte na o problema quanto ao alinhamento das informações que são transmitidas através do comunicação de protocolo de entre cliente e servidor. Isto é resolvido no fazendo X transmitidas com que as informações em blocos com tamanhos múltiplos de Além disso, quantidades de 16 bits e 32 sejam 32 bits. bits dentro de bloco são sempre alinhadas em espaços de 16 bits e 32 um bits respectivamente. Isto significa que, no protocolo X, ao se transmitir uma informação de tamanho de um byte e depois outra de 16 bits, entre as duas irá sempre uma de tamanho igual informação a um byte sem nenhum significado. Este byte é denominado llpadll. O protocolo X é dividido em quatro tipos de formato para a transmissão de informações [ 7 ] : O . formato para requisições; . formato para respostas; . formato para erro; . formato para evento. formato para as requisições do cliente ao servidor é sempre de um llheaderll de quatro bytes, seguido de zero ou mais bytes de dados adicionais. O I1headerwé composto de quatro bytes, sendo um com o dois que indicam o tamanho llopcodell da requisição, da informação adicional em unidades de quatro bytes e um byte genérico. O formato para resposta do servidor ao cliente contém sempre bytes seguidos de zero ou mais 32 adicionais. bytes de Nos 32 bytes fixos existe um campo de dados bits 32 que diz o número de bytes adicionais em unidades de quatro bytes. O formato relação a para alguma comunicar erro requisição, tem bytes. Um dos bytes dá informações como um o código do ao cliente sempre tamanho de erro e os 32 demais o llopcoden da requisição que falhou e o número de seqüência desta requisição. No sistema X, as em requisições entre um cliente e um todas servidor são cliente que numeradas seqüencialmente. O formato para um servidor notificar um algum evento ocorreu, tem também tamanho fixo de Todos os 32 bytes. eventos possuem um byte com o código do tipo de evento que está sendo comunicado. 11.2.5. Os Recursos Fornecidos pelo Servi 0s recursos básicos fornecidos pelo janelas, fontes de servidor X são caracteres, cursores controlados por llmousell e imagens não visíveis na tela (I1pixmapsl1)[ 4 ] . O cliente requisita a criação de um recurso e o servidor aloca o recurso ao cliente, retornando um identificador do recurso. Qualquer cliente que conheça o um recurso mesmo que cliente. criar pode este Isto usar que tenha permitido gerenciadores de aplicações irão de e manipular o recurso livremente, recurso é identificador sido criado por outro com a finalidade de se poder janelas utilizar independentemente as janelas. das Além disto, pode-se ter no sistema X, aplicações desenvolvidas através de múltiplos processos que compartilham os mesmos recursos. Todas as operações em parâmetro o identificador do aplicação conexão um recurso recurso. devem ter como Desta forma, uma pode multiplexar o uso de várias janelas em uma única com computadores. um servidor, através Similarmente, cada da evento rede gerado servidor irá conter o identificador da janela na de pelo qual o evento ocorreu. As janelas e as imagens não visíveis na tela são, no sistema X Window original, regiões de memória acessíveis através de descritores de arquivos fornecidos pelo sistema operacional. A diferença entre as janelas e as imagens não visíveis e que as bufferl'do sistema outras estão na primeiras gráfico memória do de estão situadas no I1frame computador, trabalho enquanto do mesmo sistema computacional. Isto significa que as imagens não só aparecerão as visíveis na tela de exibição caso sejam copiadas em alguma das janelas que estejam visíveis nesta tela. É importante hierarquia de ressaltar janelas no também o X sistema conceito No [4]. hierarquia, está a janela raiz que cobre toda a de topo da tela de exibição e é criada pelo próprio servidor. Nas aplicações, as janelas de mais alto nível na hierarquia, são criadas como subjanelas, ou janela de empilhadas filhas, da janela uma aplicação, suas em qualquer arbitrariamente. ordem modelo O da raiz. subjanelas e se hierarquia Dada uma podem ser sobreporem de janelas do sistema X procura, desta forma, representar uma pilha de papéis sobre uma mesa de trabalho. Quando uma janela outra janela, diz-se que cobre parcialmente ou totalmente a primeira está ocultando a segunda. Uma janela filha pode ocultar totalmente a janela podendo inclusive possuir dimensões maiores que a da mãe, m ã e . Neste caso, a janela filha sempre restrita a área terá ocupada sua parte visível por sua m ã e e sua área excedente ficará invisível. A janela raiz limita o tamanho máximo de uma janela qualquer. Nenhuma dimensões maiores janela terá suas que a da janela raiz, que cobre toda a tela de exibição do monitor ligado ao servidor do sistema X Window. 11.2.6. Su e do Sistema Operacional para o Sis O sistema X Window foi desenvolvido, desde sua versão inicial, em computadores que operacional Unix. O sistema Unix utilizavam utilizado sistema inicialmente o desenvolvimento foi o Unix 4.2 BSD da Universidade para de Berkeley, EUA. A partir da versão 11.2 foi o do sistema X, utilizada a versão 4.3 do Unix de Berkeley [8] para o desenvolvimento. A facilidade de transporte de entre sistemas Unix-like e o grande número de usuários deste tipo de sistemas, fez com que transportado outros e adaptado utilizassem sistema softwares para o operacional Unix sistema X fosse computadores que não que fosse o desenvolvido em Berkeley. O sistema X pode ser também implantado sobre outros preparado para utilizar rotinas do sistema que implementam três famílias de protocolos para comunicação [ll]: o I1Unix domainl' para a comunicação local, ou seja, quando o cliente e o servidor estão num mesmo computador; o e TCP/IP o DECNET para a comunicação externa, quando o cliente e o servidor estão em máquinas distintas. Utilizando as rotinas de comunicação oferecidas pelo sistema operacional, o sistema X se torna independente do protocolo que está sendo utilizado para a cliente com o rotinas para a servidor. Nos comunicação computadores, será comunicação do sistemas que não oferecem entre necessário processos e entre criá-las de alguma forma para que se possa fazer a implementação do sistema X. Além das rotinas para comunicação oferecidas pelo sistema Unix 4.3 BSD, o sistema X utiliza um grande número de outras rotinas oferecidas por este sistema operacional como suporte durante a execução de um processo. Estas rotinas muitas vezes não são padrão entre outros sistemas Unix-like. Desta forma, ao sistema X se transportar e adaptar o para outros sistemas operacionais Unix-like, é necessário criar novas rotinas no sistema que irá suportar o X Window e/ou trechos em que modificar são o código do sistema X nos chamadas algumas rotinas oferecidas pelo sistema operacional. CAPITULO 111 ARQUITETURAS PARA UM TERMINAL X A idéia de um Terminal X tem como finalidade básica dotar um sistema computacional ou uma rede de computadores de um serviço de exibição gráfico. O nome Terminal X origina-se do inglês ItXTerminalt1que por sua vez expressão da I1XWindow Terminalt1.Essa expressão confunde-se com outras como "X Window Display vem Display StationI1 [12] na Stationtt ou intenção de I1Network representar a finalidade básica descrita de um Terminal X. Os Terminais X surgiram nos EUA no final de 1988 [12] e situam-se entre os terminais de texto alfanuméricos, semigráficos ou gráficos, e as estações de trabalho com ou sem disco. Seu surgimento só foi possível graças a grande difusão, através dos usuários de sistemas computacionais, do se sistema X Window. Os Terminais X baseiam na arquitetura deste sistema para serem implementados. Uma das proporcionar estação de complexidade maiores ao usuário trabalho de vantagens um ambiente gráfica hardware dos e Terminais é similar ao de uma possuindo custo X no entanto inferiores [13]. Utilizando um Terminal X, um usuário pode entrar na rede a qual o terminal está ligado e ter acesso as diversas aplicações em diferentes llhostsll, exibindo-as em múltiplas janelas na tela do monitor gráfico do terminal. 111.1. Motivação para o Desenvolvimento dos Terminais X A grande utilização interface com o usuário aqueles que utilizam do de sistema X Window como computadores, principalmente sistema operacional com filosofia Unix, fez com que fosse colocado em prática o conceito utilização da um ambiente gráfico distribuído. O usuário de de um determinado sistema, que esteja ligado a uma rede de computadores e que interage com seu computador através sistema X, pode executar aplicações gráficas em outros sistemas que estão ligados a rede e exibir no seu computador. os resultados Isto é possível pois a utilização do modelo cliente/servidor pelo sistema X Window permite a do que aplicação possa ser executada em sistemas distintos ao sistema que executa o servidor X e que irá exibir os resultados da aplicação. Este tipo de ambiente distribuído, é desejável quando se está ligado a uma rede através trabalho com recursos gráficos, de processamento, e a aplicação executada de forma viável, um desempenho maior utiliza-se os processamento do que sistemas que baixa gráfica sistema o de de uma estação de da capacidade de exige, para ser computacional estação. maior Neste com caso, capacidade de estejam ligados a rede para a execução da aplicação. Através do protocolo X, a aplicação se comunica com o servidor X que é executado na estação de trabalho e exibe os resultados nesta. Esta forma de se utilizar as estações de trabalho com capacidade gráfica, fez com que as ser estações passassem a utilizadas com duas finalidades práticas. A primeira, na qual a estação aplicação pode gráfica executar não ao muito é mesmo tempo, cliente/aplicação como o servidor finalidade, qual o cliente/aplicação complexo na e exige processamento um para sistema de executá-lo, a complexa, gráfico. maior tanto bastante é de funciona praticamente como um terminal/servidor o segunda A capacidade estação a de trabalho ligado a rede. Este servidor recebe através da rede, dados enviados por outro sistema para serem exibidos na sua tela gráfica. A utilização do sistema X Window no segundo caso é fundamental pois a padronização do protocolo X permite que implantada, a possa a execução da aplicação. Além ser utilizado para biblioteca X qualquer sistema que possua disto, qualquer estação de trabalho que esteja executando o servidor X, pode ser utilizada para exibir os resultados de qualquer aplicação. A utilização das estações de trabalho, em certas aplicações, como terminais/servidores gráficos de uma rede de computadores, motivou a idéia da criação de um mais simples que a própria estação. Este sistema teria como finalidade ser um servidor gráfico dentro do X Window e sistema sistema receberia requisições de serviços através -30- protocolo X estivesse transmitido pela ligado A [14]. fato de não ser necessário controlá-lo. O programa rede a qual o servidor sua simplicidade residiria no um sistema servidor operacional seria o para único a ser executado pelo hardware deste sistema gráfico. Além disto, 111.2.1. Ar icional Usando Rede A arquitetura tradicional de um Terminal X origina-se naturalmente da arquitetura de uma simplificada, de o que foi descrito no item acordo com estação de trabalho anterior. Um basicamente de e nesta arquitetura, para dar suporte ao sistema X para suportar a comunicação através de uma rede de computadores [15]. Além disto, possui média consiste um processador e memória local executando as funções necessárias Window X, Terminal ou alta um monitor de resolução, monocromático ou colorido, um teclado, um dispositivo de apontamento e posicionamento (flmouself), e uma interface que permita a conexão a redes de computadores, normalmente através do Pode padrão Ethernet. também possuir um processador auxiliar para realizar as tarefas de exibição gráficas. Tal como Terminais as estações também X de trabalho sem disco, não o possuem e, além disto, não são dotados de um sistema operacional. Assim sendo, também forma similar da de as estações sem disco, a carga do programa necessário para gerenciar e executar suas funções é através os feita rede. Para isto, o Terminal X se comunica com um computador, através de um programa de carga do sistema, que deve estar preparado para fornecer o programa servidor necessário ao terminal. O nome (endereço) deste computador é solicitado durante a inicialização dos ~erminaisX. forma alternativa para a carga deste servidor é através da utilização de ROM, uma mesmo quando Uma programa é feita cópia do programa armazenado na ROM para a memória de trabalho do Terminal X [16]. Basicamente um sistema X e Terminal X executa o servidor do é capaz de se comunicar com vários sistemas computacionais protocolo interligados padrão, em rede, normalmente implementado em um meio Ethernet. padrão o É através TCP/IP em cima ou do executado em o cliente/aplicação, determinado que computador, e DECNET, protocolo está sendo o servidor, no Terminal X. O fato da comunicação com outros computadores feita normalmente através de Ethernet, onde a taxa de transmissão de dados é da ordem de 10 Mbps, é para o fundamental desempenho do sistema X quando executado de forma distribuída através dos Terminais X. A velocidade com as um utilizado na rede que são trocadas as mensagens do protocolo X entre ser de mensagens servidor e, são que trocadas entre o cliente/aplicação e o conseqüentemente, a velocidade com que a aplicação exibe os resultados, depende diretamente da taxa de transmissão do meio de comunicação entre os Terminais X e os sistemas computacionais que executam a aplicação. Quanto maior for esta taxa, menor será o tempo entre a execução da aplicação e a visualização dos seus resultados em um Terminal X. 111.2.2. Arquitetura Alternativa Usando Interface Serial Uma similar arquitetura a arquitetura processador e memória teclado e de um invés de se para tradicional, um Terminal X é utilizando-se um local, além de um monitor, de um I1mouser1.Porém, nesta arquitetura, ao utilizar a interface para a interligação do Terminal X a outros conexão alternativa através sistemas computacionais baseada na de rede, utiliza-se uma interface seria1 do tipo RS232-C para interligá-lo diretamente a um único sistema computacional [ 1 5 ] . Este sistema é que está ligado através de uma rede a outros sistemas. As aplicações distribuídas através da rede, se comunicam com o Terminal X através deste sistema computacional. servidor O X separado em duas partes. Uma sendo é executada no Terminal X e a outra executada no ao qual computador o terminal está ligado. A divisão é feita de tal forma que através da linha de comunicação serial que o X Terminal ao computador, só passam liga informações necessárias para a exibição gráfica na tela do monitor Terminal X do e sinalizações de entradas provenientes deste ~151. Nesta arquitetura, para que não fique muito apresentação do resultado de uma receber através comandos capacidade da linha serial comandos gráficos de alto nível. Isto ocorre, pois caso somente gráficos para o o X Terminal uma pixels imagem levaria processador dezenas de segundos. Desta forma, de O do Terminal X deve executar um programa capaz desenhe traçado serial de, por exemplo, centenas de milhares de de receber comandos gráficos do tipo trace reta, área, receba traçado de pixel por pixel da tela a ser exibida, a passagem pela linha de a aplicação na tela do Terminal X, é necessário que o terminal possua de lenta padrão imagens. preencha e outros, para diminuir o tempo de Normalmente, coloca-se junto ao -34- gráfico dedicado ao traçado de primitivas gráficas. Com utilização a do processador gráfico, as primitivas gráficas são transmitidas, através da linha serial, no formato próprio para o processador. arquitetura para a implementação de Terminais X Esta possui uma vantagem quanto a complexidade relação a arquitetura tradicional. interface para a conexão a redes de rotinas para implementar esta e o Por custo não possuir computadores nem menos alternativa complexo arquitetura do que tradicional. gráficos e que computadores. A conexão de seriais aqueles Sua aplicação porte estejam um implementados típica que não ligados Terminal X a a pela é em possuam redes de interfaces destes sistemas, permitiria ao usuário do sistema o acesso a um sistema da têm um menor custo e um hardware sistemas computacionais de médio recursos as conexão através de algum protocolo padrão, os Terminais X implementados através arquitetura em X exibí-las ambiente Window em gráfico podendo janelas na distribuído executar tela do através do múltiplas tarefas e monitor gráfico do Terminal X. 111.3. Arquitetura Utilizada no Terminal O Implementado objetivo final deste trabalho é a implementação de um Terminal X, baseado na arquitetura tradicional descrita no item 111.2.1, para o sistema sistema operacional Plurix, um com filosofia Unix desenvolvido no NCE/UFRJ. Para -36Somente após a implementação desta estação de que será possível interligar computacional, que execute o trabalho é o Terminal X a um sistema Plurix e que possua uma interface de comunicação padrão Ethernet. Os dois motivos anteriores, levaram então a que este trabalho passasse por uma etapa intermediária na Terminal X se baseia na arquitetura utilizada na o alternativa, utilizando interface serial, descrita no item arquitetura qual A 111.2.2. implementação tem ainda uma variação em relação ao que foi definido neste item uma vez que, por não ser possível ligar o Pegasus-32X a computadores, não possível e clientes/aplicações por outros redes distribuir sistemas de os computacionais. Desta forma, esses clientes devem ser executados também no Pegasus. definição A do hardware do Terminal X incluindo um processador gráfico, capaz de executar diversas primitivas gráficas, tornou utilizando a viável a arquitetura implementação do alternativa. sistema X Window foi dividido em duas com a definição desta O servidor partes, arquitetura, terminal sendo do de acordo uma delas executada no Pegasus-32X e a outra no hardware do Terminal X, conforme e mostrado na figura entre as duas gráficos e hardware a do partes se sinalizações Terminal (111.1). restringe de A comunicação somente a comandos entrada provenientes do X. 0s comandos gráficos utilizados são transmitidos a nível das primitivas gráficas que o I I CLIENTE "7 I TERMINAL X I I I I I FIGURA .1 processador gráfico executa. maneira transmitir ponto exibidas na tela do a Não ponto monitor do é as necessário desta imagens serem a terminal, e com isto, diminui-se o fluxo de informações passadas entre o Pegasus e o Terminal X. Desta forma, é possível interligar as duas partes do servidor X através de uma linha seria1 com transmissão velocidade é a taxa de máxima 9600 das bps. de comunicação Essa taxa interfaces de seriais existentes no Pegasus-32X. A segunda etapa só se tornará possível, ao ser implementada tanto a estação de trabalho com interface comunicação padrão Ethernet, como o protocolo TCP/IP para conexão do Plurix a redes de implementação da primeira de padrão computadores. A etapa foi feita de forma mais transparente possível quanto a arquitetura utilizada, para que a passagem para a segunda etapa possa ser feita sem IMPLEMENTAÇÃO DO CLIENTE O trabalho de implementação do cliente do sistema X Window consiste fundamentalmente em implantar a biblioteca X no sistema computacional onde o cliente/aplicação irá ser executado. A biblioteca X, que implementa a de interface programação de baixo nível dentro do sistema X Window, fornece as rotinas necessárias para que O cliente/aplicação faça a conexão com o servidor X desejado e solicite todas as tarefas necessárias para a exibição de seus objetivos. implantação A da biblioteca X dentro de um sistema computacional, permite a clientes dentro sistema. deste implementação deverá, depois de compilado, ser biblioteca X necessárias Cada programa ligado para o de as sua diversos cliente rotinas da execução. O procedimento é similar ao das bibliotecas existentes para as diversas linguagens de programação, utilizadas pelos programas escritos nas respectivas linguagens. A biblioteca X é fornecida junto as demais partes sistema pela X Window biblioteca X original. estão do Todas as rotinas oferecidas escritas na linguagem de programação C e utilizam diversas rotinas, inclusive as de -40- chamada ao sistema, existentes na biblioteca C do sistema Unix 4.3 BSD. O trabalho de implantação consiste na adaptação de suas da rotinas existente no sistema operacional sobre o biblioteca X a biblioteca C qual ela será implantada, seguido da compilação dos diversos modulos que A primeira etapa da implantação da sistema Pegasus/Plurix consiste sistema, o mecanismo original de com o servidor X. módulos onde estão A em biblioteca adaptar comunicação X para do no este cliente biblioteca X original possui dois todas as rotinas responsáveis pela comunicação entre o cliente e o servidor: - XC0nnDis.c; - X1ibInt.c. Destes dois módulos, somente o módulo XConnDis.~possui chamadas a rotinas do sistema operacional que tratam com o protocolo de comunicação a ser utilizado entre o cliente e o para o diálogo servidor. O módulo XC0nnDis.c é o responsável pela implementação da conexão do cliente com o servidor. As demais trocas de mensagens entre o cliente o e servidor, para as quais utiliza-se as rotinas do módulo XlibInt.~,são feitas de forma transparente quanto ao tipo de protocolo utilizado. operacional Isto fornece um possível o acesso ao acontece, pois descritor canal de através comunicação o do sistema qual criado é pela conexão do cliente com servidor. O cliente passa a receber e enviar descritor. mensagens mensagens Cabe que ao para sistema passam o servidor operacional através deste formatar as no canal de acordo com o protocolo utilizado para a criação do mesmo. ulo para Conexão O módulo XC0nnDis.c original está preparado para izar rotinas do sistema Unix 4.3 BSD que implementam a conexão do cliente com o servidor através dos protocolos Wnix domainI1,para a comunicação local, TCP/IP ou DECNET, para a comunicação remota. protocolo módulo, a ser opção A utilizado definindo-se para quanto ocorre o na ao tipo de compilação deste pré-processador qual dos ll#ifdefll existentes para cada protocolo será utilizado. A escolha de um determinado protocolo implica na de chamadas protocolo a para servidor. rotinas do sistema que realizar conexão do Estas a rotinas recebem parâmetro, estruturas pré-definidas utilizado. Estas estruturas Unix 4.3 BSD, através de ("*.h") utilização utilizam cliente com normalmente para cada este o como protocolo são definidas, pelo sistema arquivos públicos de inclusão e seus membros representam dados inerentes a cada protocolo. realização Para a módulo XC0nnDis.c premissa já no citada original, adotou-se do trabalho de implantação do sistema Pegasus/Plurix, baseado na de a não modificar a biblioteca seguinte metodologia, detalhada posteriormente. Primeiramente, foi que X será necessário fazer a escolha de uma das três opções oferecidas por este módulo quanto ao tipo de protocolo. Feita a escolha, foi necessário fazer um estudo de como se entre o cliente escolhido. Isto e foi o servidor feito realiza utilizando através da a conexão o protocolo análise do funcionamento das rotinas do sistema Unix 4.3 BSD chamadas pelo módulo XC0nnDis.c para implementar a conexão cliente-servidor no protocolo escolhido. Depois de feita a análise, criaram-se as rotinas Pegasus/Plurix as emulam que dentro do ambiente chamadas ao Unix, permitindo a conexão do cliente com o servidor X. Como o protocolos Plurix não mencionados, implementa a escolha protocolo pode ser feita de forma opções existentes, foi nenhum quanto deve unicamente protocolo que ao arbitrária. três tipo de Dentre as escolhida a de trabalhar como se fosse possível utilizar o protocolo TCP/IP. se dos ao fato pretende-se Esta escolha simbólico de ser para este desenvolver as rotinas de comunicação do Plurix. o protocolo TCP/IP, o módulo XC0nnDis.c utiliza Para as chamadas ao sistema com o servidor X. do BSD 4.3 socket, connect, gethostbyname, durante o processo de conexão gethostname, dentro Unix Estas contexto do chamadas protocolo Window, as seguintes funções [ 6 . socket - ao sistema possuem, TCP/IP e do sistema X 81: - cria um dos extremos do canal de comunicação a ser utilizado para o diálogo com o servidor X; o outro extremo do canal fica aberto até que seja feita a conexão com o servidor; devolve o descritor que identificará este canal; . connect - recebe como parâmetros o descritor do canal criado pela chamada socket e o endereço do computador onde está sendo executado o canal indicado pelo descritor ao computador cujo endereço foi recebido como parâmetro; se bem sucedida completa a conexão entre o cliente e o servidor; . gethostbyname - recebe como parâmetro o nome de um "hostil e devolve o endereço Internet desse I1hostu; utilizada para a identificação do endereço do computador, a partir de seu nome, no qual o servidor X está sendo executado; - gethostname qual o devolve processo executado; é não recebeu que chamada o nome a o nome do llhostll no chamou está sendo pelo cliente quando este do I1hostl1 para fazer a conexão com o servidor X e então assume o llhostll que o está e Feita analise das rotinas do Unix 4.3 BSD utilizadas para implementar a conexão cliente-servidor no sistema X original, pôde-se partir para a implementação das rotinas para emular as funções das chamadas ambiente Pegasus/Plurix. anteriormente, o mecanismos que sistema chamadas ao computador Como Unix, dentro foi mencionado Pegasus/Plurix possibilitem computadores. O sistema ao a sua não conexão operacional Plurix não uma do oferece a redes de não fornece sis Pegasus-32X possui interface, tipo Ethernet ou similar, que torne viável sua ligação a redes sistemas computacionais, partiu-se para a implementação do cliente no mesmo sistema que o servidor, no caso o um para cada I1FIFOl1. rotinas de Como a possui suas originais para comunicação estruturadas em função apenas um descritor cliente-servidor, para seria substancial no código destas responsável pela realização o canal de comunicação necessário uma rotinas. própria da A conexão servidor devolve como resposta, o valor canal X biblioteca do alteração rotina do cliente com descritor do bidirecional criado através da conexão. A alteração desta e de outras rotinas para iria contra a premissa suportar dois básica descritos utilizada nesta implementação de não modificar a biblioteca X original. A outra forma encontrada foi a utilização de duas interfaces de comunicação seriais do Pegasus interligadas. Através deste mecanismo, o cliente envia e recebe mensagens por intermédio de uma linha serial. O servidor X realiza o mesmo utilizando outra linha serial. O fio de transmissão de uma linha está ligado no fio de recepção da outra e vice-versa. No Plurix, é necessário somente um descritor para realizar operações de leitura e escrita linhas de comunicação em seriais. Isto ocorre, pois linhas seriais são canais de comunicação bidirecionais com acesso através de um compatível único com as dispositivo rotinas da físico. Esta forma é bibiloteca X original, e poderia ser utilizada. Este tipo de implementação permite ainda a de um ambiente simulação gráfico distribuído. A partir do momento que se tenha um outro sistema computacional executando o implantar naquele sistema a biblioteca X Plurix, pode-se e, através de uma de suas interfaces seriais, ligá-lo Pegasus. Desta em outro sistema Pegasus. Esta ao forma, pode-se criar um cliente/aplicação enquanto o executado servidor é no configuração poderia melhorar o desempenho da aplicação executada, uma vez que o cliente e o servidor estariam sendo executados em sistemas computacionais distintos e de forma paralela. único O problema da interfaces seriais, é que a dessas interfaces no implementação utilizando taxa de Pegasus transmissão máxima de é 9600 prejudicaria a comunicação entre o cliente e Porém, bps. o Isto servidor. consideramos esta solução transitória. Como já foi mencionado, durante este trabalho foi iniciado o desenvolvimento de um ambiente que irá possibilitar o uso do Plurix para se ter acesso a redes de alta taxa solução de transmissão. compatível implementação e Por disponível computadores com isto, e por ser a única para o momento, a no Plurix da comunicação entre os processos cliente e servidor foi realizada utilizando-se interfaces seriais. Concebido o mecanismo para intercomunicação entre os processos cliente e servidor, a que emula a chamada implementação socket dentro da do Pegasus/Plurix consistiu na abertura (chamada ao en ) rotina ambiente sistema de um canal seria1 llttyll em modo llrawll tanto para transmissão como para recepção. O modo pois o sistema recebidos no devolve o não necessário é deve tratar os bytes transmitidos e "ttyI1 utilizado. A chamada implementada descritor do canal llttyll aberto. O canal I1ttyv1 aberto não deve possuir uma login, vez que deve ser controlado exclusivamente pelo processo cliente. A chamada connect perdeu, dentro desta implementação, sua função pois a conexão com o outro extremo do canal de feita comunicação é mensagem pelo fisicamente. Uma cliente, o servidor vez enviada a automaticamente receberá pois deverá estar llescutandoll o outro extremo canal. a do A rotina connect implementada retorna o valor zero indicando que não houve erro na sua execução, para manter compatibilidade com a rotina original do Unix 4.3 BSD. As chamadas gethostname e gethostbyname perdem também seu sentido, pois nesta implementação o precisa saber o endereço nem o servidor X está necessários na sendo nome do executado. implementação cliente sistema Estes onde dados original, pois não a o são rotina connect utiliza essas informações para completar a conexão com o servidor. As rotinas implementadas respectivamente o nome I1Pegasus1le um estrutura, simplesmente para ponteiro devolvem para uma manter a compatibilidade a nível do código original do módulo XConnDis.~ O módulo da biblioteca X responsável por fornecer rotinas para servidor a troca como é, X1ibInt.c. de foi Estas as mensagens entre o cliente e o mencionado rotinas anteriormente, utilizam basicamente o duas chamadas ao sistema Unix 4.3 BSD, a readv e a writev, para implementar a comunicação do cliente com o servidor. A função destas duas chamadas ao sistema é, dentro do contexto da comunicação do cliente com o servidor, receber e transmitir mensagens. Para recebem como parâmetro o executar descritor esta tarefa obtido durante conexão do cliente com o servidor. Este descritor o elas a permite acesso, através do sistema operacional, ao canal criado para a comunicação. recebidas são E importante lembrar que as mensagens e enviadas através das chamadas readv e writev, totalmente implementado no transparentes canal de quanto ao comunicação. Cabe ao sistema, através do descritor recebido, identificar utilizado os e tratar protocolo bytes que o protocolo fluem na comunicação cliente-servidor de acordo com este protocolo. O sistema operacional Plurix não possui readv e writev colocá-las na sendo biblioteca necessário C do as chamadas implementá-las Plurix. Estas e rotinas realizam a mesma ação das chamadas read e write existentes no Plurix. A diferença é que a rea e a write recebem como parâmetros, além do descritor mencionado, um ponteiro para um buffer e o número de bytes que devem ser lidos ou escritos neste buffer, enquanto a readv e a writev recebem -50- um vetor de estruturas cujos membros são buffers para ou escrever baseada na [8]. ler A implementação da readv e da writev foi utilização fornecidas pelo Plurix. das duas chamadas similares editor-ligador rotinas de internas distintos da módulos objeto definidas biblioteca X e do Plurix. utilizadas original, identificadores diferenciados a Algumas em têm módulos os seus partir do décimo quarto caractere. Na criação dos programas-objeto destes módulos, são gerados pelo montador identificadores essas rotinas. Isto ocorre, pois o idênticos editor-ligador de programas-objeto do Plurix resolve referências a globais com identificadores de, no caracteres. Certamente o editor-ligador do trabalha com para símbolos máximo, Unix treze 4.3 BSD identificadores de, pelo menos, trinta e um caracteres. O padrão ANSI da linguagem C recomenda que mínimo de caracteres similares, porém com o número considerados em identificadores de diferenças nos treze primeiros caracteres. Essas definições foram inseridas em um arquivo de inclusão utilizado por todos os módulos que compõem a biblioteca X. Foi necessário resolver também uma incompatibilidade provisória entre o código da linguagem C apresentado nos módulos da biblioteca X original e o código analisado pelo compilador do Plurix. No início deste trabalho, não sido havia ainda implementado no compilador a geração de código para atribuições feitas mudar todas as entre atribuições estruturas. ~ecessitou-se de estruturas existentes no código original, por chamadas a rotina do sistema cópia para a física das regiões de memória onde estavam situadas as estruturas em questão. Somente algum implantada a biblioteca X tempo depois de no Plurix é que o compilador passou a aceitar este tipo de atribuição. IV.2.2. Inclusão de Rotinas na Biblioteca C Além das chamadas ao necessárias para IV.1, sistema, mencionadas implementar a no item comunicação do cliente com o servidor, mais uma rotina foi implementada e incluída na biblioteca C do Plurix. Esta rotina, chamada ffs, é utilizada pelo módulo X0penDis.c da biblioteca X. Sua função é devolver o número de ordem do primeiro bit menos significativo, de uma máscara de bits, que está em 1 (um). Outras duas rotinas, a bcopy e a utilizadas por módulos bzero, também são da biblioteca X e não existem na biblioteca C do Plurix. Porém, elas podem ser substituídas pelas rotinas do Plurix memc y [17], que e memset respectivamente realizam funções idênticas. A substituição foi realizada fazendo-se definições para o pré-processador de troca dos identificadores dessas rotinas. Essas definições foram inseridas em um arquivo de inclusão utilizado por todos os módulos da biblioteca X. Implan ação dos Arquivos de IV.2.3. Diversos arquivos para a compilação dos pertenciam ao foram de ambiente - - inclusão módulos Plurix. ( " * . h v v ) necessários da biblioteca Alguns destes X não arquivos fornecidos junto a biblioteca X e outros pertenciam ao ambiente do sistema Unix 4.3 BSD. Os arquivos implantados fornecidos nos pela respectivos X biblioteca diretórios em foram que são procurados pelos módulos da biblioteca que os incluem. arquivos Os pertencentes ao ambiente do sistema Unix tiveram que ser implementados a partir de suas definições obtidas em manuais deste sistema. Além dos arquivos de inclusão, implantar um arquivo fornecido junto a serve como base biblioteca do cliente correspondente percorrido, para a sistema X que com o Este arquivo é aberto pela rotina da biblioteca responsável pelo tratamento destes erros, para mensagem necessário de dados para a informação de eventuais erros ocorridos durante a comunicação servidor. foi de ao abertura arquivos é erro do ocorrido. arquivo, definido na enviar O a caminho árvore do a nível de código. Por isto, o arquivo deve ser colocado no diretório determinado pelo código da rotina. trabalho O de requisitados pelos implantação de módulos da todos biblioteca os nos seus respectivos diretórios, é de fundamental importância para atender mínimo possível a biblioteca X implantada. Futuras versões desta biblioteca não a premissa de modificar o X arquivos necessitam de alterações já que encontram um ambiente no Plurix preparado para a biblioteca X. Incompatibilidades com os Utilitários do Plurix IV.2.4. Junto a biblioteca X original é fornecido um Makefile para a compatíveis com interpretado para make, implantação da biblioteca X em sistemas o por a arquivo Unix 4.3 Este BSD. arquivo é um utilitário deste sistema, denominado execução das tarefas necessárias na implantação da biblioteca. O formato do incompatibilidades arquivo com o ~ a k e f i l e fornecido formato dos possui arquivos tipo Makefile reconhecidos pelo utilitário make do Plurix [17]. Com isto, foi necessário analisar descritos no arquivo Makefile original os e procedimentos implementar um novo arquivo Make ile para o Plurix. Dentre os procedimentos descritos no arquivo Make original, existe um que utiliza o utilitário awk do Unix. -55Este utilitário não foi implementado no sistema Plurix. procedimento, o utilitário a w k recebe como entrada Neste uma rotina escrita em interpretada utilitário. para pelo modificar existente na um uma linguagem determinado biblioteca e própria para ser O a w k utiliza esta rotina arquivo gerar um de novo inclusão arquivo de inclusão com um formato pré-definido. Para utilizado implementação um outro do procedimento sistema possuia o utilitário a w k . Foi mudanças na rotina descrito foi computacional com Unix, que necessário recebida como fazer pequenas entrada pelo awk utilizado, pois também existiam incompatibilidades quanto a linguagem interpretada por este awk e a linguagem interpretada pelo a w k do sistema Unix 4.3 BSD. A l t e r a ç õ e s na B i b l i o t e c a IV.3. Mesmo sendo o trabalho de implantação da biblioteca X feito de forma a não alterar o código original dos módulos desta biblioteca, Essas alterações algumas mudanças foram realizadas foram tipicamente quando a biblioteca X utiliza recursos existentes no 4.3 BSD inevitáveis. sistema Unix que possuem similares no sistema Plurix, mas que funcionam de forma diferente. A grande chamadas ao maioria das sistema Unix mudanças concentrou-se nas que têm chamadas similares no sistema Plurix, porém são incompatíveis sob algum aspecto. A incompatibilidade divergência existiu em três casos básicos: quanto ao nome da chamada, quanto ao nome dos parâmetros passados para a chamada e quanto a forma da chamada retornar o seu resultado. Os dois primeiros casos foram resolvidos colocando-se em arquivos de inclusão utilizados por todos os módulos da biblioteca, definições para o pré-processador substituição dos identificadores utilizados no Unix de para aqueles utilizados no Plurix. No terceiro caso, foi inevitável fazer alterações no código das rotinas que utilizam a chamada ioctl que, por ser independente de implementação, é incompatível quanto a forma de retornar o seu resultado. No Unix 4.3 BSD implementado num VAX, esta chamada recebe como parâmetro o endereço da posição de resultado o de seu resultado atribuição do valor retornado endereço de onde deve retornar seu No Plurix, esta chamada retorna diretamente [8]. valor memória memória passado [17], a devendo variável como haver uma localizada no parâmetro na chamada i o c t l do Unix de Berkeley. Foi necessário também fazer alterações em arquivos de inclusão tipicamente concentrar todas existentes as na dependências utilizado dentro do universo dos Unix alterações biblioteca X quanto sistema ao compatíveis. para Essas ocorreram por causa das variações dos nomes de alguns arquivos públicos de inclusão no universo dos sistemas Unix compatíveis. IMPLEMENTAÇÃO DO TERMINAL X O desenvolvimento de um Terminal X divide-se em duas etapas: a implementação fornecer os de uma base de hardware para recursos necessários para o funcionamento do sistema X Window e a implementação do servidor do X sobre o hardware criado, gerenciando sistema os recursos de forma existentes e comunicando-se com os clientes. O hardware do Terminal X suportar a arquitetura foi definido a utilizada neste trabalho, para a implementação do terminal. A implementação, conforme foi definido no item 111.3, prevê a passagem do Terminal X por uma etapa intermediária, na qual o terminal se baseia na arquitetura alternativa, utilizando interface etapa final, serial. o terminal passa a ser implementado através da arquitetura tradicional, ligado diretamente a redes computadores. feita de A definição maneira arquitetura Na a sem a necessidade de do hardware do Terminal X foi permitir alternativa de para mudanças a evolução natural da a arquitetura tradicional, no trabalho implementado durante a etapa intermediária. A implementação do servidor X foi feita de acordo com as características da arquitetura utilizada para a -59- implementação do Terminal X. O servidor foi dividido em duas partes, de forma a permitir sua implementação sobre a arquitetura alternativa. Uma parte do servidor desenvolvida sobre o sistema operacional Plurix no foi executado computador Pegasus-32X. Esta parte, apesar de estar no Pegasus, possui dependências quanto as características do hardware Terminal X. A outra parte, executada sobre o do hardware do terminal, é responsável pela interação com o Sua função direta hardware gráfico e com os dispositivos de entrada. básica oferecidos pelo ligar é os recursos de hardware Terminal X a parte do servidor executada no Pegasus. O trabalho de implementação do servidor X foi realizado, analogamente ao desenvolvimento do hardware, de forma a permitir a passagem para a arquitetura tradicional sem a necessidade de redefinir o trabalho realizado. O protocolo utilizado para a comunicação das duas partes que se dividiu o servidor, foi implementado de forma que para se juntar essas duas partes, consiste basicamente na o eliminação trabalho necessário deste protocolo. As rotinas que necessitam de serviços gráficos passam ligadas em diretamente aos a ser procedimentos responsáveis pela execução dos serviços. V.1. Definição do Wardware do Terminal X A definição do hardware do Terminal X hardware das se baseou no estações de trabalho com recursos gráficos. velocidade de Com 38.4 Kbps. respeito a futura implementação do Terminal X na arquitetura tradicional, algumas foram realizadas. previsões de hardware Foi utilizado um circuito lltimerll para implementar as funções que necessitam de contagem de tempo no servidor X. Essas funções são supridas na alternativa, pelas fornecidas pelo rotinas de sistema operacional Plurix. A ficará no Terminal X relógio parte do arquitetura servidor X que nesta arquitetura não utilizará o "tirnerf1implementado . Foi feita uma previsão no hardware desenvolvido permitir a implementação de uma interface Ethernet. Esta interface não foi implementada, pois no item para 111.3 implementação não a seria conforme mencionado utilizada na primeira fase da comunicação através de rede. A implementação, por motivo de compatibilidade de circuitos, foi deixada para ser realizada quando existir um sistema computacional que utilize o Plurix e permita a conexão ao Terminal X através de interface Ethernet. Na parte gráfica conhecimentos mais eletrônicos do Terminal X, foram colocados os recentes existentes para a respeito de circuitos a exibição de imagens em monitores através de varredura. A resolução escolhida de 1280 por 1024 pixels a serem exibidos na tela do monitor. Definiu-se ainda, que seria utilizada uma de foi conversão de cores (lllook-up tableI1) com 256 tabela posições. Isto significa que a memória de imagem deve ter no mínimo oito planos de 1280x1024 bits. Na implementação, a memória de imagem teve oito planos de 2048x1024 bits. O número de planos da memória de imagem é definido como sendo sua profundidade e representa, através da utilização da tabela de cores, o número máximo de variações de cores que um determinado pixel da tela pode ter. Para controlar a exibição no monitor das armazenadas na memória de imagem, foi informações utilizado processador gráfico comercial, o ACRTC HD63484 da um Hitachi [19]. Este processador não só rèaliza a tarefa de exibição como capaz é de executar diversas primitivas gráficas a partir de comandos retas, círculos, recebidos. elipses, Pode-se áreas, traçar polígonos pontos, e desenhar padrões através da passagem dos respectivos comandos junto com os parâmetros diretamente usadas presentes em utilização desejados pelo todos de um os sistema processador também funções são X ~ i n d o we devem estar X servidores procedimentos não só diminui o Estas [19]. implementados. para tempo de executar execução, A estes como irá diminuir o fluxo de informações passadas entre o Pegasus e o Terminal X. Conforme foi mencionado, a tabela para cores deve possuir informação digital do informação é conversão de 256 entradas. Na sua saída, tem-se a código dividida em da três cor selecionada. Esta grupos R, G e B (llredll, llgreenll e llbluell). Foi determinado que se teria oito bits de informação para cada um destes grupos. Isto nos dá a possibilidade de escolher 256 cores em um universo de 16 Mega (1024x1024) cores. informação que A sai da tabela de cores deve ser convertida na informação analógica da intensidade com devem tela ser do llacesosll os fósforos vermelho, verde e azul na monitor. Isto digitais-analógicos com nos leva oito a bits três de resolução desejada e de acordo com as monitores que conversores entrada. Para a características de comerciais, a frequência de conversão deve ser da ordem de 108 MHz. Para implementar a tabela de cores e foi utilizado o circuito integrado os conversores Bt458 da Brooktree [20]. Este circuito possui internamente uma cores que e três conversores desejadas. O Bt458 deve ser satisfazem alimentado tabela de as condições com um relógio (llclockll) com a freqüência de conversão acima mencionada. Foram utilizados circuitos integrados com tecnologia ECL para implementar esta função. ação do Servidor X O código do X Window, colocado em domínio público pelo MIT, fornece junto as demais partes do implementação sistema, uma de um servidor X. Esse servidor, denominado I1sampleserver" ou servidor modelo , é dependente da arquitetura do sistema computacional com recursos gráficos para a qual foi concebido. A finalidade desta implementação é ser usada como base para o desenvolvimento de novos servidores em sistemas com arquiteturas distintas A arquitetura do Terminal X difere da arquitetura para o qual o llsampleserverI1 foi desenvolvido em diversos ,pontos. Por exemplo, o Terminal X possui um processador dedicado capaz de traçar primitivas servidor modelo realiza gráficas enquanto o o cálculo destas primitivas por algoritmos de software e faz acesso diretamente a memória de imagem para traçá-las. Além disto, existem as diferenças sistema operacional. De forma similar a servidor modelo também foi com relação ao biblioteca quanto a comunicação incompatibilidades com o o desenvolvido para o sistema Unix 4.3 BSD. Os mesmos problemas mencionados no IV X, capítulo cliente-servidor ~lurix, aparecem no e as servidor modelo. Apesar das diferenças, pela complexidade que envolve as diversas funções que são executadas implementação modelo de servidor do servidor para servidor fornecido. o A pelo serem a Terminal X partiu do estrutura de como o X é subdividido foi mantida. As partes do código do servidor modelo foram analisadas quanto de servidor, utilizadas Aquelas nas no servidor uais foi detectada a a ser a viabilidade implementado. compatibilidade, foram e acesso aos arquivos necessários. Na camada DDX estão concentradas dependências do servidor modelo quanto as do hardware todas as características gráfico sobre o qual ele deve ser executado. Esta camada é responsável pela interação do servidor com o sistema operacional sobre o hardware na intenção de gráfico. É realizar importante lembrar, que o servidor modelo está preparado para interagir com operações diretamente a memória de imagem e isto é feito através do sistema operacional. A interface procedimentos para extensões define uma sistema X Window aceita feitas de forma realidade, a possibilidade de se criar extensões as suas funções básicas. Essas ser de padrões necessários para a implementação de novas funções no servidor modelo fornecido. Na o série extensões devem padronizada nas diversas implementações de servidores X. alterado poderá compatível com uma aplicação não ficar Sem isto, um desenvolvida para outro servidor, sem funções. A interface No é novas especificada por [22]. servidor implementado para o Terminal X, a camada DIX foi implantada no Plurix praticamente sem A as para extensões no servidor modelo, fornecido junto ao sistema X Window, FISHER utilizar servidor camada OS, foi modificada de forma arquitetura do Terminal X e para ficar a alterações. atender a compatível com o Plurix. Na camada DDX foram feitas diversas modificações em relação ao código fornecido pelo servidor modelo. Neste trabalho não foi necessário realizar a implementação de extensões para as funções básicas oferecidas pelo servidor modelo. Implantação da Camada DIX no Terminal X V.2.2. camada A DIX do servidor modelo foi implantada no código Terminal X para ser executada no ~egasus/Plurix. O das rotinas que compõem esta camada é praticamente independente do sistema operacional e do hardware gráfico. Somente as rotinas maPPoc, reaPPoc e já no mencionadas biblioteca camada C DIX do se para gerenciamento de memória, free, e as rotinas ffç, bcopy e bzero, item IV.2.2, sistema. resumiu a O são solicitadas a trabalho de implantação da problemas idênticos aos já mencionados no item IV.2. Problemas com relação aos compiladores do Plurix, já hav iam sido resolvidos durante a implantação da biblioteca X. O problema do editor-ligador similar ao ocorreu com que foi relação explicado a foi no atribuição resolvido de forma item IV.2.1. O mesmo de estruturas, não implementada, no início deste trabalho, pelo compilador C do Plurix. Este problema apareceu igualmente nas rotinas das camadas OS e DDX, sendo resolvido da mesma £orma. Com relação a incompatibilidade do utilitário make do Plurix e do Unix 4.3 BSD, um novo arquivo Makefile para compilar a camada DIX, teve de ser criado. O mesmo ocorreu para as camadas OS e DDX. A falta do novamente sentida durante a utilitário implantação da camada DIX. Dois arquivos pertencentes a esta camada, o initatoms.~, são Xat0m.h e o gerados a partir da passagem através do awk, do arquivo BuiltInAtoms Estes foi awk presente na mesma camada. dois arquivos estão relacionados com a definição de atoms e não devem ser editados livremente. Um atom para o sistema X Window numérico único que é corresponde a um identificador uma Ivstring1l de caracteres utilizada para identificação de, por exemplo, tipos de variáveis pertencentes ao sistema X. Mudanças nos atoms pré-definidos ou mesmo na ordem aparecem nos arquivos gerados pelo awk, forçar qual eles equivalente a uma nova versão I1minorl1para o servidor do sistema X. Por isso, existe a necessidade dos serem é na gerados linguagem por um procedimento interpretada pelo recorreu-se utilitário a outro awk para referidos arquivos utilitário sistema gerar fixo awk. escrito em Novamente computacional que possui o os arquivos Xat0m.h e initat0ms.c. Na camada DIX estão as principais rotinas do servidor X. Pode-se destacar a rotina para iniciar todo o ambiente que implementa controlado pelo servidor, o Ivdispatcher1l política lvround-robinllpara existentes, as rotinas que distribuir iniciam a as a tarefas execução das requisições feitas ao servidor e as rotinas responsáveis pelo gerenciamento de todos os As rotinas de desses módulos código compiladas as necessárias trabalho. Os compilação foi na realizada cada da da módulos a ter em média 3.000 linguagem C. A compilação de forma a só serem camada DIX, que estavam sendo instante detalhes destes deles escrito rotinas em oferecidos pelo da camada DIX estão agrupadas em módulos extensos, chegando vários linhas recursos da implementação metodologia serão deste utilizada para a descritos no próximo capítulo. Implementação da Camada OS no Terminal X V.2.3. A camada OS é a responsável pela interação servidor com o sistema operacional. Essa interação com o intuito do servidor se do dá realizar dois procedimentos básicos: a comunicação com os diversos clientes do sistema X Window e o acesso a arquivos existentes no sistema com a finalidade de obter informações contidas nestes O trabalho de implementação da camada OS fornecida pelo servidor modelo, consiste na modificação e rotinas adaptação das que interagem com o Unix 4.3 BSD para a interação com o Plurix e com a arquitetura definida para o X. .A arquivos. Cornunicagão com os Clientes o Sistema X Terminal -70- Nos módulos connection.~,io.c e WaitF0r.c da camada OS do servidor modelo, estão concentradas todas as rotinas utilizadas para fazer a conexão com novos clientes e, vez feita a conexão, realizar uma a comunicação com esses clientes. O servidor modelo está preparado para realizar a conexão com novos clientes através do protocolo TCP/IP. Os demais protocolos, mencionados no capítulo anterior, não estão implementados no servidor fornecido. Assim sendo, o servidor modelo chama rotinas do sistema Unix 4.3 BSD que utilizam o protocolo citado, para realizar a conexão. Como na primeira etapa da implementação do Terminal X não foi utilizado o alterar todas rotinas que utilizam essas chamadas ao as protocolo sistema para adaptá-las arquitetura, conforme a TCP/IP, arquitetura foi utilizada. de duas Essa foi definido no capítulo anterior, determina que o servidor irá se comunicar com através necessário interfaces seriais o cliente, do Pegasus interligadas. A adaptação do X Terminal foi características e servidor modelo feita a de forma funcionalidade arquitetura a a da preservar do as implementação utilizando o protocolo TCP/IP. Com isto, a passagem para a segunda etapa utilizado o rapidamente. prevista protocolo Para neste TCP/IP, atingir trabalho, na será qual realizada será mais este objetivo, foi necessário entender como é feita a implementação utilizando o TCP/IP, para depois fazer a adaptação arquitetura utilizando a linhas seriais. Na inicialização do servidor chamada pertencente CreateWellKnownSockets, connection.~, que é a rotina ao modulo cria uma porta dentro do protocolo TCP denominada well-known port. Esta porta terá um número fixo para todas as implementações de redes TCP/IP. servidores Window X Quando um cliente deseja iniciar a conexão com um servidor, deverá enviar o pedido de conexão para endereço do IP Os o sistema na rede que executa o servidor e para a porta fixa dos servidores X TCP. em dentro do protocolo servidores X ficam sempre llescutandoll esta porta na espera de novas conexões. A partir recebido do momento que é o pedido de conexão, uma nova porta no protocolo TCP é criada. servidor, o Esta porta é que irá indicar, para o canal de comunicação estabelecido com o novo cliente. A partir deste instante, toda a comunicação com o novo cliente well-known port pedidos de descrita, , bind é feita desta nova porta e a permanece aberta para a llescutall de novos conexão. o através Para servidor realizar modelo toda utiliza a operação as chamadas e acce t do sistema Unix 4.3 BSD. Na implementação no Terminal X, a chamada socke substituída pela chamada open do Plurix. A chamada open é utilizada para abrir canais seriais I1ttyl1 em tanto para transmissão como para modo recepção, de forma similar ao que foi descrito para o cliente no item IV.l.l. Uma vez abertos os canais descritores para os llttyll, o canais servidor possui os de comunicação com os quais será feita a comunicação com os clientes. Desta forma, a well-known port é trocada pelos descritores dos canais por onde é feita a comunicação com os clientes. A chamada bind, que atribui o número fixo a porta TCP do servidor perdeu sua função nesta implementação. A X, chamada accept, que cria uma nova porta para a comunicação com o cliente que pediu conexão, foi trocada pela fcntl do Plurix. Esta chamada troca foi realizada somente para preservar as características do código do servidor modelo. Como a chamada accept cria um novo descritor para cliente, a chamada fcntl o novo foi utilizada para duplicar o descritor do canal seria1 já aberto, criando assim um novo descritor para o mesmo canal. A partir do momento esta operação realizada, a é comunicação com em que o novo cliente será feita através do novo descritor. O módulo io.c contém pela transmissão de as duas informações rotinas aos responsáveis clientes e pela recepção de requisições destes clientes. Estas rotinas, no servidor modelo, descritor do recebem canal de uma estrutura comunicação que possui o com o cliente. Esta funcionalidade foi preservada na implementação do servidor no Terminal X, através dos descritores dos canais criados para a comunicação seriais cliente-servidor. utilizadas, pelo servidor modelo, as chamadas ao São sistema read e writev, para implementar as funções de comunicação. A chamada read é idêntica no Plurix e a chamada writev já havia sido implementada no Plurix durante a implantação da biblioteca X. A rotina de do select, transmissão utiliza também canal o processo desejado, através chamada Unix 4.3 BSD, quando tenta escrever e o canal de comunicação está bloqueado pelo sistema. coloca a de Esta chamada em estado de espera pela liberação do durante um tempo máximo determinado parâmetro passado para a chamada. Com isto, o processo não ocupa o processador do sistema em um lrlooplr de espera pela liberação do canal. Esta chamada não possui similar no Plurix nem existem ainda mecanismos permitam sua simulação. A solução adotada processo servidor em um llloopllfinito liberação do canal desejado, tornando menos eficiente sob o foi ponto de esta vista que colocar o de espera pela implementação de ocupação do processador do sistema. O módulo WaitF0r.c WaitForSomething. possui uma Única rotina, a Esta rotina é chamada pelo lldispatcherll esperando que exista da camada DIX para realizar um llloopll algum cliente pedindo conexão, ou existente de entrada envie seja que algum cliente já uma requisição, ou que algum dispositivo ativado. Novamente é utilizada, pelo servidor modelo, a chamada ao sistema select para realizar a espera por um determinado tempo, sem processador do sistema. Neste caso, a chamada utilizar selec o substituída pela chamada do Plurix passando um ioctl parâmetro para saber se existem informações nos canais comunicação com os clientes ou no canal que implementação, de forma menos eficiente, pois espera sendo o semelhante processo executado pelo recebe X. sinalizações de entrada provenientes do Terminal de Esta ao caso anterior, é ficará em processador llloopllde do sistema Pegasus. No módulo WaitF0r.c existe ainda a utilização lltimerll do sistema para contar a um o tempo desde a última ativação de um dispositivo de entrada. com de Isto realizado é intenção de preservar o fósforo da tela do monitor servidor X. Quando o servidor não for conectado ao utilizado durante um período de tempo determinado, a tela é apagada. Ela só é acesa novamente caso seja feita alguma sinalização de entrada. A chamada ao l1tirnerl1e a estrutura que contém sistemas a informação Unix 4.3 BSD de e tempo Plurix. são diferentes Modificações nos foram realizadas de forma a compatibilizar a função descrita com os recursos oferecidos pelo Plurix. . Acesso aos Arquivos Utilizados pelo Servidor X O servidor X Window modelo interage com o sistema operacional para ter acesso a três tipos de informações: a uma base de dados sobre cores, a uma lista dos sistemas computacionais que podem fazer conexão com o servidor e aos arquivos que contêm as fontes de caracteres utilizadas A partir do momento biblioteca libdbm no dados, em que Plurix, pôde-se foi implantada gerar a base a de no diretório que o servidor X a procura. Esta base é gerada a partir de um arquivo de dados que contém o nome de várias cores e seus respectivos níveis RGB (vvredlv, Ivgreenvv e Ilbl~e~~). Este arquivo é fornecido juntamente com o sistema X Window. foram alteradas as Depois chamadas de gerada a base de dados, as rotinas da biblioteca feitas pelos módulos 0sinit.c e oscolor.~,para a libdbm, passagem de ponteiros como parâmetros no lugar de estruturas. O módulo primeira fase executados access.~é o responsável pela interação do da também implementação do no Pegasus, a Terminal lista sistemas habilitados a conexão não foi dos X, sendo nomes dos construida. Assim sendo, o procedimento de considerado e as rotinas utilizadas na consulta não foi inicialmente do módulo implementação do access.~ não servidor X foram realizada durante a primeira etapa deste trabalho. Os módulos fi1eio.c e fi1enames.c são utilizados para o acesso, através do sistema operacional, aos arquivos que contêm as fontes de caracteres utilizadas pelo servidor X. Estes módulos utilizam as chamadas ao sistema open, read e c l o s e que são idênticas no Poucas mudanças foram Unix 4.3 necessárias BSD e no Plurix. para a implantação destes módulos. O último módulo pertencente a camada OS é o Este módulo uti1s.c. possui rotinas utilitárias responsáveis pela colocação de mensagens de erro, pelo processamento da linha de comando de chamada ao servidor, pela impressão do "helptt do servidor e pelos procedimentos de interrupção e reinício do servidor. Esse módulo também foi implantado sem a necessidade de se realizar mudanças significativas. Irnplernentação da Camada DDX no Terminal X V.2.4. Na camada DDX estão todas as rotinas responsáveis pela interação do servidor X Window com exibição gráfica e com O teclado e o llmousell. consiste normalmente dois são hardware dispositivos hardware de memória de imagem, onde os o para para de entrada, o exibição gráfica dispositivos básicos: desenhadas as imagens a que aparecerão cores, na tela do monitor, e a tabela de conversão de onde armazenada feita é na a transformação da informação memória de imagem para o código digital da cor correspondente. O servidor modelo fornecido junto ao sistema X Window interage, utilizando as rotinas dispositivos gráficos operacional. São e de utilizadas e open, close, read da camada DDX, com os entrada, através do sistema as chamadas ao sistema para fazer o acesso a cada um write deste dispositivos independentemente. Na implementação do servidor do Terminal X isto ocorreu de forma distinta. As rotinas da camada DDX, utilizando as mesmas chamadas ao sistema, fazem o acesso a todos esses dispositivos através de um único canal de comunicação serial I1ttyr1 que liga o Pegasus ao Terminal X. Além disto, essas comunicam diretamente com Terminal X possui um a memória processador rotinas não se de imagem, pois o gráfico dedicado ao Pegasus ao controle desta memória. Através Terminal X, da linha serial as rotinas que enviam liga o requisições, para o processador gráfico e para programação da tabela de cores, e lêem as sinalizações de entrada, provenientes do teclado e do llmousell. No Terminal X, o processador MC68000 executa o programa responsável pela comunicação com o Pegasus. Esta programa recebe as requisições, faz o processamento necessário e se comunica com o processador gráfico HD63484 ou com o Bt458 para realizar a função requisitada. Em -79- relação ao teclado e ao wmouse~l, o mesmo programa verifica o estado destes mensagens dispositivos, sinalizando a enviando para ocorrência de o Pegasus ações nos respectivos dispositivos. mecanismo O utilização do diferenças entre de comunicação processador a com gráfico arquitetura o hardware são para e a as principais a qual foi implementado o servidor modelo e a arquitetura do Terminal X. Mesmo tarefas assim, devido a quantidade e a complexidade das realizadas pela implementação desta camada camada DDX, o trabalho no Terminal X foi baseado na camada DDX do servidor modelo e dividido em Na primeira de duas etapas. etapa, as rotinas que compõem esta camada no servidor modelo, adaptadas ou foram analisadas reescritas para diferenças existentes entre as e, posteriormente, o Terminal X, conforme as duas arquiteturas. Nesta etapa, procurou-se otimizar o tempo necessário para que se tivesse uma implementação do Terminal X funcionando. Na segunda etapa, será feita uma otimização no desempenho do Terminal as XI aproveitando-se funcionalidades oferecidos HD63484. Esta divisão [ll] como estratégia modelo deste sobre processador a implementação do sistemas gráficos, trabalho, devido todas gráfico proposta ainda por ANGEBRANNDT é para outros pelo melhor a utilização servidor o que é o caso do processador gráfico. A camada DDX do servidor modelo é subdividida em -80- cinco outras subcamadas: - MI ("Machine IndependentI1); - CFB (I1ColorFrame Buffer1I); - MFB (llMonochrome Frame Bufferw); - SNF (I1ServerNatural FormatI1); - Interface com hardware. Para descrever a função de cada uma dessas subcamadas é necessário definir alguns conceitos e termos associados ao sistema X Window e em fornecido. A partir disto, particular, será ao servidor modelo possível explicar essas subcamadas foram implementadas no Terminal X. . Termos e Conceitos Associados ao Sistema X como -81- denominado lltilell ou ladrilho e outro denominado I1stipplel1 ou pontilhado. Um I1tilef1 é um padrão onde os pontos podem ter várias O número de cores que cada ponto de um lltilell pode cores. ter é determinado pela sistema. No profundidade Terminal X, corresponde a um byte, pois cada a dos lldrawablesll do ponto memória de de um lltile'l imagem, onde estão as janelas, possui profundidade igual a oito. é um padrão onde os pontos são binários, Um tlstipplell OU um. seja, um I1stipplel1é um lltilell com profundidade igual a O ponto utilizada uma que possuir o bit em I1lf1 significa que será determinada cor, I1foreground colortl (cor de desenhar). "stipple1I que possuir o bit em utilizada a normalmente O denominada ponto 11011identifica I1background colorfl (cor de llstipplell seja opaco ou haverá ausência de de um que será fundo) caso o cor no caso contrário. . Funcionamento da Camada DDX no Servidor Modelo Umas das funções da interface de software para virtual. camada um DDX é dispositivo fornecer de hardware Este dispositivo deve fornecer um conjunto de 16 primitivas de desenho que permitem a execução de todas operações gráficas, definidas no sistema X, as sobre as Essas primitivas incluem cópia janelas e os llpixmapsll. imagens, uma de preenchimento de polígonos e arcos, e desenho de pontos, linhas, retângulos, arcos definir também, para largura das linhas preenchimento. textos. Pode-se as primitivas onde é pertinente, a e Alem e o estilo destas sistema X, outras primitivas ou primitivas gráficas padrão para definidas pelo devem existir na camada DDX para uso interno do servidor, como por exemplo, o preenchimento de áreas utilizado na criação das janelas. A função da subcamada MI (I1MachineIndependent"), pertencente a camada DDX do servidor uma simulação por software do modelo, Pixblit. independente do A hardware idéia fornecer dispositivo de hardware virtual, construído a partir de primitivas denominadas é desta gráfico mais simples, subcamada sobre o qual é ser serão aplicadas as primitivas gráficas oferecidas pelo servidor. Desta forma, esta subcamada pode ser transportada para diferentes sistemas, deixando o trabalho de características do hardware para adaptação as as subcamadas de mais baixo nível que implementam as primitivas Pixblit. As subcamadas ("Monochrome Frame CFB ("Colar Frame BufferI1) implementam respectivamente as fornecem Buffer1I) e MFB as que primitivas rotinas Pixblit sobre "dra~ables~~ com diversas cores (profundidade maior que um) e com duas cores (profundidade igual a um). As rotinas destas subcamadas devem ser adaptadas do hardware dos as características diferentes sistemas para os quais sejam transportadas. Além das primitivas Pixblit, as CFB subcamadas e MFB devem fornecer as demais primitivas gráficas de uso interno do alterar a servidor tabela de e as cores, rotinas para iniciar e caso ela exista no sistema implementado. É são importante notar que as rotinas necessárias mesmo que da subcamada MFB o sistema, sobre o qual está sendo implementado o servidor X, tenha a memória de imagem com profundidade maior que um. Isto sistema X se explica, pois o de profundidade igual a trabalha com llpixmapsll um para a criação l1pixmapsW são de padrões do tipo l~drawables", qualquer I1stipplel1. Como primitiva pode ser aplicada a eles. A subcamada SNF (ssServer Natural FormatVs) contém rotinas para caracteres no tratamento formato SNF. as com arquivos de fontes de 0s arquivos de fontes de caracteres são obtidos neste formato através da compilação das fontes de caracteres formato BDF (uma pequena fornecidas variação do pelo sistema X no Adobe 2.1 Bitmap Distribution Format da Adobe Systems, Inc.). O compilador de fontes de caracteres servidor modelo. Uma é vez fornecido juntamente compilados, os do servidor e as o arquivos das fontes são abertos pelas rotinas já mencionadas da OS com fontes necessitadas camada são obtidas através das rotinas da subcamada SNF. A ultima subcamada da camada DDX é a responsável pela interface com o hardware gráfico, com a tabela com de cores, Esta subcamada no servidor o teclado e com o llmousell. modelo é que chama as rotinas do sistema operacional abrir, ler, escrever e fechar estes para dispositivos. servidor modelo fornece diversos exemplos dessa O interface para sistemas estrangeiros como SUN, IBM, DEC e outros. . Metodologia Utilizada na Implementação da Camada DDX Conforme descrito anteriormente a metodologia para implementação da camada DDX no Terminal X foi definida em duas etapas. Na primeira etapa o compromisso maior foi com simplicidade e, conseqüentemente, com o tempo para se colocar o Terminal X funcionando. Numa segunda etapa, são feitas as diversas otimizações e neste caso o compromisso maior é com o desempenho do sistema. ~ s s i msendo, na primeira etapa servidor X da implementação do no Terminal X, foram utilizadas as rotinas da subcamada MI. As rotinas da subcamada MFB também foram -85- As rotinas da subcamada CFB foram reescritas para interação a com I1drawables1Ide profundidade igual a oito, a profundidade da memória de imagem do Terminal X. As primitivas Pixblit foram escritas utilizando as primitivas fornecidas pelo processador gráfico do Terminal X. Foram criadas rotinas que replicam um lltilell por uma determinada área, rotinas para preenchimento de traçado de retas e pontos e para áreas. Essas rotinas enviam os comandos para execução das respectivas informações através da linha seria1 que comunica o Pegasus com o rotinas desta Terminal X. Algumas subcamada que são fornecidas pelo servidor modelo, tiveram que ser preservadas para a I1drawablest1 do tipo llpixmapsll. interação com -86- controle dos dispositivos exibição da memória de de hardware responsáveis pela imagem na tela do monitor do Terminal X. Na segunda etapa da implementação da camada DDX, as rotinas da subcamada MI, responsáveis pelas primitivas gráficas definidas pelo sistema X Window, serão reescritas para o aproveitamento integral das primitivas oferecidas pelo processador gráfico HD63484. Desta mais necessário, na será maior parte dos casos, a utilização das primitivas Pixblit, oferecidas para a interação forma, não pela subcamada CFB, TESTES E AVALIAÇÃO DA IMPLEMENTAÇÃO VI.l. Tes es Realizados 0s testes foram iniciados pelo hardware do Terminal X. Primeiramente, foi testada a parte do hardware geral, de uso ou seja, aquela que não é dedicada ao uso gráfico. O processador MC68000 foi colocado em funcionamento para executar um programa monitor, gravado em ROM, para teste e depuração dos demais circuitos. A partir deste monitor foi realizado o teste da memória de 1 Mbytes e das interfaces seriais. No monitor foi implementada uma rotina para programas para serem executados carregar na memória do sistema. Essa rotina foi desenvolvida de forma a carregar programas no formato interfaces executável, recebidos através seriais. Esses programas de eram Pegasus-32X e enviados através de uma de suas uma gerados das no interfaces seriais para o Terminal X. Por esse mecanismo, foi possível o desenvolvimento de um segundo programa monitor mais complexo. Esse programa foi criado com a finalidade de testar o hardware Através deste, pôde-se programar e gráfico. testar as diversas -88primitivas HD63484. gráficas Foi existentes testado o no gráfico controle do processador gráfico sobre a memória de imagem e a proveniente pelos desta processador memória utilização da informação conversores Foram feitos também os teste para o acesso a do Bt458. tabela de conversão de cores situada no Bt458. Finalmente, o monitor colorido foi ligado ao hardware do Terminal X e pôde-se visualizar as operações do processador gráfico sobre a memória de imagem. Uma vez testado todo o hardware do ~erminalX, passou-se para a implementação de um programa X sistema Window no Pegasus-32X. Para cliente isso, do foram utilizados quatro programas clientes cujos fontes escritos em linguagem C, são fornecidos juntamente com o sistema original. criado Esses com programas a Pegasus/Plurix. implantação Resolvidos incompatibilidade das pois os foram compilados no ambiente da os chamadas X biblioteca problemas ao sistema X no iniciais de operacional, aplicativos também são desenvolvidos para o Unix 4.3 BSD, obteve-se quatro programas clientes executáveis e que utilizam diversas chamadas as rotinas da biblioteca X. Esses servidor X aplicativos foram funcionando, para executados, ainda comunicação de uma linha serial. Nesse pedido, o cliente envia sua versão no sistema X natural o observação do protocolo X para pedido de conexão, transmitido através de de sem (no caso versão 11.2) e a ordem como é feito o acesso, no computador em que é -89- executado, aos dois bytes de uma palavra de bits 16 (acesso na ordem I1little-endien"ou I1big-endianV1) . Duas linhas de comunicação seria1 que não possuiam LOGIN foram interligadas no Pegasus e foi implementado Plurix para a abertura das linhas seriais não um estavam inicializando corretamente essas linhas em modo llrawll. Os bytes recebidos estavam sendo alterados pois eram tratados pelo sistema operacional cliente, quanto problema foi parâmetros tanto na transmissão pelo na recepção pelo programa de teste. Esse resolvido rapidamente passando-se os corretos para a abertura das linhas seriais em modo llrawll. A partir destes testes, passou-se para a implementação do servidor X no Pegasus. Essa implementação foi feita somente por os testados. partes, módulos Dentro do de sendo analisados servidor X cada módulo, que foram e compilados estavam sendo separadas as rotinas que não estavam sendo testadas, colocando-se elas entre comentários. Nas rotinas que estavam em teste, foram inseridos passagem llprintfll com por aquele o nome da rotina para indicar a ponto. Essa metodologia foi fundamental para o desenvolvimento do servidor X dentro do -90- ambiente Pegasus/Plurix e Terminal X, pois conforme já foi mencionado, diversos módulos do servidor X são extensos e cada um possui internamente um grande número de rotinas. Sem a utilização desta metodologia, diante da complexidade e da quantidade das funções executadas pelo servidor X, seria difícil localizar, em caso de erro, em qual rotina estava o problema. As primeiras rotinas compiladas foram as que iniciam o servidor X. Essas rotinas são responsáveis por as diversas parâmetros servidor estruturas utilizadas com as pelo características do atribuir servidor X os hardware que o irá controlar. Além disto, essas rotinas iniciam o hardware gráfico, preenchendo a tabela de cores com um determinado conteúdo, criando a janela raiz que ocupa toda a tela de exibição do monitor do Terminal X, colocando o cursor inicial na tela, monitorando o teclado e o e llmousell criando as cores iniciais para desenho (l1foregroundW)e fundo (I1backgroundn).Para implementação das iniciam rotinas que o hardware, foi necessário o teste da comunicação do Pegasus com o Terminal X e o teste do protocolo definido para requisição das operações a serem realizadas pelo Terminal X. Depois foram testadas as rotinas do servidor para leitura e escrita no canal de comunicação a seria1 estabelecido com o cliente. Foi iniciada a comunicação do cliente com o servidor, através da análise por parte do servidor do protocolo X para conexão enviado pelo cliente -91- e a resposta do servidor enviando características do hardware gráfico e dos recursos já criados. Esses exemplo, a janela raiz, a tabela de para os o cliente as identificadores recursos cores incluem, por inicial e as cores de lrforegroundlr e de llbackgroundll iniciais. Uma vez cliente e testada servidor, individualmente cada utilizadas desta e pelos estabelecida começaram uma quatro forma, testar a conexão entre o a ser testadas das requisições do protocolo X clientes mencionados. Pode-se a implementação de todas as funções desempenhadas pelo servidor X, juntamente com as operações realizadas pelo hardware do possível Pegasus testar com operações o Terminal X. Foi igualmente o protocolo criado para a comunicação do Terminal gráficas e X, enviando requisições para lendo sinalizações provenientes do " m o ~ s ee~do ~ teclado. Para a implementação das operações realizadas pelo Terminal X, foram utilizados como base os programas monitores construidos para teste do hardware do Terminal X. A utilização dos programas clientes fornecidos junto ao sistema X Window facilitou bastante A testes. operação diversas rotinas da deles serem desses biblioteca compilados e a realização dos programas, utilizando X, foi analisada executados. as antes Através da visualização dos resultados obtidos na tela do Terminal X, durante a observar execução tanto os desses programas erros existentes clientes, pôde-se como constatar a correta operação das rotinas do servidor X e VI.2. do Terminal Avaliação da Irnplementação Uma primeira avaliação da implementação realizada do Terminal X nos permite dizer que o objetivo principal alcançado. foi Pôde-se, em um período de tempo relativamente curto, dotar o sistema operacional Plurix de uma interface gráfica padrão, o sistema X Window. Numa podem análise ser mais profunda, sugeridas. a capítulo V, implementação Conforme primeira da algumas já otimização foi deve modificações mencionado no ser na feita camada DDX do servidor. A segunda etapa da implementação desta camada, descrita naquele pode ser considerada fundamental para capítulo, melhoria a do desempenho do servidor dentro do Terminal X implementado. Esta afirmação realizados com os foi comprovada quatro anterior. A execução das prejudicada pelo fato clientes tarefas através dos testes mencionados no item gráficas foi bastante de não se estar utilizando todo o potencial oferecido pelo processador gráfico. A utilização do processador gráficas de somente mais baixo para o nível, traçado primitivas tornou o servidor menos eficiente pois as primitivas de mais sendo implementadas por software. de alto nível estavam Além disto, rotinas para realizadas outras "clipping1I de por do áreas, software, em primitivas de mais partir funções, como alto instante utilizado para o realizar também em nível que traçado o exemplo as tiveram função da também que emulação por ser das A software. processador gráfico seja destas primitivas I1clippingl1 por o por pode-se intermédio do processador, pois esta é uma das funções que ele oferece. A pouca utilização do também o fluxo de desta pelos Pegasus linha mais o desempenho do gráfico Terminal X. Como a não é alta isto prejudicou ainda sistema demais motivos ao implementado. explicados, pode-se Por esse afirmar haverá uma melhora considerável no desempenho do X, aumentou informações na linha de comunicação seria1 que interliga o velocidade processador e que Terminal quando este passar pela segunda etapa da implementação da camada DDX do servidor X utilizado. Um outro fator a ser analisado é a ligação do cliente com o seriais servidor, implementada através duas linhas do Pegasus. A respeito deste mecanismo, foi feito um teste bastante conclusivo. No lugar de cliente de juntamente com se executar o o servidor no Pegasus, o cliente foi implementado em outro computador que utiliza o sistema operacional ~lurix.Esse computador, um adquirido pelo NCE/UFRJ EBC 32010, foi durante o desenvolvimento deste trabalho. O EBC 32010 é um supermicrocomputador baseado no microprocessador MC68010 e sua capacidade de processamento -94- é inferior a do Pegasus-32X. A execução do cliente no EBC 32010 permitiu a constatação que, na implementação realizada do ~erminalX, a velocidade da comunicação entre o cliente e o servidor não é relevante em relação ao desempenho do sistema. Pôde-se observar que a limitação do sistema está realmente na implementação do servidor. conclusão, foi utilizada uma seria1 Para das se chegar linhas de a esta comunicação do EBC 32010 para ligá-lo ao Pegasus. Os programas clientes, já mencionados no item anterior, foram implementados no EBC, depois de implantada a biblioteca X neste sistema, e o servidor X foi mantido no Pegasus. Como os dois processos passaram a ser sistemas executados em computacionais distintos, esperava-se um aumento na velocidade de visualização das requisições enviadas pelo cliente ao Terminal X. Porém, o que foi observado foi que o servidor executado no Pegasus não conseguia retirar, em tempo hábil, as requisições recebidas e o I1bufferl1do Plurix, executado no acumular Pegasus, não estas mensagens. Desta era suficiente para forma, depois de algum tempo de execução, o servidor perdia parte das mensagens enviadas pelo cliente interrompendo a execução deste. Só foi possível a execução dos aplicativos/clientes do sistema X no EBC 32010 e do através rotina XSync da biblioteca X. da utilização da servidor X no Pegasus, Esta rotina é utilizada para sincronizar o cliente com o -95- servidor, pois o servidor só irá atendê-la depois que executa todas as requisições já existentes. Ao atendê-la o servidor responde ao cliente e só então este continua sua execução. Este teste serviu não só para confirmar a necessidade de otimizações no servidor X, como também para comprovar uma das características do sistema ambiente distribuído, com sistema computacional arquitetura, que só e a do era X. Pôde-se execução na outro. segunda implementação do Terminal X, quando então ele ligado por meio de redes de utilização das linhas de biblioteca fase da ser alta velocidade a outros comunicação disto, teve-se a oportunidade de se testar da Esta poderá sistemas que utilizem o Plurix, pode ser simulada da um do cliente em um servidor em prevista criar através serial. Além a implantação X realizada no ambiente Pegasus/Plurix, em um outro computador distinto que também utiliza o Plurix. A avaliação final que se pode fazer da implementação realizada do Terminal X é que ela foi totalmente válida e a metodologia utilizada deficiências apareceram foi igualmente correta. As nos pontos onde foram previstas, mas foram totalmente compensadas pela possibilidade que se teve de rapidamente poder executar aplicações/clientes sistema X Window no sistema visualizar seus resultados no fato a Terminal X. continuação do Plurix Somente e este trabalho e ajuda inclusive, a indicar outras áreas do servidor que estejam já incentiva operacional do O trabalho implementação operacional explicado pois desenvolvido de uma Plurix. no oferece permitiu interface Esta gráfica a rápida no sistema interface, conforme já foi capítulo 11, é uma interface de baixo nível somente rotinas gráficas básicas para implementação de aplicações. Outras bibliotecas podem ser implementadas sobre a biblioteca básica já existente. Estas seu transporte facilitado, pois bibliotecas são teriam desenvolvidas utilizando as rotinas básicas padronizadas pelo sistema Window que foram implementadas no Dentre mais alto destacar a Toolkit, fornecida junto ao próprio X sistema X Window, a Motif, definida existentes, as bibliotecas de três: nível Plurix. X e pode-se desenvolvida pela Open Software Foudation, e a Looking Glass, oferecida pela Visix Software. Estas bibliotecas são utilizadas por fabricantes de sistemas computacionais gráficos diversos e existe atualmente uma disputa sobre qual delas se tornará padrão para o desenvolvimento dos aplicativos gráficos executados nesses sistemas computacionais. a serem -98- Estudos estão sendo feitos sobre cada uma das três bibliotecas mencionadas, enquanto aguarda-se de qual delas será a definição utilizada pela maioria dos sistemas gráficos. Pretende-se implantar a que for definida como padrão, sobre a biblioteca básica do sistema X Window. Com isto, os aplicativos já desenvolvidos para utilizarem esta interface gráfica de alto nível, podem ser transportados para o ambiente Plurix/Terminal X. Da mesma forma, pode-se desenvolver softwares aplicativos no Terminal X e transportá-los para outros sistemas distintos que possuam a mesma interface gráfica. Além da implantação de bibliotecas de mais alto nível sobre a interface gráfica implementada, atuação áreas trabalho, já como foram definidas otimização a do dentro comunicação utilizando o e a para a protocolo TCP/IP. Outras áreas podem ser citadas de forma a dotar o Terminal X de gráficos deste servidor implementação da interface Ethernet e das rotinas recursos de podem ser adotadas para a continuação do trabalho desenvolvido. Algumas próprio outras mais sofisticados e outros também para gerenciar os recursos já oferecidos pelo sistema X Window. Uma área interessante é (llPhigs+Extension o estudo definidas pela Organizationgl) para extensão PEX to XI1) que está sendo definida para o protocolo X Window. A interface Phigs+ é rotinas da o ISO um conjunto de (I1International Standards desenvolvimento de aplicações gráficas que fazem a exibição de imagens com a perspectiva -99- em três dimensões (3D). Esse conjunto de rotinas requer uma grande quantidade de destas imagens acelerador e comum é gráfico processamento para a a para definição a exibição de um hardware execução, de forma mais eficiente, das diversas tarefas associadas as rotinas para a exibição em 3D. A extensão PEX vem sendo definida pelo X, MIT para possibilitar a implantação, sobre o protocolo das rotinas Phigs+. Isto permitirá que o servidor X receba requisições para execução de funções 3D, podendo-se definir e implementar um hardware acelerador gráfico para ser controlado pelo servidor X. Além estudo desta de área, existe algoritmos gerenciadores de também a possibilidade do para janelas serem utilizados nos para o sistema X Window e para implementar algumas funções mais complexas definidas neste sistema. Estas funções armazenamento de outras imagens é procedimento alguma sobre as está exemplo, o imagens originais. Este definido para o sistema X Window, porém a área atualização da memória de imagem oculta se torna visível, é deixada a cargo do cliente que é dono exibida incluir, por imagens que são ocultas quando se exibe responsabilidade de quando podem contida. da janela ~eixar esta na qual tarefa a a área cargo do servidor X exige o estudo de um algoritmo para implementar esta função, pois a quantidade de memória, além da memória de imagem, necessária ocultas teoricamente, infinita pois o sistema X Window é, não limita o número para máximo o armazenamento de janelas que das áreas podem se -101- REFERÊNCIAS i11 BIBLIOGRAFICAS FALLER, N. et alii, "0 Projeto PEGASUS-32X/PLURIX", Anais do XVII Conqresso Nacional de Informática, Rio de Janeiro, Nov. 1984. 121 FALLER, N., ANIDO, M. L. e llTécnicasde Projeto Utilizadas Supermicrocomputador Operacional SALENBAUCH, na Construção PEGASUS-32X PLURIXI1, Anales de e do La P., do Sistema Convención Informática Latina. CIL 85, Barcelona, Abr. 1985. i31 FALLER, N. e multiprocessing SALENBAUCH, UNIX-like Proceedinqs o£ the Workstation Operatinq P., I1PLURIX: Operating Second IEEE System, A System1I Workshop on 29-36, PP Washington, Set. 1989. i41 SCHEIFLER, R.W. e GETTYS, J., "The X Window SystemI1,ACM Transactions on Graphics, vol. 5, no. 2, pp. 233-248, 1986. i51 WESTMORE, R.J., "A Window-Based Graphics Store ArchitectureV1, ACM Transactions on Frame Graphics, vol. 7, no. 4, pp. 233-248, 1988. 161 COMER, D. , Principies, I1Internetworkinq Protocols and with TCP/IP - Architecturerl, New [7I SCHEIFLER, R.W., GETTYS, J. e NEWMAN, R., ItXWindow - System C Librarv and Protocol Referencett. Bedford, Digital Press, 1st Edition, 1988. L81 4.3 BERKELEY SOFTWARE DISTRIBUTION, "UNIX Proqrammerts Manualtt, U.S.A, Berkeley University, 7th Edition, 1986. i91 POUNTAIN, D., IfTheX Window Sy~tern~~, BYTE, vol. 14, no. 1, pp. 353-360, 1989. [10] GETTYS, J., "Network Windowing Using the Systemtf, Dr. Dobb's X Window Journal, vol. 14, no. 3, pp. 42-53, 1989. [ll] ANGEBRANNDT, S. et alii, the X v11 Sample tfStrategies for Porting Server", X Window v11.2 System Manuals, Massachusetts Institute of Technology, 1988. [12] MANUEL, T., ItNow,Low-Cost Terminais Can Run Like Work Stationsu, Electronics, vol. 61, no. 18, pp. 45-46, 1988. [13] BALDWIN, H., ttWhy A11 The ~houting Over X terminal^?^^, Unix World, vol. 6, no. 10, supplement Unix Networking, pp. 75-80, 1989. -104Specif ication" , X W i n d oi~ v11.2 Svstem Manuals, Massachusetts Institute o£ Technology, 1988.