Trabalho 1 - Sistemas de Computação

Descrição

  1. Escreva uma biblioteca de rotinas de manipulação de semáforos com as funções descritas abaixo. Em cada caso, um retorno de -1 indica erro. Nesse caso, deve ser possível consultar a variável global errno para um diagnóstico do erro occorrido.

    Essa biblioteca deve ser programada como um arquivo C independente, semaf.c, com os nomes visíveis externamente declarados em um arquivo semaf.h.

    A implementação da biblioteca deve se basear nas funções semget, semop e similares, definidas pelo UNIX SV e disponíveis no Linux.

  2. Usando a biblioteca descrita no ítem anterior, escreva um programa que modele o problema dos leitores e escritores dado na seção 2.3.2 do livro texto. Cada grupo pode escolher uma estrutura própria para seu programa, mas uma forma é usar um processo inicial que cria semáforos e áreas de memória compartilhadas e depois cria l processos leitores e e processos escritores (onde l e e são parâmetros da execução do programa). Cada um desses leitores e escritores fica em um loop onde repetidamente "pensa" durante algum tempo e solicita a operação correspondente.

    A solução apresentada para o problema deve evitar starvation tanto de leitores como de escritores.

    Crie funções pre_ler, pos_ler, pre_escrever e pos_escrever, que encapsulem todos os acessos a semáforos. As funções pre_ler e pre_escrever só devem retornar quando a operação correspondente puder prosseguir.

    Para criar variáveis compartilhadas entre os diversos processos, utilize a função mmap.

    Deve ser possível acompanhar o que está acontecendo com os diversos processos através da saída na tela. Além do mais, o programa deve "estimular" as situações de competição entre os processos. Isso quer dizer que você deve forçar cada processo a passar um tempo razoável pensando e um tempo razoável lendo ou escrevendo.

Questões de Ordem

Observações e Sugestões

Last update: Fri Apr 14 11:16:53 EST 2000 by Noemi