Buscar

Trabalho Prático 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unidade II - Atividades Práticas com o MINIX 
 
Prof. Sílvio Fernandes Página 1 
 
Universidade Federal Rural do Semi Árido 
Departamento de Ciências Exatas e Naturais 
Ciência da Computação 
Sistemas Operacionais 
Prof. Sílvio Fernandes 
 
Unidade II – Atividades Práticas com o MINIX 
Todas as atividades aqui propostas devem ser realizadas utilizando o MINIX 
na versão 3.2.1 em grupo. O resultado de cada tarefa deve ser escrita em um 
relatório em um padrão de artigo no padrão da SBC. 
O trabalho vale 10 pontos na II Unidade. 
 
Data de entrega: 05/06/2015 
 
1. Modificar o quantum dos processos escalonados 
a) O núcleo do Minix normalmente utiliza 100 milissegundos como 
quantum para o algoritmo Round-Robin 
b) É proposta uma alteração do núcleo para que, toda vez que o usuário 
pressionar a tecla F6, o quantum seja acrescido em 30 milissegundos, e 
toda vez que for pressionada a tecla F7 o quantum seja decrescido em 
30 milissegundos. 
 
Dica 1: o gerenciamento dos processos é feito no servidor PM no 
diretório “/usr/src/servers/pm/”. 
Dica 2: a definição das teclas de função está nos arquivos “dump.c” e 
“dmp_kernel.c” no diretório “/usr/src/servers/is/”) 
 
2. Modifique o MINIX 3 para reunir estatísticas sobre as mensagens enviadas por quem e 
para quem, e escreva um programa para reunir e imprimir essas estatísticas de uma 
maneira útil. 
 
3. Mudar prioridade dos processos 
a) Criar uma nova chamada de sistema (setpriority) com parâmetros pid e 
priority, indicando explicitamente a prioridade do processo criado 
b) Para criar uma chamada de sistema primeiramente é necessário modificar a 
quantidade de chamada (NCALLS) em /usr/src/include/minix/callnr.h 
c) Definir no final da lista de chamadas sua nova chamada como o próximo 
número disponível (ex: #define SETPRIO 92) 
d) Adicionar o nome da sua chamada no vetor do arquivo 
/usr/src/servers/fs/table.c 
Unidade II - Atividades Práticas com o MINIX 
 
Prof. Sílvio Fernandes Página 2 
 
e) Adicionar o nome da sua chamada (com prefixo do_) na lista de funções do 
arquivo /usr/src/servers/pm/table.c (ex: do_setprio) 
f) Escrever a função (com mesmo nome incluído no item anterior) no arquivo 
/usr/src/servers/pm/misc.c 
g) Localize a seção correspondente a /* misc.c */ no arquivo 
/usr/src/servers/pm/proto.h e inclua o protótipo da sua função definida no 
item anterior 
h) Localize a seção correspondente a /* Function prototypes */ no arquivo 
/usr/src/include/unistd.h e inclua o protótipo da sua função 
i) Crie uma biblioteca para sua chamada em /usr/src/include com o nome da sua 
função (ex: setpriolib.h). Na sua biblioteca deve ter o seguinte cabeçalho 
#include <lib.h> 
#define setprio do_setprio 
#include <unistd.h> 
// escreva aqui sua função com modificador PUBLIC 
j) Depois de salvar tudo, recompile o kernel 
i. cd /usr/src/tools 
ii. make clean 
iii. make hdboot 
k) Reinicie 
l) Crie um programa que inclui sua biblioteca, e veja em qual fila estão por meio 
do dump 
 
#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include “setpriolib.h” 
int main(void){ 
 int i; 
 i = fork(); 
 if( i == 0){ 
 for(;;){ 
 printf(“Filho\n”); 
 } 
}else{ 
 setprio(i, 10); 
 for(;;){ 
 printf(“Pai\n”); 
} 
} 
return 0; 
}

Continue navegando