Buscar

Gerência de Processador e Escalonamento

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

GERÊNCIA DE PROCESSADOR 
Considerada a parte principal de um Sistema operacional. É nela que são definidos os critérios para 
mudar os estados dos diversos processos que estão aguardando execução em uma máquina. O 
procedimento de seleção de qual processo passa a qual estado, dentre os possíveis processos que 
esperam nas diversas filas é chamado escalonamento. 
CONCEITOS BÁSICOS 
• Multiprogramação: vários processos estão na memória ao mesmo tempo. Quando um 
processo espera, o sistema operacional. coloca outro processo para executar. 
• Burst ciclo (CPU – E/S): a execução do processo consiste de um ciclo de execução de 
instruções pela CPU e espera por E/S. A execução começa com um CPU burst, seguido de um 
E/S burst e novamente um CPU burst. 
Exemplo: 
 
Load 
Store CPU 
Add burst 
Read from file 
Wait por E/S E/S burst 
Store 
increment CPU burst 
write to file 
wait por E/S E/S burst 
 
 
Escalonamento preemptivo: o escalonamento da CPU é preemptivo quando o sistema operacional 
pode interromper um processo em execução para que outro processo utilize o processador. 
Naturalmente a interrupção depende de hardware especial (um relógio externo, por exemplo). 
Despachador (Dispatcher) ou escalador de curto prazo: é uma rotina encarregada de escolher qual 
dos processos no estado de pronto para rodar deve receber a CPU, de acordo com suas prioridades. 
Ele se utiliza de algumas estruturas de dados que implementam filas de processos, através da 
manipulação de seus BCPs. São elas: 
1 - A FILA DE PRONTOS ou Fila da CPU: que é uma lista ordenada, de acordo com as prioridades de 
cada processo, de BCPs dos processos no estado de Pronto. 
2 - A FILA DE CONDIÇÃO: Dos BCPs de processos suspensos (ou BLOQUEADOS), esperando por 
alguma condição. Por exemplo, a espera de uma operação de E/S, a espera de memória, etc. 
Além de manipular essas filas, ele também opera com o relógio de intervalos, estabelecendo, a cada 
novo intervalo de tempo, qual o valor da fatia de tempo destinada ao processo escolhido para ganhar a 
CPU. A transferência do controle da CPU ao processo escolhido é feita através da reposição do 
contexto desse processo via seu BCP e uma instrução do tipo IRET. 
As rotinas de tratamento de interrupções realizam a segunda função do núcleo, sendo implementadas 
uma para cada tipo de interrupção que possa ocorrer no sistema. 
O módulo de sincronização implementa um par de rotinas do tipo WAIT e SIGNAL e é utilizado para 
estabelecer o sincronismo de processos no acesso aos recursos do sistema. Esse módulo também 
manipula filas de processos. 
 
São as seguintes as operações realizadas sobre os processos pelo sistema operacional. para cada 
uma das principais ocorrências: 
➢ INTERRUPÇÃO de FIM DE I/O: 
- salva contexto do processo EXECUTANDO; 
- se entrada: transfere dado para endereço adequado; 
- retira o primeiro BCP da fila de condição do dispositivo e o insere na fila de prontos; 
- faz estado do dispositivo = LIVRE; e 
- chama DESPACHADOR. 
➢ INTERRUPÇÃO de RELÓGIO: 
- salva contexto do processo EXECUTANDO; 
- retira BCP do topo da fila dos PRONTOS; 
- insere BCP no final da fila; e 
- chama DESPACHADOR. 
➢ INTERRUPÇÃO de ERRO DE PROGRAMA (TRAP): 
- remove BCP do topo da fila de PRONTOS; 
- insere-o na fila dos ACABADOS; e 
- dispara rotina de Fim de Processo. 
➢ INTERRUPÇÃO POR ERRO DE HARDWARE: 
- depende do erro, se for localizado e recuperável, aborta o processo corrente e chama o processo de 
recuperação, chama o despachador senão, Halt (para o processador). 
➢ DESPACHADOR: 
- zera registro de intervalo de tempo; 
- busca o primeiro BCP da fila dos PRONTOS; 
- coloca-o como EXECUTANDO; 
- restabelece registrador de intervalo de tempo; 
- restabelece contexto do processo; 
- restabelece interrupções; 
- restabelece CI; e 
- faz um IRET (salta para o processo). 
CRITÉRIOS DE ESCALONAMENTO 
Alguns critérios devem ser observados na avaliação dos algoritmos de escalonamento: 
• Utilização da CPU: mede o percentual de utilização da CPU, que deve ser o maior possível. 
• Throughput: numero de processos que foram completados por unidade de tempo 
• Tempo turnaround: é a soma dos tempos gastos pelo processo esperando para obter a CPU 
(fila de prontos), esperando por memória, executando na CPU e esperando por E/S. 
• Tempo de espera: soma dos períodos de tempo gastos esperando na fila de prontos. 
• Tempo de resposta: tempo decorrido entre a submissão de um processo até que a primeira 
resposta seja obtida. Não é considerado o tempo gasto com a efetiva saída do pedido, uma 
vez que este depende da velocidade do dispositivo de saída. 
 
 
POLÍTICAS DE ESCALONAMENTO 
ESCALONAMENTO FIRST COME FIRST SERVED 
É implementado com uma fila FIFO, onde o primeiro que chega é o primeiro a ser executado. 
Exemplo: 
 
Processo P1 P2 P3 
Tempo burst 24 3 3 
 
Conside que os processos chegaram na ordem P1, P2, P3 e foram executados em FCFS, temos o 
seguinte Gant Chart: 
 
Tempo de espera por processo: 
Para P1: 0 
Para P2: 24 
Para P3: 27 Média = (0+ 24 + 27) / 3 = 17 unidades de tempo 
Se a ordem fosse P2, P3 e P1, teríamos: 
 
Tempo de espera por processo: 
Para P2: 0 
Para P3: 3 
Para P1: 6 Média = (0+ 3 + 6) / 3 = 3 unidades de tempo 
O algoritmo FCFS não é preemptivo. Uma vez que a CPU seja alocada para um processo, ele fica com 
ela até o final ou até que peça alguma operação de E/S. 
Para sistemas de tempo compartilhado, este algoritmo não se aplica. 
ESCALONAMENTO SHORTEST JOB FIRST 
Este algoritmo associa a cada processo o tamanho do próximo CPU burst (veja bem, não o tamanho 
de todo o processamento). O processo escolhido é o que tem o menor próximo ciclo de CPU burst. Se 
dois processos coincidem, é escolhido o que chegou primeiro. 
Exemplo: 
 
Processo P1 P2 P3 P4 
Tempo burst 6 8 7 3 
Veja o Gant Chart: 
 
Tempo de espera por processo: 
Para P4: 0 
Para P1: 3 
Para P3: 9 
Para P2: 16 Média = (0+ 3 + 9 + 16) / 4 = 7 unidades de tempo 
Pelo algoritmo FCFS o tempo médio seria 10,25. Entretanto, embora este algoritmo seja ótimo, não é 
possível implementá-lo integralmente, já que não existe maneira de conhecer o tamanho do próximo 
ciclo CPU burst. Pode-se apenas estimá-lo. 
ESCALONAMENTO POR PRIORIDADE 
A cada processo é associada uma prioridade e a CPU é alocada para o processo com a mais alta 
prioridade. Processos com prioridades iguais são escalados segundo a política FCFS. 
Exemplo: 
Processo P1 P2 P3 P4 P5 
Tempo burst 10 1 2 1 5 
Prioridade 3 1 3 4 2 
Veja o Gant Chart: 
 
 
Média do tempo de espera: (0 + 1 + 6 + 16 + 18) / 5 = 8,2 unidades de tempo. 
Um método para prevenir “starvation” é o “aging”. Consiste em ir aumentando gradualmente a 
prioridade de um processo, à medida que ele fica esperando. 
Prioridade estática: não muda durante a vida do processo. 
Prioridade dinâmica: prioridade ajustada de acordo com o tipo de processamento e/ou carga do 
sistema. 
ESCALONAMENTO ROUND ROBIN OU CIRCULAR 
Especialmente útil para sistemas de tempo compartilhado. Cada processo ganha um tempo limite para 
sua execução. Após esse tempo ele é interrompido e colocado no fim da fila de prontos. Este tempo é 
atachado de fatia de tempo, “time-slice” ou quantum. Geralmente se situa entre 100 e 300 ms. O tempo 
médio de espera é geralmente longo. O desempenho do algoritmo depende bastante da escolha do 
quantum. Se for grande, se parecerá com a política FCFS. Se for muito pequeno, o Round Robin é 
chamado “Processor Sharing” pois parece, do ponto de vista dos processos, que cada um do N 
processos “possui” uma CPU com velocidade 1/N do processador real. 
Exemplo: 
Processo P1 P2 P3 
Tempo execução 24 3 3RR=4 
Gant Chart: 
P1 P2 P3 P1 P1 P1 P1 P1 
0 4 7 10 14 18 22 26 30 
P1=(0+10+14+18+22+26)/6 =15 
Média do tempo de espera: (15 + 4 + 7 ) / 3 = 8,66 unidades de tempo. 
 
ESCALONAMENTO POR MÚLTIPLAS FILAS 
Implementa diversas filas de processos no estado de pronto, uma para cada prioridade. Os processos 
devem ser classificados previamente em função do tipo de escalonamento para poderem ser 
corretamente alocados. Cada fila separada tem seu próprio algoritmo de escalonamento,. 
Ex: fila de forground (interativos) usa escalonamento Round Robin, enquanto os processos da fila de 
background (batch) utilizam algoritmo FCFS. 
 
Processos do sistema 
Processos interativos 
Processos batch 
 
ESCALONAMENTO POR MÚLTIPLAS FILAS COM REALIMENTAÇÃO 
No caso de processos que alterem seu comportamento no decorrer do tempo, o esquema anterior é 
falho, porque não permite a movimentação do processo entre as filas. Este escalonamento permite a 
troca entre as filas. 
O sistema tenta identificar dinamicamente o comportamento de cada processo, ajustando suas 
prioridades de execução e mecanismos de escalonamento. Este esquema é dito mecanismo 
adaptativo. Exemplo: 
 
 
 
 
 
Quando o processo é criado, é posto na fila 1 (de mais alta prioridade). Se ele esgota seu quantum, é 
posto uma fila abaixo e recebe um novo quantum (maior). Se também esgota esse quantum, vai 
descendo sucessivamente de fila, até atingir a de menor prioridade, onde o escalonamento é circular. 
Neste esquema, os processos “I/O bound” ficam por mais tempo nas filas de alta prioridade, enquanto 
os “CPU bound” gastam seu tempo e passam para filas de menor prioridade. Ou seja, os processos 
evoluem bem, independentemente da sua natureza (I/O bound ou CPU bound). 
ESCALONAMENTO COM MÚLTIPLOS PROCESSADORES 
Este escalonamento é usado quando existem vários processadores. 
Compartilhamento de carga: fornece uma fila separada para cada processador. 
 Problema: um processador pode estar ocioso enquanto o outro está sobrecarregado 
 Solução: colocar uma só fila de prontos e deixar o despachador decidir na hora da execução. 
Uma maneira de escalonar é o processador ser auto escalonável, ou seja, cada processador vai à fila e 
seleciona um processo. Cuidados a serem tomados: não permitir que um processo seja escolhido por 
mais de um processador; não permitir que um processo não seja escolhido por nenhum processador 
Prioridade 
: 
Outra maneira é usar um processador como escalonador de processos para os outros processadores, 
criando uma estrutura mestre-escravo. 
Outra maneira ainda é o multiprocessamento assimétrico, onde um processador é responsável por 
todas as decisões de escalonamento, processamento de E/S, etc. Os demais processadores só 
executam código do usuário. 
ESCALONAMENTO DE TEMPO REAL 
Para sistemas de tempo real, é importante definir alguns conceitos que são críticos: 
Tempo de chaveamento: é o tempo gasto pelo sistema para chavear o processamento entre dois 
processos independentes, ativos e de prioridade igual. Ocorre, por exemplo, no chaveamento por “time 
slice”. 
Tempo de preempção: é o tempo que um processo de maior prioridade leva para tomar o controle de 
um de menor prioridade por ocasião da ocorrência de um determinado evento externo de interrupção. 
Tempo de latência de interrupção: é o tempo entre o recebimento de um pedido de interrupção pela 
CPU e a execução da primeira instrução da rotina de serviço da interrupção. 
Vamos analisar primeiramente as soluções para sistemas de tempo real “hard”. Nestes sistemas, como 
as tarefas têm que terminar em tempos definidos, o sistema operacional. tem que admitir o processo 
somente quando ele poderá terminar na hora certa. Caso contrário, o sistema operacional. deve rejeitar 
o pedido como impossível. Isto é conhecido como “Reserva de recurso”. Para ter tempos garantidos, 
recursos tais como memória virtual e armazenamento em disco, estão descartados. Normalmente este 
tipo de sistema possui hardware específico. 
Para sistema de tempo real soft: neste tipo de sistema, os processos de tempo real devem ter a mais 
alta prioridade. Essa prioridade não deve ser degradada com o tempo. Para esses processos não deve 
haver time sharing. O tempo de latência deve ser pequeno para que o processo possa começar a 
executar o mais rapidamente possível. 
Em todos os casos, o tempo de chaveamento e de latência devem ser pequenos, o tempo de 
preempção deve ser adequado aos propósitos do sistema e em alguns casos podem existir primitivas 
de bloqueio da preempção, 
 
Siglas 
BCP ou bloco de controle --- Cada processo é representado por um descritor (BCP), que é uma área 
de memória contendo todas as informações relevantes do processo. O descritor contém a identificação 
do processo e uma indicação do estado corrente do processo (em execução; pronto para ser 
executado; bloqueado). 
IRET - Instruções do tipo IRET retornam o sistema ao estado Usuário, restabelecendo o contexto do 
programa que pediu o SVC, ou chamando o módulo escalador de processos do Núcleo.

Continue navegando