Utilização de grafo não bloqueante em programação paralela

Tamanho: px
Começar a partir da página:

Download "Utilização de grafo não bloqueante em programação paralela"

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 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 mais

Fundamentos de Sistemas Operacionais

Fundamentos 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 mais

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

AULA 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 mais

Comunicação entre Processos

Comunicaçã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 mais

Sistemas Distribuídos Aula 5

Sistemas 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 mais

Fundamentos de Sistemas Operacionais

Fundamentos 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 mais

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

Sincronizaçã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 mais

Ferramentas para Programação em Processadores Multi-Core

Ferramentas 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 mais

Sistemas Operacionais: Sincronização entre processos

Sistemas 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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Programação concorrente (processos e threads)

Programaçã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 mais

Sistemas Operacionais

Sistemas 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 mais

Concorrência em Processos

Concorrê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 mais

Variância dos Tempos de Resposta

Variâ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 mais

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

UNIDADE 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 mais

Universidade 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 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 mais

Unidade 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 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 mais

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

Processos 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 mais

Sistemas Distribuídos

Sistemas 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 mais

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

SSC 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 mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas 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 mais

Programação Concorrente. Prof. Hugo Vieira Neto

Programaçã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 mais

Sistemas Operacionais

Sistemas 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 mais

Exercí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.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 mais

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

Introduçã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 mais

Parte I Multiprocessamento

Parte 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 mais

Sistemas Operacionais

Sistemas 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 mais

Exclusão Mútua (mutex)

Exclusã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 mais

Concorrê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 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 mais

Uma 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 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 mais

Sistemas Operacionais

Sistemas 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 mais

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)

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) 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 mais

Métodos de Sincronização

Mé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 mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃ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 mais

Paralelismo em Computadores com Tecnologia Multicore

Paralelismo 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 mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura 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 mais

Sistemas Operacionais

Sistemas 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 mais

Revisão Ultima aula [1/2]

Revisã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 mais

Modelos para Concorrência

Modelos 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 mais

Boas Práticas de Programação Concorrente

Boas 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 mais

BANCO DE DADOS 2 TRANSAÇÃO

BANCO 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 mais

Relatório Experimento 5 Sistemas Operacionais 1 Turma 3 Grupo 8

Relató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 mais

Programação Concorrente e Paralela

Programaçã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 mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas 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 mais

Aula 03. Evandro Deliberal

Aula 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 mais

Sistemas Distribuídos Aula 7

Sistemas 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 mais

Microarquiteturas Avançadas

Microarquiteturas 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 mais

Multiprocessadores & Multicomputadores

Multiprocessadores & 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 mais

Fundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads

Fundamentos 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 mais

Programação Concorrente Locks

Programaçã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 mais

Aula 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 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 mais

Comunicação entre processos (2)

Comunicaçã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 mais

Comunicação entre processos

Comunicaçã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 mais

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída)

Paradigmas 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 mais

LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE

LINGUAGENS 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 mais

OpenMP: Variáveis de Ambiente

OpenMP: 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 mais

Modelo de Programação Paralela

Modelo 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 mais

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

Sincronizaçã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 mais

Desenvolvimento de Aplicações Distribuídas

Desenvolvimento 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 mais

Fundamentos de Sistemas Operacionais

Fundamentos 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 mais

BDII SQL TRANSAÇÃO Revisão 2

BDII 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 mais

Programação Concorrente e Paralela. Noemi Rodriguez

Programaçã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 mais

Controle de Transação

Controle 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 mais

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Thread. 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 mais

William Stallings Computer Organization and Architecture

William 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 mais

Sincronização no Kernel

Sincronizaçã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 mais

Fundamentos de Sistemas Operacionais

Fundamentos 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 mais

ENADE 2011 SISTEMAS OPERACIONAIS

ENADE 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 mais

Unidade III Gerência de Processos

Unidade 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 mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado 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 mais

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

Redes 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 mais

Unidade Central de Processamento UCP (CPU)

Unidade 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 mais

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Curso 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 mais

Sistemas Distribuídos

Sistemas 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 mais

Lista de Exercícios de INF1019

Lista 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 mais

Sistemas Operacionais

Sistemas 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 mais

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Programaçã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 mais

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Arquitetura 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 mais

Introdução OpenMP. Nielsen Castelo Damasceno

Introduçã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 mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 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 mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA 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 mais

Sistemas de Informação. Sistemas Operacionais

Sistemas 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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Hardware, Processador e Memória

Hardware, 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 mais

Sistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas 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 mais

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

Sistema 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 mais

Sistemas Operacionais

Sistemas 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 mais

COMPUTADORES 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 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 mais

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

LabSO 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 mais

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

Arquitetura 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 mais

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

Capí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 mais

Processamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Processamento 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 mais

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

William 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 mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 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 mais

SSC0640 Sistemas Operacionais I

SSC0640 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 mais

Computadores e Programação (DCC/UFRJ)

Computadores 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 mais

PROGRAMAÇÃO I. Introdução

PROGRAMAÇÃ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 mais

Introdução à Programação

Introduçã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 mais

Sistemas Operacionais

Sistemas 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