módulo CPU - INF

Propaganda
Sistemas Operacionais 2
Trabalho 1
Data da Entrega: 25/04/06
Parte I: Observações importantes
Entrega: O sistema OSP tem um mecanismo de submissão automática de
trabalhos que você deverá usar. No entanto, para evitar problemas de entrega
utilizem o seguinte procedimento:
1. Use o mecanismo eletrônico para submeter os seus programas e
execuções conforme descrito no livreto do OSP;
2. Verifique que o mecanismo gravou o seu trabalho adequadamente olhando
no diretório ~eduardo/cpu.intel/submissions/ para ver se os
arquivos foram gravados para você. Verifique as datas de criação dos
arquivos (comando ls -l) para ter certeza que o OSP os colocou em seu
diretório;
3. Submeta uma cópia em papel do código apenas (sem as listagens dos
testes) na data devida para documentar que você completou o trabalho e
facilitar a correção.
4. Em emergências extremas (por exemplo, impressora quebrada por um
período longo), você pode enviar e-mail para a conta OSP com a cópia do
seu programa (sem os testes), mas você ainda terá que entregar uma cópia
em papel do trabalho assim que possível.
Parte II: Problema de programação
Neste trabalho, você implementará diversos módulos de um sistema
operacional simplificado, e irá testá-lo usando o ambiente OSP. O módulo de OSP
que você implementará é CPU, o escalonador de processos
Antes de tentar fazer este trabalho, tenha certeza que você deu uma olhada
em todo manual do OSP, e estudou em detalhes as seções 1.1-1.4 (toda), e 1.7
(toda). A conta de aula (class account) referida no manual é ~eduardo ou
/home/ /osp.
O subdiretório para este trabalho é ~eduardo/cpu.intel. Para começar
o trabalho copie (para sua conta) os arquivos
~eduardo/cpu.intel/Makefile
~eduardo/cpu.intel/cpu.c
~eduardo/cpu.intel/dialog.c
Em cpu.c você terá que implementar escalonamento que seja uma mistura de
prioridade e round-robin. Ou seja, um processo será interrompido sempre que um
quantum de tempo expirar, mas a fila de pronto não será do tipo FIFO. Você terá
que usar um algoritmo de escalonamento com prioridade que leve em
consideração a idade do processo, custo de pré-paginação, tempo que o processo
está esperando desde o último uso da CPU, etc. Você deve manipular estas
prioridades para obter:
•
•
•
Melhor tempo de turnaround
Menor tempo de espera
Melhor uso da cpu
Submeta três execuções. Os parâmetros para a execução final estão em
~eduardo/cpu.intel/par.trace
~eduardo/cpu.intel/par.low
~eduardo/cpu.intel/par.high
O primeiro parâmetro produzirá uma simulação curta com o trace ligado. O
par.low testará seu programa com uma baixa freqüência de chegada de novos
processos; em par.high esta freqüência é alta.
Para comparar seus resultados com as estatísticas geradas pelo escalonador
padrão da cpu você pode examinar estes arquivos:
~eduardo/cpu.intel/estatistica.low
~eduardo/cpu.intel/estatistica.high
A rotina padrão do OSP faz uma espécie de escalonamento similar ao que está
sendo solicitado. Explique em não mais que uma página porque as suas
estatísticas são melhores ou piores que a padrão.
Como Submeter:
Inclua o seu nome e conta no programa fonte.
Anexe ao programa fonte uma explicação das suas estatísticas (1 página no
máximo)
Submeta as três execuções usando o script hand_in, ou seja, digite
~eduardo/cpu.intel/hand_in
E siga as instruções.
Sugestão:
Inicialmente implemente uma política Round Robin para se acostumar com o
sistema. Após, tente o algoritmo proposto.
Download