Baixe o app para aproveitar ainda mais
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; }
Compartilhar