Please enable JavaScript.
Coggle requires JavaScript to display documents.
Escalonamento da CPU, Escalonamento para Multiprocessadores - Coggle…
Escalonamento da CPU
Algoritmos de Escalonamento
First Come, First Served (FCFS) (não-preemptiva)
Shortest Job First (SJF)(Não preemptivo)
Shortest Remaining Time First (SRTF) (Preemptivo)
Por prioridade (Preemptivo ou Não preemptivo)
Problema = Estagnação (starvation)
Solução = Envelhecimento (aging)
Round-Robin (RR)
Nenhum processo espera mais do que (n – 1)q
Desempenho
q grande → FIFO
q pequeno → Overhead muito alto
Multilevel Queue (Fila Multinível)
Cada fila tem seu próprio algoritmo de escalonamento
O escalonamento precisa ser feito entre as filas
Escalonamento com prioridade fixa
Fatia de tempo
Multilevel Feedback-Queue (Fila Multinível com Feedback)
Um processo pode mover entre as diversas filas
Escalonador de fila de feedback multinível definido por multiplos parâmetros
Número de filas
Algoritmos de escalonamento para cada fila
Método usado para determinar quando fazer o upgrade de um processo
Método usado para determinar quando rebaixar um processo
Método usado para determinar em qual fila um processo entrará quando esse processo precisar de serviço
Critérios de Escalonamento
Utilização de CPU (max)
Throughput (vazão) (max)
Tempo de Turnaround (tempo de retorno) (min)
Tempo de Espera (min)
Tempo de Resposta (min)
Decisões de escalonamento de CPU ocorrem
O processo passa do estado executando para esperando
O processo passa do estado executando para pronto
O processo passa de esperando para pronto
O processo termina
Escalonamento
Não-preemptivo ou cooperativo
Preemptivo (Mais usado)
Despachante
Latência de despacho
Dá o controle da CPU ao processo selecionado
Troca de contexto
Troca para o modo usuário
Salto para o local apropriado no programa do usuário para reiniciar esse programa
Escalonamento para
Multiprocessadores
Com múltiplas CPUs é possível fazer o compartilhamento de carga.
Abordagens
Multiprocessamento Assimétrico
Todas as decisões de escalonamento são tratadas por um processador único – o servidor mestre
Os outros processadores executam somente o código do usuário.
Reduz a necessidade de
compartilhamento de dados.
Multiprocessamento Simétrico (SMP)
cada processador é auto-escalonado
É o 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 (comum ao sistema)
Cada processador pode ter sua própria fila de threads
Processadores Multicore
Escalonamento mais complexo
Todos os núcleos vão disputar o acesso a memória principal
memory stall (“obstrução da memória”)
Cada núcleo tem seu próprio cache local
Balanceamento de carga
Tenta manter a carga de trabalho distribuída uniformemente
Necessária quando cada processador tem sua própria fila de processos elegíveis
Tipos
Migração push
Migração pull
Os dois tipos não são mutuamente exclusivos.
Afinidade de processador
Afinidade flexível/leve
Afinidade rígida
Escalonamento de thread
Threads em nível de kernel é que são escalonadas pelo SO e não os processos.