Sistemas Operacionais Gerência de Processos

Documentos relacionados
Sistemas Operacionais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

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

Sistemas Operacionais

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Sistemas Operacionais. Escalonamento de processos

Sistemas Operacionais

Sistemas Operacionais

Processos. Escalonamento de Processos

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

Sistemas Operacionais

Processos. Escalonamento de Processos

Unidade III Gerência de Processos

Sistemas Operacionais

Processos. Escalonamento de Processos

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais

Algoritmos de escalonamento

Escalonamento de Processos

Sistemas de Computação. Processos e escalonamento

Sistemas Operacionais

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

Sistemas Operacionais. Gerência de Processador

Sistemas Operacionais

Sistemas Operacionais II

Sistemas Operacionais: Sincronização entre processos

Fundamentos de Sistemas Operacionais

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

Infra-Estrutura de Software. Escalonamento

Sistemas Operacionais

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

ENADE 2011 SISTEMAS OPERACIONAIS

Fundamentos de Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Sistemas Operacionais Gerenciamento de Processos

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

Resumo: Sistemas Operacionais Abertos

Sincronização e Comunicação entre Processos. Adão de Melo Neto

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

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III. Escalonamento de Processos. 24/04/2014 Prof. Valeria M. Bastos

Sistemas Operacionais

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

Sistemas Operacionais Aula 7

Programação de Sistemas em Tempo Real

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

SOP - TADS Escalonamento de Processos

Sistemas Operacionais. Escalonamento de Processos

Sistemas Operacionais

Sistemas Operacionais

Comunicação entre Processos

Sistemas de Informação. Sistemas Operacionais

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

Ferramentas para Programação em Processadores Multi-Core

SISTEMAS OPERACIONAIS. TÁSSIO JOSÉ GONÇALVES GOMES

Questões de Provas de Períodos Anteriores

Questões de Múltipla escolha

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Escalonamento no Unix. Sistemas Operacionais

Programação concorrente (processos e threads)

Processos. Processos e Recursos (1) Tabelas de Controle do S.O. Processos e Recursos (2)

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Fundamentos de Sistemas Operacionais

Escalonamento de Processos Uniprocessador

Revisão Ultima aula [1/2]

Gerência de Recursos. Gerência do Processador

Sistemas Operacionais. Processos e Threads

Sistemas Distribuídos Aula 3

Estratégias de Escalonamento de Processos

Sistemas Operacionais

Sistemas Operacionais

SISTEMAS OPERACIONAIS. 1ª. Lista de Exercícios

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

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

6 ESCALONAMENTO DE CPU

Escalonamento de Processos Estratégias de Escalonamento de Processos

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

Davidson Rodrigo Boccardo

Sistemas Operacionais

Técnicas Avançadas de Programação

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Escalonamento no Unix. Sistemas Operacionais

SOP Sistemas Operacionais Módulo 04: Processo

Sistemas Operacionais

Sistemas Operacionais

Davidson Rodrigo Boccardo

Exclusão Mútua (mutex)

Fundamentos de Sistemas Operacionais

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

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

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

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

Processos. Conceitos Básicos

SISTEMAS OPERACIONAIS

Transcrição:

Sistemas Operacionais Gerência de Processos Dierone C.Foltran Jr. prof.dierone at gmail.com Sistemas Operacionais 1

Introdução Programa executado por apenas um processo é dito de programa sequencial Existe apenas um fluxo de controle Programa concorrente é executado por diversos processos que cooperam entre si para realização de uma tarefa (aplicação) Existem vários fluxos de controle Necessidade de interação para troca de informações (sincronização) Emprego de termos Paralelismo real: só ocorre em máquinas multiprocessadoras Paralelismo aparente (concorrência): máquinas monoprocessadoras Execução simultânea versus estar em estado de execução simultaneamente Sistemas Operacionais 2

Programação concorrente Composta por um conjunto de processos sequenciais que se executam concorrentemente Processos disputam recursos comuns e.g.: variáveis, periféricos, etc... Um processo é dito de cooperante quando é capaz de afetar, ou ser afetado, pela execução de outro processo Sistemas Operacionais 3

Motivação para programação concorrente Aumento de desempenho: Permite a exploração do paralelismo real disponível em máquinas multiprocessadoras Sobreposição de operações de E/S com processamento Facilidade de desenvolvimento de aplicações que possuem um paralelismo intrínseco Sistemas Operacionais 4

Desvantagens da programação concorrente Programação complexa Aos erros comuns se adicionam erros próprios ao modelo Diferenças de velocidade relativas de execução dos processos Aspecto não determinístico Difícil depuração Sistemas Operacionais 5

Especificação da paralelismo Necessidade de especificar o paralelismo definindo: Quantos processos participarão Quem fará o que Dependência entre as tarefas (Grafo) Notação para expressar paralelismo fork/wait (fork/join) parbegin/parend Sistemas Operacionais 6

Fork/wait Processo A Processo B fork B; fork C;... wait C; Processo C Bloqueado wait B; Sistemas Operacionais 7

Parbegin/parend Comandos empregados para definir uma sequência de comandos a serem executados concorrentemente A primitiva parend funciona como um ponto de sincronização (barreira) Processo A Processo B Parbegin Tarefa B; Tarefa C; Parend Processo C Bloqueado Sistemas Operacionais 8

Comentários gerais Primitivas de mais alto nível para descrição do paralelismo do tipo parbegin/parend podem ser traduzidas por pré-compiladores e/ou interpretadores para primitivas de mais baixo nível Processos paralelos podem ser executados em qualquer ordem Duas execuções consecutivas do mesmo programa, com os mesmos dados de entrada, podem gerar resultados diferentes Não é necessariamente um erro Possibilidade de forçar a execução em uma determinada ordem Sistemas Operacionais 9

O problema do compartilhamento de recursos A programação concorrente implica em um compartilhamento de recursos Variáveis compartilhadas são recursos essenciais para a programação concorrente Acessos a recursos compartilhados devem ser feitos de forma a manter um estado coerente e correto do sistema Sistemas Operacionais 10

Exemplo: relação produtor-consumidor (1) Relação produtor-consumidor é uma situação bastante comum em sistemas operacionais Servidor de impressão: Processos usuários produzem impressões Impressões são organizadas em uma fila a partir da qual um processo (consumidor) os lê e envia para a impressora P 1 P 2 P C P n Consumidor Produtores Sistemas Operacionais 11

Exemplo: relação produtor-consumidor (2) P 1 5 4 3 2 1 P d P 2 in out Suposições: Fila de impressão é um buffer circular Existência de um ponteiro (in) que aponta para uma posição onde a impressão é inserida para aguardar o momento de ser efetivamente impressa Existência de um ponteiro (out) que aponta para a impressão que está sendo realizada Sistemas Operacionais 12

Exemplo: relação produtor-consumidor (3) Sequência de operações: P1 vai imprimir; lê valor de in (5); perde processador P2 ganha processador; lê valor de in (5); insere arquivo; atualiza in (6) P1 ganha processador; insere arquivo (5); atualiza in (7) Estado incorreto: Impressão de P1 é perdida Na posição 6 não há uma solicitação válida de impressão P 1 P 2 7 6 5 4 3 2 1 P d in out Sistemas Operacionais 13

O problema da seção crítica Corrida (race condition) Situação que ocorre quando vários processos manipulam o mesmo conjunto de dados concorrentemente e o resultado depende da ordem em que os acessos são feitos Seção crítica: Segmento de código no qual um processo realiza a alteração de um recurso compartilhado Sistemas Operacionais 14

Necessidade da programação concorrente Eliminar corridas Criação de um protocolo para permitir que processos possam cooperar sem afetar a consistência dos dados Controle de acesso a seção crítica: Garantir a exclusão mútua Entry_section Seção crítica Exit_section Sistemas Operacionais 15

Propriedades para exclusão mútua Regra 1 - Exclusão mútua Dois ou mais processos não podem estar simultaneamente em uma seção crítica Regra 2 - Progressão Nenhum processo fora da seção crítica pode bloquear a execução de um outro processo Regra 3 - Espera limitada Nenhum processo deve esperar infinitamente para entrar em uma seção crítica Regra 4 Não fazer considerações sobre o número de processadores, nem de suas velocidades relativas Sistemas Operacionais 16

Obtenção da exclusão mútua Desabilitação de interrupções Variáveis especiais do tipo lock Alternância de execução Sistemas Operacionais 17

Desabilitação de interrupções Não há troca de processos com a ocorrência de interrupções de tempo ou de eventos externos Desvantagens: Poder demais para um usuário Não funciona em máquinas multiprocessadoras (SMP) pois apenas a CPU que realiza a instrução é afetada (violação da regra 4) CLI ;Desliga interrupções Seção crítica STI ;Ativa interrupções Sistemas Operacionais 18

Variáveis do tipo lock Criação de uma variável especial compartilhada que armazena dois estados: Zero: livre 1: ocupado Desvantagem: Apresenta Race conditions Seção crítica While (lock==1); lock=1; lock=0; Sistemas Operacionais 19

Alternância Desvantagem Teste contínuo do valor da variável compartilhada provoca o desperdício do tempo do processador (busy waiting) Viola a regra 2 se a parte não crítica de um processo for muito maior que a do outro while (TRUE) { while (turn!=0); critical_section(); turn=1; non_critical_section(); } while (TRUE) { while (turn!=1); critical_section(); turn=0; non_critical_section(); } Sistemas Operacionais 20

Implementação de mecanismos para exclusão mútua Algorítmica: Combinação de variáveis do tipo lock e alternância (Dekker 1965, Peterson 1981) Primitivas: Mutex Semáforos Monitor Sistemas Operacionais 21

Mutex Variável compartilhada para controle de acesso a seção crítica CPU são projetadas levando-se em conta a possibilidade do uso de múltiplos processos Inclusão de duas instruções assembly para leitura e escrita de posições de memória de forma atômica. CAS: Compare and Store Copia o valor de uma posição de memória para um registrador interno e escreve nela o valor 1 TSL: Test and Set Lock Lê o valor de uma posição de memória e coloca nela um valor não zero Sistemas Operacionais 22

Primitivas lock e unlock O emprego de mutex necessita duas primitivas enter_region: tst register,flag cmp register,0 jnz enter_region ret leave_region: mov flag,0 ret lock(flag); Seção crítica unlock(flag); Sistemas Operacionais 23

Primitivas lock e unlock: problemas (1) Busy waiting (spin lock) Confiar no processo (programador) Fazer o lock e o unlock corretamente Inversão de prioridades Troca de processo lock(m) unlock(m) lock(m) Outros processos Bloqueado fazendo busy wait Sistemas Operacionais 24

Primitivas lock e unlock: problemas (2) Solução: Bloquear o processo ao invés de executar busy waiting Baseado em duas novas primitivas sleep: Bloqueia um processo a espera de uma sinalização wakeup: Sinaliza um processo Sistemas Operacionais 25

Semáforos Mecanismo proposto por Dijkstra (1965) Duas primitivas: P (Proberen, testar) V (Verhogen, incrementar) Semáforo é um tipo abstrato de dados: Um valor inteiro Fila de processo Sistemas Operacionais 26

Implementação de semáforos Primitivas P e V P(s): s.valor = s.valor - 1 Se s.valor < 0 { Bloqueia processo (sleep); Insere processo em S.fila; } V(s): s.valor = s.valor + 1 Se S.valor <=0 { Retira processo de S.fila; Acorda processo (wakeup); } Necessidade de garantir a atomicidade nas operações de incremento (decremento) e teste da variável compartilhada s.valor Uso de mutex Dependendo dos valores assumidos por s.valor Semáforos binários: s.valor = 1 Semáforos contadores: s.valor = n Sistemas Operacionais 27

Semáforos versus mutex Primitivas lock e unlock são necessariamente feitos por um mesmo processo Acesso a seção crítica Primitivas P e V podem ser realizadas por processos diferentes Gerência de recursos Sistemas Operacionais 28

Troca de mensagens Primitivas do tipo mutex e semáforos são baseadas no compartilhamento de variáveis Necessidade do compartilhamento de memória Sistemas distribuídos não existe memória comum Novo paradigma de programação Troca de mensagens Primitivas send e receive RPC (Remote Procedure Call) Sistemas Operacionais 29

Primitivas send e receive (1) Diferentes comportamentos em função da semântica das primitivas send e receive Funcionamento básico: Processo A Processo B Processo A Processo B send(dst, msg) recv(src, msg) Bloqueado recv(src, msg) Bloqueado send(dst, msg) Sistemas Operacionais 30

Primitivas send e receive (2) Bibliotecas de comunicação e.g. sockets, MPI, PVM, etc. Grande variedade de funções Ponto a ponto Em grupo Primitivas para testar status e andamento de uma comunicação Diferentes semânticas Bloqueante Não bloqueante Rendez vous Sistemas Operacionais 31

Remote Procedure Call (1) Base de comunicação do DCE Composto por : núcleo executivo (run time) Interfaces para a geração de aplicações (Interface de programação) Sistemas Operacionais 32

Remote Procedure Call (2) Cliente Servidor return Call S Call S return Stub (cliente) Unpack Pack Unpack Pack Stub (servidor) Recv wait Send Run time Recv Send Linguagem própria para descrever funções (chamada/definição) Compilador (rpcgen) para gerar stubs e ligar com programa aplicativo comunicação é toda gerada pelo run-time de forma transparente Sistemas Operacionais 33

Deadlock Situação na qual um, ou mais processos, fica impedido de prosseguir sua execução devido ao fato de cada um estar aguardando acesso a recursos já alocados por outro processo Sistemas Operacionais 34

Condições para ocorrência de deadlocks (1) Para que ocorra um deadlock quatro condições devem ser satisfeitas simultaneamente: 1. Exclusão mútua: Todo recurso ou está disponível ou está atribuído a um único processo 2. Segura/espera: Os processo que detém um recurso podem solicitar novos recursos Sistemas Operacionais 35

Condições para ocorrência de deadlocks (2) 3. Recurso não preemptível: Um recurso concedido não pode ser retirado de um processo por outro 4. Espera circular: existência de um ciclo de 2 ou mais processos cada um esperando por um recurso já adquirido (em uso) pelo próximo processo no ciclo em uso B solicitação R 1 R 2 solicitação A em uso Sistemas Operacionais 36

Estratégias para tratamento de deadlocks Ignorar Deteção e recuperação Monitoração dos recursos liberados e alocados Eliminação de processos Impedir ocorrência cuidando na alocação de recursos Algoritmo do banqueiro Prevenção (por construção) Evitar a ocorrência de pelo menos uma das quatro condições necessárias Sistemas Operacionais 37

Leituras complementares R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora Bookman, 2010. Capítulo 3 A. Silberchatz, P. Galvin, G. Gagne; Applied Operating System Concepts. Addison-Wesley, 2000, (1 a edição). Capítulo 6 e 7 W. Stallings; Operating Systems. (4 th edition). Prentice Hall, 2001. Capítulo 5 e 6 Sistemas Operacionais 38

Sumário Implementação do conceito de processos e threads Escalonamento Escalonadores não preemptivos Escalonamento Escalonamento preemptivos Sistemas Operacionais 39

Introdução Multiprogramação pressupõe a existência simultânea de vários processos disputando o processador Necessidade de intermediar esta disputa de forma justa Gerência do processador Algoritmos de escalonamento Necessidade de representar um processo Implementação de processos Estruturas de dados Sistemas Operacionais 40

Representação de processo Processo é um programa em execução Áreas na memória para código, dados e pilha Possui uma série de estados (apto, executando, bloqueado, etc.) para representar sua evolução no tempo, implica em: Organizar os processos nos diferentes estados Determinar eventos que realizam a transição entre os estados Determinar quando um processo tem direito a utilizar o processador Necessário manter informações a respeito do processo e.g.: prioridades, localização em memória, estado atual, direitos de acesso, recursos que emprega, etc. Sistemas Operacionais 41

Bloco descritor de processo Abstração de processo é implementado através de uma estrutura de dados Bloco descritor de processos (Process Control Block - PCB) Informações normalmente presentes em um descritor de processo Prioridade Localização e tamanho na memória principal Identificação de arquivos abertos Informações de contabilidade (tempo CPU, espaço de memória, etc.) Estado do processador (apto, executando, bloqueando, etc.) Contexto de execução Apontadores para encadeamento dos próprios descritores de processo etc. Sistemas Operacionais 42

Os processos e as filas Um processo sempre faz parte de alguma fila Geralmente a própria estrutura de descritores de processos são empregadas como elementos dessas filas: Fila de livres livres Aptos 0 4 Bloqueado Número fixo (máximo) de processos 1 2 3 Alocação dinâmica Fila de aptos Executando 5 Fila de bloqueados Eventos realizam transição de uma fila à outra Sistemas Operacionais 43

Exemplo de bloco descritor de processos (1) Estrutura de dados representado bloco descritor de processo struct desc_proc{ char estado_atual; int prioridade; unsigned inicio_memoria; unsigned tamanho_mem; struct arquivos arquivos_abertos[20]; unsigned tempo_cpu; unsigned proc_pc; unsigned proc_sp; unsigned proc_acc; unsigned proc_rx; struct desc_proc *proximo; } struct desc_proc tab_desc[max_process]; Sistemas Operacionais 44

Exemplo de bloco descritor de processos (2) Estruturas de filas e inicialização struct desc_proc *desc_livre; struct desc_proc *espera_cpu; struct desc_proc *usando_cpu; struct desc_proc *bloqueados; /* Inicialização das estruturas de controle */ for (i=0; i < MAX_PROCESS; i++) tab_desc[i].prox = &tab_desc[i+1]; tab_desc[i].prox = NULL; desc_livre = &tab_desc[0]; espera_cpu= NULL; usando_cpu= NULL; bloqueado = NULL; Sistemas Operacionais 45

Tarefas típicas no PCB durante o ciclo de vida Criação Alocação de áreas de memória para código, dados e pilha e de estruturas de dados do sistema operacional Inicialização do descritor de processo e inserção em filas do sistema Execução Realizam as instruções da área de código Interação com sistema operacional via chamadas de sistema Atualização do bloco descritor de processo Retratar estados e recursos que evoluem dinamicamente com a execução Suscetível ao acionamento do escalonador/dispatcher em resposta a eventos Término Liberação de recursos e estruturas de dados utilizadas Sistemas Operacionais 46

O modelo de processo Processo é representado por: Espaço de endereçamento: área p/ armazenamento da imagem do processo Estruturas internas do sistema (tabelas internas, áreas de memória, etc.) Mantidos no descritor de processos Contexto de execução (pilha, programa, dados, etc...) Processo Espaço de usuário SP Pilha PC Código Dados Espaço de sistema Dados Pilha Sistemas Operacionais 47

Exemplo: modelo de processo Unix (linux) Área dados (sisop) 0xFFFFFFFF Stack Pointer (SP) Pilha 4 Gbytes Heap Program Counter (PC) BSS Data Texto Dados não inicializados Dados inicializados Código 0x0000000 Sistemas Operacionais 48

Vários processos Um fluxo de controle por processo (thread) Troca de processo implica em atualizar estruturas de dados internas do sistema operacional e.g.: contexto, espaço de endereçamento, etc... Processo 1 Processo n Espaço de usuário SP Pilha PC Código Dados... SP Pilha PC Código Dados Espaço de sistema Dados Pilha Dados Pilha Sistemas Operacionais 49

Vários fluxos em um único processo Um fluxo de instrução é implementado através do contador de programa (PC) e de uma pilha (SP) Estruturas comuns compartilhadas Código Dados Descritor de processo Conceito de thread Espaço de usuário Espaço de sistema SP 1 Processo 1 Pilha PC 2 SP 2 PC 1 SP 3 PC3 Código Dados Pilha Dados Sistemas Operacionais 50

Multiprogramação pesada Custos de gerenciamento do modelo de processos Criação do processo Troca de contextos Esquemas de proteção, memória virtual, etc. Custos são fator limitante na interação de processos Unidade de manipulação é o processo (arquivo) Mecanismos de IPC (Inter Process Communications) necessitam tratamento de estruturas complexas que representam o processo e sua propriedades Solução Aliviar os custos, ou seja, reduzir o peso das estruturas envolvidas Sistemas Operacionais 51

Multiprogramação leve Fornecido pela abstração de um fluxo de execução (thread) Basicamente o conceito de processo Unidade de interação passa a ser função Contexto de uma thread Registradores (pilha, apontador de programa, registradores de uso geral) Comunicação através do compartilhamento direto da área de dados Sistemas Operacionais 52

Implementação de threads Threads são implementadas através de estruturas de dados similares ao descritor de processo Descritor de threads Menos complexa (leve) Podem ser implementadas em dois níveis diferentes: Espaço de usuário Espaço de sistema Sistemas Operacionais 53

Modelos de processos single threaded e multithreaded Single-Threaded Multithreaded Thread Thread Thread Process Control Block User Stack Thread Control Block Thread Control Block Thread Control Block User Address Space Kernel Stack Process Control Block User Stack User Stack User Stack User Address Space Kernel Stack Kernel Stack Kernel Stack Sistemas Operacionais 54

Modelo N:1 Threads a nível de usuário User level threads ou ainda process scope Todas as tarefas de gerenciamento de threads são feitas a nível da aplicação Threads são implementadas por uma biblioteca que é ligada ao programa Interface de programação (API) para funções relacionadas com threads e.g.: criação, sincronismo, término, etc. O sistema operacional não enxerga a presença das threads A troca de contexto entre threads é feita em modo usuário pelo escalonador embutido na biblioteca Não necessita privilégios especiais Escalonamento depende da implementação Sistemas Operacionais 55

Implementação modelo N:1 PC 1 SP 1 PC 2 SP 2 SP Processo Pilha PC Código Dados Escalonador biblioteca Espaço de usuário PC n SP n Biblioteca CPU virtual Espaço de sistema Dados Pilha Escalonador sistema operacional CPU Sistemas Operacionais 56

Vantagens e desvantagens Vantagens: Sistema operacional divide o tempo do processador entre os processos «pesados» e, a biblioteca de threads divide o tempo do processo entre as threads Leve: sem interação/intervenção do sistema operacional Desvantagens: Uma thread que realiza uma chamada de sistema bloqueante leve ao bloqueio de todo o processo e.g.: operaçoes de entrada/saída Não explora paralelismo em máquinas multiprocessadoras Sistemas Operacionais 57

Modelo 1:1 Threads a nível do sistema kernel level threads ou ainda system scope Resolver desvantagens do modelo N:1 O sistema operacional enxerga as threads Sistema operacional mantém informações sobre processos e sobre threads Troca de contexto necessita a intervenção do sistema operacional O conceito de threads é considerado na implementação do sistema operacional Sistemas Operacionais 58

Implementação modelo 1:1 Espaço de usuário PC 1 SP 1 PC 2 SP 2 PC n SP n SP Processo Pilha PC Código Dados CPU virtual CPU virtual CPU virtual Espaço de sistema Dados Pilha Escalonador sistema operacional CPU Sistemas Operacionais 59

Vantagens e desvantagens Vantagens: Explora o paralelismo de máquinas multiprocessadoras (SMP) Facilita o recobrimento de operações de entrada/saída por cálculos Desvantagens: Implementação mais pesada que o modelo N:1 Sistemas Operacionais 60

Modelo M:N Abordagem que combina os modelos N:1 e 1:1 Oferece dois níveis de escalonamento Nível usuário: threads sobre unidade de escalonamento Nível sistema: unidades de escalonamento sobre processador Dificuldade é parametrizar M e N Sistemas Operacionais 61

Implementação modelo M:N PC 1 SP 1 PC 2 SP 2 SP Processo Pilha PC Código Dados Escalonador biblioteca Espaço de usuário PC n SP n biblioteca CPU virtual CPU virtual Espaço de sistema Dados Pilha Escalonador sistema operacional CPU Sistemas Operacionais 62

Porque utilizar threads? Permitir a exploração do paralelismo real oferecido por máquinas multiprocessadores (modelo M:N ou 1:1) Aumentar número de atividades executadas por unidade de tempo (throughput) Diminuir tempo de resposta Possibilidade de associar threads a dispositivos de entrada/saída Sobrepor operações de cálculo com operações de entrada e saída Sistemas Operacionais 63

Vantagens de multithreading Tempo de criação/destruição de threads é inferior que tempo de criação/destruição de um processo Chaveamento de contexto entre threads é mais rápido que tempo de chaveamento entre processos Como threads compartilham o descritor do processo que as porta, elas dividem o mesmo espaço de endereçamento, o que permite a comunicação por memória compartilhada sem interação com o núcleo Sistemas Operacionais 64

Leituras complementares R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora Bookman, 2010. Capítulo 4. A. Silberchatz, P. Galvin; Operating System Concepts. (4 th edition). Addison-Wesley, 1994. Capítulo 4 Sistemas Operacionais 65

Sumário Implementação do conceito de processos e threads Escalonamento Escalonadores não -preemptivos Escalonamento Escalonamento preemptivos Sistemas Operacionais 66

Escalonamento O escalonador é a entidade do sistema operacional responsável por selecionar um processo apto para executar no processador O objetivo é dividir o tempo do processador de forma justa entre os processos aptos a executar Típico de sistemas multiprogramados: batch, time-sharing, multiprogramado ou tempo real Requisitos e restrições diferentes em relação a utilização da CPU Duas partes: Escalonador: política de seleção Dispatcher: efetua a troca de contexto Sistemas Operacionais 67

Objetivos do escalonamento Maximizar a utilização do processador Maximizar a produção do sistema (throughput) Número de processos executados por unidade de tempo Minimizar o tempo de execução (turnaround) Tempo total para executar um determinado processo Minimizar o tempo de espera Tempo que um processo permance na lista de aptos Minimizar o tempo de resposta Tempo decorrido entre uma requisição e a sua realização Sistemas Operacionais 68

Situações típicas para execução do escalonador Dependem se o escalonador é preemptivo ou não, se considera prioridades ou não, etc... Sempre que a CPU estiver livre e houver processos aptos a executar Criação e término de processos Um processo de mais alta prioridade ficar apto a executar Interrupção de tempo Processo executou por um período de tempo máximo permitido Interrupção de dispositivos de entrada e saída Interrupção por falta de página (segmento) em memória Endereço acessado não está carregado na memória (memória virtual) Interrupção por erros Sistemas Operacionais 69

Eventos de transição de estados Criação Admissão Interrupção por tempo ou voluntária Término Destruição Ocorrência de evento (interrupção) Apto Seleção Bloqueado Executando Sincronização ou requisição de E/S Sistemas Operacionais 70

Chaveamento de contexto (dispatcher) Processo 0 Processo 1 Salva estado PCB 0 Apto Restaura estado PCB 1 Apto Salva estado PCB 1 Restaura estado PCB 0 Apto PCB: Process Control Block Sistemas Operacionais 71

Níveis de escalonamento Longo prazo Médio prazo Curto prazo Sistemas Operacionais 72

Escalonador longo prazo Executado quando um novo processo é criado Determina quando um processo novo passa a ser considerado no sistema, isto é, quando após sua criação ele passa a ser apto Controle de admissão Controla o grau de multiprogramação do sistema Quanto maior o número de processos ativos, menor a porcentagem de tempo de uso do processador por processo Sistemas Operacionais 73

Escalonador médio prazo Associado a gerência de memória Participa do mecanismo de swapping Suporte adicional a multiprogramação Grau de multiprogramação efetiva (diferencia aptos dos aptossuspensos) Sistemas Operacionais 74

Escalonador de curto prazo Mais importante Determina qual processo apto deverá utilizar o processador Executado sempre que ocorre eventos importantes: Interrupção de relógio Interrupção de entrada/saída Chamadas de sistemas Sinais (interrupção software) Sistemas Operacionais 75

Diagrama de escalonamento Processos Escalonador de longo prazo Usuários interativos Fila de aptos Escalonador de médio prazo Fila de suspensos (apto) Interrupção de tempo Escalonador curto prazo CPU Término Filas de suspensos (bloqueado) Evento Fila de bloqueados Espera por evento Sistemas Operacionais 76

Tipos de escalonador Um vez escalonado, o processo utiliza o processador até que: Não preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Interrupção de relógio Processo de mais alta prioridade esteja pronto para executar Sistemas Operacionais 77

Algoritmos de escalonamento (1) Algoritmo de escalonamento seleciona qual processo deve executar em um determinado instante de tempo Existem vários algoritmos para atingir os objetivos do escalonamento Os algoritmos buscam: Obter bons tempos médios invés de maximizar ou minimizar um determinado critério Privilegiar a variância em relação a tempos médios Sistemas Operacionais 78

Algoritmos de escalonamento (2) 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 preemptivos Round robin (circular) Baseado em prioridades Existem outros algoritmos de escalonamento High Response Ratio Next (HRRN) Shortest Remaining Time (SRT) etc... Sistemas Operacionais 79

FIFO - First In First Out (1) First-Come, First-Served (FCFS) Simples de implementar Fila Funcionamento: Processos que se tornam aptos são inseridos no final da fila Processo que está no início da fila é o próximo a executar Processo executa até que: Libere explicitamente o processador Realize uma chamada de sistema (bloqueado) Termine sua execução Sistemas Operacionais 80

FIFO - First In First Out (2) Desvantagem: Prejudica processos I/O bound Tempo médio de espera na fila de execução: Ordem A-B-C-D = (0 + 12 + 20 + 35 ) / 4 = 16.75 u.t. Ordem D-A-B-C = (0 + 5 + 17 + 25 ) / 4 = 11.7 u.t. Processo A B C D Tempo 12 8 15 5 A B C D 0 12 20 35 40 Sistemas Operacionais 81

SJF - Shortest Job First (1) Originário do fato que o menor tempo de médio é obtido quando se executa primeiro os processos de menor ciclo de processador (I/O bound) Processo A B C D Tempo 12 8 15 5 A B C D 0 5 13 25 40 Tempo médio: (0 + 5 + 13 + 25)/4 = 10.75 u.t Sistemas Operacionais 82

SJF - Shortest Job First (2) Algoritmo ótimo, isto é, fornece o menor tempo médio de espera para um conjunto de processos Processos I/O bound são favorecidos Dificuldade é determinar o tempo do próximo ciclo de CPU de cada processo, porém: Pode ser empregado em processos batch (long term scheduler) Prever o futuro com base no passado Sistemas Operacionais 83

Prevendo o futuro... (1) Pode ser feito utilizando os tempos de ciclos já passados e realizando uma média exponencial 1. 2. t n n 1 tempo do enésimo ciclo de CPU valor previsto para o próximo ciclo de CPU 3. armazena 4., 0 1 5. Define - se : a informação dos ciclos passados (n - 1) 1. n 1 tn n Fator tem o efeito de considerar, de forma ponderada, os ciclos anteriores de processador Sistemas Operacionais 84

Prevendo o futuro... (2) Não considera o último ciclo de processador, só o passado ( =0) n+1 = n Considera apenas o último ciclo de processador ( = 1) n+1 = t n Tipicamente se emprega =0.5 Tem o efeito de considerar o mesmo peso para a história atual e a história passada n+1 = t n +(1 - ) t n -1 +... +(1 - ) j t n-j + +(1 - ) n+1 0 Sistemas Operacionais 85

Exemplo de previsão do futuro Ciclo de cpu: Real: 6 4 6 4 13 13 13 Previsto: 10 8 6 6 5 9 11 12 Parâmetros: =0.5 0 =10 14 12 10 8 6 Real Previsto 4 2 0 0 1 2 3 4 5 6 7 Sistemas Operacionais 86

Leituras complementares R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora Sagra-Luzzato, 2001. Capítulo 4 A. Silberchatz, P. Galvin; Operating System Concepts. (4 th edition). Addison-Wesley, 1994. Capítulo 4, 5 e 6 Sistemas Operacionais 87

Sumário Implementação do conceito de processos e threads Escalonamento Escalonadores não -preemptivos Escalonamento Escalonamento preemptivos Sistemas Operacionais 88

Tipos de escalonador (lembrando...) Um vez escalonado, o processo utiliza o processador até que: Não preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Interrupção de relógio Processo de mais alta prioridade esteja pronto para executar Sistemas Operacionais 89

Eventos de transição de estados Criação Admissão Interrupção por tempo ou prioridade Término Destruição Ocorrência de evento (interrupção) Apto Seleção Bloqueado Executando Sincronização ou requisição de E/S Sistemas Operacionais 90

Escalonadores preemptivos Por interrupção de tempo Round robin (circular) Por prioridades Sistemas Operacionais 91

RR - Round Robin (1) Similar ao algoritmo FIFO, só que: Cada processo recebe um tempo limite máximo (time-slice, quantum) para executar um ciclo de processador Fila de processos aptos é uma fila circular Necessidade de um relógio para delimitar as fatias de tempo Interrupção de tempo A B C D 0 3 6 9 12 15 18 23 28 34 40 Sistemas Operacionais 92

RR - Round Robin (2) Por ser preemptivo, um processo perde o processador quando: Libera explicitamente o processador (yield) Realize uma chamada de sistema (bloqueado) Termina sua execução Quando sua fatia de tempo é esgotada Se quantum obtém-se o comportamento de um escalonador FIFO Sistemas Operacionais 93

Problemas com o Round Robin Problema 1: Dimensionamento do quantum Compromisso entre overhead e tempo de resposta em função do número de usuários (1/k na presença de k usuários) Compromisso entre tempo de chaveamento e tempo do ciclo de processador (quantum) Problema 2: Processos I/O bound são prejudicados Esperam da mesma forma que processos CPU bound porém muito provavelmente não utilizam todo o seu quantum Solução: Prioridades: Associar prioridades mais altas aos processos I/O bound para compensar o tempo gasto no estado de espera (apto) Sistemas Operacionais 94

Escalonamento com prioridades Sempre que um processo de maior prioridade que o processo atualmente em execução entrar no estado apto deve ocorrer uma preempção A existência de prioridades pressupõem a preempção É possível haver prioridade não-preemptiva Escalonador deve sempre selecionar o processo de mais alta prioridade segundo uma política: Round-Robin FIFO (FCFS) SJF (SPN) Sistemas Operacionais 95

Implementação de escalonador com prioridades Múltiplas filas associadas ao estado apto Cada fila uma prioridade Pode ter sua própria política de escalonamento (FIFO, SJF, RR) Prioridade 0 Fila apto 0 Término Dispatch CPU Fila apto 1 Prioridade 1 Fila apto n Prioridade n Preempção Fila de bloqueados Espera por evento Evento Sistemas Operacionais 96

Exemplo: pthreads A política de escalonamento FIFO com prioridade considera: Quando um processo em execução é preemptado ele é inserido no ínicio de sua fila de prioridade Quando um processo bloqueado passa a apto ele é inserido no final da fila de sua prioridade Quando um processo troca de prioridade ele é inserido no final da fila de sua nova prioridade Quando um processo em execução passa a vez para um outro processo ele é inserido no final da fila de sua prioridade Sistemas Operacionais 97

Como definir a prioridade de um processo? Prioridade estática: Um processo é criado com uma determinada prioridade e esta prioridade é mantida durante todo o tempo de vida do processo Prioridade dinâmica: Prioridade do processo é ajustada de acordo com o estado de execução do processo e/ou do sistema e.g; ajustar a prioridade em função da fração do quantum que foi realmente utilizada pelo processo: q = 100 ms Processo A utilizou 2ms nova prioridade = 1/0.02 = 50 Processo B utilizou 50ms nova prioridade = 1/0.5 = 2 Sistemas Operacionais 98

Problemas com prioridades Um processo de baixa prioridade pode não ser executado Postergação indefinida (starvation) Processo com prioridade estática pode ficar mal classificado e ser penalizado ou favorecido em relação aos demais Típico de processos que durante sua execução trocam de padrão de comportamento (CPU bound a I/O bound e vice-versa) Solução: Múltiplas filas com realimentação Sistemas Operacionais 99

Múltiplas filas com realimentação Baseado em prioridades dinâmicas Em função do tempo de uso da CPU a prioridade do processo aumenta e diminui Fila apto 0 Dispatch CPU Término Sistema de envelhecimento (agging) evita postergação indefinida Fila apto 1 Fila apto n Possibilidade de trocar de fila Preempção Fila de bloqueados Espera por evento Evento Sistemas Operacionais 100

Estudo de caso: escalonamento UNIX (1) Múltiplas filas com realimentação empregando round robin em cada uma das filas Prioridades são re-avaliadas uma vez por 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 Sistemas Operacionais 101

Escalonamento UNIX (1) Prioridades recebem valores entre 0 e 127 (menor o valor númerico, maior a prioridade) 0-49: processos do kernel 50-127: processo de usuário Ordem decrescente de prioridades Swapper Controle de dispositivos de entrada e saída orientados a bloco Manipulação de arquivos Controle de dispositivos de entrada e saída orientados a caractere Processos de usuário Sistemas Operacionais 102

Escalonamento UNIX (2) Cálculo de prioridade de processos de usuário: Fator nice: valor variando entre 0 (mais prioritário) a 39 (menos prioritário), sendo 20 o valor default Uso recente do processador (p_cpu ) decay 2 load _ average 2 load _ average 1 Onde: p _ usrpri PUSER p _ cpu decay 4 2 p _ nice load_average é o número médio de processos aptos no último segundo PUSER é valor de base de prioridade para usuários (50) Sistemas Operacionais 103

Estudo de caso: escalonamento Linux Duas classes em função do tipo de processos (threads) Processos interativos e batch Processos de tempo real Políticas de escalonamento do linux (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 prioridades dinâmicas (timesharing) Processos interativos e batch Sistemas Operacionais 104

Escalonamento linux (tempo real) Linux implementa dois tipos de prioridade Estática: exclusivamente processos de tempo real Dinâmica: processos interativos e batch Prioridade é definida pelo usuário e não é modificada pelo escalonador Somente usuários com privilégios especiais Seleciona sempre processos de mais prioridade para executar Executa segundo a política selecionada: SCHED_FIFO ou SCHED_RR Processo em tempo real tem preferência (prioridade) sobre processos interativos e batch Sistemas Operacionais 105

Escalonamento linux (timesharing) Baseado no uso de créditos e prioridade Sistema de créditos: Cada processo executa um certo número de créditos O processo com maior crédito é o selecionado Cada interrupção de tempo o processo em execução perde um crédito Processo que atinge zero créditos é suspenso (escalonador médio prazo) Se no estado apto não existir processos com créditos é realizado uma redistribuição de créditos para todos os processos (qualquer estado) Créditos Créditos 2 prioridade Sistemas Operacionais 106

Estudo de caso: escalonamento windows 2000 Unidade de escalonamento é a thread Escalonador preemptivo com prioridades Prioridades organizadas em duas classes: Tempo real: prioridade estática (níveis 16-31) Variável: prioridade dinâmica (níveis 0-15) Cada classe possui 16 níveis de prioridades Cada nível é implementado por uma fila em uma política round-robin Múltiplas filas: classe de tempo real Múltiplas filas com realimentação: classe de tempo variável Threads da classe tempo real tem precedência sobre as da classe variável Sistemas Operacionais 107

Escalonamento windows 2000 (classe variável) Dois parâmetros definem a prioridade de uma thread: Valor de prioridade de base do processo Prioridade inicial que indica sua prioridade relativa dentro do processo Prioridade da thread varia de acordo com uso do processador Preemptada por esgotar o quantum: prioridade reduzida Preemptada por operação de E/S: prioridade aumentada Nunca assume valor inferior a sua prioridade de base, nem superior a 15 Fator adicional em máquina multiprocessadoras: afinidade! Tentativa de escalonar uma thread no processador que ela executou mais recentemente. Princípio: reaproveitamento de dados na memória cache Sistemas Operacionais 108

Escalonamento não preemptivo com prioridades SJF é um forma de priorizar processos A prioridade é o inverso do próximo tempo previsto para ciclo de CPU Processos de igual prioridade são executados de acordo com uma política FIFO Problema de postergação indefinida (starvation) Processo de baixa prioridade não é alocado a CPU por sempre existir um processo de mais alta prioridade a ser executado Solução: Envelhecimento O conceito de prioridade é mais consistente com preempção Processo de maior prioridade interrompe a execução de um menos prioritário Sistemas Operacionais 109

Leituras complementares R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora Sagra-Luzzato, 2001. Capítulo 4, Capítulo 9 (seção 9.4), Capítulo 10 (seção10.4) A. Silberchatz, P. Galvin; Operating System Concepts. (4 th edition) Addison-Wesley, 1994. Capítulo 5 A. Silberchatz, P. Galvin, G. Gane; Applied Operating System Concepts. (1 st edition). Addison-Wesley, 2000. Capítulo 4, 5 e 6 W. Stallings; Operating Systems. (4 th edition). Prentice Hall, 2001. Capítulo 9 Sistemas Operacionais 110