Programação Concorrente Introdução



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

Sistemas Distribuídos

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

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

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Fundamentos de Banco de Dados

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

SISTEMAS OPERACIONAIS. Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Processamento de Dados

Processos e Threads (partes I e II)

Tipos de sistemas operacionais

Organização e Arquitetura de Computadores I. de Computadores

Sistemas Operacionais. Prof. André Y. Kusumoto

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Introdução aos Sistemas Operativos

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

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 02 - Estrutura dos Sistemas Operacionais. Cursos de Computação

Programação Concorrente Processos e Threads

3 SCS: Sistema de Componentes de Software

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

3. O NIVEL DA LINGUAGEM DE MONTAGEM

BARRAMENTO DO SISTEMA

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas

Sistemas Operacionais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Sistemas Operacionais Processos e Threads

ESTUDO DE CASO WINDOWS VISTA

Organização e Arquitetura de Computadores

Fundamentos de Sistemas de Informação Hardware: Dispositivos de Entrada, Processamento e Saída

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Sistema Operacional. Prof. Leonardo Barreto Campos 1

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

INTRODUÇÃO A REDES DE COMPUTADORES (DEFINIÇÕES) Prof. Msc. Hélio Esperidião

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

Sistemas Operacionais

Informática I. Aula 5. Aula 5-13/05/2006 1

05/08/2013. Sistemas Distribuídos Cluster. Sistemas Distribuídos Cluster. Agenda. Introdução

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

MODELO CLIENTE SERVIDOR

Informática. Informática. Valdir

Manual de Usuário. Gestion Libre de Parc Informatique (Gestão Livre de Parque de Informática) Versão 1.1 NRC

Sistemas Operacionais

Sistema de Computação

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Conceitos ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO. Comunicação; Formas de escritas; Processo de contagem primitivo;

SISTEMAS DISTRIBUÍDOS

Sistemas Operacionais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Introdução às arquiteturas paralelas e taxonomia de Flynn

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

Profs. Deja e Andrei

UFRJ IM - DCC. Sistemas Operacionais I

Estruturas do Sistema de Computação

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

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

Introdução aos Sistemas

Laboratório de Redes. Professora Marcela Santos

Microarquiteturas Avançadas

8 Threads. 8.1 Introdução

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

AULA 3 Introdução ao Software

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

Sistemas Operacionais

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

Sistemas Distribuídos

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

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

SISTEMAS OPERACIONAIS 2007

Disciplina: Introdução à Informática Profª Érica Barcelos

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

1.1. Organização de um Sistema Computacional

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Arquitetura de Sistemas Operacionais

Introdução à Computação: Arquitetura von Neumann

Conheça a nova solução de servidor que ajuda pequenas empresas a fazer mais Com menos.

Comparativo de desempenho do Pervasive PSQL v11

Sistemas Operacionais

Introdução aos Sistemas Operacionais. Computador = hardware + software. Como é formado o meu computador? E como estes componentes se comunicam?

Capítulo 8 Arquitetura de Computadores Paralelos

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

Arquitetura de Banco de Dados

Transcrição:

Introdução Prof. Eduardo Alchieri

(definição) Programação Concorrente Do inglês Concurrent Programming, onde Concurrent signifca "acontecendo ao mesmo tempo" Programação Concorrente é diferente de programação paralela!

(definição) Tradicionalmente, a grande maioria dos programas escritos são programas sequenciais Para serem executados em um único computador com uma única CPU O problema é dividido em uma série de instruções que são executadas uma após a outra Uma única instrução pode executar em um determinado instante de tempo Nesse caso, existe somente um fluxo de controle (fluxo de execução, linha de execução, thread) no programa. Isso permite, por exemplo, que o programador realize uma "execução imaginária" de seu programa apontando com o dedo, a cada instante, o comando que está sendo executada no momento.

(definição) Um programa concorrente pode ser visto como se tivesse vários fluxos de execução. Para o programador realizar agora uma "execução imaginária", ele vai necessitar de vários dedos, um para cada fluxo de controle. Em programação concorrente é definido o uso simultâneo de múltiplos recursos computacionais para resolver um problema Para ser executado em diversas CPUs O problema é quebrado em partes que podem ser executadas (resolvidas) concorrentemente Cada uma destas partes é representada por uma série de instruções, sendo que as instruções de cada parte são executadas concorrentemente em diferentes CPUs

(definição) É comum em sistemas multiusuário que um mesmo programa seja executado simultaneamente por vários usuários Por exemplo, um editor de texto. Entretanto, ter 10 execuções simultâneas do editor de texto não faz dele um programa concorrente. O que se tem são 10 processos independentes executando o mesmo programa seqüencial (compartilhando o mesmo código). Cada processo tem a sua área de dados e ignora a existência das outras execuções do programa Esses processos não interagem entre si (não trocam informações). Neste caso, é usado o termo programação paralela, pois vários programas/processos independentes são executados em paralelo pelo computador. Um programa é considerado concorrente quando ele (o próprio programa, durante a sua execução) origina diferentes processos que irão interagir entre si para realizar alguma tarefa

(definição) Paralelismo Processamento simultâneo físico Concorrência Processamento simultâneo lógico (aparente) Requer entrelaçamento (interleaving) de ações Processo Execução de um programa Programa Concorrente Vários processos que cooperam para a realização de uma tarefa

(definição) Os recursos computacionais podem ser: Um único computador com múltiplos processadores Um número arbitrário de computadores conectados pela rede Uma combinação de ambos O problema computacional geralmente demonstra característcas como a habilidade de ser: Quebrados em partes de um trabalho que pode ser resolvido de forma simultânea Executar múltiplas instruções do programa a qualquer momento no tempo Resolvido em menos tempo com vários recursos de computação do que com um único recurso computacional

(definição) Programação concorrente é mais complexa do que a programação sequencial Erros dos programas sequenciais + erros associados as interações entre os processos Erros dependem do momento exato em que o escalonador do SO realiza um chaveamento de contexto ou do recebimento de uma mensagem Difícil reprodução e identificação Apesar da maior complexidade, existem muitas áreas nas quais a programação concorrente é vantajosa. Em sistemas nos quais existem vários processadores (máquinas paralelas ou sistemas distribuídos), é possível aproveitar esse paralelismo e acelerar a execução do programa. Mesmo em sistemas com um único processador, existem razões para o seu uso em vários tipos de aplicações.

(motivação) Exemplo: Leitura, formatação e impressão de arquivo Arquivo Processo Impressora

(motivação) Exemplo: Leitura, formatação e impressão de arquivo Solução concorrente Arquivo Processo Leitura Impressora Buffer Processo Impressão

(motivação) Exemplo: Servidor de impressão

(motivação) Exemplo: Servidor de impressão Organização do servidor

(motivação) Razões da programação concorrente Economizar tempo e dinheiro Resolver grandes problemas: muitos problemas são tão grandes / complexos que é impraticável ou impossível resolvê-los num único computador, especialmente quando a memória é limitada Superar as limitações da computação sequencial: razões físicas e práticas restringem a construção de computadores cada vez mais rápidos

(motivação) Arquiteturas de computadores atuais são cada vez mais dependentes do paralelismo em nível de hardware para melhorar o desempenho Utilizar mais de um computador ou um computador com mais de um processador, para resolver um determinado problema N computadores operando simultanealmente podem atingir o resultado N vezes mais rápido (não será exatamente N vezes mais rápidos por uma série de razões Outros motívos incluem: tolerância a falhas, grande quantídade de memória disponível, etc.