DCA-108 Sistemas Operacionais Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Capítulo 4 Gerência de Processador Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de processos e threads Modelo de gerência de processador Objetivo Apresentar de forma sistemática os mecanismos de gerência do uso do processador pelos processos. Escalonamento de Processos Escalonamento não preemptivo Escalonamento preemptivo Luiz Affonso Guedes 3 Luiz Affonso Guedes 4 Recordando Cenário Atual Execução concorrente de CPUs e devices competindo por recursos. Recordando Os 4 componentes de sistema computacional Nosso objetivo de estudo Luiz Affonso Guedes 5 Luiz Affonso Guedes 6
Recordando Objetivos de sistema operacional 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. Recordando SO eficientes utilizam multiprogramação! Luiz Affonso Guedes 7 Luiz Affonso Guedes 8 Tipos de Processos 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 Luiz Affonso Guedes 10 Questão Básica Estados de um Processo Necessidade de mudança de contexto entre processos Modelo de máquina de estados Luiz Affonso Guedes 11 Luiz Affonso Guedes 12
Mecanismo de Escalonamento de Processos Estados de um Processo Quem controla a execução dos processos? ESCALONADOR Luiz Affonso Guedes 13 Luiz Affonso Guedes 14 Escalonamento Estrutura do Escalonamento O escalonador é a entidade do sistema operacional responsável por selecionar um processo apto para executar no processador. Algoritmo que determinar qual processo irá ocupar a CPU. Esse algoritmo deve seguir uma política justa. Escalonador Executa a política de seleção de processos e divisão de tempo de uso da CPU. Dispatcher Efetuar a troca de contexto entre processos na CPU. Luiz Affonso Guedes 15 Luiz Affonso Guedes 16 Objetivo do Escalonador Tipos de Escalonadores Maximizar o uso do processador Maximizar o throughput Número de processos executados por unidade de tempo Minimizar o turnaround Tempo total para executar um determinado processo Minimizar o tempo de espera Tempo que um processo permanece na fila de pronto Minimizar o tempo de resposta Tempo transcorrido entre sua requisição e a sua realização Batch Interativos Tempo de resposta De Tempo-real Garantir deadlines Luiz Affonso Guedes 17 Luiz Affonso Guedes 18
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 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 Curto Prazo Médio Prazo Longo Prazo Luiz Affonso Guedes 19 Luiz Affonso Guedes 20 Escalonamento Longo Prazo Escalonador Médio Prazo Executado quando um novo processo é criado Determina quando um processo novo passa a ser considerado no sistema 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. Associado à gerência de memória Participa do mecanismo de swapping Suporte adicional à multiprogramação Grau de multiprogramação efetiva ( diferença entre aptos dos aptos-suspensos) Luiz Affonso Guedes 21 Luiz Affonso Guedes 22 Escalonador de Curto Prazo 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
Os Três Níveis de Escalonamento Parâmetros 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 Luiz Affonso Guedes 26 Principais Algoritmos de Escalonamento Algoritmos não preemptivos (cooperativos) First-In First-Out (FIFO) ou First-Come First- Served (FCFS) Shortest Job First (SJF) ou Shortest Process Next (SPN) Algoritmos Preempitivos SJF Preemptivo Round Robin (Circular) Baseado em Prioridades Estáticas e Prioridade Dinâmicas Luiz Affonso Guedes 27 Algoritmo FIFO 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: Termine a sua execução; Libere espontaneamente o processador; Realize uma chama de sistema (bloqueio). Desvantagem: prejudica os processos I/O Bound Luiz Affonso Guedes 28 Algoritmo FIFO Exemplo 1 Processo P1 24 P2 3 P3 3 Tempo de Execução Suponha que os processos cheguem na seguinte ordem: P1, P2 e P3. Então, seus escalonamentos serão os seguintes: Algoritmo FIFO Exemplo 1 Suponha, agora, que os processos cheguem na seguinte ordem: P2, P3, P1 Então, seus escalonamentos serão: 0 3 6 30 Tempos de espera: P1 = 6; P2 = 0; P3 = 3 u.t. 0 24 27 30 Tempos de espera: P1 = 0; P2 = 24; P3 = 27 u.t. Tempo médio de espera: (0 + 24 + 27)/3 = 17 u.t. Tempo médio de espera: (6 + 0 + 3)/3 = 3 u.t. Compare com o resultado anterior. Qual o motivo dessa grande diferença? Luiz Affonso Guedes 29 Luiz Affonso Guedes 30
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 Luiz Affonso Guedes 32 SJF Outro Exemplo SJF - Preemptivo Processo Tempo de Chegada Tempo de Execução P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (não-preemptivo) É uma variante que permite a interrupção do processo quando chega outro mais curto. Shortest-Remaining-Time-First (SRTF) SJF (preemptivo) 0 3 7 8 12 16 Tempo médio de espera = (0 + 6 + 3 + 7)/4 = 4 P 4 0 P 4 2 4 5 7 11 Tempo médio de espera = (9 + 1 + 0 +2)/4 = 3 16 Luiz Affonso Guedes 33 Luiz Affonso Guedes 34 SJF Shortest Job First Esse é um algoritmo ótimo com relação ao 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 Estimativa de Tempo de Execução Pode ser feito utilizando os tempos de ciclos já passados e realizando uma média exponencial (os valores mais recentes têm mais influência) Luiz Affonso Guedes 35 Luiz Affonso Guedes 36
Estimativa de Tempo de Execução Idéia Básica Estimativa de Tempo de Execução α =0 τ n+1 = τ n A história recente não é considerada α =1 τ n+1 = α t n Somente o último ciclo de CPU é considerado Expandindo-se a fórmula, tem-se: τ n+1 = α t n +(1 - α)α t n -1 + +(1 - α ) j α t n -j + +(1 - α ) n +1 τ 0 Tipicamente, utiliza-se α = 0,5. O último valor tem a metade do peso na estimativa. Luiz Affonso Guedes 37 Luiz Affonso Guedes 38 Estimativa de Tempo de Execução - Exemplo 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 Luiz Affonso Guedes 40 Escalonador Round Robin (RR) Exemplo de uso: 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. O quantum é de 3 u.t Escalonador Round Robin (RR) Processo Time de CPU 53 17 68 P 4 24 Quantum = 20 ms: Calcule: 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 P 4 P 4 0 20 37 57 77 97 117 121 134 154 162 Luiz Affonso Guedes 41 Luiz Affonso Guedes 42
Round Robin Influência do Quantum Se há 10 processos, com quantum de 10ms 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 Round Robin Influência do Quantum E se o quantum for pequeno? Problema de overhead por mudança de contexto Luiz Affonso Guedes 43 Luiz Affonso Guedes 44 Round Robin Influência do Quantum Qual é a influência do quantum no tempo de resposta e no turnaround? O que deve acontecer os processos I/O bound? 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? Utilizar mecanismos de prioridade para os processos I/O bound. Múltiplas filas de prioridade Luiz Affonso Guedes 45 Luiz Affonso Guedes 46 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. Sem preempção: Quando a CPU ficar desocupada, o primeiro processo da fila de maior prioridade assume a CPU. Múltiplas filas Cada fila tem uma prioridade Cada fila pode ter sua própria política de prioridade RR, FIFO, SJF, etc. Luiz Affonso Guedes 47 Luiz Affonso Guedes 48
Exemplo 1 Fila de Apto é particionada em: Fila de foreground (interactiva) Fila de background (batch) Cada fila tem o seu próprio algoritmo de escalonamento: foreground RR background FCFS Deve haver escalonamento entre as filas Prioridade fixa (atender todos do processos foreground, só depois atender os background). Pode haver starvation. Time slice a cada fila é atribuído um quantum de CPU 80% para foreground com RR 20% para background com FCFS Definição de Prioridade Prioridade Estática Ao ser criado, é atribuída uma prioridade ao processo, que será a mesma ao longo de sua vida. Pode haver starvation em processos com baixa prioridade A prioridade estática pode prejudicar ou beneficiar determinados processos. Processo pode seu perfil de uso de CPU e I/O ao longo de sua execução. Luiz Affonso Guedes 49 Luiz Affonso Guedes 50 Definição de Prioridade Possível solução: Prioridade dinâmica A prioridade é ajustada de acordo com o estado de execução do processo ou sistema. 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: Quantum máximo = 100ms Processo A utilizou 2ms nova prioridade = 1/0,02 = 50 Processo B utilizou 50ms nova prioridade = 1/0,50 = 2 Exemplo2: a prioridade é função do tempo de CPU já utilizado Luiz Affonso Guedes 51 Múltiplas Filas com Realimentação - Exemplo Há três filas: Q 0 RR com quantum de 8ms Q 1 RR com quantum de 16ms Q 2 FCFS Escalonamento Um novo processo entra na fila Q 0, a qual é servida por uma política FCFS. Quando ele ganhar a CPU, se não utilizar todo o quantum, ele será movido para a fila Q 1. Na fila Q 1, ao entra em execução, se um processo utilizou todo o seu quantum, ele é premptado e colocado na fila Fila Q 2. Luiz Affonso Guedes 52 Múltiplas Filas com Realimentação - Exemplo 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
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: 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 Exemplo Unix Prioridade recebem valores entre 0 e 127 (menor o valor, maior a prioridade) 0-49 Processos do núcleo 50-127 Processos do usuário 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 55 Luiz Affonso Guedes 56 Exemplo Unix 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 Sendo, load_average é o número médio de processos aptos no último segundo. PUSER é valor de base de prioridade para usuários (50) Exemplo Linux 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 Luiz Affonso Guedes 57 Luiz Affonso Guedes 58 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 SCHED_FIFO ou SCHED_RR Exemplo Linux 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) Créditos = 0.5*créditos + prioridade Luiz Affonso Guedes 59 Luiz Affonso Guedes 60
Exemplo Linux Luiz Affonso Guedes 61 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 62