Sistemas de Computação I - Trabalho 2

Alterações no Minix

O objetivo desse trabalho é que você entenda parcialmente o funcionamento interno do sistema operacional Minix, em especial no que diz respeito ao controle de processos. Para atingir esse objetivo, proponho algumas alterações ao funcionamento do sistema. O trabalho é dividido em duas partes. Na primeira, a alteração em si é bastante simples. A dificuldade na execução dessa parte está em dominar o procedimento de criação de uma nova chamada de sistema e de recompilação do sistema. Sugiro fortemente que a primeira parte seja concluída antes que se inicie a segunda...

Primeira Parte:

Crie uma função readyp() que retorne o número de processos na fila de prontos. Essa função deve ser implementada como uma chamada ao gerenciador de memória (MM), e o gerenciador de memória deve ser alterado para tratar essa nova mensagem.

Para enviar uma mensagem para o processo gerenciador de memória, utilize a função sendrec, definida em /usr/include/minix/lib.h.

Segunda Parte:

ATENÇÃO: Essa parte está sendo CANCELADA em 8/06!!

Crie uma chamada vfork() que seja quase igual a fork, exceto que não duplica a área de dados do processo. Isso significa que depois da execução de um vfork() teremos dois processos compartilhando a mesma área de dados globais.

A nova chamada será testada com um programa teste padrão, feito por mim. Assim, é importante que ela tenha a sintaxe exata

int vfork()
retornando 0 para o processo filho e o identificador do novo processo para o processo pai.

Terceira Parte:

ATENÇÃO: Essa parte passa a ser OBRIGATÓRIA!!!!

Crie chamadas para criação e manipulação de semáforos. A chamada sem() deve retornar um identificador de um novo semáforo, inicializado com valor 0. As chamadas p(int s) e v(int s) devem ter o funcionamento padrão de operações sobre semáforos.

A assinatura das chamadas de manipulação de semáforos deve ser:

int sem(void)

int p(int s)

int v(int s)
onde o retorno é 1 se a chamada foi concluída com sucesso e -1 caso contrário.

As chamadas serão testadas com um programa teste desenvolvido por mim. O programa teste assume que podem ser criados pelo menos 10 semáforos e que cada um pode ter até 10 processos bloqueados a sua espera.

Caso desejem, pode ser desenvolvida uma quarta chamada para liberar um semáforo. Essa chamada não será testada em meu programa teste.

Parte Opcional:

Opcionalmente, cada grupo pode desenvolver duas aplicações exemplo para as primitivas de semáforos criadas. Essas aplicações devem ter caráteristicas bem diferentes uma da outra. Devem poder ser executadas com ou sem o uso dos semáforos, sendo o restante do código bsolutamente idêntico nos dois casos, e a execução sem semáforos deve deixar claro o problema da concorrência.

Essa parte vale 1/2 ponto na média das provas. Serão levados em conta na avaliação dessas aplicações: o grau de interesse do problema retratado, a qualidade da solução com semáforos, a qualidade do código como um todo e a qualidade da documentação.

Data de entrega

primeira parte: 1/6 - apresentação

segunda parte: 17/6 *CANCELADA*

terceira parte: 22/6 - entrega de disquetes até 17:30

parte opcional: 24/6 - apresentação

ATENÇÃO: Questões de Ordem

Last update: Tue Jun 15 17:32:55 EST 1999 by Noemi