Você está na página 1de 8

Sistemas Operacionais - 2º Bimestre

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


filas de prontos

Prof: Henrique Buosi Monteiro Versão 1.0

Você também pode gostar