Escalonamento no linux
O escalonamento dos processos no Linux se baseia na técnica de time sharing. Os processos concorrem entre si pelo uso da CPU.
Cada processo recebe uma prioridade e um quantum de tempo para ser executado. Qual deve ser o tamanho do quantum?
Existem dois tipos de prioridade: estática e dinâmica.
Introdução
O escalonador pode aumentar a prioridade de um processo que está esperando pela CPU há muito tempo para que ele possa ganhá-la mais rápido
O escalonador pode diminuir a prioridade de um processo que está utilizando a CPU há muito tempo para que ele possa ceder os recursos aos outros processos.
Processos
Os processos podem ser classificaos em CPU-bound e I/O-bound. Podem também ser classificados em processos interativos, processos batch e processos de tempo real. Os processos interativos têm maior prioridade. Processos em tempo real no Linux?
Processos
Os processos, em Linux, são preemptivos. Processos com maior prioridade interrompem processos com menor prioridade. O kernel do Linux não é preemptivo. Um processo só pode ser interrompido se estiver rodando no modo usuário.
Um processo interrompido não é um processo suspenso, já que seu estado permanece no estado “em execução”.
Chamadas de Sistema relacionadas ao Escalonador
nice()
setpriority()
getpriority()
Épocas
O tempo da CPU é dividido em épocas.
Para cada época, cada processo recebe um quantum de tempo calculado no início da época. Depois que os processos usam todo seu quantum de tempo, começa outra época.
Estruturas relacionadas ao escalonador
Descritor do processo
Dentro do descritor do processo, existem algumas estruturas de dados relacionadas ao escalonador: — need_resched — policy — rt_priority — priority — counter
Políticas de Escalonamento
FIFO
Round Robin
OTHER
Função schedule()
Quantum de tempo x processos filhos.
O escalonador é implementado pela função schedule(). Chamada