Escalonamento de processos -...

21
Sistemas Operacionais [email protected] Escalonamento de processos Carlos Gustavo A. da Rocha

Transcript of Escalonamento de processos -...

Sistemas [email protected]

Escalonamento de processos

Carlos Gustavo A. da Rocha

Sistemas [email protected]

Escalonamento

● Nos computadores atuais frequentemente temos vários processos (threads) “competindo” por um pequeno número de CPUs● Nestes casos uma escolha deve ser feita de qual

processo será o próximo a executar● A parte do sistema operacional que realiza esta

escolha é chamada de escalonador (scheduler)● O algoritmo usado na escolha é chamado de

algoritmo de escalonamento (scheduling algorithm)

Sistemas [email protected]

Escalonamento

● Introdução● O escalonamento, e seus algoritmos, evoluíram

junto com a computação– De inexistentes a essenciais ao funcionamento do SO

● As CPUs (também) evoluíram e se tornaram extremamente rápidas– Diminui o problema do escalonamento, principalmente

em computadores pessoais

Sistemas [email protected]

Escalonamento

● Introdução● Um bom algoritmo de escalonamento deve ter duas

metas principais a alcançar– (1) Escolher o processo certo na hora certa

● Se um usuário inicia um compilador e um codificador de arquivos mp3 simultaneamente, a escolha de qual terá prioridade não é tão importante

● Contudo, se ao invés de um codificador, for iniciado um player de arquivos mp3, a situação muda

Sistemas [email protected]

Escalonamento

– (2) Utilizar de forma eficiente as CPUs● O escalonamento é um procedimento complexo,

envolvendo: alternar de modo usuário para núcleo; salvar o status do processo atual; salvar o mapa de memória do processo atual; selecionar um novo processo, executando o algoritmo de escalonamento; carregar o mapa de memória do novo processo; carregar o estado do novo processo; alternar de modo núcleo para usuário e reiniciar a execução

Realizar todo este procedimento um números exagerado de vezes irácomprometer boa parte das CPUs com o próprio escalonamento

Sistemas [email protected]

Escalonamento

● Comportamento de processos● Processos sempre alternam entre “surtos” de

computação e requisições de E/S– Parte dos processos passam a maior parte do tempo

computando enquanto outros passam a maior parte do tempo realizando E/S

Qual tipo deprocesso deveter prioridade noescalonamento ?

Sistemas [email protected]

Escalonamento

● Quando escalonar?● Existem uma variedade de situações onde é

necessário realizar um escalonamento, entre elas– Quando um novo processo é criado deve-se decidir entre

continuar executando o pai, ou iniciar a execução do filho– Quando um processo termina, “liberando” uma CPU,

outro processo deve ser escolhido para ocupa-la– Quando um processo bloqueia devido a E/S, na entrada

de uma região crítica, ou por qualquer outro motivo, outro precisa ser escolhido para executar

● O motivo do bloqueio pode ser relevante para a escolha

Sistemas [email protected]

Escalonamento

● Quando escalonar?● Existem uma variedade de situações onde é

necessário realizar um escalonamento, entre elas– Quando ocorre uma interrupção de E/S (um dispositivo

terminou de ler ou escrever alguma informação), um processo irá passar do estado bloqueado para pronto. O escalonador pode então por o mesmo em execução

– Se o hardware oferece interrupções de relógio periódicas, uma decisão de escalonamento deve ser tomada, pelo menos, a cada interrupção

– …

Sistemas [email protected]

Escalonamento

● Categorias de algoritmos de escalonamento● Podem ser classificados em relação a diversos

aspectos– Não preemptivos

● Seleciona um processo e o deixa em execução por um tempo indefinido, até o mesmo bloquear ou deixar a CPU voluntariamente

– Preemptivos● Seleciona um processo e o deixa em execução até o

mesmo bloquear ou atingir a próxima interrupção de relógio

Sistemas [email protected]

Escalonamento

● Categorias de algoritmos de escalonamento● Em relação ao tipo de sistema, eles possuem

necessidades, objetivos e algoritmos de escalonamento diferentes– Sistemas para mainframes ou de lote

● Não preemptivos são aceitáveis– Sistemas interativos

● Preemptivos são essenciais– Sistemas de tempo real– ...

Sistemas [email protected]

Escalonamento

● Objetivos de algoritmos de escalonamento● Todos os sistemas

– Justiça: dar a cada processo uma fração justa da CPU– Aplicação de políticas: Garantir que políticas

administrativas estejam sendo respeitadas– Equilíbrio: Manter todas as partes do sistema ocupadas

● Sistemas de lote– Vasão: maximizar os jobs por unidade de tempo– Tempo de retorno: minimizar o tempo entre submissão e

término de cada job– Uso de CPU: Manter as CPUs sempre ocupadas

Sistemas [email protected]

Escalonamento

● Objetivos de algoritmos de escalonamento● Sistemas interativos

– Tempo de resposta: responder rapidamente às requisições do usuário

– Proporcionalidade: Satisfazer as expectativas dos usuários

● Sistemas de tempo real– Cumprimento de prazos: Garantir o processamento nos

limites estabelecidos, evitando a perda de dados– Previsibilidade: Evita a degradação de qualidade

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas interativos● Escalonamento Round-Robin

– Algoritmo simples, antigo, justo (e bastante usado)– Cada processo “recebe” um intervalo de tempo máximo

durante o qual pode executar (T)● Se ao final deste período ele ainda estiver

executando, será escalonado– O SO mantem uma fila de processos prontos, quando

um processo é escalonado, ele é posto no final da fila● E recebe outro intervalo de tempo (T) para executar

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas interativos● Escalonamento com prioridades

– Mantém a ideia de um tempo máximo (T) de execução por processo, adicionando a cada um deles uma prioridade

● No momento do escalonamento, o processo com maior prioridade é posto para executar

– Existem diversas técnicas que ajustam a prioridade de cada processo de forma dinâmica

● Evitam que processos com maior prioridade monopolizem a CPU

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas interativos● Escalonamento com prioridades

– Entre processos com uma mesma prioridade pode-se utilizar o algoritmo Round-Robin

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas interativos● Escalonamento garantido

– Neste método, se houverem N usuários conectados em uma máquina, cada um deles receberá 1/N da CPU

– De forma semelhante, se houverem N processos, cada uma deles receberá 1/N da CPU

● O SO mantem um controle do tempo de CPU que cada processo recebeu desde sua criação

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas interativos● Escalonamento por loteria

– Baseia-se na ideia de distribuir “bilhetes” aos processos– Em cada escalonamento um bilhete é sorteado, e o

processo que o detêm ganha acesso à CPU– Processos podem receber diferentes quantidades de

bilhetes, de forma a se implementar prioridades

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas interativos● Escalonamento por fração justa (fair share)

– Existem uma série de outras propriedades que devem ser levadas em conta

– Se temos dois usuários conectados a uma máquina, um executando 9 processos e outro executando 1 processo, não é justo que o primeiro obtenha 90% da CPU

Sistemas reais sempre irão utilizar várias destas técnicas ao mesmo tempo

Sistemas [email protected]

Escalonamento

● Escalonamento em sistemas de tempo real● O tempo sempre será o fator preponderante

– Um ou mais dispositivos geram dados e o computador deve processa-los em um intervalo de tempo garantido

– Uma resposta tardia é tão ruim como nenhuma resposta– O escalonador de processos deve garantir que todos os

prazos sejam cumpridos

Sistemas [email protected]

Escalonamento

● Escalonamento de threads● A diferença está basicamente no fato do SO ter ou

não conhecimento da existência das threads– Caso o SO saiba de sua existência, ele na verdade,

sempre escalona diretamente threads de processos– Caso contrário, o SO irá escolher um processo para

executar. Este processo será responsável por escolher qual de suas threads deve executar

Sistemas [email protected]

Escalonamento

● Escalonamento de threads