====== Escalonamento de disco ====== Este projeto faz parte do [[PPOS-v2:start|PPOS v2]]. Este projeto tem por objetivo implementar diferentes políticas de escalonamento de acesso a um disco virtual. ===== O problema ===== A política de escalonamento dos acessos a discos rígidos tem um impacto importante no //throughput// de um sistema (número de bytes lidos ou escritos no disco por segundo). Algumas políticas bem conhecidas são: * //First Come, First Served// (FCFS): os pedidos são atendidos na ordem em que são gerados pelas tarefas; sua implementação é simples, mas não oferece um bom desempenho; * //Shortest Seek-Time First// (SSTF): os acessos a disco são ordenados conforme sua distância relativa: primeiro são atendidos os pedidos mais próximos à posição atual da cabeça de leitura do disco. * //Circular Scan// (CSCAN): os pedidos são atendidos sempre em ordem crescente de suas posições no disco; após tratar o pedido com a maior posição, a cabeça do disco retorna ao próximo pedido com a menor posição no disco. ===== A implementação ===== Este projeto usa como base o projeto de [[acesso ao disco]] desenvolvido anteriormente. Neste projeto você deve: * Implementar as políticas de escalonamento de disco FCFS, SSTF e CSCAN; * para cada política, implementar uma função separada que a implementa; * medir o número de blocos percorridos pela cabeça do disco em cada uma dessas três políticas; * medir o tempo total de execução para cada uma das três políticas. Use o código de teste e os conteúdos de disco do projeto de [[acesso ao disco]] para efetuar seus testes e medições. ===== Outras informações ===== * Duração estimada: 2 horas. * Dependências: * [[Tarefas cooperativas]] * [[Despachante de tarefas]] * [[Preempção por Tempo]] * [[Tarefas que esperam]] * [[Tarefas que dormem]] * [[Spinlocks e Semáforos]] * [[Acesso ao disco]]