Sistemas Operacionais II/Sistemas Distribuídos
Projeto
Descrição do Projeto
Este projeto visa implementar um Sistema de Arquivos Distribuído (SAD) simples. O SAD é estruturado usando a arquitetura cliente/servidor. A técnica de Remote Procedure Call deve ser utilizada na implementação. As funções de acesso a arquivos devem ser idênticas àquelas oferecidas pelo sistema operacional UNIX, a saber:
Detalhes dessas funções podem ser obtidos de qualquer manual de programação UNIX. Para a rotina open, basta oferecer a funcionalidade do flag O_CREATE.
Normalmente, a funcionalidade do SAD seria oferecida pelo núcleo do sistema operacional, o que significa que as funções poderiam ser utilizadas com arquivos locais ou arquivos remotos. Entretanto, não estaremos implementando essas funções no núcleo do sistema UNIX mas como processos do usuário (user-level processes). Isto significa que teremos que alterar algumas coisas na especificação:
Depois de uma falha em qualquer uma das funções, a variável errno deve ser setada com o número correto de erro.
Três componentes devem ser desenvolvidos:
Pelo menos dois clientes deverão ser desenvolvidos. O primeiro serve de testador para verificar a completa funcionalidade do serviço. O segundo é um programa de cópia com a sintaxe:
rcp maquinaFonte:arquivoFonte maquinaDestino:arquivoDestino
Você tem plena liberdade de escolher os detalhes de implementação (servidor com ou sem estado, técnicas de bufferização, etc.) desde que implemente a especificação acima.
Desenvolvimento do Projeto
Sugere-se desenvolver o projeto em C ou C++. Java também pode ser utilizado. Caso C ou C++ seja escolhido, utilize o pacote RPC da Sun. Com Java, utilize RMI (Remote Procedure Invocation). O LABCOM poderá ser utilizado para este projeto, inclusive pelos alunos de graduação.
Etapas sugeridas para o desenvolvimento do projeto (usando C):
Varie o tamanho dos buffers utilizados nas RPCs do seu programa cliente nestes testes de desempenho.
Relatório de Projeto
Entregar o código fonte comentado de tudo (2 clientes, biblioteca cliente, servidor), além dos resultados das comparações de desempenho.
Avaliação
Para passar na disciplina, deve-se "passar" independentemente no projeto e nas provas.