Capítulo 2 Processos e Threads Prof. Fernando Freitas



Documentos relacionados
Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo

Programação Concorrente Processos e Threads

Processos e Threads (partes I e II)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

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

Revisão Ultima aula [1/2]

Sistemas Operacionais Processos e Threads

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

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Gerência de Processador

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

Sistemas Operacionais

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

Sistemas Operacionais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

Sistemas Operacionais

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

8 Threads. 8.1 Introdução

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

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 Distribuídos

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso

Sistema Operacional. Prof. Leonardo Barreto Campos 1

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

03 GERÊNCIA DO PROCESSADOR

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 DISTRIBUÍDOS

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Gerência do Processador

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

1.2 Tipos de Sistemas Operacionais

Arquitetura de Computadores. Sistemas Operacionais IV

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Escalonamento no Linux e no Windows NT/2000/XP

Sistemas Operacionais

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

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

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura Exemplo

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

Sistemas Operacionais. Prof. André Y. Kusumoto

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

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS

Tipos de sistemas operacionais

Processos. Adão de Melo Neto

Sistemas Operacionais

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

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Sistemas Operacionais

ESTUDO DE CASO WINDOWS VISTA

4 Estrutura do Sistema Operacional Kernel

Gerenciamento de memória

Organização de Computadores 1

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

Introdução aos Sistemas

Introdução à Computação: Sistemas de Computação

Threads. 8 de janeiro de 2015

Organização e Arquitetura de Computadores

Sistemas Distribuídos

Processamento de Dados

Gerência de processos Requisitos fundamentais

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

Arquitetura e Organização de Computadores

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

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

SISTEMAS DISTRIBUÍDOS

Figura 01 Kernel de um Sistema Operacional

Sistemas Operacionais

BC Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento

E/S PROGRAMADA E/S PROGRAMADA E/S USANDO INTERRUPÇÃO

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

Sistemas distribuídos:comunicação

Everson Scherrer Borges João Paulo de Brito Gonçalves

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais

Processos Prof. João Paulo de Brito Gonçalves

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

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

Transcrição:

slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br

slide 2 Processos Computadores modernos Várias tarefas ao mesmo tempo Cada instante um programa Cada segundo vários programas Pseudoparalelismo

slide 3 O modelo de processo

slide 4 O modelo de processo Multiprogramação Troca rápidas Processos Não possui taxa uniforme Não possui taxa reproduzível Diferença processo x programa Fabricação de um bolo

slide 5 Criação de processos Eventos que causam a criação de processos: Inicialização de sistema. Execução de uma chamada de sistema de criação de processo por um processo em execução. Requisição do usuário para criar um novo processo. Inicialização de uma tarefa em lotes. Linux (fork), Windows (CreateProcess) Espaços de endereçamento iguais (Linux) Espaços de endereçamento diferentes (Windows)

slide 6 Término de processos Eventos que causam o término de um processo: Saída normal (voluntária). Saída por erro (voluntária). Erro fatal (involuntário). Cancelamento por outro processo (involuntário).

slide 7 Hierarquia de processos Pai cria um processo filho, processo filho pode criar seu próprio processo Formam uma hierarquia UNIX chama isso de grupo de processos Windows não possui o conceito de hierarquia de processos Todos os processos são criados iguais

slide 8 Estados de processos

slide 9 Estados de processos - Escalonamento

slide 10 Implementação de processos

slide 11 Implementação de processos

slide 12 Modelando a multiprogramação

slide 13 Exercícios 1. O que é pseudoparalelismo? 2. Podemos criar programas baseados somente no critério tempo? Justifique. 3. Cite os eventos que causam a criação de processos. 4. Cite os eventos que causam o término de processos. 5. Quais os estados de um processo? Comente.

slide 14 Vantagens: Uso do thread Compartilham espaço de endereçamento e dados São criadas e destruídas de forma mais rápida (até 100x) Permitem que atividades se sobreponham se houver muita E/S Muito úteis em sistemas com múltiplas CPU s Tornam possível manter a idéia de processos sequenciais e mesmo assim conseguem obter paralelismo

slide 15 Uso do thread Formatação do texto

slide 16 Uso do thread

slide 17 Uso do thread

slide 18 Uso do thread

slide 19 O modelo de thread clássico

slide 20 O modelo de thread clássico Multithread = Múltiplos threads por processo Threads distintos em um processo não são tão independentes quanto processos distintos Não há proteção entre threads Impossível Não é necessário Devem cooperar e não competir Cada thread tem sua pilha que armazena rotinas chamadas que ainda não retornaram

slide 21 O modelo de thread clássico

slide 22 O modelo de thread clássico

slide 23 O modelo de thread clássico Threads devem ser corteses Complicações Chamadas fork() alocação extra de memória Threads devem ser pensadas e projetadas com cuidado para funcionarem corretamente

slide 24 Pthreads = Padrão de threads definidos pelo padrão IEEE 1003.1c Threads POSIX

slide 25 Threads POSIX

slide 26 Exercícios 1. Quais as vantagens de utilizarmos threads? 2. O que são processos multithreads? Cite um exemplo. 3. Porque não há proteção entre threads? 4. O que são Pthreads?

slide 27 Espaço do usuário Implementando threads Pode ser implementado em SO que não suporte thread Cada processo tem sua própria tabela de threads Chaveamento mais rápido não envolve núcleo Vantagens Próprio algoritmo de escalonamento Desvantagem Falta de página bloqueia processo inteiro SO não sabe sobre thread

slide 28 Espaço do núcleo Implementando threads Única tabela de threads Núcleo pode executar uma nova thread quando a thread em execução for bloqueada Alto custo de criação e destruição de threads reciclagem.

slide 29 Implementando threads no espaço do usuário e no espaço do núcleo

slide 30 Implementações híbridas

slide 31 Ativações do Escalonador Objetivo imitar a funcionalidade dos threads de núcleo ganha desempenho de threads de usuário Evita transições usuário/núcleo desnecessárias Núcleo atribui processadores virtuais para cada processo deixa o sistema supervisor alocar threads para processadores Problema: Baseia-se fundamentalmente nos upcalls - o núcleo (camada inferior) chamando procedimentos no espaço do usuário (camada superior)

slide 32 Threads pop-up Chegada de uma mensagem = Criação de um novo thread para lidar com a mensagem Conhecido como thread pop-up Não possui história = criados rapidamente Vantagem: Latência menor entre chegada da mensagem e início do processamento

slide 33 Threads pop-up

slide 34 Convertendo o código monothread em código multithread Processo complicado. Problemas: Variáveis globais a um thread específico. Solução: Proibir o uso de variáveis globais Cada thread possui sua própria variável global privada Linguagens não possui declarações de variáveis intermediárias. Rotinas de bibliotecas não são reentrantes. Solução: Bit de proteção = elimina grande parte do paralelismo Tratamento de sinais Núcleo não sabe sobre threads = não pode tratar sinais corretamente Gerenciamento de pilha Núcleo não conhece threads = não consegue controlar transbordo de pilha

slide 35 Convertendo o código monothread em código multithread

slide 36 Convertendo o código monothread em código multithread

slide 37 Exercícios 1. Cite as vantagens e desvantagens de se implementar threads no espaço do usuário. 2. Cite as vantagens e desvantagens de se implementar threads no núcleo. 3. O que são ativações do escalonador? 4. O que são threads pop-up? 5. Cite duas dificuldades para converter códigos monothreads em multithreads.

slide 38 Condições de corrida OBS: Depuração de código pode ser inútil para detectar condições de corrida

slide 39 Regiões críticas Condições necessárias para evitar condições de corridas: Dois processos não podem estar simultaneamente dentro de suas regiões críticas. Nada pode ser afirmado sobre a velocidade ou sobre o número de CPUs. Nenhum processo sendo executado fora de sua região crítica pode bloquear outros processos. Nenhum processo deve esperar eternamente para entrar em sua região crítica.

slide 40

slide 41 Exclusão mútua com espera ociosa Propostas para obtenção de exclusão mútua: Desabilitando interrupções. Variáveis do tipo trava. Chaveamento obrigatório. Solução de Peterson. A instrução TSL.

slide 42 Desabilitando Interrupções Não é uma solução adequada pois: Perigoso dar este privilégio a usuários Problema com múltiplos processadores

slide 43 Variáveis do tipo trava Solução apresenta problema de condições de corrida

slide 44 Chaveamento obrigatório Não é uma boa ideia quando temos um processo mais lento envolvido Viola a regra 3

slide 45 Solução de Peterson

slide 46 A instrução TSL

slide 47 A instrução XCHG

slide 48 Espera ociosa Dormir e acordar Desperdício de CPU Pode ter efeitos inesperados Inversão de Prioridade Solução Bloqueio ao invés de espera ociosa

slide 49 O problema produtor-consumidor Problema: Bit de sinal perdido - Pode adormecer eternamente Bit de espera pelo sinal de acordar - Resolve para casos simples

slide 50 Semáforos

slide 51 Mutexes

slide 52 Exercícios 1. Defina condição de corrida. 2. Defina região crítica. 3. Cite e comente 3 soluções para exclusão mútua com espera ociosa. 4. Descreva o funcionamento do chaveamento obrigatório. 5. Descreva o funcionamento da instrução TSL. 6. Qual o problema de se trabalhar com espera ociosa. 7. De forma resumida, diga no que consiste o problema do produtor-consumidor.

slide 53 Mutexes em Pthreads

slide 54 Mutexes em Pthreads

slide 55 Mutexes em Pthreads (Continua)

slide 56 (Continuação) Mutexes em Pthreads

slide 57 Semáforos. Problemas: Cuidado! Controle de bloqueio por conta do programador Erro sutil pode por tudo a perder Monitores Monitores Somente um processo ativo por vez Compilador implemente exclusão mútua Programador precisa apenas converter regiões críticas p/ rotinas do monitor Solução está na introdução de variáveis condicionais (não são contadores)

slide 58 Monitores

slide 59 Monitores (Continua)

slide 60 (Continuação) Monitores

slide 61 Monitores

slide 62 Monitores

slide 63 Monitores

slide 64 Monitores Deixam a programação paralela menos sujeita a erros Problema: Conceito de programação O compilador deve conhecê-lo Semáforos Linguagens não apresenta semáforos Fácil inclusão Conclusão Semáforos x Monitores Semáforos: Nível muito baixo Monitores: Não são úteis Nenhum deles permite troca de informação entre máquinas. Devese buscar outra solução.

slide 65 Troca de mensagens Apresentam muitos problemas complexos e dificuldades de projeto que não ocorrem com semáforos ou monitores. Ex: Distinção entre nova mensagem e retransmissão Evitar ambiguidade em nomes de processos Autenticação (Evitar impostor) Copiar mensagens é mais lento do que realizar operações sobre um semáforo ou monitor Pode utilizar caixas postais ou utilizar a estratégia Rendezvous (Encontro marcado em francês) Bastante utilizada em sistemas de programação paralela.

slide 66 O problema produtor-consumidor com troca de mensagens

slide 67 O problema produtor-consumidor com troca de mensagens

slide 68 Barreiras Nenhum processo pode avançar p/ próxima fase até que todos os processos estejam prontos a fazê-lo Ex. de uso: Problema de Relaxação da física ou da engenharia

slide 69 Escalonamento Sistemas em lote: Escalonamento simples Sistemas multiprogramados: Escalonamento complexo Computadores pessoais Escalonamento não é tão importante. Servidores e estações de trabalho Escalonamento importante Escalonador deve se preocupar com uso eficiente da CPU

slide 70 Comportamento escalonamento-processo Dois tipos: Limitados pela CPU Limitados por E/S Evolução das CPU s Processos tendem a ficar limitados por E/S

slide 71 Comportamento escalonamento-processo

slide 72 Quando escalonar Escalonamento Criação de um novo processo Término de um processo Bloqueio de um processo Interrupção de E/S Algoritmos divididos em duas categorias Preemptivos Não preemptivos

slide 73 Categorias dos algoritimos de escalonamento Em lote. Interativa. Tempo real.

slide 74 Exercícios 1.Como funcionam as variáveis de condição? 2.O que são os monitores? 3.Cite as vantagens e desvantagens dos monitores sobre os semáforos. 4.Quais os principais problemas enfrentados pela troca de mensagem? 5.Porque nos computadores pessoais o escalomanento não é tão importante quanto nos servidores e estações de trabalho? 6.Em qual(is) situação(ões) deve ser tomada a decisão de escalonar um processo?

slide 75 Objetivos dos algoritmos de escalonamento

slide 76 Objetivos dos algoritmos de escalonamento Observações: Melhor ter juntos na memória alguns processos limitados pela CPU e outros por E/S, do que somente um destes tipos. Maior vazão, não significa necessariamente melhor tempo de retorno

slide 77 Escalonamento em sistemas em lotes Primeiro a chegar, primeiro a ser servido Vantagens: Fácil de entender e programar, justo Desvantagem: pode atrasar processos orientados a computação Tarefa mais curta primeiro Todas as tarefas devem estar disponíveis simultaneamente Próximo de menor tempo restante Versão preemptiva do anterior Permite bom desempenho para novas tarefas curtas

slide 78 Tarefa mais curta primeiro Média 14 min Média 11 min

slide 79 Escalonamento em sistemas interativos Escalonamento por chaveamento circular. Escalonamento por prioridades. Filas mútiplas. Próximo processo mais curto. Escalonamento garantido. Escalonamento por loteria. Escalonamento por fração justa.

slide 80 Escalonamento por chaveamento circular

slide 81 Escalonamento por prioridades

slide 82 Escalonamento em sistemas de tempo real Podem ser: Estáticos Decisão é tomada antes de iniciar a execução Dinâmico Decisão é tomada durante a execução

slide 83 Política x Mecanismo Problema O escalonador raramente faz a melhor escolha Solução: Mecanismo de escalonamento no núcleo, mas a política é estabelecida por parâmetros de um processo de usuário

slide 84 Escalonamento de threads (Continua)

slide 85 (Continuação)

slide 86 O problema do jantar dos filósofos Acesse o endereço a seguir para ver um exemplo prático: http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/sincronizacao.html

slide 87

slide 88

slide 89

slide 90

slide 91 O problema dos leitores e escritores

slide 92

slide 93 Exercícios 1. Diferencie vazão e tempo de retorno. 2. Um dos objetivos dos sistemas interativos é a proporcionalidade. O que vem a ser proporcionalidade? 3. O escalonador nem sempre toma as melhores decisões. Como melhorar isto? 4. Diferencie o funcionamento dos algoritmos: menor tempo restante e tarefa mais curta primeiro. 5. Como funciona o algoritmo de escalonamento round-robim. 6. Diferencie escalonamento por prioridade e escalonamento por filas múltiplas. 7. Quais os tipos de escalonamento de threads possíveis? 8. Descreva no que consiste a idéia básica envolvida no problema do jantar dos filósofos