Prática de Implementação: Simulação do Escalonamento do Disco

Lesandro Ponciano ORCID iD

27 de dezembro de 2024 (última atualização)

Objetivos

São dois os objetivos gerais desta prática:

  1. Exercitar conhecimentos sobre os conceitos e os algoritmos de escalonamento de dispositivos de entrada e saída (in/out);
  2. Implementar mecanismos e políticas fundamentais para o funcionamento de sistemas operacionais, incluindo gerência da fila, escalonamento do disco e cálculo de métricas de interesse.

O que deve ser feito

Deve-se implementar a simulação de um sistema com escalonador de disco. As políticas FCFS, SSTF, SCAN, C-SCAN e C-LOOK devem ser implementadas. Também deve-se propor uma política inédita de escalonamento de disco (MY). A política MY não pode se valer de informações do futuro, não pode ser meramente aleatória, não pode requerer alterações no formato dos dados de entrada, não pode ser igual às políticas estudadas. Além disso, a política deve apresentar desempenho superior a pelo menos três das políticas vista em sala para um arquivo de entrada definido pelo estudante.

O programa principal desse projeto deve ler um arquivo de entrada, executar as políticas de escalonamento de disco e, com base nos resultados obtidos, gerar um arquivo de saída. O formato do arquivo de entrada e de saída está exemplificado abaixo.

Exemplo do formato do arquivo de entrada (in.txt)
        NumSectors=200
        NumTracks=50
        StartPosition=0
        R1=0,10,4,3
        R2=1,20,2,3
        R3=2,18,2,3
        R4=3,17,2,4
        R5=4,30,2,5
        R6=5,100,2,6
        R7=6,150,2,7
        ;
    
Exemplo do formato do arquivo de saída (out.txt)
        FCFS
        -AccessTime=??.??
        -WaitingTime=??.??
        SSTF
        -AccessTime=??.??
        -WaitingTime=??.??
        SCAN
        -AccessTime=??.??
        -WaitingTime=??.??
        C-SCAN
        -AccessTime=??.??
        -WaitingTime=??.??
        C-LOOK
        -AccessTime=??.??
        -WaitingTime=??.??
        MY
        -AccessTime=??.??
        -WaitingTime=??.??
    

No arquivo de entrada, uma requisição ao disco tem o formato “R1=A,B,C,D”, onde A é o tempo de chegada, B é o cilindro desejado, C é a trilha desejada e D é quantidade de dados. Como simplificação, considere seek time=B e transfer time=D. Latency time é dado pela quantidade de cilindros que precisarão ser superados até chegar ao cilindro desejado. Note que a quantidade e as características das requisições podem mudar dependendo dos dados de entrada. Também é importante frisar que os dados de seek time, latency time, transfer time são uma aproximação. Isso é uma simplificação para viabilizar a simulação, pois esses tempos também variam de uma máquina para outra, dependendo da velocidade do disco, etc. Conforme o exemplo, no arquivo de saída deve constar a média do tempo de acesso (accessTime) e do tempo de espera (waitingTime) para cada política de escalonamento.

Como tarefa de aquecimento, deve-se elaborar um arquivo de entrada e um de saída que possam ser usados para teste da implementação.

Material de Apoio