Sistemas Operacionais Escalonamento de processos Conceito de Escalonamento Para cada estado, existe uma fila que contém os PCB's executando pcb3 prontos pcb1 pcb5 e/s disco pcb4 pcb6 e/s terminal pcb9 e/s impressão pcb8 bloqueados pcb7 pcb2 pcb10 nas transições entre estados, o PCB do processo é movido entre as filas apropriadas Razões para Suspender Processos Do SO Swapping: para liberar espaço na memória principal para trazer outro processo da memória secundária SO pode suspender um processo em background utilitário suspeito de estar causando problemas Solicitação de usuário interativo Temporização: determinados processos são executados periodicamente Solicitação do processo pai Conceito de Escalonamento Escalonamento consiste em determinar, dentre os processos prontos, qual o próximo processo a ser executado Realizado por um componente do sistema operacional denominado escalonador Dois tipos de escalonadores longo prazo curto prazo Conceito de Escalonamento Escalonador longo prazo memória secundária memória principal Escalonador curto prazo memória principal processador Principais objetivos maximizar a utilização do processador maximizar o número de processos completados por unidade de tempo garantir que todos os processos recebam o processador minimizar o tempo de resposta para o usuário Conceito de Escalonamento Uma visão dos escalonadores do sistema operacional Longo-Prazo Curto-Prazo Fila de Prontos I/O Fila Espera CPU FIM Conceito de Escalonamento Dispatcher: responsável por passar o controle da CPU para o processo selecionado pelo escalonador de curto prazo, envolve: mudança de contexto mudança para o modo usuário salto para a posição adequada dentro do processo selecionado para reiniciar sua execução Latência de despacho Tempo gasto pelo dispatcher para interromper um processo e começar a execução de um outro Representação do Escalonamento fila de processos prontos I/O fila de dispositivo CPU requisição de I/O término de fatia de tempo filho em execução criação de um processo filho interrupção ocorre em espera por uma interrupção Adição de Escalonador Intermediário carregar processos em execução parcialmente removidos da memória remover terminar fila de processos prontos I/O CPU fila de espera por I/O Conceito de Escalonamento Mudança de contexto CPU é chaveada para outro processo SO deve salvar o estado do processo antigo e carregar o estado do novo processo Implica overhead SO não realiza nenhum trabalho útil durante os chaveamentos Tempo consumido é dependente do suporte de hardware fornecido Chaveamento da CPU interrupção ou chamada ao sistema armazenar estado no PCB1 . . . exec. Processo P0 ocioso recarregar estado no PCB1 recarregar estado no PCB0 Processo P1 . . . ocioso armazenar estado no PCB0 executando SO ocioso exec. interrupção ou chamada ao sistema Características dos Escalonadores Escalonador da CPU é invocado muito freqüentemente (milissegundos) precisa ser rápido Escalonador de processos é invocado com muito pouca freqüência (segundos, minutos) pode ser lento O escalonador de processos controla o grau de multiprogramação do sistema Conceito de Escalonamento Os escalonadores são implementados por algoritmos dentro do sistema operacional Critérios para comparar a eficiência dos algoritmos utilização da CPU (1) taxa de saída (throughput) (2) turnaround time (3) tempo de espera (4) tempo de resposta (5) Objetivos maximizar (1) e (2) minimizar (3), (4) e (5) Conceito de Escalonamento Considerações Tipo de processamento batch interativo CPU bound I/O bound Tipo de sistema monoprogramado (?) multiprogramado time-sharing tempo-real multiprocessado política de escalonamento (scheduling policies) Critérios de Escalonamento Orientados ao Usuário e Desempenho Uso do processador mede a porcentagem de tempo em que a CPU está ocupada importante em tempo compartilhado não muito importante em sistemas monousuário e tempo-real Tempo de resposta processos interativos tempo entre uma requisição e o início da resposta do ponto de vista do usuário qual seria o tempo de resposta ideal ? Critérios de Escalonamento Orientados ao Usuário e Desempenho Deadlines (prazos) quando o prazo de término pode ser especificado o sistema deveria fazer o melhor esforço para atender todos os prazos Previsibilidade um dado processo deveria executar sempre em um tempo médio previsível a carga do sistema não deveria impor variações Critérios de Escalonamento Orientados ao Sistema e Desempenho Throughput (vazão) número de processos completados por unidade de tempo, depende: do tamanho dos processos das políticas de escalonamento Turnaround intervalo de tempo entre a submissão de um processo e o seu término inclui o tempo de execução, espera por recursos medida para sistemas batch Waiting time quantidade total de tempo que um Critérios de Escalonamento Orientados ao Sistema Justiça processos devem ser tratados igualmente, a menos que especificado o contrário processos não deveriam sofrer starvation Prioridades processos mais prioritários devem efetivamente ser favorecidos problema da inversão de prioridade Balanceamento de recursos recursos devem ficar ocupados o máximo possível processos que não vão utilizar recursos sobrecarregados devem ser favorecidos Escalonamento de Processos Longa duração decisão de se adicionar um processo ao pool de processos para serem executados admissão ao sistema Duração média decisão de se adicionar ao número de processos que está completamente ou parcialmente na memória swapping, memória virtual Escalonamento de Processos Curta duração decisão de qual processo disponível será executado interrupção de clock e I/O, chamadas ao sistema, signals I/O decisão de qual processo que está na fila de espera por uma requisição de I/O será tratado Escalonamento de Processos Tipos não-preemptivo: processo executando não pode ser interrompido preemptivo: processo pode ser retirado do processador Políticas mais comuns: First-Come-First-Served (FCFS) Shortest Job First (SJF) Prioridade Múltiplas Filas Round-Robin First-Come-First-Served (FIFO) Não preemptivo por definição Primeiro processo da fila é o primeiro a ser executado Processos usam a CPU até terminar todo processamento Mesmo com alguma intercalação, processos com menor prioridade podem prejudicar processos com maior prioridade inversão de prioridade starvation First-Come-First-Served PROCS. TE p1 0 ut p2 6 ut p3 14 ut p4 21 ut t=6 t=8 t=7 t=3 p1 p2 p3 p4 p1 0 TT 6 ut 8 ut 7 ut 3 ut p2 6 p3 14 p4 21 24 t First-Come-First-Served Exemplo: Processo Tempo de execução P1 24 P2 3 P3 3 Suponha que os processos chegaram na seguinte ordem: P1 , P2 , P3 1. Qual seria o diagrama de Gannt, o waiting time para cada um dos processos e o waiting time médio? First-Come-First-Served Diagrama de Gantt para o escalonamento: P1 0 Waiting P3 P2 24 27 30 time para P1 = 0; P2 = 24; P3 = 27 Waiting time médio: (0 + 24 + 27)/3 = 17 Shortest-Job-First Pode ser preemptiva ou não-preemptiva Cada processo é associado ao seu tempo de uso do processador Escalonado o processo com o menor tempo de CPU privilegiam processos menores reduzem o tempo médio de espera na fila de prontos Problema: Como determinar quanto tempo de CPU será necessário? Shortest-Job-First Tanto o escalonamento FIFO quanto o SJF não são utilizados em sistemas de time-sharing (por quê ?) p4 0 t=6 t=8 t=7 t=3 p1 p2 p3 p4 p1 3 p3 9 p2 16 24 t Shortest-Job-First A política SJF é ótima, minimizando o tempo médio de espera de um conjunto de processos Dificuldade: determinar antecipadamente o tempo de processador de cada processo Na prática, o tempo é estimado, é utilizada uma aproximação Shortest-Job-First: não preemptivo Processo Tempo de chegada Duração da rajada P1 P2 P3 P4 0.0 2.0 4.0 5.0 7 1 4 4 SJF (não preemptivo) waiting time médio = (0 + 5 + 4 + 7)/4 = 4 P1 0 3 P2 7 P3 8 P4 12 16 Shortest-Job-First: preemptivo Processo Tempo de chegada 0.0 2.0 P1 P2 P3 4.0 P4 5.0 Duração da rajada 7 terminado 4 terminado terminado 1 terminado 4 SJF (preemptivo) P1 0 P2 2 P3 4 P2 5 P1 P4 7 11 waiting time médio = (9 + 1 + 0 +2)/4 = 3 16 Shortest-Job-First: preemptivo Processo rajada P2 Tempo de chegada P1 4.0 1 terminado tempo restante: 5 tempo restante: 2 terminado terminado 5.0 4 terminado 0.0 2.0 7 P3 P4 Duração da 4 SJF (preemptivo) P1 0 P2 ? 2 P3 ? 4 P2 5 P4 7 P1 11 waiting time médio = (9 + 1 + 0 +2)/4 = 3 16 Shortest-Job-First Determinação do tempo de CPU, pode: somente estimar a próxima duração ser feita usando a duração de tempo de CPU anteriores, usando-se média exponencial 1. t n tamanho real da n α rajada de CPU 2. n 1 valor estimado para a próxima rajada de CPU 3. , 0 1 4. Define : n1 tn 1 n Shortest-Job-First =0 n+1 = n História recente não conta =1 n+1 = tn Somente o último tempo de CPU (rajada) é condiserado Se expandirmos a fórmula teremos n+1 = tn+(1 - ) tn-1 + … +(1 - ) j tn-1 + … +(1 - )n+1 tn 0 Uma vez que tanto como (1 - ) são menores ou iguais a 1, cada termo tem peso menor do que o seu predecessor Shortest-Job-First Preemptivo Permite que se dê atenção mais rapidamente a processos mais prioritários Melhores respostas em sistemas time-sharing Compartilhamento do processador tende a ser mais uniforme Troca de processos na CPU gera overhead Estabelecer de forma otimizada os critérios para a preempção Procurar utilizar processos leves quando possível Prioridade A cada processo é atribuída uma prioridade O processo com maior prioridade é atribuído ao processador Pode ser não-preemptiva ou preemptiva não-preemptiva: o processo libera espontaneamente o processador preemptiva : o processo executando é interrompido caso chegue à fila de prontos um processo com maior prioridade Prioridade Atribuição de prioridades estática: o processo tem uma prioridade fixa durante o seu tempo de vida dinâmica: prioridade muda ao longo do tempo de vida do processo, de acordo com o seu comportamento Prioridade Dinâmica pode ser ajustada de acordo com Atribuição de prioridades tipo de processamento realizado normalmente é feita pelo SO a carga do SO pode ser configurada pelo superusuário quando o processo passa do estado de Estáticade usuário recebem uma prioridade processos espera para o estado executando ele é máxima de usuário penalizado é atribuída quando o processo é e sua prioridade é reduzida, usuário pode diminuir a prioridade de seus iniciado processos processos Observação nãoCPU épode alterada durante aprioridades existência do boundrenice terão suas ex.: comando SO associar àdo altaUnix prioridade um reduzidas cada passagem processo númeroaescalar pequeno para o estado executando pode oferecer tempos de resposta 0 significa a maior prioridade I/O bound ficam em estado de espera aceitáveis com freqüência, processos CPU bound não serão prejudicados Prioridade 4 u.t. Processo A Processo B 3 u.t. 4 u.t. 5 u.t. 2 u.t. 4 8 B solicita I/O 10 1u.t. 2 u.t. 13 16 18 A solicita I/O preempção por B B solicita I/O 3 u.t. 23 26 27 preempção por B B solicita I/O B solicita I/O Tempo de CPU (u.t.) Característica do Processo Prioridade Processo A 13 CPU bound 1 menor Processo B 11 I/O bound 0 maior tempo Prioridade Vantagens é possível fazer diferenciação entre processos adaptabilidade (prioridades dinâmicas) Desvantagem starvation: um processo com baixa prioridade pode nunca ser atribuído ao processador solução: aumentando, em intervalos regulares, a prioridade dos processos que estão há muito tempo esperando Round-Robin Escalonamento do tipo preemptivo Cada processo executa durante uma fatia de tempo (time-slice ou quantum) Ao final da fatia de tempo, o processo executando é inserido no final da fila de prontos Processo na frente da fila de prontos recebe o processador Round-Robin bcp1 bcp2 bcp3 bcp4 bcp4 bcp1 processo 1 executando fatia de tempo esgotada bcp2 bcp3 processo 2 executando Round-Robin Bom para tempo compartilhado Similar a FIFO + tempo limite para execução (time-slice ou quantum) terminado o quantum, o processo é devolvido (preempção) para o final da fila de prontos processos não monopolizam a CPU quantum entre 100 a 300 ms Round-Robin Processo A 5 u.t. 2 u.t. 4 u.t. Processo B 5 termina quantum de A 5 u.t. 2 u.t. 9 11 3 u.t. 2 u.t. 13 B solicita I/O 16 B solicita I/O 21 termina quantum de A A solicita I/O Tempo de CPU (u.t.) 23 26 27 A solicita I/O B solicita I/O Característica do Processo Processo A 15 CPU bound Processo B 8 I/O bound tempo Round-Robin Vantagem do escalonamento Robin Round simplicidade Tamanho da fatia de tempo é crucial no escalonamento circular pequena: tempo de troca de contexto torna-se significativo grande: aumenta o tempo de resposta dos processos no final da fila de prontos Round-Robin Se existem n processos na fila de prontos Se quantum = q cada processo tem 1/n do tempo de CPU em fatias de no máximo q unidades de tempo cada Nenhum processo espera por mais de (n-1) q unidades de tempo para ser atendido Round-Robin Desempenho quantum = muito grande FIFO quantum = muito pequeno q deve ser grande comparado a mudança de contexto, caso contrário, o overhead é muito elevado Round-Robin Processo P1 P2 P3 P4 Diagrama de Gantt (quantum = 20 u.t.) P1 0 Tempo de execução 53 17 68 24 20 Tipicamente, P2 37 P3 57 P4 P1 77 P3 97 117 P4 P1 P3 P3 121 134 154 162 temos turnaround time médio maior que na SJF, mais em compensação melhor resposta Como um pequeno quantum de tempo aumenta as mudanças de contexto quantum tamanho do processo: 10 u.t. 0 12 0 6 1 1 9 10 0 0 mudanças de contexto 6 1 2 3 4 5 6 10 7 8 9 10 Múltiplas Filas Política do tipo preemptiva Prioridades são atribuídas às classes de processos Processos das classes de maior prioridade recebem o processador Processos podem migrar entre classes de acordo com seu comportamento Vantagem: adaptabilidade de acordo com o comportamento do processo Múltiplas Filas Processos são classificados em função do tipo de processamento Cada grupo formado fila associada Fila de prontos associada a cada grupo permite aplicação diferentes de tipos de escalonamento Múltiplas Filas Cada fila possui uma prioridade SO só vai escalonar processos em uma fila se todos os processos das filas de maior prioridade estiverem vazias Múltiplas Filas p=3 processos interativos p=2 p=1 processos em batch p=0 sistema Exemplo mais prioritário algoritmo de escalonamento por prioridades interativo prioridade intermediária escalonamento Round-Robin batch menor prioridade usa Round-Robin ou FCFS Maior Prioridade Fila de Processos do Sistema Fila de Processos Interativos Fila de Processos Batch Menor Prioridade Múltiplas Filas com Realimentação Escalonamento anterior a classificação dos processos era estática Se processo alterar seu comportamento, o esquema pode falhar (não existe reclassificação) Seria interessante que o SO reconhecesse a alteração de comportamento de um processo ajustasse dinamicamente o seu tipo de escalonamento Múltiplas Filas com Realimentação No escalonamento por múltiplas filas com realimentação (multi-level feed-bak queues) é permitido que os processos sejam movimentados entre as filas ajuste dinâmico (mecanismo adaptativo) processo é direcionado para uma das filas em função de seu comportamento Múltiplas Filas com Realimentação: Funcionamento Criação do processo prioridade mais alta e quantum mais baixo Cada fila pode implementar uma política de escalonamento diferente para chegar a CPU: FIFO com quantum SJF RR Múltiplas Filas com Realimentação: Funcionamento Processo é reescalonado dentro da mesma fila quando processo volta ao estado de pronto sofre preempção por outro processo de uma fila mais prioritária Processo é direcionado para fila de menor prioridade e maior quantum quando processo esgota o seu quantum (sofrendo preempção) Múltiplas Filas com Realimentação: Funcionamento Quanto maior a prioridade menor o quantum Escalonamento de uma fila só acontece depois que todas as outras filas de prioridade mais alta estão vazias Fila de menor prioridade Round-Robin Múltiplas Filas com Realimentação: Características Atende as necessidades de escalonamento de diversos tipos de processos Processos I/O bound bom tempo de resposta: maior prioridade permanecem a maior parte do tempo nas filas de alta prioridade usa pouco a CPU Múltiplas Filas com Realimentação: Características Processos CPU bound com o transcorrer do processamento sua prioridade vai sendo reduzida É um mecanismo complexo e gera overhead, mas os resultados são satisfatórios Múltiplas Filas com Realimentação: Exemplo 1 Maior Prioridade Menor quantum Fila 1 (escalonamento FIFO) preempção por término de quantum Fila 2 (escalonamento FIFO) preempção por término de quantum Fila 3 (escalonamento FIFO) preempção por término de quantum ... Fila m (Round-Robin) Menor Prioridade Maior quantum Múltiplas Filas com Realimentação: Exemplo 2 quantum = 8 quantum = 16 FCFS