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.