Please enable JavaScript.
Coggle requires JavaScript to display documents.
Escalonamento de CPU - Coggle Diagram
Escalonamento de CPU
Escalonamento para Multiprocessadores
Abordagens
Assimétrico
Decisões de escalonamento, E/S e outras atividades são processadas por um processador
Outros processadores executam somente o código do usuário
Simétrico (SMP)
Cada processador é auto-escalonado
Modelo usado por quase todos os SO’s modernos
Duas estratégias possíveis
Todas as threads podem estar em uma única fila de prontos
Cada processador pode ter sua própria fila de threads
Processadores Multicore
Vários núcleos de processamento num único chip
Processadores multicore tem escalonamento mais complexo
Memory stall (“obstrução da memória”)
Todos os núcleos competem pelo acesso à memória principal, ficam esperando as vezes
Quando um processo muda de núcleo ele perde o acesso a dados em cache do núcleo anterior
(SMT/HT) ou CMT
Thread em espera permite que outra, já no núcleo, assuma controle dos recursos internos
SO precisa estar ciente de quais núcleos lógicos pertencem a quais núcleos físicos
Balanceamento de carga
Busca pela distribuição uniforme de carga entre processadores em sistema SMP
Necessária apenas quando cada processador tem sua própria fila de processos elegíveis
Tipos
Migração push
Tarefa monitora e redistribui carga entre processadores conforme necessário
Migração pull
Processador ocioso assume tarefa de processador ocupado em espera
Os dois tipos não são mutuamente exclusivos
Afinidade de processador
Solução do problema advindo da perda de dados na troca de CPU
Tipos
Afinidade flexível/leve
Sistema tenta manter processo em único processador, mas migração é possível
Afinidade rígida
Processo pode especificar subconjunto de processadores para execução
Escalonamento de thread
Threads de kernel são escalonadas pelo SO e não os processos
Threads de usuário gerenciadas pela biblioteca de threads
kernel não tem conhecimento delas
Threads de usuário precisam das threads de kernel para execução na CPU
Critérios de Escalonamento
Existem diversos algoritmos de escalonamento
O algoritmo pode favorecer alguma classe de problemas em vez de outra
O “melhor” algoritmo depende do critério analisado
Principais critérios:
Utilização de CPU
Mantenha a CPU mais ocupada possível.
Throughput (vazão)
Número de processos completos em uma unidade de tempo
Tempo de Turnaround (tempo de retorno)
Quantidade de tempo para executar um processo em particular
Tempo de Espera
Tempo em que um processo esteve esperando na fila de prontos
Tempo de Resposta
tempo desde a submissão de uma solicitação até a produção da primeira resposta
Conceitos Básicos
Escalonamento (scheduling)
Ter sempre algum processo em execução, evitando ociosidade da CPU
Quando um processo precisa esperar
o SO atribui a CPU a um outro processo que tem instruções para processar
O escalonador seleciona entre processos prontos na memória e alocada a CPU a um deles
Escalonamento preemptivo
potencial problema com acesso a dados compartilhados
Ciclo de Picos CPU-E/S
Execução de um processo
ciclo de execução + espera por E/S
Observa e armazena estatísticas da execução dos processos
Despachante (dispatcher)
Dá o controle da CPU ao processo selecionado pelo escalonador de curto prazo
Latência de despacho
tempo para que o despachante termine um processo e inicie outro em execução