Capítulo 4 Gerência de Processador DCA-108 Sistemas Operacionais Luiz Affonso Guedes www.dca.ufrn.br/~affonso [email protected] Luiz Affonso Guedes 1 Conteúdo Luiz Affonso Guedes 2 Objetivo ❒ Apresentar de forma sistemática os ❒ Caracterização de processos e mecanismos de gerência do uso do processador pelos processos. threads ❒ Modelo de gerência de processador ❒ Escalonamento de Processos ❍ Escalonamento não preemptivo ❍ Escalonamento preemptivo Luiz Affonso Guedes 3 Recordando Luiz Affonso Guedes 4 Recordando ❒ Cenário Atual ❍ Execução concorrente de CPUs e devices competindo por recursos. Os 4 componentes de sistema computacional Nosso objetivo de estudo Luiz Affonso Guedes 5 Luiz Affonso Guedes 6 1 Recordando Recordando Objetivos de sistema operacional ❒ SO eficientes utilizam multiprogramação! ❒ Executar programas de forma conveniente para o usuário. ❒ Gerenciar os recursos de software e hardware como um todo. ❒ Utilizar os recursos de hardware de forma eficiente e segura. Luiz Affonso Guedes 7 Tipos de Processos Luiz Affonso Guedes 8 Questão Básica ❒ Como há mais processos que processadores, como intercalar o uso dos processadores entre os diversos processos? ❒ CPU Bound ❒ I/O Bound Luiz Affonso Guedes 9 Questão Básica ❒ Luiz Affonso Guedes 10 Luiz Affonso Guedes 12 Estados de um Processo Necessidade de mudança de contexto entre processos Luiz Affonso Guedes ❒ 11 Modelo de máquina de estados 2 Mecanismo de Escalonamento de Processos Estados de um Processo ❒ Quem controla a execução dos processos? ❍ Luiz Affonso Guedes ESCALONADOR 13 Luiz Affonso Guedes Escalonamento Estrutura do Escalonamento ❒ O escalonador é a entidade do sistema ❒ Escalonador ❍ Executa a política de seleção de processos e divisão de tempo de uso da CPU. operacional responsável por selecionar um processo apto para executar no processador. ❒ Dispatcher ❍ Efetuar a troca de contexto entre processos na CPU. Algoritmo que determinar qual processo irá ocupar a CPU. ❍ Esse algoritmo deve seguir uma política justa. ❍ Luiz Affonso Guedes 15 Objetivo do Escalonador ❒ ❒ Minimizar o turnaround ❒ Minimizar o tempo de espera ❒ Minimizar o tempo de resposta ❍ ❍ ❍ 16 Luiz Affonso Guedes 18 ❒ Batch ❒ Interativos ❍ Tempo de resposta Número de processos executados por unidade de tempo ❒ Luiz Affonso Guedes Tipos de Escalonadores Maximizar o uso do processador Maximizar o throughput ❍ 14 ❒ De Tempo-real ❍ Garantir deadlines Tempo total para executar um determinado processo Tempo que um processo permanece na fila de pronto Tempo transcorrido entre sua requisição e a sua realização Luiz Affonso Guedes 17 3 Características dos Escalonadores Níveis de Escalonamento ❒ Não-Preemptivos ❍ Término do processo ❍ I/O, Sincronização ou Erro ❍ Liberação voluntária da CPU ❒ Curto Prazo ❒ Médio Prazo ❒ Longo Prazo ❒ Preemptivos (além das anteriores) ❍ Término do processo ❍ Interrupção de relógio (slice time) ❍ Interrupção devido à existência de outro processo apto de maior Prioridade Luiz Affonso Guedes 19 Luiz Affonso Guedes Escalonamento Longo Prazo Escalonador Médio Prazo ❒ Executado quando um novo processo é ❒ Associado à gerência de memória ❍ Participa do mecanismo de swapping criado ❒ Determina quando um processo novo passa a ser considerado no sistema ❍ 20 ❒ Suporte adicional à multiprogramação ❍ Grau de multiprogramação efetiva ( diferença entre aptos dos aptos-suspensos) Controle de admissão ❒ Controla o grau de multiprogramação ❍ Quanto maior for o número de processos ativos, menor será a percentagem de uso do processador por processo. Luiz Affonso Guedes 21 Escalonador de Curto Prazo Luiz Affonso Guedes 22 Diagrama de Escalonamento ❒ Mais importante ❒ Determina qual processo apto deverá utilizar o processador ❒ Executado sempre que ocorre eventos importantes Interrupção de relógio Interrupção de I/O ❍ Chamadas de sistemas (System Calls) ❍ Sinais (interrupção de software) ❍ ❍ Luiz Affonso Guedes 23 Luiz Affonso Guedes 24 4 Parâmetros de Escalonamento Os Três Níveis de Escalonamento Processo A ta ti tf tl ta Å tempo de chegada do processo tf - ti = tempo de execução do processo ❒ ti – ta = tempo de espera ❒ tf – ta Å turnaround ❒ td = tl - ta Å deadline do processo ❒ ❒ Luiz Affonso Guedes 25 Principais Algoritmos de Escalonamento ❒ Vantagem: implementação simples ❍ Há uma única fila ❍ O processo que fica apto é colocado no fim da fila. ❍ O processo que está no inicio da fila será o próximo a ser executado. ❍ Processo executa até que: ❒ Algoritmos Preempitivos ❍ SJF Preemptivo ❍ Round Robin (Circular) ❍ Baseado em Prioridades Estáticas e Prioridade Dinâmicas Luiz Affonso Guedes • Termine a sua execução; • Libere espontaneamente o processador; • Realize uma chama de sistema (bloqueio). ❒ Desvantagem: prejudica os processos I/O Bound 27 Algoritmo FIFO – Exemplo 1 Luiz Affonso Guedes Tempo de Execução ❒ Suponha, agora, que os processos cheguem na seguinte 24 3 3 Suponha que os processos cheguem na seguinte ordem: P1, P2 e P3. ordem: P2 , P3 , P1 ❒ Então, seus escalonamentos serão: P2 Então, seus escalonamentos serão os seguintes: P1 0 ❍ ❍ P2 24 0 P3 27 P3 3 ❒ Tempos de espera: P1 6 30 P1 = 6; P2 = 0; P3 = 3 u.t. ❒ Tempo médio de espera: 30 (6 + 0 + 3)/3 = 3 u.t. ❒ Compare com o resultado anterior. Tempos de espera: P1 = 0; P2 = 24; P3 = 27 u.t. Tempo médio de espera: (0 + 24 + 27)/3 = 17 u.t. Luiz Affonso Guedes 28 Algoritmo FIFO – Exemplo 1 P1 P2 P3 ❒ 26 Algoritmo FIFO ❒ Algoritmos não preemptivos (cooperativos) ❍ First-In First-Out (FIFO) ou First-Come FirstServed (FCFS) ❍ Shortest Job First (SJF) ou Shortest Process Next (SPN) Processo Luiz Affonso Guedes ❍ 29 Qual o motivo dessa grande diferença? Luiz Affonso Guedes 30 5 Algoritmo FIFO – Exemplo 2 SJF – Shortest Job First ❒ Os menores primeiros: ❍ Baseado no fato que o tempo médio de espera é mínimo quando se executa primeiramente os processos de menor ciclo de processador (I/O bound). ❒ Calcule o tempo médio na fila de espera para: ❍ ❍ Ordem: A,B,C,D Existe uma ordem de execução melhor? Luiz Affonso Guedes 31 SJF – Outro Exemplo Processo Tempo de Chegada 0.0 2.0 4.0 5.0 ❒ SJF (não-preemptivo) 0 3 ❒ É uma variante que permite a interrupção do 7 4 1 4 P1 P3 7 processo quando chega outro mais curto. ❍ Shortest-Remaining-Time-First (SRTF) ❒ SJF (preemptivo) P1 P4 P2 8 32 SJF - Preemptivo Tempo de Execução P1 P2 P3 P4 Luiz Affonso Guedes 12 0 16 2 P3 4 P2 5 P1 P4 7 16 11 ❒ Tempo médio de espera = (9 + 1 + 0 +2)/4 = 3 ❒ Tempo médio de espera = (0 + 6 + 3 + 7)/4 = 4 Luiz Affonso Guedes P2 33 SJF – Shortest Job First Luiz Affonso Guedes 34 Estimativa de Tempo de Execução ❒ Pode ser feito utilizando os tempos de ❒ Esse é um algoritmo ótimo com relação ao ciclos já passados e realizando uma média exponencial (os valores mais recentes têm mais influência) tempo médio de espera. ❒ Favorece processos I/O bound ❒ Desvantagem Como determinar o tempo do próximo ciclo de CPU de cada Processo? ❍ Emprego de heurística: ❍ • A previsão do tempo do próximo ciclo de CPU é função de seus tempos recentes. ❒ Pode ser empregados em processos batch ❍ Escalonador de longo prazo Luiz Affonso Guedes 35 Luiz Affonso Guedes 36 6 Estimativa de Tempo de Execução Estimativa de Tempo de Execução ❒ Idéia Básica ❒ α =0 ❍ ❍ ❒ α =1 ❍ ❍ ❒ τn+1 = τn A história recente não é considerada τn+1 = α tn Somente o último ciclo de CPU é considerado Expandindo-se a fórmula, tem-se: τn+1 = α tn+(1 - α)α tn -1 + … +(1 - α )j α tn -j + … +(1 - α )n +1 τ0 ❒ Tipicamente, utiliza-se α = 0,5. ❍ Luiz Affonso Guedes O último valor tem a metade do peso na estimativa. 37 Estimativa de Tempo de Execução Exemplo Luiz Affonso Guedes 38 Escalonamento Round Robin (RR) ❒ Algoritmo preemptivo ❒ Similar ao FIFO, porém: ❍ Cada processo recebe um tempo máximo (time slice, quantum) de CPU por vez. • Usualmente, quantum (q) entre 10-100ms ❍ Fila de processos aptos é uma fila circular. • Interrupção de relógio Luiz Affonso Guedes 39 Escalonador Round Robin (RR) ❒ ❍ Processo Time de CPU 53 17 68 24 ❒ Quantum = 20 ms: ❒ Calcule: P1 P2 P3 P4 Há 4 processos aptos: A, B, C e D. Tempo de CPU: • A = 12 u.t, B = 8 u.t, C = 15 u.t e D = 5 u.t. • TA + TB + TC + TD = 40 u.t. ❍ 40 Escalonador Round Robin (RR) Exemplo de uso: ❍ Luiz Affonso Guedes O quantum é de 3 u.t ❍ ❍ ❍ ❒ Tempo de espera na fila Tempo de Resposta – tempo até começar a executar uma tarefa Turnaround – tempo para concluir uma tarefa Compare com o SJF P1 0 Luiz Affonso Guedes 41 P2 20 37 P3 P4 57 P1 77 P3 P4 P1 P3 P3 97 117 121 134 154 162 Luiz Affonso Guedes 42 7 Round Robin – Influência do Quantum Round Robin – Influência do Quantum ❒ Se há 10 processos, com quantum de 10ms ❒ E se o quantum for pequeno? ❍ Problema de overhead por mudança de contexto para cada um. Qual é o tempo entre execuções sucessivas de um dado processo? ❒ Se o quantum for 20ms, o que ocorre com o tempo de resposta médio? ❒ O que ocorre se o quantum for grande? ❒ Quantum grande: • RR Æ FIFO Luiz Affonso Guedes 43 Luiz Affonso Guedes Round Robin – Influência do Quantum 44 Escalonamento por Prioridade O RR tende a prejudicar os processos I/O bound, pois estes provavelmente não utilizam todo o seu quantum. ❒ Como minimizar este problema? ❒ ❒ Qual é a influência do quantum no tempo de resposta e no turnaround? ❒ O que deve acontecer os processos I/O bound? ❍ ❍ Luiz Affonso Guedes Utilizar mecanismos de prioridade para os processos I/O bound. Múltiplas filas de prioridade 45 Luiz Affonso Guedes Escalonamento por Prioridade Implementação de Prioridade ❒ Com preempção: ❍ Sempre que um processo de maior prioridade que o processo atualmente em execução entra no estado de apto, deve ocorrer uma preempção. ❒ 46 Múltiplas filas ❍ ❍ Cada fila tem uma prioridade Cada fila pode ter sua própria política de prioridade • RR, FIFO, SJF, etc. ❒ Sem preempção: ❍ Quando a CPU ficar desocupada, o primeiro processo da fila de maior prioridade assume a CPU. Luiz Affonso Guedes 47 Luiz Affonso Guedes 48 8 Implementação de Prioridade – Exemplo 1 ❒ Fila de Apto é particionada em: ❍ ❍ ❒ ❒ Prioridade Estática ❍ Ao ser criado, é atribuída uma prioridade ao processo, que será a mesma ao longo de sua vida. Fila de foreground (interactiva) Fila de background (batch) Cada fila tem o seu próprio algoritmo de escalonamento: ❍ ❍ ❒ Definição de Prioridade ❒ Pode haver starvation em processos com baixa foreground – RR background – FCFS prioridade Deve haver escalonamento entre as filas ❍ ❒ A prioridade estática pode prejudicar ou Prioridade fixa (atender todos do processos foreground, só depois atender os background). beneficiar determinados processos. • Pode haver starvation. ❍ ❍ Time slice – a cada fila é atribuído um quantum de CPU • 80% para foreground com RR • 20% para background com FCFS Luiz Affonso Guedes 49 Possível solução: ❍ Múltiplas Filas com Realimentação. • Um processo pode ser movido entre as diversas filas, de acordo com alguma política pré-estabelecida. ❍ Exemplo 1: a prioridade é função da fração do quantum utilizado: • Quando ele ganhar a CPU, se não utilizar todo o quantum, ele será movido para a fila Q1. • Quantum máximo = 100ms • Processo A utilizou 2ms Æ nova prioridade = 1/0,02 = 50 • Processo B utilizou 50ms Æ nova prioridade = 1/0,50 = 2 ❍ 50 ❒ Há três filas: ❍ Q0 – RR com quantum de 8ms ❍ Q1 – RR com quantum de 16ms ❍ Q2 – FCFS ❒ Escalonamento ❍ Um novo processo entra na fila Q0 , a qual é servida por uma política FCFS. Prioridade dinâmica • A prioridade é ajustada de acordo com o estado de execução do processo ou sistema. ❍ Luiz Affonso Guedes Múltiplas Filas com Realimentação Exemplo Definição de Prioridade ❒ Processo pode seu perfil de uso de CPU e I/O ao longo de sua execução. ❍ Exemplo2: a prioridade é função do tempo de CPU já utilizado Luiz Affonso Guedes Na fila Q1, ao entra em execução, se um processo utilizou todo o seu quantum, ele é premptado e colocado na fila Fila Q2. 51 Múltiplas Filas com Realimentação Exemplo Luiz Affonso Guedes 52 Implementação de Prioridade – Exemplo Pthread Posix ❒ Política de escalonamento múltiplas filas tipo FIFO com prioridade. Múltiplas filas de prioridade Quando uma thread é execução é preemptada, ela é inserido no início da sua fila. ❍ Quando uma thread bloqueada passa a apta, ela é inserida no final da sua fila. ❍ Quando uma thread troca de prioridade, ela é inserida no final de sua nova fila de prioridade. ❍ Quando uma thread em execução libera espontaneamente a CPU para outra thread, ela é inserida no final da sua fila. ❍ ❍ Luiz Affonso Guedes 53 Luiz Affonso Guedes 54 9 Implementação de Prioridade – Exemplo Unix Implementação de Prioridade – Exemplo Unix Múltiplas filas com realimentação, como RR em cada fila. ❍ As prioridades são re-avaliadas a cada segundo em função de: ❍ • • • • ❍ • 0-49 Æ Processos do núcleo • 50-127 Æ Processos do usuário Prioridade atual Prioridade do usuário Tempo recente de uso da CPU Fator nice ❍ Prioridades são divididas em faixas de acordo com o tipo do usuário. ❍ A troca dinâmica das prioridades respeita os limites da faixa 55 Implementação de Prioridade – Exemplo Unix ❍ Luiz Affonso Guedes 56 Implementação de Prioridade – Exemplo Linux Cálculo de prioridade do processo de usuário ❍ • Fator nice: valor variando entre 0 (mais prioritário) a 39 (menos prioritário) – O default é 20. • Uso recente da CPU Há duas classes em função do tipo de processos/threads • Processos interativos e batch • Processos de tempo real ❍ Políticas de escalonamento – Padrão Posix • SCHED_FIFO: FIFO com prioridade estática – Válido apenas para processos de tempo real • SCHED_RR: Round-robin com prioridade estática – Válido apenas para processos de tempo real • SCHED_OTHER: Filas multinível com prioridade dinâmcas (time-sharing) – Processos interativos e batch • Sendo, – load_average é o número médio de processos aptos no último segundo. – PUSER é valor de base de prioridade para usuários (50) Luiz Affonso Guedes Ordem decrescente de prioridade • Swapper • Controle de dispositivos de entrada e saída orientados a blocos • Manipulação de arquivos • Controle de dispositivos de entrada e saída orientados a caractere • Processos de usuário ❍ Luiz Affonso Guedes Prioridade recebem valores entre 0 e 127 (menor o valor, maior a prioridade) 57 Luiz Affonso Guedes Implementação de Prioridade – Exemplo Linux Implementação de Prioridade – Exemplo Linux ❒ Processos de Tempo-real ❍ Tempo real-soft ❍ Prioridade fixa e definida pelo usuário ou por outros com privilégios especiais. ❍ Têm maior prioridade do que os interativos e os batchs ❍ Processos com maior prioridade sempre executam primeiro ❒ Processos Time-sharing ❍ Prioridade dinâmica baseada em créditos ❍ O processo com maior crédito é o selecionado ❍ A cada interrupção de tempo, o processo em execução perde um crédito. ❍ Ao zero o seu crédito, o processo é suspenso. ❍ Se na fila de aptos não houver processos com créditos, é realizada uma distribuição de créditos para todos os processos (em todas as filas) • SCHED_FIFO ou SCHED_RR 58 • Créditos = 0.5*créditos + prioridade Luiz Affonso Guedes 59 Luiz Affonso Guedes 60 10 Implementação de Prioridade – Exemplo Linux Implementação de Prioridade – Exemplo Windows 2000 ❒ A unidade de escalonamento é a thread ❒ Escalonador preemptivo com 32 níveis de prioridades ❍ Quanto maior o número, maior a prioridade. ❒ Há duas classes: ❍ Tempo-real (níveis 16-31) : filas com prioridade estática (RR) ❍ Variável (níveis 0-15) : prioridade dinâmica, com fila de realimentação (RR) • Fator de base ≤ Prioridade ≤ 15 • Bloqueio por I/O aumenta a prioridade • Esgotamento do quantum diminui a prioridade Luiz Affonso Guedes 61 Luiz Affonso Guedes 62 11