SISTEMAS OPERATIVOS DISTRIBUÍDOS

Mestrado em Informática,
1998/99 - 1 Semestre


Trabalho

O trabalho pretende familiarizar os alunos com o desenvolvimento de aplicações distribuidas usando o modelo cliente/servidor e com a tecnologia CORBA.

Pretende-se que os alunos concretizem e demonstrem um sistema "brinquedo" que ilustre a utilização de servidores cooperantes. O tema do trabalho é um sistema de reservas distribuído, com o qual interegem três entidades, a saber:

O sistema é constituído por três componentes, associados a cada uma das entidades atrás referidas: A existência do servidor local a cada agência permite que a interacção do cliente com o sistema seja "local" (pressupõe-se que existe um certa próximidade entre o cliente e a agência). Por outro lado, permite também às agências a venda de bilhetes mesmo durante partições na rede (em que o servidor central fica inacessível).

O servidor central serve também de coordenador das várias agências. Quando uma agência esgota a quota de bilhetes que lhe foi fornecida pelo servidor central, esta toma a iniciativa de requisitar uma redistribuição de bilhetes. O servidor central deve então contactar as diversas agências para aferir qual a disponibilidade de bilhetes e realizar uma nova distribuição. Quando o número de bilhetes é mínimo, o servidor central pode colocar os servidores de agência em modo "sem-cache", fazendo com que todos os pedidos sejam re-encaminhados directamente para o servidor.

Os clientes interagem exclusivamente com o servidor de uma dada agência. O programa cliente é o único que necessita de uma interface com o utilizador de modo a testar a funcionalidade da aplicação. Sugere-se que o cliente seja embebido numa "applet" e que possa ser executado num "browser". A configuração de servidor (número de bilhetes disponíveis) pode ser feita através de um simples ficheiro de configuração.

Os servidores devem poder ser lançados e terminados de modo ordeiro (isto é, a pedido do gestor e em pontos em que o sistema não fique incoerente). O estado dos mesmos deve ser mantido em disco para ser recuperado quando o servidor é relançado. Do ponto de vista da aplicação, o caso em que um servidor está em baixo deve ser tratado de modo semelhante a uma partição na rede. O servidor central deve redistribuir os bilhetes entre os servidores que estiverem activos.

Os alunos não devem preocupar-se com os aspectos de tolerância a faltas do sistema (isto é, falhas abruptas que ponham em causa a coerência do sistema). Para simplificar, assuma que só existe uma sala para venda, só uma classe de bilhetes e que não existem lugares marcados (todos os bilhetes são iguais).

Sugere-se que os alunos utilizem a plataforma ORBacus, de distribuição gratuita, para realizarem o seu trabalho. Este ORB suporta as linguagens de programação C++ e Java.

O trabalho deve ser acompanhado por um breve relatório, de estrutura semelhante à dos artigos apresentados nas aulas, cuja dimensão não deve exceder as 10 páginas.


Luís Rodrigues