Sistemas Operacionais
Escalonamento de Processos
https://sites.google.com/site/thiagoaalves/
Escalonamento
Uma vez que há diversos processo na fila de pronto, qual deles selecionar para o estado de execução?
o Política de Escalonamento!
Base da gerência do processador
Estado de Espera Estado de Execução Estado de Pronto E sca lo n a m e n to
Escalonamento
• Organizar, distribuir
obedecendo uma
seqüência lógica ou
compatível.
Escalonamento
https://www.youtube.com/watch?v=tY7oJ3q6SKA https://www.youtube.com/watch?v=IfuoehU-rhc
Escalonamento
Funções básicas da política de escalonamento: o Manter a CPU a mais ocupada possível;
o Balancear o uso da CPU entre os processos; o Privilegiar aplicações críticas;
o Maximizar throughput (vazão) do sistema;
o Possibilitar tempos de resposta razoáveis para aplicações interativas (SO de tempo real);
Escalonamento
Cada SO possui sua política de escalonamento;
SO diferentes vão apresentar políticas diferentes; Escalonador (scheduler): rotina responsável por
implementar a política de escalonamento;
Dispatcher: rotina responsável pela troca de contexto depois que o escaclonador determina qual processo vai para o estado de execução;
o Tempo gasto para troca de contexto é chamado de latência do dispatcher
Comportamento é o mesmo tanto para processos quanto para threads no estado de pronto
Escalonamento
Critérios considerados na política de escalonamento: o Utilização da CPU
Desejável maximizar
Abaixo de 30%, carga baixa; acima de 90%, próximo da saturação (atenção!)
o Throughput
Número de processos / tempo, desejável maximizar o Tempo de CPU
Tempo do processo no estado de execução durante todo seu processamento
Escalonamento
Critérios considerados na política de escalonamento: o Tempo de Espera
Tempo total do processo na fila de pronto durante todo seu processamento, desejável minimizá-lo
o Tempo de Turnaround
Tempo total do processo (início a fim), desejável minimizá-lo
o Tempo de Resposta
Tempo entre uma requisição ao sistema e sua resposta (p/ex., digitação e saída no monitor)
Escalonamento
Escalonamento não preemptivo:
o Primeira forma de implementação
o Processo em execução não pode ser
interrompido por evento externo e sai do estado de execução somente quando termina ou quando
executa instrução que o coloque no estado de espera
Escalonamento preemptivo:
o SO pode interromper um processo em execução e passá-lo para o estado de pronto, colocando
outro em execução
o Permite implementar políticas de escalonamento e priorizar processos
Escalonamento FIFO
UCP Estado de Criação Estado de EsperaFila dos processos no estado de Pronto
Estado de Término
First-In-First-Out
o Primeiro a entrar na fila de pronto é selecionado para execução
Escalonamento FIFO
Processo A Processo B Processo C 10 14 17 Processo A Processo B Processo C 4 7 17 u.t. u.t. Processo Tempo de processador (u.t.) A B C 10 4 3No ex., tempo médio de espera é diferente p/ cada caso
Escalonamento FIFO
Simples, porém apresenta deficiências:
o Impossibilidade de se prever início da execução de determinado processo
o Não se preocupa em otimizar critérios de
escalonamento (p/ex., tempo de turnaround de processos que demandam menos CPU)
o Processos CPU-bound dominam o processador frente a processos I/O-bound
o Escalonamento do tipo não-preemptivo, atualmente adotado com algumas variações
Escalonamento SJF
Processo A Processo B Processo C 3 7 17 u.t. Shortest-Job-Firsto Processo com menor tempo de processador a executar é selecionado para execução
Escalonamento SJF
Implementação se vale de estimativas para o tempo de execução restante para os processo na fila de pronto
o Estimativas levam em consideração execuções anteriores de cada processo
o Tende a reduzir o tempo médio de espera (ver ex.)
o Impossibilidade de estimar tempo de processador para aplicações interativas
Escalonamento considera apenas tempo de CPU na próxima vez que o processo for escalonado, não mais o tempo total até o término
Estimativa baseada em média exponencial dos últimos tempos de CPU
Escalonamento SJF
Escalonamento não-preemptivo
Em relação ao escalonamento FIFO, reduz o tempo médio de turnaround dos processos
Possibilidade de starvation para processos com tempo de CPU muito longos ou CPU-bound
Escalonamento Cooperativo
Processo em execução pode, voluntariamente, liberar processador e retornar à fila de pronto
Liberação do processador é tarefa exclusiva do processo em execução
o Processo em execução verifica periodicamente se há processos na fila de pronto para saber quando deve liberar a CPU
Demais processos não serão executados se processo em execução não liberar a CPU
Escalonamento circular
Preempção por tempo
UCP Estado de
Criação
Estado de Espera
Fila dos processos no estado de Pronto
Estado de Término
Ou Round-Robin Scheduling
o Escalonamento semelhante ao FIFO, porém preemptivo, onde é dada uma fatia de tempo de execução para cada processo e, ao final deste
Escalonamento circular
Processo A
Processo B
Processo C
2 4 6 8 10 11 17 u.t.
Escalonamento circular
Especialmente projetado para uso em sistemas de tempo compartilhado
Fatia de tempo é chamada de time-slice ou quantum o Em geral, varia de 10 a 100 ms, dependendo do SO
o Se o quantum for muito grande, comportamento será semelhante à política FIFO
o Se quantum for muito pequeno, desempenho será comprometido pelo número excessivo de
preempções e conseqüentes atrasos para troca de contexto
Escalonamento circular
Principal vantagem é impedir o monopólio da CPU por algum processo
o Tempo máximo de CPU igual ao time-slice definido no sistema
Processos CPU-bound levam vantagem em relação a processos I/O-bound
o Processos I/O-bound têm mais chance de entrar no estado de espera antes de usarem todo o
Escalonamento circular virtual
Preempção por tempo
UCP Estado de
Criação
Fila dos processos no estado de Pronto
Estado de Término
Estado de Espera Fila auxiliar
Refinamento do escalonamento circular, visa reduzir desbalanceamento entre processos I/O e CPU-bound
o Processos que saem do estado de espera vão para uma fila de pronto auxiliar e preferencial
Escalonamento circular virtual
Processos na fila de pronto serão escalonados apenas se a fila preferencial (auxiliar) estiver vazia
Fatia de tempo para processos escalonados a partir da fila preferencial calculada de forma diferenciada
o Time-slice do sistema menos tempo de CPU que o processo usou da última vez que foi escalonado a partir da fila de pronto
Ou seja, o tempo que faltava para o processo usar todo o time-slice no momento que este foi para o estado de espera
Escalonamento por
prioridades
Escalonamento preemptivo com base na prioridade de execução de cada processo
o Processos são organizados em filas separadas de acordo com seu nível de prioridade
o Processos são escalonados somente quando as filas dos processos de maior prioridade estiverem vazias
o Processos com mesmo nível de prioridade são escalonados segundo uma política FIFO
Não existe conceito de time-slice, não há preempção por tempo e sim por prioridade
Escalonamento por
prioridades
UCP
Estado de Término Filas dos processos no estado de Pronto
Prioridade P1 Prioridade P2 Prioridade Pn Estado de Criação Estado de Espera
Escalonamento por
prioridades
Processo A Processo B Processo C 3 13 17 u.t. Processo Tempo de processador (u.t.) A B C 10 4 3 Prioridade 2 1 3Escalonamento por
prioridades
Implementação através de interrupção de clock, a intervalos de tempo determinados, para que o escalonador verifique as filas de prioridade
Também pode ser implementado de forma não-preemptiva:
o Processos com prioridade maior vão para o início da fila de pronto, sem causar preempção de processos com menor
prioridade
Cada SO implementa sua faixa de valores para as prioridades de execução
Escalonamento por
prioridades
Prioridade de execução do processo definida em seu contexto de software, podendo ser estática ou dinâmica
o Prioridade dinâmica pode ser ajustada ao longo da existência do processo segundo critérios do SO
Permite ajustar critérios de escalonamento em função do comportamento dos processos
Principal problema: possibilidade de Starvation!
o Processos com baixa prioridade podem nunca ser escalonados
o Uma solução é o aging: aumentar gradativamente prioridade de processos há muito na fila de pronto
Escalonamento por
prioridades
Útil em sistemas de tempo real
Útil para aplicações de controle de processos
Útil para priorizar processos em sistemas de tempo compartilhado
Escalonamento circular com
prioridades
Implementa conceito de fatia de tempo junto com prioridade
o Processo em execução pode sofrer preempção por tempo ou por prioridade
o Permite melhor balanceamento no uso da CPU o Amplamente usado em sistemas de tempo
compartilhado
Escalonamento circular com
prioridades
UCP
Estado de Término Fila dos processos no estado de Pronto
Prioridade P1 Prioridade P2 Prioridade Pn Estado de Criação Estado de Espera
Escalonamento por múltiplas filas
Ou Multilevel Queue Scheduling
o Diversas filas de pronto, cada qual com sua prioridade específica
o Processos associam-se às filas de acordo com suas características
Se dá na criação do processo e assim permanece até seu término
o Mecanismos de escalonamento distintos para cada fila
o Prioridade não está associada ao processo, mas sim à fila
Escalonamento por múltiplas
filas
UCP Fila de processos do sistema
Fila de processos interativos
Fila de processos batch Maior
prioridade
Menor prioridade
Escalonamento por múltiplas
filas com realimentação
Ou Multilevel Feedback Queues Scheduling
o Semelhante ao MQS, porém processos podem trocar de fila durante seu processamento
Este ajuste é denominado mecanismo adaptativo o Filas implementam FIFO com fatia de tempo,
excetuando a de menor prioridade, que implementa fila circular
Quanto maior a prioridade, menor o time-slice
o Preempção por fatia de tempo joga processo para fila com prioridade imediatamente menor
Escalonamento por múltiplas
filas com realimentação
UCP Fila 1 (FIFO Adaptado)
Preempção por tempo Fila 2 (FIFO Adaptado)
Preempção por tempo Fila 3 (FIFO Adaptado)
Preempção por tempo
Fila n (Circular)
Preempção por tempo
M e n o r P ri o ri d a d e M a io r P ri o ri d a d e M a io r fa ti a d e t e m p o M e n o r fa ti a d e t e m p o
Escalonamento por múltiplas
filas com realimentação
Complexo, mas bom para processos I/O-bound
o Ficam mais tempo nas filas de maior prioridade já que sofrem poucas preempções por tempo
Muito tempo no estado de espera, pouco tempo no estado de execução
Processos CPU-bound tendem a ser direcionados para filas com menor prioridade
o Quanto maior o tempo de CPU, menor sua prioridade
o Mudança de comportamento para I/O-bound compromete o desempenho
Escalonamento em Sistemas
de Tempo Compartilhado
Sistemas de tempo compartilhado caracterizam-se pelo uso de processamento interativo
o Usuários exigem tempos de resposta baixo para as aplicações
o Política de escalonamento deve considerar compartilhamento eqüitativo de recursos,
principalmente do tempo de CPU
o Maioria dos SOs de tempo compartilhado utiliza escalonamento circular com prioridades dinâmicas
Escalonamento FIFO
(exemplo)
Processo A Processo B u.t. 27 7 E/ S de A 11 E/ S de B 19 E/ S de A 21 E/ S de B Processo Tempo de processador (u.t.) A B 21 6 Característica CPU-bound I/O-boundEscalonamento circular
(exemplo)
Processo Tempo de processador (u.t.) A B 15 10 Característica CPU-bound I/O-bound Processo A Processo B u.t. Pr ee m p çã o p o r te m p o d e A 5 E/ S d e B 9 E/ S d e A 11 E/ S d e B 13 Pr ee m p çã o p o r te m p o d e A 18 E/ S d e B 20 E/ S d e A 23 25 E/ S d e B 27 U C P liv reEscalonamento circular com
prioridades (exemplo)
Processo A Processo B u.t. E/ S d e B 4 Pr e em p çã o p o r p ri o ri d a d e d e A 6 E/ S d e B 8 Pr e em p çã o p o r p ri o ri d a d e d e A 12 E/ S d e B 14 E /S d e A 15 17 Pr e em p çã o p o r p ri o ri d a d e d e A 18 E/ S d e B 20 Pr e em p çã o p o r p ri o ri d a d e d e A 24 E/ S d e B 27 U C P liv re Processo Tempo de processador (u.t.) A B 12 13 Característica CPU-bound I/O-bound Prioridade Baixa AltaEscalonamento em Sistemas
de Tempo Real
Sistemas onde certas aplicações exigem respostas imediatas para a execução de determinadas tarefas
o SO de tempo real deve garantir a execução de processos dentro de limites rígidos de tempo
Ex: controle de tráfego aéreo, controle de processos industriais
o Escalonamento deve considerar importância relativa de cada processo (tarefa)
o Escalonamento por prioridades estáticas é o mais adequado o Não deve haver preempção por tempo!
Memória Virtual
• A técnica de memória virtual fundamenta-se em
desvincular o espaço de endereçamento físico (RAM) do espaço de endereçamento usado pelo programa.
• Para tal é criado um espaço de endereçamento virtual, linear e contínuo (semelhante a um vetor), para atender os requisitos de memória de um dado programa abstraindo-se questões de implementação física.
• Os objetivos principais desta técnica são o de maximizar o número de processos em memória, reduzir a fragmentação e permitir estruturas de dados maiores que a memória física.
Espaço de Endereçamento
Virtual
Endereço Físico 500 501 502 503 504 . . . 599 VET [1] VET [2] VET [3] VET [4] VET [5] . . . . . . VET [100]• Vetor de 100 posições
Espaço de Endereçamento
Virtual
• O espaço de endereços virtuais, arranjados na forma de
vetor, corresponde à memória virtual e pode ser maior que o espaço de memória real.
E sp a ço d e e n d e re ç a m e n to v ir tu a l E sp a ç o d e e n d e re ça m e n to r e a l Endereço virtual 0 Endereço virtual 1 Endereço virtual 2 Endereço virtual 3 Endereço virtual 4 Endereço virtual 5 . . . Endereço virtual V Endereço real 0 Endereço real 1 Endereço real 2 Endereço real 3 . . . Endereço real R
Espaço de Endereçamento
Virtual
• A porção de memória virtual ativa do programa fica
situada na memória principal, o restante fica armazenado
em disco. Memória Virtual
. . . . Memória Principal Memória Secundária . . .
Mapeamento
• A unidade de gerenciamento de memória (Memory
Management Unit – MMU) mapeia os endereços virtuais
em endereços físicos. Memória Virtual Memória Principal Mapeamento . . . . . . • OBS: um programa não precisa estar em endereços contíguos da memória principal para ser executado.
Mapeamento
• O mecanismo de
tradução se encarrega de manter tabelas de mapeamento
exclusivas para cada processo.
• Quando ocorre troca de processo, registrador contendo posição inicial da tabela de mapeamento é atualizado. Pr o cesso A Esp a ço d e en d er eça m en to vi rtu a l d e A En d er eço vir tu a l 1 . . . Ta b ela d e m a p ea m en to d e A Esp a ço d e en d er eça m en to vi rtu a l d e B En d er eço vir tu a l 1 . . . Ta b ela d e m a p ea m en to d e B Pr o cesso B M em ó r ia Pr in cip a l
Mapeamento
• Problema: se cada entrada na tabela de mapeamento representar uma célula da memória virtual, o espaço ocupado pela tabela seria da ordem de tamanho da memória virtual, inviabilizando sua implementação. • Solução: particiona-se a memória virtual em blocos.
– Cada bloco da memória virtual estará representado por uma entrada na tabela de mapeamento.
– Tamanho do bloco determina o número de entradas na tabela de mapeamento.
– 3 técnicas são usadas para o particionamento em blocos: paginação, segmentação e segmentação com paginação.
Memória Virtual por Paginação
• A técnica mais comum utilizada para implementar memória virtual é a paginação.
• Nesta técnica, tanto memória virtual como memória principal são divididas em blocos de igual tamanho chamados páginas.
– Tamanho do bloco determina o nível de fragmentação. • Quando uma página referenciada não é encontrada na
RAM, diz-se que houve um page fault.
• Na ocorrência de um page fault, realiza-se uma operação de paginação, ou seja, de troca de páginas entre a memória
Memória Virtual por Paginação
• Cada processo possui sua própria tabela de páginas.
– Uma página virtual contém um bloco de endereços virtuais.
Memória Virtual . . . . Página virtual 0 Página virtual 1 Página virtual 2 Página virtual V Tabela de páginas ETP Memória Principal Memória Secundária . . . Página real 0 Página real 1 Página real R • ETP: Entrada da Tabela de Páginas, associada a cada página virtual de um processo. • Os blocos da memória principal que abrigam as páginas reais são chamados frames.
Proteção de Memória
• Proteção: cada página conta com dois bits de proteção nas ETPs, um permitindo ou não acesso de leitura, outro
permitindo ou não acesso de escrita.
• SO deve impedir que um processo acesse uma página do
sistema, que não a dele, sem autorização explicitada nos bits de proteção.
L G página/ segmentoEndereço da
Bits de proteção
Descrição Sem acesso Acesso de leitura
Acesso para leitura/ gravação LG
00 10 11
Compartilhamento de Memória
• Em sistemas que
implementam memória virtual, é muito simples implementar
reentrância, bastando que as entradas das
tabelas de mapeamento dos processos apontem p/ os mesmos frames. Pr o cesso A Esp a ço d e en d er eça m en to vi rtu a l d e A En d er eço vir tu a l 1 . . . Ta b ela d e m a p ea m en to d e A Esp a ço d e en d er eça m en to vi rtu a l d e B En d er eço vir tu a l 1 . . . Ta b ela d e m a p ea m en to d e B Pr o cesso B M em ó r ia Pr in cip a l Pá g i n a
Thrashing
• Ocorre quando há uma taxa elevada de faults, sejam de segmentos ou de páginas, seja a nível de sistema ou de processo.
• Acarreta uma degradação no desempenho da máquina: uma página ou segmento swapped out em breve será requisitada para fazer swap in, causando um efeito cascata.
• CPU perde muito tempo com swapping de páginas/segmentos. • Se houver uma demanda de memória, pelos processos a serem
executados, maior que a capacidade da memória principal, a única solução é aumentar esta capacidade.
- MACHADO, Francis Berenger e MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais, 4a. edição. Ed. LTC, 2013.