4. GERÊNCIA DE PROCESSADOR (Escalonamento de processos)
Para implementar o compartilhamento da CPU entre diversos processos, um sistema
operacional multiprogramável deve possuir um critério para determinar, entre os diversos processos no estado pronto, qual o próximo processo a executar.
Figura A- Estados de um processo em um Sistema Operacional
Esse procedimento de seleção é realizado por um importante componente do sistema operacional
denominado escalonador, e, por isso, recebe o nome de escalonamento de processos.
O escalonamento tem como principais objetivos:
• maximizar a utilização do processador • maximizar o número de processos completados por unidade de tempo • garantir que todos o processos recebam o processador • minimizar o tempo de resposta para o usuário Tipos de escalonamento: • não-preemptivo: processo que está executando não pode ser interrompido. Presente nos primeiros sistemas multiprogramáveis, onde predominava o processamento em batch. As políticas que implementam escalonamento não-preemptivo não são aplicáveis à sistemas de tempo compartilhado, pois em processos interativos é necessário um tempo de resposta ao usuário razoável. • preemptivo: o processador pode ser retirado do processo que está executando. Permite atenção imediata aos processos mais prioritários (tempo real), melhores tempos de resposta (tempo compartilhado), compartilhamento uniforme do processador.
4.1 Políticas de escalonamento não-preemptivas
4.1.1 Primeiro a chegar-primeiro a sair (first-in first-out ou Fifo) • O primeiro processo que chegar é o primeiro a ser selecionado para execução. • Os processos que passam para o estado pronto são colocados no final de uma fila. Quando chegarem ao seu início, serão selecionados para executarem. • Utilizado para processos bloqueados também. • Algoritmo de implementação bastante simples, utilizando uma única fila. • Ao receber o processador, o processo utiliza-o sem sofrer interrupções. • Processos pequenos esperam tanto quanto os grandes.
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura B- Implementação do escalonamento First in-first out
4.1.2 Menor-tarefa-primeiro (shortest-job-first ou shortest-job-next)
• Cada processo possui um tempo de uso do processador • É ativado o processo com menor tempo de processador • O processo não perde o processador para um processo de menor duração (não preemptivo) • Minimiza o tempo médio de espera de um conjunto de processo pois os processos menores são colocados à frente e terminam mais rápido • Processo pequenos tem espera média menor que os grandes • Dificuldade de se determinar antecipadamente o tempo de processador de cada processo. Na prática o tempo é estimado aproximadamente • Não considera outros tipos de seleção (prioridades) • Pode causar postergação indefinida quando um processo com elevado tempo de processamento não receber nunca o processador. • Processos grandes possuem espera média maior do que no FIFO
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura C- Implementação do escalonamento Shortest-Job-First
• Exercícios com as políticas de escalonamento não-preemptivas. Arquivo 4-ExNaoP.doc
4.2 Políticas de escalonamento preemptivas
4.2.1 Circular (round robin) • O primeiro processo na fila de prontos recebe o processador • Cada processo executa durante uma fatia de tempo (time-slice) • Se a fatia de tempo for excedida, o processo que estava executando é removido (preempção) e inserido, do mesmo modo que os processos que são desbloqueados e os recém criados, no final da fila pronto • O tratamento dispensado aos processos é o mesmo, indistintamente • O valor da fatia de tempo (entre 100 e 300 ms) é crucial: • pequeno: o tempo de troca de contexto torna-se significativo, gerando overhead • grande: aumenta o tempo de resposta dos processos no final da fila de prontos • Bastante adequado para sistemas de tempo compartilhado. Favorece processos pequenos, que terminam primeiro, sem penalizar os grandes • Simplicidade de implementação • Processos I/O bound não recebem tratamento diferenciado de modo a compensar o elevado tempo que passam bloqueados, competindo de forma igual com os outros pelo processador.
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura D- Implementação do escalonamento circular (Round robin)
4.2.2 Por prioridades
• A cada processo é atribuída uma prioridade • O processo com maior prioridade na fila de prontos receberá o processador • É possível fazer diferenciação entre os processos • Adaptabilidade (prioridades dinâmicas) • No caso de processos I/O-bound serem prioritários, não há prejuízo para os CPU-bound que podem executar enquanto os primeiros estão bloqueados • Pode causar postergação indefinida quando um processo com baixa prioridade de processamento não receber nunca o processador. Pode ser resolvido pela verificação do tempo de espera, seguida do aumento da prioridade dos processos há muito tempo esperando • A política de escalonamento por prioridades pode ser: • não-preemptiva: o processo libera espontaneamente o processador • preemptiva: o processo que está executando é interrompido pela chegada à fila de prontos de um processo de maior prioridade • As prioridades podem ser de: • atribuição estática: quando o processo tem uma prioridade fixa durante seu tempo de vida • atribuição dinâmica: quando a prioridade muda ao longo do tempo de vida do processo (todo processo ao sair do estado de bloqueado recebe um acréscimo à sua prioridade). Embora sejam mais complexos de implementar e geram overhead maior, o tempo de resposta compensa.
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura E- Implementação do escalonamento por prioridades
4.2.3 Múltiplas filas
• Prioridades são atribuídas à classes de processos (de acordo com o tipo de processamento), cada qual com sua própria fila de prontos com seu mecanismo de seleção • Processos das classes de maior prioridade recebem o processador • Os processos das classes de menor prioridade só receberão o processador se as filas de prontos das outras classes (de maior prioridade) estiverem vazias
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura F- Implementação do escalonamento por múltiplas filas
• Os processos devem ser previamente classificados para serem enviados à fila
correspondente. Isto é feito em função das características dos processos, como, por exemplo:
Figura G- Características dos processos consideradas na criação das múltiplas filas
4.2.3.1 Associação estática à fila de prontos
• Os mecanismos de seleção implementados podem ser circular (round robin) ou FIFO • Exige uma classificação prévia dos processos, os quais são direcionados para as suas respectivas filas • Uma vez associado à uma fila o processo sempre retorna à ela
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura H- Implementação do escalonamento de múltiplas filas com associação estática às
filas de
4.2.3.2 Associação dinâmica à fila de prontos
• Processos podem migrar entre as classes (adaptabilidade) de acordo com seu comportamento, identificado pelo sistema • O processo entra na fila de maior prioridade, a qual também possui a maior fatia de tempo • Se o processo perde o processador para um de uma fila de maior prioridade, permanece na mesma fila de prontos. Se perder por preempção, é direcionado para a fila seguinte, de menor prioridade • As filas de maior prioridade implementam políticas FIFO, enquanto que a de menor prioridade implementa um mecanismo circular (round robin) • Gera um overhead maior, porém, ainda assim, pode compensar a sua implementação
Prof: Henrique Buosi Monteiro Versão 1.0
Sistemas Operacionais - 2º Bimestre
Figura I- Implementação do escalonamento de múltiplas filas com associação dinâmica às