Capítulo 5: Escalonamento da CPU



Documentos relacionados
Sistemas Operacionais Aula 07: Scheduling da CPU. Ezequiel R. Zorzal

Capítulo 4 Gerência de Processador

Sobre a apresentação (About(

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Capítulo 5: Escalonamento da CPU. Operating System Concepts 8th Edition

Gerência do Processador

Escalonamento de CPU 2 Quadrimestre

Gerência de processos Requisitos fundamentais

Gerência do Processador

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

Escalonamento de processos

Gerência de Processador

Sistemas Operacionais. Roteiro. Tipos de Tarefas (temporal) Marcos Laureano

Sistemas Operacionais

Sistemas Operacionais

GERENCIAMENTO DO PROCESSADOR. Prof. Maicon A. Sartin

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Gerência do Processador

Sistemas Operacionais

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira

Capítulo 5: Escalonamento da CPU

Capítulo 8: Gerenciamento de Memória

Gerência de Processador

Sistemas Operacionais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais

4. GERÊNCIA DE PROCESSADOR (Escalonamento de processos)

Sistemas Operativos. Sumário. Escalonador da CPU. ! Filas Multinível. ! Filas Multinível com Feedback. ! Escalonamento em multiprocessadores

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Algoritmos de Escalonamento

Davidson Rodrigo Boccardo

Escalonamento de Processos

Gerência de processos Estudos de caso - BSD Unix

Processos e Threads (partes I e II)

Sistemas Operativos I

03 GERÊNCIA DO PROCESSADOR

Programação Concorrente Processos e Threads

Escalonamento no Linux e no Windows NT/2000/XP

Sistemas Operacionais: Escalonamento de processos

Sistemas Operacionais I

Chapter 4: Threads. Operating System Concepts 8th Edition

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8 th Edition

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

Processos. Escalonamento de Processos

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP.

Capítulo 2. Processos e Threads. Processos e threads

Introdução a Computação 07 Sistemas operacionais. Márcio Daniel Puntel marcio.puntel@ulbra.edu.br

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr

Sistemas Operacionais

Organização de Computadores 1

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Sistemas Operacionais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

SISTEMAS OPERACIONAIS GERÊNCIA DE TAREFAS

Sistema Operacional Correção - Exercício de Revisão

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Infra-Estrutura de Software. Introdução. (cont.)

Definição. ? Algoritmo de Escalonamento de CPU. ? Algoritmo do S.O. que determina qual o próximo processo a ocupar a CPU

Deadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

SISTEMAS OPERACIONAIS

Processos. Escalonamento de Processos

Threads. 8 de janeiro de 2015

Sistema Operacional. Prof. Leonardo Barreto Campos 1

Capítulo 2: Estruturas de Sistema Operacional

Arquitetura de Computadores. Sistemas Operacionais IV

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas

Introdução aos Sistemas Operativos

Arquitetura e Organização de Computadores

Gerenciamento de memória

Sistemas de Computação. Processos e escalonamento

Threads e Concorrência em Java (Material de Apoio)

PROCESSOS. Prof. Maicon A. Sartin

8 Threads. 8.1 Introdução

SISTEMAS OPERACIONAIS

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

Estrutura, Processos e Threads

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1)

Processos. Escalonamento de Processos

7 Processos. 7.1 Introdução

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Transcrição:

Capítulo 5: Escalonamento da CPU

Sobre a apresentação (About( the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2005. Esse apresentação foi modificada por Cristiaino Costa (cac@unisinos.br). Basicamente, os slides originais foram traduzidos para o Português do Brasil. É possível acessar os slides originais em http://www.os-book.com Essa versão pode ser obtida em http://www.inf.unisinos.br/~cac The slides and figures in this presentation are copyright Silberschatz, Galvin and Gagne, 2005. This presentation has been modified by Cristiano Costa (cac@unisinos.br). Basically it was translated to Brazilian Portuguese. You can access the original slides at http://www.os-book.com This version could be downloaded at http://www.inf.unisinos.br/~cac 5.2 Silberschatz, Galvin and Gagne 2005

Capítulo 5: Escalonamento de CPU Conceitos Básicos Critérios de Escalonamento Algoritmos de Escalonamento Escalonamento de Vários Processadores Escalonamento de Tempo Real Escalonamento de Threads Exemplos de Sistemas Operacionais Escalonamento de Threads em Java Avaliação de Algoritmos 5.3 Silberschatz, Galvin and Gagne 2005

Conceitos BásicosB Máxima utilização da CPU é obtida com multiprogramação Fase de uso da CPU e de E/S Execução de processos consiste de uma fase de execução da CPU e espera por E/S Distribuição das fases de uso da CPU 5.4 Silberschatz, Galvin and Gagne 2005

Alternando fases de uso da CPU e E/S 5.5 Silberschatz, Galvin and Gagne 2005

Histograma de duração de fases de uso da CPU 5.6 Silberschatz, Galvin and Gagne 2005

Escalonador da CPU Seleciona dentre os processos na memória em estado pronto, e aloca a CPU para um deles. Decisões de escalonamento da CPU ocorrem quando um processo: 1. Muda do estado executando para esperando. 2. Muda do estado executando para pronto. 3. Muda do estado esperando para pronto. 4. Termina. Escalonamento nas condições 1 e 4 é não-preemptivo. Todas as outras alocações são preemptivas. 5.7 Silberschatz, Galvin and Gagne 2005

Despachante O despachante (dispatcher) é o módulo que fornece o controle da CPU ao processo selecionado pelo escalonador da CPU. Essa função envolve: Troca de contexto Mudança para o modo usuário Desvio para o endereço adequado no programa do usuário, para reiniciar o programa Latência de Despacho tempo gasto pelo despachante para interromper a execução de um processo e iniciar a execução de outro. 5.8 Silberschatz, Galvin and Gagne 2005

Critérios rios de Alocação Utilização da CPU manter a CPU ocupada a maior parte possível do tempo Produtividade (Throughput) número de processos que completam sua execução por unidade de tempo Tempo de Processamento (Turnaround) quantidade de tempo necessária para executar um determinado processo Tempo de Espera quantidade de tempo que um processo esteve esperando na fila de processos prontos Tempo de Resposta intervalo de tempo entre o envio de uma requisição e a produção da primeira resposta, não a saída (para ambientes tempo compartilhado) 5.9 Silberschatz, Galvin and Gagne 2005

Critérios rios de Otimização Maximizar utilização da CPU Maximizar produtividade Minimizar o tempo de processamento Minimizar o tempo de espera Minimizar o tempo de resposta 5.10 Silberschatz, Galvin and Gagne 2005

Primeiro a Chegar, Primeiro a ser Servido (FCFS*) Processo Tempo de Rajada P 1 24 P 2 3 P 3 3 Suponha que os processos chegam na ordem: P 1, P 2, P 3 O diagrama de Gantt para a alocação é:: P 1 P 2 P 3 0 24 27 30 Tempo de espera para P 1 = 0; P 2 = 24; P 3 = 27 Tempo de espera médio: (0 + 24 + 27)/3 = 17 *FCFS - First Come, First Served 5.11 Silberschatz, Galvin and Gagne 2005

Escalonamento FCFS (Cont.) Suponha que os processos cheguem na ordem P 2, P 3, P 1 O diagrama de Gantt para a alocação é: P 2 P 3 P 1 0 Tempo de espera para P 1 = 6; P 2 = 0 ; P 3 = 3 Tempo de espera médio : (6 + 0 + 3)/3 = 3 Bem melhor que o casso anterior. 3 6 30 Efeito Comboio: processos curtos após processos longos 5.12 Silberschatz, Galvin and Gagne 2005

Escalonamento Menor Job Primeiro (SJR*) Associado com cada processo a duração da sua próxima fase de uso da CPU. Uso dessas durações para escalonar o processo com o menor tempo. Dois esquemas: Não-preemptivo uma vez que a CPU é alocada para um processo ela não pode ser preemptada até completar sua fase de uso da CPU. Preemptivo Se um novo processo chegar com fase de uso da CPU menor do que o tempo restante do processos correntemente em execução, preempta. Este esquema é conhecido como Menor Tempo Restante para ExecuçÃo Primeiro (SRTF - Shortest-Remaining-Time-First). SJF é ótimo permite o menor tempo médio de espera para um dado conjunto de processos. *SJR - Shortest-Job-First 5.13 Silberschatz, Galvin and Gagne 2005

Exemplo de SJF Não-Preemptivo Processo Tempo de Chegada Tempo de Rajada P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (não-preemptivo) P 1 P 3 P 2 P 4 0 3 7 8 12 16 Tempo de Espera Médio = (0 + 6 + 3 + 7)/4 = 4 5.14 Silberschatz, Galvin and Gagne 2005

Exemplo de SJF Preemptivo Processo Tempo de Chegada Tempo de Rajada P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (preemptivo) P 1 P 2 P 3 P 2 P 4 P 1 0 2 4 5 7 11 Tempo de Espera Médio = (9 + 1 + 0 +2)/4 = 3 16 5.15 Silberschatz, Galvin and Gagne 2005

Determinando a duração da próxima fase de uso da CPU Pode somente determinar a duração. Pode ser calculada com a duração de uso da CPU na fase anterior, usando médias exponenciais. 1. 2. 3. α, 0 α 1 4. t n τ n + 1 = duração real da = Define : τ enésima valor previsto para = α t n= 1 n + 1 fase de uso da próxima ( ). α τ n CPU fase de uso da CPU 5.16 Silberschatz, Galvin and Gagne 2005

Previsão da Duração da Próxima Fase de Uso da CPU 5.17 Silberschatz, Galvin and Gagne 2005

Exemplos de média m exponencial α =0 α =1 τ n+1 = τ n História recente não é levada em consideração. τ n+1 = t n Somente a duração da fase de uso da CPU mais recente conta. Se a fórmula for expandida, temos: τ n+1 = α t n +(1 - α) α t n -1 + +(1 - α ) j α t n -1 + +(1 - α ) n=1 t n τ 0 Uma vez que tanto α quanto (1 - α) são menores ou iguais a 1, cada termo sucessivo tem peso menor que o seu predecessor. 5.18 Silberschatz, Galvin and Gagne 2005

Escalonamento por Prioridade Um número de prioridade (inteiro) é associado com cada processo A CPU é alocada para o processo com a maior prioridade (menor inteiro maior prioridade). Preemptivo Não-preemptivo SJF é um escalonador com prioridade, no qual a prioridade é a previsão da próxima fase de uso da CPU. Problema Starvation (abandono de processo) processos de baixa prioridade podem nunca executar. Solução Aging (envelhecimento) ao passar do tempo, aumentar a prioridade dos processos que ficam em espera no sistema. 5.19 Silberschatz, Galvin and Gagne 2005

Alocação Circular - Round Robin (RR) Cada processo recebe uma pequena unidade de tempo de CPU (quantum), usualmente 10-100 milissegundos. Depois de transcorrido este tempo, o processo é preemptado e adicionado ao fim da fila de processos prontos. Se existem n processos na fila de processos prontos e o quantum é q, então cada processo obtém 1/n do tempo da CPU em blocos de no máximo q unidades de tempo de uma vez. Nenhum processo espera mais do que (n-1)q unidades de tempo. Desempenho q alto FIFO q pequeno q deve ser maior que a troca de contexto, senão a sobrecarga é muito alta. 5.20 Silberschatz, Galvin and Gagne 2005

Exemplo: RR com quantum= 20 Processo Tempo de Rajada P 1 53 P 2 17 P 3 68 P 4 24 O diagrama de Gantt é: P 1 P 2 P 3 P 4 P 1 P 3 P 4 P 1 P 3 P 3 0 20 37 57 77 97 117 121 134 154 162 Tipicamente, possui maior tempo médio de processamento do que o SJF, mas melhor resposta. 5.21 Silberschatz, Galvin and Gagne 2005

O Quantum e o Tempo de Troca de Contexto 5.22 Silberschatz, Galvin and Gagne 2005

Variação do tempo de processamento com o quantum 5.23 Silberschatz, Galvin and Gagne 2005

Alocação com Múltiplas M Filas Fila de processos prontos é particionada em filas separadas: primeiro plano - foreground (interativo) segundo plano - background (batch) Cada fila tem seu próprio algoritmo de escalonamento, interativo Alocação Circular (RR) batch Primeiro a chegar, Primeiro a ser servido (FCFS) Escalonamento deve ser realizado entre as filas. Escalonamento de prioridade fixa; Ex.: a fila de processos interativos pode ter prioridade absoluto sobre a fila de processos batch. Possibilidade de starvation. Fatia de tempo cada fila recebe certa quantia de tempo de CPU que poderia ser então alocada aos processos dessa fila; Ex.: 80% para processos interativos em RR 20% para processos batch em FCFS 5.24 Silberschatz, Galvin and Gagne 2005

Escalonamento com Múltiplas M filas 5.25 Silberschatz, Galvin and Gagne 2005

Múltiplas Filas com Realimentação Um processo pode se mover entre as várias filas; envelhecimento (aging) pode ser implementado desta forma. Escalonamento com múltiplas filas e transferências entre as filas é definido pelos seguintes parâmetros, a saber: Número de filas Algoritmos de escalonamento para cada fila Método usado para determinar quando transferir um processo para uma fila de prioridade mais alta Método usado para determinar quando transferir um processo para uma fila de prioridade mais baixa Método usado para determinar em qual fila um processo deve ser colocado, quando precisar usar a CPU 5.26 Silberschatz, Galvin and Gagne 2005

Exemplo de Múltiplas M Filas com Realimentação Três filas: Q 0 RR com quantum de 8 milissegundos Q 1 RR com quantum 16 milissegundos Q 2 FCFS Escalonamento Um novo job entra na fila Q 0 a qual utiliza FCFS. Quando ele ganha a CPU, job recebe 8 milissegundos. Se ele não finalizar em 8 milissegundos, o job é movido para a fila Q 1. Na fila Q 1 o job é de novo servido por FCFS e recebe 16 milissegundos adicionais. Se ele ainda não completou, é premptado e movido para a fila Q 2. 5.27 Silberschatz, Galvin and Gagne 2005

Múltiplas Filas com Realimentação 5.28 Silberschatz, Galvin and Gagne 2005

Escalonamento de Vários V Processadores Escalonamento de CPU é mais complexo quando muitos processadores estão disponíveis Processadores homogênios em um multiprocessador Compartilhamento de Carga (Load sharing) Multiprocessamento assimétrico somente um processador acessa as estruturas de dados do sistema, aliviando a necessidade de compartilhamento de dados 5.29 Silberschatz, Galvin and Gagne 2005

Escalonamento Tempo Real Sistemas Tempo Real Rígidos (Hard real-time) é necessário completar tarefas críticas dentro de um período de tempo garantido. Sistemas Tempo Real Flexíveis (Soft real-time) é necessário que processos críticos recebam prioridade maior do que os outros. 5.30 Silberschatz, Galvin and Gagne 2005

Escalonamento de Threads Escalonamento Local Como a biblioteca de threads decide qual thread colocar no LWP disponível Escalonamento Global Como o kernel decide qual thread em nível de kernel executar a seguir 5.31 Silberschatz, Galvin and Gagne 2005

API de escalonamento na Pthread #include <pthread.h> #include <stdio.h> #define NUM THREADS 5 int main(int argc, char *argv[]) { int i; pthread t tid[num THREADS]; pthread attr t attr; /* get the default attributes */ pthread attr init(&attr); /* set the scheduling algorithm to PROCESS or SYSTEM */ pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM); /* set the scheduling policy - FIFO, RT, or OTHER */ pthread attr setschedpolicy(&attr, SCHED OTHER); /* create the threads */ for (i = 0; i < NUM THREADS; i++) pthread create(&tid[i],&attr,runner,null); 5.32 Silberschatz, Galvin and Gagne 2005

API de escalonamento na Pthread (Cont.) /* now join on each thread */ for (i = 0; i < NUM THREADS; i++) pthread join(tid[i], NULL); } /* Each thread will begin control in this function */ void *runner(void *param) { printf("i am a thread\n"); pthread exit(0); } 5.33 Silberschatz, Galvin and Gagne 2005

Exemplos de Sistemas Operacionais Escalonamento no Solaris Escalonamento no Windows XP Escalonamento no Linux 5.34 Silberschatz, Galvin and Gagne 2005

Escalonamento no Solaris 2 5.35 Silberschatz, Galvin and Gagne 2005

Tabela de Despacho no Solaris 5.36 Silberschatz, Galvin and Gagne 2005

Prioridades no Windows XP 5.37 Silberschatz, Galvin and Gagne 2005

Escalonamento no Linux Dois algoritmos: tempo compartilhado e tempo real Tempo Compartilhado Baseado em créditos com prioridades processos com mais créditos são escalonados primeiro Crédito é subtraído na ocorrência de interrupções de tempo Quando crédito = 0, outro processo é escolhido Quando todos os processos tem crédito = 0, ocorre um recreditamento Tempo Real Baseado em fatores como prioridade e história Tempo Real Flexível (soft real-time) compatível com Posix.1b duas classes FCFS e RR Processos com maior prioridade sempre executam primeiro 5.38 Silberschatz, Galvin and Gagne 2005

Relação entre duração de fatia de tempo e prioridades 5.39 Silberschatz, Galvin and Gagne 2005

Lista de Tarefas Indexada de acordo com Prioridades 5.40 Silberschatz, Galvin and Gagne 2005

Avaliação de Algoritmos Modelagem determinística obtém uma carga prédeterminada e define o desempenho de cada algoritmo para esta carga. Modelos de Filas Implementação 5.41 Silberschatz, Galvin and Gagne 2005

Avaliação de Escalonadores de CPU por Simulação 5.42 Silberschatz, Galvin and Gagne 2005

Fim do Capítulo 5

Figura 5.08 5.44 Silberschatz, Galvin and Gagne 2005

Figura 5.7 5.45 Silberschatz, Galvin and Gagne 2005

Figura 5.8 5.46 Silberschatz, Galvin and Gagne 2005

Figura 5.9 5.47 Silberschatz, Galvin and Gagne 2005

Latência de Despacho 5.48 Silberschatz, Galvin and Gagne 2005

Escalonamento de Threads Java JVM usa um algoritmo de escalonamento preemptivo e baseado em prioridades Fila FIFO é usada se existem muitas threads com a mesma prioridade 5.49 Silberschatz, Galvin and Gagne 2005

Escalonamento de Threads Java (Cont.) JVM escalona a thread para executar quando: 1. A Thread alocada a CPU atualmente sai do estado executando 2. Um Thread de prioridade mais alta entra no estado executando * Nota a JVM não especifica quando threads são tempo compartilhado ou nãothe JVM Does Not Specify Whether Threads are Time-Sliced or Not 5.50 Silberschatz, Galvin and Gagne 2005

Tempo Compartilhado Como a JVM não garante tempo compartilado, o método yield() pode ser utilizado: while (true) { // realiza uma tarefa com uso intenso de CPU... Thread.yield(); } Dessa forma libera o controle para outra thread de igual prioridade 5.51 Silberschatz, Galvin and Gagne 2005

Prioridades de Threads Prioridade Thread.MIN_PRIORITY Thread.MAX_PRIORITY Thread.NORM_PRIORITY Comentário Prioridade Mínima de Thread Prioridade Máxima de Thread Prioridade Padrão de Thread Prioridades podem ser determinadas usando método setpriority(): setpriority(thread.norm_priority + 2); 5.52 Silberschatz, Galvin and Gagne 2005