Android
26/03/2010
O escalonador de processos escolhe qual processo vai para a CPU com o objetivo de: (1) manter justiça (processos semelhantes para serviços semelhantes), (2) equilíbrio (ocupar todas as partes do sistema) e (3) cumprir as políticas do sistema.
O escalonador linux é baseado em time-sharing. Seu scheduler realiza as seguintes sequências:
kernel work – o scheduler deve realizar uma série de rotinas especifícas do kernel; seleção de processo – o scheduler deve escolher o processo que irá rodar. troca de processos – o scheduler salva as condições que o processo atual apresenta (contexto específico do processo) e carrega o contexto do novo processo que irá rodar.
Com relação as prioridades para seleção do processo, o sistema separa em:
estática – exclusiva de processos em tempo real, neste caso a prioridade é definida pelo usuário e não é modificada pelo escalonador. Somente usuários com privilégios especiais no sistema podem definir processo de tempo real. dinâmica – aplicada aos demais, sendo sua prioridade calculada em função da prioridade base do processo e a quantidade de tempo que lhe resta para execução.
Os processos de prioridade estática recebem prioridade maior que os de dinâmica. E, os processos novos recebem a prioridade de seus pais.
Quanto a algoritmos de escalonamento, a opção default é a preemptiva. Como segunda opção, o Linux implementa duas políticas de escalonamento: FIFO e ROUND ROBIN.
E, por fim, as políticas de escalonamento são:
Policy – Pode haver duas políticas de escalonamento round-robin e first-in-first-out (FIFO).
Priority – A prioridade do processo é dada de acordo com o tempo que ele gastou para executar (em jiffies). Jiffies é uma variável que indica a quantidade de tempo que um processo pode ser executado, onde cada valor atribuído depende de cada máquina. Quanto maior o tempo em uma execução anterior, menor a prioridade do processo.
Real time priority – Esse recurso é usado para