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. Esse conhecimento será necessário para a segunda parte do trabalho, onde proponho uma alteração, mais complexa, de comportamento do escalonador. Sugiro fortemente que a primeira parte seja concluída antes que se inicie a segunda...

Primeira Parte:

Crie uma função getppid() que retorne o pid do progenitor (parent process) do processo corrente. 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.

Observe que existe uma forma de se obter a informação solicitada (pid do processo progenitor) através de uma chamada já existente, mas não é isso que estou pedindo. A função deve ser implementada como descrito.

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:

Altere o escalonamento do minix para incluir vários níveis de prioridade (por exemplo, três) de processos usuários. Ao ser criado, um novo processo deve sempre ter o nível mais alto de prioridade de usuário. Criar uma função

int nice(int prio)
que permita alterar a prioridade de um processo. O parâmetro prio indica o novo nível de prioridade. O retorno da função deve indicar se a operação foi efetuada com sucesso ou não. Em geral, só deve ser permitido a um processo diminuir seu nível de prioridade. Se o processo pertence ao super-usuário (root), ele pode também pedir para aumentar seu nível de prioridade.

Desenvolva uma aplicação exemplo, que demonstre todos os casos (sucesso e diferentes motivos de insucesso) da nova função. A aplicação também deve tornar clara a existência dos diversos níveis de prioridade (ou seja, deve ficar óbvio que alguns processos estão sendo preteridos em favor de outros).

Data de entrega: 02/06

ATENÇÃO: Questões de Ordem

Last update: Thu May 21 16:30:15 EST 1998 by Noemi