Este projeto implementa o algoritmo de escalonamento baseado em loteria (Lottery Scheduler) no sistema operacional xv6-riscv, conforme descrito no livro Operating Systems: Three Easy Pieces (OSTEP).
O Lottery Scheduler é um algoritmo de escalonamento probabilístico que atribui tickets a cada processo. A probabilidade de um processo ser escolhido para execução é proporcional ao número de tickets que possui.
- Alteração do Scheduler: Modificação do escalonador para usar o algoritmo de loteria.
- Manutenção do Número Total de Tickets: Variável global para manter o número total de tickets distribuídos entre processos executáveis.
- Exclusão de Processos Dormindo: Processos em estado de sono (SLEEPING) não competem pelo tempo da CPU.
- Proteção com Spinlock: Acesso concorrente à variável total de tickets protegido por um spinlock.
- Campo de Tickets para Cada Processo: Cada processo possui um campo que armazena seu número de tickets.
- Contabilização de Tickets no Fork: Processos filhos herdam os tickets dos processos pais.
- Herdar Tickets no Exec: Processos mantêm seus tickets ao chamar
exec
. - Recuperação de Tickets no Exit: Recuperação de tickets quando um processo chama
exit
. - Geração de Número Aleatório no Scheduler: Modificação do scheduler para gerar um número aleatório e escolher o processo apropriado.
- Chamadas de Sistema (settickets e getpinfo): Implementação das chamadas de sistema para definir e obter informações sobre os tickets.
proc.h
: Definições de estruturas e protótipos de funções.proc.c
: Implementação das funções do escalonador e manipulação de processos.sysproc.c
: Implementação das novas chamadas de sistemasettickets
egetpinfo
.pstat.h
: Definição da estruturapstat
para armazenar informações de processos.