Sistemas de Computação I - Trabalho 1

Trabalho : Leitores e Escritores

Escreva um programa que modele o problema dos leitores e escritores, usando troca de mensagens (com pipes), utilizando a estrutura descrita a seguir.

A aplicação deve ser composta por n processos usuários da base de dados, que repetidamente solicitam leituras e escritas na base de dados, um processo servidor da base de dados, que recebe e responde essas solicitações, e m processos escravos do servidor, que efetivamente acessam a base.

O programa mestre deve abrir os canais de comunicação necessários, disparar todos os processos da aplicação, e em seguida passar a atuar como o servidor da base de dados.

obs: Idealmente n e m devem ser parâmetros na linha de comando que dispara a aplicação.

Cada processo escravo deve consistir de um loop, onde o processo aguarda um comando do mestre, realiza a operação solicitada, e envia os resultados para o mestre.

O servidor mestre é responsável pela arbitragem das operações (cada escravo simplesmente realiza a operação solicitada, sem nenhuma preocupação com sincronização). O servidor deve realizar essa arbitragem de forma que (a) uma escrita sempre ocorra em modo exclusivo; (b) várias leituras possam ocorrer simultaneamente, e (c) não ocorra starvation nem de leituras e nem de escritas.

A base de dados deve ser modelada por um arquivo, e cada entrada deve consistir de uma chave e uma cadeia de caracteres. Tentem ler e escrever essa cadeia com uma sequência de operações read e write (que não fazem bufferização) para leitura e escrita de apensa um caractere. Isso é para forçar a possibilidade de conflitos entre as operações.

obs: Recomendo que inicialmente vocês tentem disparar as operações sem sincronização nenhuma, pra construir um programa com uma estrutura mais simples e para ver o conflito ocorrendo. Aliás, lembro a importância de primeiro construir um programa mínimo, com um pipe e um fork, e depois ir incrementando este programa aos poucos! Escrever o programa inteiro e depois tentar depurá-lo vai levar vocês à loucura!!!

As chamadas necessárias para construção do programas estão documentadas no próprio sistema, via man, e em Stevens. Este livro está disponível para consulta na Biblioteca da Informática.

Data de entrega: 4/05

ATENÇÃO: Questões de Ordem

Last update: Thu Apr 22 11:48:36 EST 1999 by Noemi