Skip to content

Trabalho desenvolvido na disciplina de Sistemas Operacionais do curso de Sistemas de Informação PUCRS

Notifications You must be signed in to change notification settings

lukzfreitas/Escalonador-Disco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

Escalonador-Disco

Trabalho desenvolvido na linguagem java da disciplina de Sistemas Operacionais do curso de Sistemas de Informação PUCRS.

Este trabalho tem como proposta simular os algoritmos escalonamento de disco tais como: FCFS (First Come First Served), SSTF (Shorest Seek Time First), SCAN, C-SCAN, LOOK e C-LOOK. A aplicação realiza o calculo da quantidade de movimentos que o cabeçote realiza para percorrer determinados cilindros do discos para cada algoritmo, estes cilindros são definidos neste arquivo. A primeira linha deste arquivo é informado o número total de cilindros do disco, na segunda linha o cilindro onde o cabeçote estará posicionado inicialmente e na terceira linha uma lista de números correspondentes aos cilindros onde o cabeçote irá percorrer.

Além da mostrar quantidade de movimentos que o cabeçote realiza para percorrer todos os cilidros, esta aplicação gera um gráfico com o trajeto que cabeçote realiza para percorrer todos os cilindros de cada algoritmo.

  • FCFS (First Come First Served)

    • O algoritmo FCFS (First-Come First Serve), tem como comportamento que o cabeçote passe pelos cilindros pela ordem do array; para isso foi necessário percorrer a partir do cabeçote inicial até o último elemento do array para gerar o gráfico e fazer a contagem total de movimentos do cabeçote baseado nesta sequência.
  • SSTF (Shortest Seek Time First)

    • O SSTF (Shortest Seek Time First) tem como objetivo, visitar os cilindros mais próximos de onde o cabeçote estiver no momento. Este algoritmo foi o mais complexo para ordenar a lista de cilindros visitados, para isso, foi necessário guardar em uma variável local a informação do cilindro que possui a menor diferença em relação ao cilindro que o cabeçote que estiver no momento, e comparar com os demais, após isso, adicioná-lo na próxima posição do array em ordem crescente.
  • SCAN

    • Para o algoritmo SCAN foi necessário ordenar a lista em duas partes, uma primeira lista com todos os cilindros menores que o cilindro inicial e uma segunda lista com todos maiores que serão visitados a partir do cilindro inicial. Após a lista com os menores valores que o cilindro inicial estiver preenchida ela é ordenada de forma decrescente e a lista com os maiores em ordem crescente. Depois de ordenadas as listas, a de maiores que o cilindro inicial é adicionada no final da lista de menores, com isso é possível calcular o número de movimentos do cabeçote e gerar o gráfico do escalonamento baseados na ordem desta lista ordenada.
  • C-SCAN

    • O C-SCAN implementa quase que da mesma forma que o SCAN, a diferença que o cabeçote vai até as posições zero e a posição máxima do número de cilindros, a lista de menores é adicionada no final da lista de maiores e o percurso do último cilindro do disco até o cilindro zero não é contabilizado no número de movimentos do cabeçote.
  • LOOK e C-LOOK

    • Os algoritmos LOOK e C-LOOK, ambos geram o mesmo gráfico, que também são iguais ao do SCAN, com a diferença que o cabeçote não vai até os extremos zero e número total de cilindros, entretanto vão até o final de cada extremidade do array de cilindros que serão visitados depois de ordenado. A única diferença entre o LOOK e CLOOK é que no segundo algoritmo o percurso do último cilindro da lista de maiores até o primeiro cilindro da lista de menores que o cilindro inicial não é contabilizado no número de movimentos do cabeçote.

Exemplos

Tela Inicial

TELA_INICIAL

Gráfico gerado do trajeto realizado pelo algoritmo FCFS

FCFS

Colaboradores

Camila Moser e Lucas Freitas.

About

Trabalho desenvolvido na disciplina de Sistemas Operacionais do curso de Sistemas de Informação PUCRS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages