Programação Concorrente. Prof. Hugo Vieira Neto

Documentos relacionados
SISTEMAS EMBARCADOS. Programação Concorrente e CMSIS RTOS. Prof. André Schneider de Oliveira

Programação Concorrente e CMSIS RTOS

SISTEMAS EMBARCADOS. Acesso a recursos compar,lhados. Prof. André Schneider de Oliveira

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

Processos Concorrentes

Sistemas Operacionais

Ferramentas para Programação em Processadores Multi-Core

Comunicação entre processos (2)

Arquitetura de Computadores. Processamento Paralelo

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

Comunicação entre Processos

Programação Concorrente

Programação concorrente (processos e threads)

LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE

Fundamentos de Sistemas Operacionais

Sistemas Operacionais: Sincronização entre processos

SEL-433 Aplicação de Microprocessadores I. Prof: Adilson Gonzaga

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

Sistemas Operacionais. Condição de corrida e Região crítica

Lista de Exercícios de INF1019

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Sincronização e Comunicação

Exclusão Mútua (mutex)

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

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

FCA - Editora de Informática xv

Figura 01 Programa e Processo

14/3/2016. Prof. Evandro L. L. Rodrigues

ENADE 2011 SISTEMAS OPERACIONAIS

Estrutura Básica de um Computador

Sistemas Operacionais. Capítulo 5 Processos

6. Mostre os principais modelos de organização interna de um sistema operacional.

Capítulo 2 Processos e Threads

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)

Sistemas Operacionais. Comunicação entre processos

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Função Fundamental do SO

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Organização de Computadores Aula 05

Fundamentos de Sistemas Operacionais

Paralelismo em Computadores com Tecnologia Multicore

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Modelagem Temporal com UML

SSC510 Arquitetura de Computadores 1ª AULA

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização

Sistemas Operacionais. Prof. André Y. Kusumoto

Computadores e Programação (DCC/UFRJ)

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

Sistemas Operacionais

Organização de Computadores II. Arquiteturas MIMD

Gerenciamento de memória

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Arquitetura e Organização de Computadores

Programação Concorrente e Paralela. Noemi Rodriguez

Modelo de Programação Paralela

William Stallings Arquitetura e Organização de Computadores 8 a Edição

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE DE CONTROLE E A INTERPRETAÇÃO DE INSTRUÇÕES. Prof. Dr. Daniel Caetano

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Sistemas Operacionais

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

TAREFAS GERÊNCIA DE TAREFAS AULA 05 Sistemas Operacionais Gil Eduardo de Andrade

Sistemas Operacionais. Prof. André Y. Kusumoto

ORGANIZAÇÃO DE COMPUTADORES O PROCESSADOR E SEUS COMPONENTES

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Transcrição:

Programação Concorrente Prof. Hugo Vieira Neto

Concorrência Um programa concorrente descreve diversas atividades que ocorrem simultaneamente, de modo diferente de programas comuns, que descrevem apenas uma atividade (ex: função main em linguagem C)

Prog. Sequencial x Prog. Concorrente Analogia indivíduo x equipe Indivíduo: Responsável por todas as tarefas Equipe: Ocorre divisão de tarefas entre vários indivíduos

Vantagens do Trabalho em Equipe Em uma equipe é menos complexo definir o trabalho de cada indivíduo Não há necessidade de um indivíduo mudar de atividade ao longo do tempo Há separação entre atividade e controle de atividade (priorização)

Implementação de Concorrência Sequencial Laço + Interrupções RTOS (Multi-thread) Tarefa 1 Laço Tarefa 1 Int Tarefa 2 Interrupção 1 Tarefa 2 Interrupção 2 Int Tarefa 3 Interrupção 3 Tarefa 3

Desafios Multi-core Sincronização de tarefas Mono-core Preempção de tarefas Compartilhamento de recursos Processador (chaveamento de contexto) Regiões de memória (variáveis) Periféricos

Multi-threading com RTOS Múltiplas linhas de execução P1 P2... Pn Múltiplos processos Memória compartilhada Periféricos compartilhados RTOS Hardware Processador Memória Periféricos

Multi-threading com RTOS RTOS cria processadores virtuais idênticos Registradores e pilha individuais Sistemas multi-core Muito mais processadores virtuais do que núcleos A soma da capacidade de processamento dos processadores virtuais é igual à capacidade de processamento original

Regiões de Memória Programação sequencial Flash RAM CPU CODE HEAP STACK DATA Registradores

Regiões de Memória Programação concorrente com RTOS Flash CPU CODE Registradores RAM RAM RAM HEAP Regs 1... Regs n DATA STACK 1 STACK n

Estado das Tarefas

Efeito ao Longo do Tempo (granularidade grossa)

Efeito ao Longo do Tempo (granularidade fina)

Exemplo de Aplicação com RTOS

Diagrama de Classes/Objetos (UML) Associação Agregação (guarda ponteiro) Composição (guarda mensagem) Obs: direção da seta indica navegabilidade da relação (quem conhece quem, quem pertence a quem); uso de estereótipos (<< >>) e ícones

Diagrama de Classes/Objetos (UML) Fila de mensagens Semáforo Evento Temporizador de software (RTOS) Funções: <<start>>, <<stop>>, <<callback>>

Diagrama de Classes/Objetos (UML) Comentário (ligado por linha tracejada) Comentário Threads (classes/objetos ativos) Nome Atributos Métodos

Diagrama de Classes/Objetos (UML) Objetos passivos Estereótipos comuns <<estereótipo>> Nome Objetos: <<isr>>, <<hw>>, <<function>> Relações: <<rd>>, <<wr>>, <<irq>>, <<start>>, <<stop>>, <<callback>>

Exemplo Utilizar a notação gráfica de diagramas de classe/objetos (UML) para representar uma aplicação que pisca um LED a cada 2 segundos utilizando um temporizador de software Thread T1 (controle do temporizador e do LED) Função de callback para temporização Comunicação: função de callback do temporizador avisa a thread T1 sobre a passagem do tempo por uma fila de mensagens

Acesso a Recursos Compartilhados Acessos múltiplos a recursos compartilhados, sem modificações de estado, podem ocorrer em paralelo sem conflitos Problemas surgem quando acessos a recursos compartilhados modificam o seu estado Acesso concorrente a memória compartilhada Acesso concorrente a periférico compartilhado Problema geral: garantir exclusão mútua

Conceito de Seção Crítica Seção do programa que acessa um ou mais recursos compartilhados Um único processo pode estar nesta seção em determinado instante de tempo Certificar-se de que no máximo um processo pode entrar na sua seção crítica (exclusão mútua)

Maiores Preocupações em Programação Concorrente Exclusão mútua Apenas um processo na seção crítica em determinado instante de tempo Ausência de impasse (deadlock) Se dois ou mais tentarem entrar, ao menos um terá sucesso Ausência de atrasos desnecessários Se não houver outros processos na seção crítica, um processo tentando entrar não deve sofrer atrasos Garantia de entrada

Como Garantir Exclusão Mútua? Soluções Software Semáforos Mensagens Suporte em hardware Processadores virtuais Ciclos RMW (read-modify-write) atômicos* Instruções LD/ST exclusivo (seção 5.7 do livro do Joseph Yiu): utilizadas para ligar e desligar semáforos

Algoritmo de Peterson (Software)

Trem 1 Trilho compartilhado Semáforos Analogia Semáforos em estradas de ferro, que indicam se os trilhos à frente estão livres ou ocupados por outro trem Estado: desligado ou ligado (por tempo suficiente para outro trem parar) Trem 2 Garantem exclusão mútua das seções críticas dos trilhos compartilhados Semáforo

Semáforos (RTOS) Tipos: Binário (sincronização) Um único recurso compartilhado do mesmo tipo (teto de contagem = 1) Contador (sincronização) Múltiplos recursos compartilhados do mesmo tipo (teto de contagem > 1) Mutex (exclusão mútua) Binário, mas somente a tarefa dona (owner) do semáforo pode desligá-lo

Sincronização por Mensagens (RTOS) Métodos Assíncrono Síncrono Síncrono com resposta

Método Assíncrono

Método Síncrono

Método Síncrono com Resposta

Projeto de Software Alto Nível (Arquitetura) Baixo Nível (Detalhado) Estrutural (Estático) Diagramas de Classes/objetos (geral) Diagramas de Classes/objetos (thread por thread) Comportamental (Dinâmico) Diagramas de Estado Diagramas de Sequência Diagramas de Atividades Diagramas de Estados

Projeto de Alto Nível Arquitetura da solução Classes/objetos ativos (threads, interrupções) Classes/objetos passivos (armazenamento) Threads periódicas: associadas a temporizador Temporizador: objeto passivo + callback Semáforos (binário, contador e mutex) Fila de mensagens (inteiros) Fila de eventos (bits)

Projeto de Baixo Nível Detalhamento da solução O que cada tarefa faz? Estruturas de controle Laço infinito com temporização Laço infinito com sincronização por mensagem ou evento Função com final de execução O que cada classe/objeto faz? Diagramas de estado Diagramas de atividade