Utilização de grafo não bloqueante em programação paralela
|
|
- Ian Álvaro Teixeira
- 5 Há anos
- Visualizações:
Transcrição
1 Utilização de grafo não bloqueante em programação paralela Israel Silva Barbara, Guilherme P. Britto Cousin, Rodolfo M. Favaretto, Gerson Geraldo H. Cavalheiro 1 Centro de Desenvolvimento Tecnológico CDTec Universidade Federal de Pelotas UFPel Pelotas, RS Brasil {isbarbara, gpbcousin, rmfavaretto, gerson.cavalheiro,}@inf.ufpel.edu.br Abstract. This paper presents a case study of the usage of atomic structures to implement procedures to handle graphs concurrently in a non-blocking way. The performance of this solution is compared to other two implementations, one based on the use of binary semaphore (mutex) synchronization mechanism and the other based on the use of transactional memories resources. The results shows that our method provide shorter execution times Resumo. Este artigo aborda o uso de estruturas atômicas na implementação de rotinas para manipulação de um grafop de forma concorrente e não bloqueante. A implementação é comparada, em termos de desempenho, com implementações equivalentes utilizando mecanismo de controle de seção crítica baseado em semáforos binários (mutexes) e memórias transacionais. Os resultados obtidos apontam que a solução proposta apresenta resultados de desempenho satisfatórios quando comparada aos demais métodos. 1. Introdução Sendo reflexo da constante evolução de arquiteturas para processamento paralelo, e da consequente necessidade de explorar eficientemente seus recursos, a implementação de software paralelo tem evoluído significativamente. Um dos aspectos que deve ser considerado com vistas a obter desempenho da aplicação é garantir que todos os processadores disposívies estejam ativos a maior parte do tempo possível. A ociosidade de um dos processadores acarreta em uma perda significativa de desempenho uma vez que representa o não atendimento às demandas de processamento da aplicação. Um caso onde o processador pode entrar em estado ocioso é reflexo da sincronização de dados entre diferentes threads concorrentes. Neste caso observa-se geração de sobrecusto para a execução do programa no momento de atender a sincronização requisitada. Mecanismos de controle ao acesso aos dados compartilhado, podem portando, serializar a execução do programa quando não construídos da maneira correta influenciando tempo total de execução. Este trabalho aborda a concepção de um conjunto de rotinas para manipulação de um grafo de forma não bloqueante em um programa multithread, visando a redução do acesso a seção crítica, com a utilização de mecanismos não bloqueante, para o controle de acesso a seção crítica. A utilização das estruturas não bloqueantes são extremamente eficientes para aplicações específicas [Farook and Graham 1998]. 320
2 2. Mecanismos de Controle a seção crítica Para que um programa multithread mantenha a sua consistência, mecanismos de sincronização devem ser utilizados para coordenar acessos a dados compartilhados entre threads. Sincronização também pode ser utilizada para ter controle do fluxo de execução dos threads em algum ponto da execução. A não utilização da sincronização pode gerar uma inconsistência nos dados ao final da execução do programa Exclusão Mútua Exclusão Mútua (mutex), é um tipo especial de semáforo onde somente um thread ter acesso a uma determinada região de memória. Duas operações são possíveis: lock e unlock, para adquirir e liberar o acesso, respectivamente. Caso um thread possua um lock e outro thread tenta acessar a mesma região de memória, o segundo é bloqueado pelo primeiro. Este bloqueio causa um overhead para o programa em função da troca de contexto que ocorre com o thread bloqueado. Existem duas perdas relacionadas à utilização de mutex, a serialização e a troca de contexto. Com o intuito de diminuir os tempos associados às trocas de contexto tem se como opção o spinlock, que é um tipo de mutex no qual o thread, ao invés de fazer uma troca de contexto, executa num laço de repetição onde é checado se o mutex está liberado ou não, este tipo de mutex tem um melhor desempenho quando a seção crítica é pequena, pois quando o método que utiliza spinlock gasta ciclos de processador e se a seção crítica for longa o núcleo ficará inativo ao não executar novas instruções que alterem o estado do programa, o que não é desejável em um contexto multicore. A análise sobre como o thread executa na seção crítica torna a programação com mutex uma tarefa mais complexa, levando em conta que o programador tem que analisar e decidir qual a estratégia é a mais adequada ao problema abordado Algoritmos não bloqueante Recursos de sincronização clássicos, como mutex, foram concebidos em uma realidade na qual abstrações para programação concorrente não se faziam tão necessárias quanto na realidade presente onde imperam arquiteturas baseadas em processadores multicore. A estes recursos clássicos surgem alternativas, graças aos avanços nas arquiteturas e a novos modelos de programação. Mecanismos não bloqueantes são de uma grande complexidade na implementação, e seu emprego requer do programador grandes conhecimentos do compilador e da arquitetura, entretanto se implementados da maneira correta pode gerar um ganho bastante significativo em relação aos demais mecanismos de controle ao acesso a dados compartilhados. Para a implementação deste mecanismos é necessário a utilização de instruções atômicas. Uma instrução atômica é conhecida por ser uma sequência de uma ou mais instruções de máquina que executam sequencialmente sem interrupção. Por padrão, qualquer sequência de duas ou mais instruções não pode ser considerado atômica, já que o sistema operacional pode decidir por preemptar um thread em favor de outro. Para garantir que a operação seja atômica, o programador deve utilizar instruções de alto nível que possam ser resolvidas para uma única instrução de máquina, assim garantindo atomicidade, isto ocorre dado ao fato de que uma única instrução não pode ser interrompida na metade. 321
3 Processadores possuem instruções chamadas primitivas atômicas que podem ser usadas na construção de algoritmos lock-free e wait-free, estas operações podem ser do tipo read-modify-write(rmw), nas quais uma única operação lê o valor da memória para um registrador, opera sobre este e o armazena na memória, ou operações do tipo Load e Store atômica, as operações mais comuns são: Atomic load, faz a leitura em tempo atômico de uma valor da memória para o registrado; Atomic store, faz a escrita de um valor do registrador para a memória; Test-and-set, escreve um valor na memória e retorna o valor anterior; Fetch-and-add, lê um valor para o registrador adiciona um valor e armazena este na memória; Compare-and-swap, lê o valor para a memória e compara com um segundo valor, caso os valores sejam iguais, um terceiro valor é escrito na memória; Assim, para o problema do contador global, temos uma solução onde não precisamos criar uma seção explícita de controle de regiões onde possa ocorrer condições de corrida, basta que as instruções relacionadas as variáveis que fazem alterações no código sejam feitas por operações indivisíveis Memórias transacionais Como alternativa à difícil implementação da seção crítica por meio de mutex e algoritmos não bloqueantes, apresentam-se as memórias transacionais, as quais possuem alto nível de abstração para compartilhamento de dados. Com a crescente percepção de que atrasos imprevisíveis são grande problema em arquiteturas paralelas, argumenta-se que técnicas convencionais para acesso a dados compartilhados por meio de seção crítica é inadequado, dado que este limita paralelismo, aumenta a contenção de memória e faz o sistema ficar vulnerável a falhas do processador e outras anomalias. [Shavit and Touitou 1997] Operações atômicas evitam problemas relacionados com o tratamento convencional de seções críticas como deadlock, inversão de prioridade troca de contexto, ao custo de ser uma solução especializada, e utilizando instruções de baixo nível o que aumenta significativamente a complexidade do uso de tal técnica. Memórias transacionais são uma solução para o uso de técnicas lock-free, trazendo o desempenho e a escalabilidade de operações atômicas, com a mesma facilidade de trabalhar com o modelo clássico mas sem os problemas gerados pelo uso deste. Uma transação consiste em uma sequência de uma ou mais instruções de leitura e escrita à memória executadas no contexto de um thread [Herlihy and Moss 1993]. Uma transação deve satisfazer duas propriedades. (1) Isolamento, transações não observam o estado intermediário de outras transações, assim parecendo que estas executam em serial. (2) Atomicidade, cada transação faz uma sequência de tentativas de escrita na memória compartilhada, quando esta transação é concluída, pode ocorrer um commit em tempo atômico, fazendo com o que as outras thread possam ter visibilidade da sua área de escrita, ou pode ocorrer um abort, onde todas as alterações são descartadas. Um sistema de transação deve controlar os acessos à memória, sendo armazenado, na transação, uma região na memória chamada write-set de forma a manter registro de todas as operações de escrita feitas na transação. Caso ocorra um commit, é realizada uma cópia da área para a memória global em tempo atômico, tipicamente escrevendo 322
4 este buffer na cache. Ocorrendo um abort, a operação é descartada. Leituras também precisam ter um controle sobre as operações feitas na transação, criando um read-set, uma transação que teve sucesso escreve à memória do read-set para os registradores. A solução torna implícito qualquer tratamento relacionado à forma como as operações serão resolvidas na memória, deve ser informado que uma nova transação iniciou com o comando TM_START(0, RW), indicando que uma nova transação começa, o RW sinaliza à transação que esta é uma transação com leitura e escrita, a instrução TM_LOAD(&counter) indica uma leitura da memória para uma variável local onde os dados serão manipulados e que através do TM_STORE(&counter, inc) o valor será armazenado na área write-set. A instrução TM_COMMIT tenta validar a transação. 3. Implementação do grafo não bloqueante A utilização de variáveis atômicas e suas operações se deu, neste trabalho, com a utilização do padrão C++11 que provê acesso à biblioteca <atomic>, para compilar um código que utiliza bibliotecas do padrão C++11, a flag -std=c++11 deve ser adicionada ao compilador. Cada instância e especialização do template std::atomic define um tipo atômico. Objetos do tipo atômico são os únicos livres de condição de corrida. Além das especializações, operações podem ser executadas por estes tipos atômicos. A implementação do grafo utilizando a solução atômica tem como estrutura de dados uma matriz de inteiros atômicos que é a definição de arestas e um vetor de inteiros atômicos que são a representação dos vértices. Entre as operações mencionadas na Seção 2.2, uma das mais importantes é a operação atomic_compare_exchange, geralmente aplicada dentro de um laço de repetição em que o valor atômico é copiado para uma variável local, operações são aplicadas sobre esta variável, e então no final da operação um teste envolvendo atomic_compare_exchange é feito para atualizar o valor para a variável atômica. A estrutura de grafo recebeu uma matriz de adjacências composta de inteiros atômicos e um vetor de inteiros atômicos representando os vértices do grafo. 4. Avaliação de Desempenho Para comparar e analisar os efeitos positivos e negativos do uso de cada solução de controle a seção crítica aplicado em grafos, o experimento feito foi das seguintes operações básicas, inserção e remoção de um vértice, inserção e remoção de uma aresta e incremento e decremento do peso da aresta. O experimento utiliza um mesmo conjunto de dados de entrada, que correspondem às instruções a serem executadas sobre o grafo. Os testes foram realizados em uma máquina com processador Bulldozer FX-8120 com 3.1 Ghz e oito cores físicos, memória RAM de 4GiB. Os testes foram executados trinta vezes para cada instância, as instâncias do experimento podem variar em número de thread e tamanho de grafo, com 2, 4, 6 e 8 para os números de thread e três tamanhos de grafo, 50, 200 e 400, onde foram feitas um conjunto com trinta milhões do operações. Os resultados são apresentados em função do tempo dado número de thread e tamanho do grafo e analisada a escalabilidade das soluções. A solução sequencial não será apresentada pois o problema é essencialmente concorrente logo a solução sequencial não é interessante. 323
5 A Figura 1(a) demonstra o comportamento das ferramentas de controle de memória compartilhada aplicada em um grafo de tamanho 50, onde observa-se comportamentos diferentes entre as três ferramentas, variáveis atômicas conseguem um bom desempenho já com duas threads em comparação as outras soluções e que quanto maior for o nível de paralelismo maior o desempenho. Memórias transacionais alcançam um bom desempenho até 4 threads, onde tem seu desempenho comprometido conforme acréscimo de novas threads. A aplicação de mutex em grafo de tamanho 50 mostrou que o uso desta ferramenta em grafos de tamanho pequeno não apresenta bons resultados, mesmo apresentando locks finos, o desempenho não é considerado satisfatório em comparação as outras soluções. O desempenho com mutex melhora até 4 threads, mas o acréscimo do número de threads em um grafo pequeno gera uma possibilidade cada vez maior de ocorrer conflitos ao acessar o mesmo endereço, causando muitas trocas de contexto e diminuindo o desempenho. O comportamento do experimento quando aplicado a um grafo de tamanho 200 pode ser analisado na figura 1(b),onde a curva que demonstra o desempenho com memórias transacionais (STM) apresenta uma curva mais suave, mutex agora apresentam ganhos significativos quando ocorre de desempenho, já que agora as novas threads realizam tarefas em simultâneo ao não incorrer em tantos conflitos de acesso a mesma seção crítica, uma vez que antes, a inclusão de novas threads tinha como resultado principal acrescentar overhead. O comportamento com operações atômicas não apresenta comportamento significativamente diferente em comparação ao exemplo anterior. Os resultados para grafo de tamanho 400 pode ser observado na Figura 1(c), a solução com mutex agora consegue ter bons ganhos de desempenho em comparação com os experimentos anteriores, mesmo assim a solução com mutex só consegue ter um desempenho melhor quando comparamos 8 threads com mutex com a solução atômica com apenas 2 threads. A solução STM consegue manter um desempenho estável a partir de 4 threads em execução, a solução atômica apresenta o mesmo comparado aos outros experimentos. Como é possível observar nos desempenhos apresentados, as ferramentas apresentam um comportamento padrão com relação aos tempos de execução, com as operações em variáveis atômicas apresentando maior desempenho, seguindo de memórias transacionais em software e por último e pior desempenho mutex. É possível notar também que as ferramentas possuem comportamentos diferentes quando aplicados a cada tamanho de grafo, o qual grafos de tamanho menor tenham uma chance maior de que operações sejam aplicadas a um mesmo endereço, causando assim conflitos no acesso. 5. Conclusão Neste trabalho foi feita uma análise das principais soluções para controle em paralelo de memória compartilhada aplicada a estrutura de dados grafo. A implementação das bibliotecas em paralelo utilizando as ferramentas mutex, operações atômicas e memorias transacionais em software tem como objetivo poder mensurar o tempo que as ferramentas levam para solucionar tarefas específicas. A solução utilizando mutex é a que possui pior desempenho na comparação com as outras ferramentas, aplicações que utilizam mutex em grafo não possuem bom desempenho em grafos de tamanho pequeno, apresentando desempenho pior conforme o número 324
6 (a) Operações sobre um grafo de tamanho 50 (b) Operações sobre um grafo de tamanho 200 (c) Operações sobre um grafo de tamanho 400 Figura 1. Operações aplicadas à grafos de tamanho 50, 200 e 400 de threads vai aumentando. O baixo desempenho em comparação as outras ferramentas abordadas somado com a dificuldade para programar utilizando mutex, principalmente quando deve-se utilizar mutex aninhados, tornam esta solução ultrapassada. A solução com memórias transacionais em software, possui uma interface de programação com alto nível de abstração que tira do programador o controle de sincronização e deixando isto a cargo do sistema de execução. A biblioteca utilizada neste trabalho para utilizar memórias transacionais foi a tinystm, esta mostra ter uma boa performance geral que, em alguns casos, se aproxima da implementação com operações atômicas. A solução com operações atômicas foi implementada com recursos de C++11. Nos experimentos foi mostrado que para conseguir o melhor desempenho utilizando grafo em paralelo a solução atômica é a indicada, com desempenho de até 10 vezes superior em alguns casos quando comparado à solução com mutex. O desempenho alto das operações atômica se da em função dos mecanismos de controle de baixo nível, que dão ao programador controle para extrair o máximo de desempenho. Soluções atômicas trazem bom desempenho quando a aplicação é especializada, para soluções genéricas, uma outra ferramenta deve ser utilizada. Referências Farook, M. and Graham, P. (1998). Managing long linked lists using lock-free techniques. In High Performance Computing Systems and Applications, pages Springer. Herlihy, M. and Moss, J. E. B. (1993). Transactional memory: Architectural support for lock-free data structures. Shavit, N. and Touitou, D. (1997). Software transactional memory. Distributed Computing, 10(2):
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 5: Exclusão Mútua Diego Passos Última Aula Programação Concorrente Programas compostos por mais de um processo ou thread. Pode trazer benefícios: Simplificar o
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.
Leia maisAULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA
Leia maisComunicação entre Processos
Programação Paralela e Distribuída Ordenação e Sincronização Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com http://sites.google.com/site/marceloiury/ Comunicação entre Processos Processos
Leia maisSistemas Distribuídos Aula 5
Sistemas Distribuídos Aula 5 Aula passada Sincronização Race condition Região crítica Locks Algoritmo de Peterson Aula de hoje Atomicidade test-and-set Locks revisitado Semáforos Dois problemas Atomicidade
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:
Leia maisSincronização e Comunicação entre Processos. Adão de Melo Neto
Sincronização e Comunicação entre Processos Adão de Melo Neto 1 INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional.
Leia maisFerramentas para Programação em Processadores Multi-Core
Ferramentas para Programação em Processadores Multi-Core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Introdução Arquiteturas multi-core Ferramentas de programação Prática
Leia maisSistemas Operacionais: Sincronização entre processos
Sistemas Operacionais: Sincronização entre processos Sincronização Programa concorrente Executado por diversos processos Acesso concorrente a dados Paralelismo real x Paralelismo aparente Multiprocessadores:
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução
Leia maisProgramação concorrente (processos e threads)
Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo
Leia maisSistemas Operacionais
Introdução Sistemas Operacionais Sincronização de processos Aula 07 Em sistemas multiprogramados há interação entre processos para comunicação, que pode ser feita via compartilhamento de memória/arquivos
Leia maisConcorrência em Processos
Concorrência em Processos Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS 1 O que fazer com essa apresentação
Leia maisVariância dos Tempos de Resposta
Variância dos Tempos de Resposta Rômulo Silva de Oliveira ebook Kindle, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Introdução Fontes da Variância do Tempo de Resposta Variância
Leia maisUNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES
Tecnologia da informação e comunicação UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES CICLO DE INSTRUÇÕES OU DE EXECUÇÃO Arquitetura de computadores 2 CICLO DE EXECUÇÃO No inicio de cada ciclo de instrução,
Leia maisUniversidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD
Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Arquiteturas MIMD Arquiteturas MIMD As arquiteturas MIMD dividem-se em dois grandes modelos: Arquiteturas MIMD de
Leia maisUnidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica
Unidade 3 Controle de Concorrência Primitivas de Programação Concorrente Clássica Programação Concorrente A abstração de programação concorrente é o estudo de sequênciasde execução intercaladas, de instruções
Leia maisProcessos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend
Concorrência Nos sistemas Monoprogramáveis somente um programa pode estar em execução por vez, permanecendo o processador dedicado a esta única tarefa. Os recursos como memória, processador e dispositivos
Leia maisSistemas Distribuídos
Sistemas Distribuídos Transações atômicas Conteúdo O modelo transacional Armazenamento estável Primitivas transacionais Propriedades das transações Transações aninhadas Implementação Área de trabalho privada
Leia maisSSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella
SSC- 0143 PROGRAMAÇÃO CONCORRENTE Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Fundamentos Paradigma do produtor-consumidor Sincronização de Processos Produtor while (count == BUFFER_SIZE) ; //no-op //adiciona
Leia maisProgramação Concorrente. Prof. Hugo Vieira Neto
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
Leia maisSistemas Operacionais
Introdução Sistemas Operacionais Sincronização de processos Aula 08 Em sistemas multiprogramados há interação entre processos para comunicação, que pode ser feita via compartilhamento de memória/arquivos
Leia maisExercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF
Exercícios Cap I 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) 1.5 1.7, 1.8 e 1.12 Sistemas Operacionais Visão geral e evolução dos SOs Sistema Operacional? Um programa que controla a execução dos programas
Leia maisIntrodução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização
Sincronização e Comunicação entre Processos Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização Condicional
Leia maisParte I Multiprocessamento
Sistemas Operacionais I Estrutura dos SO Prof. Gregorio Perez gregorio@uninove.br 2004 Parte I Multiprocessamento Roteiro 1 Multiprocessadores em Sistemas Fortemente Acoplados 1.1 1.2 1.3 Processamento
Leia maisSistemas Operacionais
Introdução 2 a edição Revisão: Fev/2003 Sistemas Operacionais Programação concorrente Capítulo 3 Programa executado por apenas um processo é dito de programa seqüêncial Existe apenas um fluxo de controle
Leia maisExclusão Mútua (mutex)
2004-2017 Volnys Bernal 1 Exclusão Mútua (mutex) Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Tópicos Exclusão Mútua (Mutex)
Leia maisConcorrência. Sistemas Distribuídos e Tolerância a Falhas. Lia Ribeiro 1
Concorrência Sistemas Distribuídos e Tolerância a Falhas Lia Ribeiro 1 Índice Consistência Atómica e sequencial Serializability Controle de concorrência One copy Serializability 2 Exclusão Mútua Técnica
Leia maisUma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente
Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente AUTOR: THAÍS S. HÜBNER BOLSISTA PBIP/UFPEL EMAIL: TSHUBNER@INF.UFPEL.EDU.BR ORIENTADOR ANDRÉ RAUBER DU BOIS Sumário
Leia maisSistemas Operacionais
Introdução Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Introdução à Programação Concorrente Aula 05 Em sistemas multiprogramados há interação entre processos para comunicação, que
Leia maisSincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)
2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Tópicos Exclusão Mútua (mutex) Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Exclusão Mútua () Objetivo, utilidade, requisitos
Leia maisMétodos de Sincronização
Métodos de Sincronização Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 31 Sumário 1 Sistemas multiprogramáveis 2 Mecanismos de sincronização
Leia maisINTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL
INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa
Leia maisParalelismo em Computadores com Tecnologia Multicore
IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário
Leia maisArquitetura de Computadores. Processamento Paralelo
Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple
Leia maisSistemas Operacionais
Sistemas Operacionais Processos - Parte 2 Prof. Dr. Fábio Rodrigues de la Rocha (Processos - Parte 2) 1 / 33 (Processos - Parte 2) 2 / 33 (Processos - Parte 2) 3 / 33 (Processos - Parte 2) 4 / 33 (Processos
Leia maisRevisão Ultima aula [1/2]
SOP - TADS Comunicação Interprocessos IPC Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula
Leia maisModelos para Concorrência
Modelos para Concorrência Modelos para descrição de concorrência Programa Interdisciplinar de Pós Graduação em Computação Aplicada Universidade do Vale do Rio dos Sinos Gerson Cavalheiro Processamento
Leia maisBoas Práticas de Programação Concorrente
Boas Práticas de Programação Concorrente Evitando surpresas inconvenientes Ronny Moura Súmario Principais problemas da programação concorrente e os mecanismos Java para resolvê-los. Race condition(synchronized,
Leia maisBANCO DE DADOS 2 TRANSAÇÃO
BANCO DE DADOS 2 TRANSAÇÃO Prof. Edson Thizon Reconstrução ( recovery ) Idéia básica Em algum momento no tempo, todo sistema computacional apresentará uma falha. O SGBD deve incorporar mecanismos de proteção
Leia maisRelatório Experimento 5 Sistemas Operacionais 1 Turma 3 Grupo 8
Relatório Experimento 5 Sistemas Operacionais 1 Turma 3 Grupo 8 Professor Tobar Bruno de André Mazzoco RA:02150522 César Henrique Kallas RA: 02099224 Introdução O experimento visa entender o que são threads,
Leia maisProgramação Concorrente e Paralela
Memória Transacional 2016 Motivação dificuldades de se trabalhar com memória compartilhada e locks deadlocks e serialização sincronização wait-free: soluções específicas para cada estrutura de dados listas,
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Semáforos Sincronização de Processos Um semáforo é uma estrutura de dados que consiste em um número inteiro e em uma fila Seu
Leia maisAula 03. Evandro Deliberal
Aula 03 Evandro Deliberal evandro@deljoe.com.br https://www.linkedin.com/in/evandrodeliberal Concorrência Método Sincronização Problemas: Perda de consistência Acesso a dados inconsistentes Perda de atualizações
Leia maisSistemas Distribuídos Aula 7
Sistemas Distribuídos Aula 7 Aula passada Atomicidade Test-and-set Locks revisitado Semáforos Dois problemas Aula de hoje Limitação dos semáforos Monitores Variáveis de condição Semântica do signal Sincronização
Leia maisMicroarquiteturas Avançadas
Universidade Federal do Rio de Janeiro Arquitetura de Computadores I Microarquiteturas Avançadas Gabriel P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com
Leia maisMultiprocessadores & Multicomputadores
Multiprocessadores & Multicomputadores Pedro Cruz EEL770 Sistemas Operacionais Datas 13 de junho Entrega das lista 18 de Junho P2 20 e 25 de junho Apresentações finais dos trabalhos e vistas de prova 27
Leia maisFundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads
Threads Prof. Edwar Saliba Júnior Março de 2007 1 Definição Partes de um processo que compartilham mesmo espaço de endereçamento Sub-rotina de um programa executada paralelamente ao programa chamador (execução
Leia maisProgramação Concorrente Locks
Programação Concorrente Prof. Eduardo Alchieri Variáveis do tipo trava (lock) Lock: É um mecanismo de sincronização de processos/threads, em que processos/threads devem ser programados de modo que seus
Leia maisAula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela
Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:
Leia maisComunicação entre processos (2)
Comunicação entre processos (2) Pedro Cruz EEL770 Sistemas Operacionais Lembretes Proposta de trabalho Enviar para cruz@gta.ufrj.br Prazo: dia 02 de abril 2 Aula passada Comunicação entre processos é útil
Leia maisComunicação entre processos
Universidade Federal do Acre Centro de Ciências Exatas e Tecnológicas Bacharelado em Sistemas de Informação Comunicação entre processos Macilon Araújo Costa Neto macilon@ufac.br Capítulo 2 do livro do
Leia maisParadigmas de Computação Paralela (UCE Computação Paralela Distribuída)
Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Modelos de consistência de memória João Luís Ferreira Sobral jls@... 29 Março 2011 Resumo Revisão: modelos de threads Qual a necessidade
Leia maisLINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE
LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE Adriana Nery Programação lógica Paradigma Predicados Dedutiva) baseado no Cálculo de (Lógica Matemática Exemplo: Zé Carioca é um papagaio. Todo papagaio é uma
Leia maisOpenMP: Variáveis de Ambiente
Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de
Leia maisModelo de Programação Paralela
Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes Como especificar uma solução paralela pensando em todos esses detalhes? O que queremos? Eecutar a solução
Leia maisSincronização e Comunicação entre Processos. Adão de Melo Neto
Sincronização e Comunicação entre Processos Adão de Melo Neto 1 MOTIVAÇÃO 2 INTRODUÇÃO Em um sistema multiprogramado (concorrente) os processos alternam sua execução (ou seja, são executados alternadamente
Leia maisDesenvolvimento de Aplicações Distribuídas
Transação e Controle de Concorrência Pontifícia Universidade Católica de Minas Gerais Instituto de Ciências Exatas e Informática DAD (2019/01) Tópicos Apresentação da disciplina Introdução Desafios e características
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 12: Revisão para a P1 Diego Passos Capítulo 1 Sistemas Operacionais São programas. Duas funções: Gerenciar os recursos do hardware. Dividir entre os vários processos.
Leia maisBDII SQL TRANSAÇÃO Revisão 2
exatasfepi.com.br BDII SQL TRANSAÇÃO Revisão 2 André Luís Duarte Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef 6:2,3)
Leia maisProgramação Concorrente e Paralela. Noemi Rodriguez
2016 o que é programação concorrente e paralela? programação concorrente: composição de linhas de atividades independentes programação paralela: execução simultânea de linhas de atividades Go blog (Rob
Leia maisControle de Transação
Curso: Ciência da Computação Disciplina: Banco de Dados Campus Lages Controle de Transação Prof. Edjandir C. Costa edjandir.costa@ifsc.edu.br Agenda Conceitos de transação e sistema Propriedades desejáveis
Leia maisThread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41
Thread Sistemas Operacionais Leonard B. Moreira UNIVERSIDADE ESTÁCIO DE SÁ e-mail: leonardbarreto@gmail.com.br fevereiro, 2013 1 / 41 Sumário 1 Introdução 2 Ambientes Monothread 3 Ambientes Multithread
Leia maisWilliam Stallings Computer Organization and Architecture
William Stallings Computer Organization and Architecture Capítulo 3 Como o Processador Funciona Arquitetura von Neumann Como discutido anteriormente, os projetos dos computadores modernos são baseados
Leia maisSincronização no Kernel
Sistemas Operacionais Andre Nathan andrenth@cos.ufrj.br Programa de Engenharia de Sistemas e Computação COPPE/UFRJ Acesso Concorrente Instruções Atômicas Locks Acesso concorrente Condições em que ocorre:
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem diversos processos em memória. Cada
Leia maisENADE 2011 SISTEMAS OPERACIONAIS
ENADE 2011 SISTEMAS OPERACIONAIS SOs: conteúdos comuns Gerência de processos/processador Comunicação Concorrência e Sinc. de Processos Gerenciamento de Memória Alocação de Recursos e Deadlocks Sistemas
Leia maisUnidade III Gerência de Processos
Sistemas Operacionais Unidade III Gerência de Processos http://www.lncc.br/~lrodrigo Professor: Luis Rodrigo lrodrigo@lncc.br Página: 1 de 34 Unidade III: Gerência de Processos Conceito de Processo Materialização
Leia maisBacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór
Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von
Leia maisRedes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período
Redes de Computadores INF201 - Fundamentos de Sistemas Operacionais - 2º Período PARTE II: PROCESSOS E THREADS SUMÁRIO 5. PROCESSO: 5.1 Introdução; 5.2 Estrutura do Processo; 5.3 Estados do Processo; 5.4
Leia maisUnidade Central de Processamento UCP (CPU)
Unidade Central de Processamento UCP (CPU)! Arquitetura Convencional (Von Neumann) UCP BARRAMENTO MEMÓRIA PRINCIPAL ENTRADA E SAÍDA ! Visão geral da CPU UC - UNIDADE DE CONTROLE REGISTRADORES A B C D ALU
Leia maisCurso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.
Sistemas Operacionais Professor Cláudio Geyer Instituto de - Sistemas Operacionais II (C. Geyer) Sincronização 1 Sistemas Operacionais Professor Cláudio Geyer Instituto de - Pg. 1 1 Tópicos ensinados no
Leia maisSistemas Distribuídos
Sistemas Distribuídos Thaís Vasconcelos Batista UFRN DIMAp http://www.dimap.ufrn.br/~thais thais@ufrnet.br Programa do Curso INTRODUÇÃO Conceitos Básicos Sistemas em Rede X Sistemas Distribuídos Necessidade
Leia maisLista de Exercícios de INF1019
Lista de Exercícios de INF1019 Versão 2018 Obs: estas questões servem apenas para seu aquecimento na matéria, e para revisão dos conceitos vistos na disciplina. A chance de cairem na prova é de apenas
Leia maisSistemas Operacionais
Sistemas Operacionais Slides adaptados de Prof. Dr. Marcos José Santana, Prof. Dra. Regina Helena Carlucci Santana e Sarita Mazzini Bruschi baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum
Leia maisProgramação de Alto Desempenho - 2. Prof: Carla Osthoff
Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda
Leia maisArquitetura e Organização de Processadores. Aula 4. Pipelines
Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aula 4 Pipelines 1. Introdução Objetivo: aumento de
Leia maisIntrodução OpenMP. Nielsen Castelo Damasceno
Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto
Leia maisAULA 03: FUNCIONAMENTO DE UM COMPUTADOR
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?
Leia maisARQUITETURA DE COMPUTADORES
ARQUITETURA DE COMPUTADORES Arquitetura de Von Newmann Prof Daves Martins Msc Computação de Alto Desempenho Email: daves.martins@ifsudestemg.edu.br Vídeos Vídeo aula RNP http://edad.rnp.br/rioflashclient.php?xmlfile=/ufjf/licenciatura_com
Leia maisSistemas de Informação. Sistemas Operacionais
Sistemas de Informação Sistemas Operacionais PROCESSOS E THREADS PARTE I SUMÁRIO 2. PROCESSO: 2.1 Introdução; 2.2 Estrutura do Processo; 2.3 Estados do Processo; 2.4 Mudanças de Estado do Processo; 2.5
Leia maisOrganização e Arquitetura de Computadores I
Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de
Leia maisHardware, Processador e Memória
Referências: STALLINGS, ZELENOVSKY, BERENGER Prof. Fabio D. Rocha, UTFPR CAMPO MOURÃO 1 Berenger, Stallings Um sistema embarcado computacional, é um conjunto de Hardware ( coponentes físicos) e Software
Leia maisSistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca
Sistemas Operacionais Concorrência Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) POSIX Threads... ... POSIX Threads (2) Exercício } Executando n vezes e verificando a ordem
Leia maisSistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos
Sistema Distribuído Conjunto de máquinas (CPU + memória) interligadas em rede. Sistema Distribuído Sistema operacional distribuído trata este conjunto como um único sistema computacional. Estação 1 Estação
Leia maisSistemas Operacionais
Sistemas Operacionais Processos Exclusão Mútua Mecanismos para se Obter Exclusão MútuaM Mecanismos de Hardware: Inibição de Interrupções Instrução TSL (Test and Set Lock) Mecanismos de Software: Com Espera
Leia maisCOMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais
Leia maisLabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...
LabSO Gerência de Processos Retrospectiva da aula passada... AULA 4 Flávia Maristela (flavia@flaviamaristela.com) Romildo Martins (romildo@romildo.net) Na aula passada... Processos Estados do processo
Leia maisArquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)
Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado) Capítulo 3 Concorrência Agenda Introdução Interrupções e exceções Operações de Entrada/Saída Buffering
Leia maisCapítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais
DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno
Leia maisProcessamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri
Processamento de Transações Banco de Dados Introdução Ambiente multiusuário vários usuários utilizam o mesmo sistema ao mesmo tempo múltiplos programas (transações) compartilham a mesma CPU Forma de execução
Leia maisWilliam Stallings Arquitetura e Organização de Computadores 8 a Edição
William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 3 Visão de alto nível da função e interconexão do computador slide 1 Conceito de programa Sistemas hardwired são inflexíveis.
Leia maisSSC510 Arquitetura de Computadores 1ª AULA
SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura
Leia maisSSC0640 Sistemas Operacionais I
SSC0640 Sistemas Operacionais I 11ª Aula Threads Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana A. F. Martimiano baseados no livro
Leia maisComputadores e Programação (DCC/UFRJ)
Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo
Leia maisPROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Leia maisIntrodução à Programação
Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.
Leia maisSistemas Operacionais
Brainstormig Sistemas Operacionais Processos e multiprogramação Aula 2 Quais são os componentes de um programa? Como podemos representar um programa em execução? Onde ele inicia a executar? Como se mapeia
Leia mais