Este repositório contém a implementação de diferentes políticas de escalonamento a fim de atender os critérios do trabalho proposto, cujo enunciado é
Para consolidar o aprendizado sobre os escalonadores, você deverá implementar algoritmos de escalonadores de tarefas (taks) estudos em aula. Os escalonadores são o Round-Robin (RR), Shortest-Job First (SJF) e Round-Robin com prioridade baseado em FIFO (RR_p_FIFO). Para essa implementação, são disponibilizados os seguintes arquivos:
- driver (.c) – implementa a função main(), a qual lê os arquivos com as informações das tasks de um arquivo de teste (fornecido), adiciona as tasks na lista (fila de aptos) e chama o escalonador.
- CPU (.c e .h) – esses arquivos implementam o monitor de execução, tendo como única funcionalidade exibir (via print) qual task está em execução no momento.
- list (.c e .h) - esses arquivos são responsáveis por implementar a estrutura de uma lista encadeada e as funções para inserção, deletar e percorrer a lista criada.
- task (.h) – esse arquivo é responsável por descrever a estrutura da task a ser manipulada pelo escalonador (onde as informações são armazenadas ao serem lidas do arquivo).
- scheduler (.h) – esse arquivo é responsável por implementar as funções de adicionar as task na lista (função add()) e realizar o escalonamento (schedule()). Esse é um arquivo base que deve ser usado para implementar todos os algoritmos pedidos. Esse arquivo deve ser o implementado por vocês. Você irá gerar as versões do algoritmo de escalonamento, RR, SJF e RR_p_FIFO, em projetos diferentes.
Para executar a política desejada, basta incluir o arquivo correspondente a ela no arquivo driver.c
e executar o comando make <policy>
. Os arquivos e comando correspondentes à cada política são os seguintes:
Policy | Arquivo | Comando make |
Binário gerado |
---|---|---|---|
Smallest-Job First | schedule_sjf.c |
make sjf |
bin/sjf |
Round Robin | schedule_rr.c |
make rr |
bin/rr |
Round Robin + Priority | schedule_rrp_fifo.c |
make priority_rr |
bin/priority_rr |
Após o build com o comando make
, o arquivo binário gerado poderá ser executado passando como parâmetro o nome do arquivo contento a lista de tasks desejada, por exemplo:
./bin/sjf sjf-schedule.txt