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

Documentos relacionados
Davidson Rodrigo Boccardo

Sistemas Operacionais: Escalonamento de processos

Sistemas de Computação. Processos e escalonamento

Processos. Escalonamento de Processos

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

Escalonamento de Processos

Processos. Escalonamento de Processos

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

Capítulo 5: Escalonamento da CPU

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 3. Escalonamento

Sistemas Operacionais Gerenciamento de Processos

BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento

Sistemas Operacionais. Escalonamento de processos

Escalonamento de Processos Uniprocessador

Resumo: Sistemas Operacionais Abertos

Bacharelado em Ciência da Computação Sistemas Operacionais

Escalonamento da CPU

Sistemas Operacionais

Algoritmos de escalonamento

Lista de Exercícios Escalonamento de CPU. 1. Considere o seguinte conjunto de processos, com o tamanho do tempo de burst de CPU dado em milissegundos:

Escalonamento de Processos Estratégias de Escalonamento de Processos

Estratégias de Escalonamento de Processos

SO: Escalonamento. Sistemas Operacionais Flavio Figueiredo (

SISTEMAS OPERACIONAIS

Sistemas Operacionais

Gerência de Recursos. Gerência do Processador

Sistemas Operacionais

Sistemas Operacionais. Capítulo 8 Gerência do Processador

SOP - TADS Escalonamento de Processos

Aula 10: Escalonamento da CPU

Gerência do Processador. Adão de Melo Neto

Na Aula Anterior... Escalonamento de Processos. Nesta Aula. Escalonamento. Comportamento de um Processo. Historicamente...

Escalonamento de Processos. Estratégia de atribuição do Processador aos Processos

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Gerência de Recursos. Gerência do Processador

Sistemas Operativos 5ª parte - Escalonamento do CPU

Escalonamento de Processos. Ciclo 3 AT1. Prof. Hermes Senger

Questões de Múltipla escolha

Sistemas Operacionais

Escalonamento de processos

Notas da Aula 11 - Fundamentos de Sistemas Operacionais

Sistemas Operativos: Escalonamento de Processos

Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Conceito de Processos

Sistemas Operacionais

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

ENADE 2011 SISTEMAS OPERACIONAIS

Sistemas Operativos. Um conjunto de rotinas de software que. virtualizando-o. diversos como o sistema de ficheiros e.

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS

Escalonamento de Processos

Capítulo 4 Gerência de Processador

Estados dos processos. Infra Estruturas Computacionais. A troca de contexto. Escalonamento de Processos. Escalonamento de Processos

Gerência do Processador

LICENCIATURA EM COMPUTAÇÃO. Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador

Agendador. Agendador de Processos (Escalonador de Processos) Critérios de Agendamento. Agendador

Gerência do Processador

Escalonamento de CPU 2 Quadrimestre

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads

1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?

Sistemas Operacionais

Sistemas Operativos. Escalonamento e sincronização. Rui Maranhão

Sistemas Operacionais

Sistemas Operativos: Implementação de Processos

LISTA DE EXERCICIOS 1

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

Curso: Redes de Computadores

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

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Prof. Kleber R. Rovai

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Desempenho de computação paralela

Sistemas Distribuídos Aula 3

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução

Arquitetura de Sistemas Operativos

Sistemas Operacionais Gerência de Processos

Fundamentos de Sistemas Operacionais

Arquitetura e Organização de Computadores

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

Escalonamento de processos

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

Linguagem de Programação I

Matriz Discursiva do MÓDULO C FASE II 23/11 até 18/12

Transcrição:

Capítulo 5: Escalonamento da CPU

Capítulo 5: Escalonamento de CPU Conceitos Básicos Critérios de Escalonamento Algoritmos de Escalonamento Escalonamento de Threads Escalonamento de Multiprocessadores Exemplos de Sistemas Operacionais Avaliação de Algoritmos 5.2

Objetivos Introduzir escalonamento de CPU, que é a base para sistemas operacionais multiprogramados Descrever vários algoritmos de escalonamento de CPU Discutir critérios de avaliação para selecionar algoritmos de escalonamento de CPU para um sistema em particular 5.3

Conceitos Básicos 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 (CPU bursts) 5.4

Histograma de duração de fases de uso da CPU 5.5

Alternando fases de uso da CPU e E/S 5.6

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 (ex.: ocorreu interrupção). 3. Muda do estado esperando para pronto (ex.: concluiu E/S). 4. Termina. Escalonamento nas condições 1 e 4 é não-preemptivo. Todas as outras alocações são preemptivas. 5.7

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

Crité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

Critérios de Otimização Maximizar utilização da CPU Maximizar produtividade (throughput) Minimizar o tempo de processamento (turnaround) Minimizar o tempo de espera Minimizar o tempo de resposta 5.10

Algoritmos de escalonamento (scheduling) FCFS First Come, First Served SJF Shortest Job First Prioridades RR Round-Robin Filas Multiníveis 5.11

Primeiro a Chegar, Primeiro a ser Servido (FCFS*) Processo Duração do pico P1 24 P2 3 P3 3 Suponha que os processos chegam na ordem: P1, P2, P3 O diagrama de Gantt para a alocação é:: P1 P2 0 24 Tempo de espera para P1 = 0; P2 = 24; P3 = 27 Tempo de espera médio: (0 + 24 + 27)/3 = 17 P3 27 30 *FCFS - First Come, First Served 5.12

Escalonamento FCFS (Cont.) Suponha que os processos cheguem na ordem P2, P3, P1 O diagrama de Gantt para a alocação é: P2 0 P3 3 P1 6 30 Tempo de espera para P1 = 6; P2 = 0; P3 = 3 Tempo de espera médio : (6 + 0 + 3)/3 = 3 Bem melhor que o casso anterior. Efeito Comboio: processos curtos após processos longos 5.13

Escalonamento Menor Job Primeiro (SJR*) Associe a cada processo o tamanho de seu próximo uso de CPU Utilize esses tamanhos para escalonar o processo com o menor tempo de uso da CPU. SJF é ótimo permite o menor tempo médio de espera para um dado conjunto de processos. A dificuldade é saber o tamanho da próxima requisição de CPU Poderia perguntar ao usuário *SJR - Shortest-Job-First 5.14

Exemplo de SJF Processos P1 6 P2 2 8 P3 7 P4 3 Diagrama de escalonamento SJF: P4 0 Duração do pico P3 P1 3 9 P2 16 24 Tempo de espera médio = (3 + 16 + 9 + 0) / 4 = 7 5.15

Previsão do tamanho da próxima fase de uso da CPU Pode somente estimar o tamanho deve ser similar ao anterior Então, escolhe-se o processo com a menor previsão de tempo de uso da CPU Pode ser calculada com o tamanho do tempo de uso da CPU na fase anterior, usando médias exponenciais. 1. 2. 3. 4. 5. t n =tamanho atual de n do tempo de uso da CPU t n+1 =predição do valor para o próximo tempo de uso da CPU τ n =armazena a história até n α,0 α 1 Defina : τ n+1 =α t n +(1 α) τ n Geralmente, α é definido como ½ Versão preemptiva chamada tempo restante mais curto primeiro 5.16

Previsão da Duração da Próxima Fase de Uso da CPU 5.17

Exemplos de média exponencial α =0 τn+1 = τn História recente não é levada em consideração. α =1 τn+1 = tn Somente a duração da fase de uso da CPU mais recente conta. Se a fórmula for expandida, temos: τn+1 = α tn+(1 - α) α tn-1 + +(1 - α )j α tn-1 + +(1 - α )n+1 τ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

Exemplo do escalonamento de tempo restante mais curto primeiro Processos 0 P 1 1 P1 0 8 P2 1 4 P3 2 9 P4 3 5 Gráfico de Gantt: P Tempo de chegada Duração do pico P4 2 5 P1 10 P3 17 26 Tempo médio de espera = [(10-1)+(1-1)+(17-2)+5-3)]/4 = 26/4 = 6,5 ms 5.19

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.20

Exemplo de escalonamento por prioridade Processo Duração do pico Prioridade P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2 Gráfico de Gantt: Tempo médio de espera = 8,2 ms 5.21

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.22

Exemplo: RR com quantum= 4 Duração do pico P1 24 P2 3 P3 3 O diagrama de Gantt é: P1 0 Processo P2 4 P3 7 P1 10 P1 14 P1 18 22 P1 26 P1 30 Tipicamente, possui maior tempo médio de processamento do que o SJF, mas melhor resposta. 5.23

Exemplo: RR com quantum= 20 Processo Duração do pico P1 53 P2 17 P3 68 P4 24 O diagrama de Gantt é: P1 0 P2 20 37 P3 P4 57 P1 77 P3 P4 P1 P3 P3 97 117 121 134 154 162 5.24

O Quantum e o Tempo de Troca de Contexto 5.25

Variação do tempo de processamento com o quantum 5.26

Alocação com Múltiplas 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 absoluta. 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.27

Escalonamento com Múltiplas filas 5.28

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.29

Exemplo de Múltiplas Filas com Realimentação Três filas: Q0 RR com quantum de 8 milissegundos Q1 RR com quantum 16 milissegundos Q2 FCFS Escalonamento Um novo job entra na fila Q0 a qual utiliza RR. Quando ele ganha a CPU, job recebe 8 milissegundos. Se ele não finalizar em 8 milissegundos, o job é movido para a fila Q1. Na fila Q1 o job é de novo servido por RR e recebe 16 milissegundos adicionais. Se ele ainda não completou, é premptado e movido para a fila Q2. 5.30

Múltiplas Filas com Realimentação 5.31

Escalonamento de Threads Distinção entre threads em nível de usuário e em nível de kernel Threads em nível de usuário Nos modelos Muitos-para-um e Muitos-para-muitos, a biblioteca de threads escalona as threads em nível de usuário para executarem em um LWP (light weight process) (como kernel threads) Conhecido como process-contention scope (PCS) escopo de contenção do processo uma vez que a competição do escalonamento é dentro do processo Threads em nível de kernel Escalonadas nas CPUs disponíveis. Conhecido como system-contention scope (SCS) - escopo de contenção do sistema 5.32

Escalonamento em Pthread A API permite especificar entre PCS ou SCS durante a criação da thread PTHREAD_SCOPE_PROCESS escalona threads usando PCS PTHREAD_SCOPE_SYSTEM escalona threads usando SCS 5.33

API de escalonamento na Pthread #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *runner(void *param); int main(int argc, char *argv[]) { int i; pthread_t tid[num_threads]; pthread_attr_t attr; // Obtém os atributos padrões pthread_attr_init(&attr); // define o algoritmo de escalonamento para PROCESS or SYSTEM pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); // define a política de escalonamento FIFO, RT, or OTHER pthread_attr_setschedpolicy(&attr, SCHED_OTHER); 5.34

API de escalonamento na Pthread (Cont.) /* cria as threads */ for (i = 0; i < NUM_THREADS; i++) pthread_create(&tid[i],&attr,runner,null); // se associa (join) à cada thread for (i = 0; i < NUM_THREADS; i++) pthread_join(tid[i], NULL); } // Cada thread terá seu controle/escopo nessa função void *runner(void *param) { printf("i am a thread\n"); pthread_exit(0); } Para compilar, faça: $ gcc arquivo.c -o arquivo.e -pthread 5.35

Escalonamento de Vários Processadores Escalonamento de CPU é mais complexo quando muitos processadores estão disponíveis Processadores homogênios em um multiprocessador Multiprocessamento assimétrico somente um processador acessa as estruturas de dados do sistema, aliviando a necessidade de compartilhamento de dados Multiprocessamento simétrico (SMP) cada processador é autoescaloanado, todos os processos em uma fila de processos prontos comun ou cada um tem sua fila privada de processos prontos Afinidade de processador processos tem afinidade com processador que está atualmente executando (soft affinity x hard affinity) 5.36

NUMA e Escalonamento de CPU 5.37

Processadores Multicore Tendência recente de colocar múltiplos processadores em um único chip Mais rápido e consome menos energia Múltiplas threads por core também em crescimento Considera o atraso no acesso a memória para progredir em outra thread enquanto os dados são transferidos 5.38

Sistema Multithreaded Multicore 5.39

Exemplos de Sistemas Operacionais Escalonamento no Solaris Escalonamento no Windows XP Escalonamento no Linux 5.40

Tabela de Despacho no Solaris 5.41

Escalonamento no Solaris 5.42

Prioridades no Windows XP 5.43

Escalonamento no Linux Tempo de escalonamento de ordem constante O(1) Duas escalas de prioridades: tempo compartilhado e tempo real Tempo real varia de 0 a 99 e o valor do nice de 100 a 140 5.44

Relação entre duração de fatia de tempo e prioridades 5.45

Lista de Tarefas Indexada de acordo com Prioridades 5.46

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.47

Avaliação de Escalonadores de CPU por Simulação 5.48

Fim do Capítulo 5