Programação concorrente (processos e threads)

Documentos relacionados
Sistemas Distribuídos Aula 2

Sistemas Operacionais

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

Deadlocks (impasses)

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 28

Fundamentos de Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Programação de Sistemas em Tempo Real

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Sistemas Operacionais: Sincronização entre processos

Sistemas Operacionais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Sistemas Operacionais

Sincronização e Comunicação

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização

Capítulo 2 Processos e Threads

Comunicação entre processos (2)

Arquitetura de Computadores Sistemas Operacionais II

Sistemas Distribuídos

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

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

Capítulo 3: Processos

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

Comunicação entre Processos

Unidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica

Sincronização de Processos (2)

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Concorrência em Processos

7 SINCRONIZAÇÃO DE PROCESSOS

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

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

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Comunicação entre processos

Problema do Produtor -Consumidor. Solução por semáforos

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

Processo. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Processos e Threads. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Programação Concorrente

Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Sistemas de Entrada e Saída

Sincronização e Comunicação entre Processos

Sistemas Operacionais

Tipos de Soluções (cont.)

Métodos de Sincronização

Sistemas Operacionais

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

Programação Orientada a Objetos. Concorrência

Sistemas Distribuídos Aula 5

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

Processos Concorrentes

Técnicas Avançadas de Programação

Sistemas de Informação. Sistemas Operacionais

Escalonamento de Processos

Semáforo Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Introdução. Pedro Cruz. EEL770 Sistemas Operacionais

Comunicação entre processos

Na Aula Anterior... O Conceito de Threads

Semáforos. Gerenciamento de Recursos I

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

Semáforos. Gerenciamento de Recursos I

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

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

Ferramentas para Programação em Processadores Multi-Core

Revisão Ultima aula [1/2]

Programação Concorrente. Prof. Hugo Vieira Neto

Exclusão Mútua (mutex)

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

Curso: Redes de Computadores

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais

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)

Fundamentos de Sistemas Operacionais

Sincronização de Processos (2)

Sistemas Distribuídos Aula 3

Sistemas Operativos: Concorrência

Sistemas Operacionais

EEL770 Sistemas Operacionais

Vamos fazer um pequeno experimento

Aula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Sincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016

SISTEMAS DISTRIBUÍDOS PROCESSOS. Slides cedidos pela professora Aline Nascimento

Sistemas Operacionais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

Sistemas Operacionais Aula 6

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

08/08/2016. Metodologia de trabalho Sistema de notas Trabalhos Artigos Celulares Presença Entrega de trabalhos Uso de laboratório

Sistemas Operacionais. Processos e Threads

Sistemas Operacionais

Threads. Pedro Cruz. EEL770 Sistemas Operacionais

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

ENADE 2011 SISTEMAS OPERACIONAIS

Universidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada

Aula 03 - Concorrência. por Sediane Carmem Lunardi Hernandes

Arquitetura de Computadores. Processamento Paralelo

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

Sistemas Operacionais

Transcrição:

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 do mundo real Para que mais de um computador/processador possa ser utilizado para resolver o problema Considere como exemplo encontrar o caminho através de um labirinto

Busca Sequencial no Labirinto

Busca Concorrente no Labirinto

Concorrência na linguagem ou no SO? Há um longo debate sobre se a concorrência deve ser definida na linguagem de programação ou deixada para o sistema operacional Ada, Java e C# fornecem concorrência C e C++ não

Implementação de tarefas concorrentes Formas de implementar uma coleção de tarefas executando concorrentemente Multiprogramação as tarefas multiplexam suas execuções num único processador (pseudo-paralelismo) Multiprocessamento as tarefas multiplexam suas execuções num sistema multiprocessador onde há acesso a uma memória compartilhada (acoplamento forte. e.g.: multicore) Processamento distribuído as tarefas multiplexam suas execuções em vários processadores que não compartilham memória (acoplamento fraco. e.g. LAN s, WAN,s)

Conceito de processo Inclui: contador de programa (PC), pilha, dados

Estados de um processo (tarefa)

Process Control Block (PCB)

Chaveamento de contexto

Árvore de Processos

IPC (comunicação entre processos) Memória compatilhada Troca de mensagens Pipes Semáforos Monitores Sockets RMI (remote method invotation) RPC (remote procedure calls)

Problemas de concorrência Condições de disputa: o resultado depende da ordem de execução (imprevisível) Regiões críticas: partes do código onde ocorrem as condições de disputa. Solução: exclusão mútua e.g. Memória compartilhada: x=x+1; carrega o valor de x num registrador, incrementa, armazena o valor do registrador em x. Princípios para boa solução de exclusão mútua 1) Nunca dois processos simultaneamente em suas regiões críticas 2) Nada pode ser afirmado sobre velocidade ou número de CPUs 3) Nenhum processo fora da sua região crítica pode bloquear outros 4) Nenhum processo pode esperar eternamente para entrar em sua região crítica * P5 t1 P2 t2 P3 t3 P4 t4 request start release leave

Semáforos São números inteiros: typedef int Semaphore; Seu valor pode apenas ser inicializado: Semaphore x = 0; Não pode ser manipulado diretamente x++; x--; x=10; A manipulação tem que ser feita através de duas primitivas: down e up down:diminui o valor do semáforo (bloqueia se <0) down(&x); up: aumenta o valor do semáforo (desbloqueia se <0) up(&x); Nomes alternativos: down = wait = P up = signal = V

Threads (fluxos de execução) Dados que devem ser mantidos para cada thread de usuário e de núcleo Modelo antigo: uma thread por processo Modelo novo: várias threads por processo

Modelos multithreading Muitos para um um para um muitos para muitos

Semaphore mutex=1; Semaphore vazios=n; Semaphore cheios=0; void produtor (void) { while(true){ // produz item down(&vazios); down(&mutex); // adiciona item up(&mutex); up(&cheios); } } Problemas clássicos de sincronização Produtor-consumidor (buffer limitado) Produtor Consumidor 1 1 Buffer N void consumidor (void) { while(true){ down(&cheios); down(&mutex); // remove item up(&mutex); up(&vazios); // consome item } } consumidor Cheios Vazios produtor

Problemas clássicos de sincronização Rendez-vous Considere o código abaixo e suponha que se deseje que a Instrução a1 seja executada antes de b2 e b1 antes de a2 void thread1 (void) { // a1 // rendez-vous // a2 } Void thread2 (void) { // b1 // rendez-vous // b2 } Semaphore x=0; Semaphore y=0; void thread1 (void) { // a1 up(&x); down(&y); // a2 } void thread2 (void) { // b1 up(&y); down(&x); // b2 }

Problemas clássicos de sincronização Leitores e Escritores Bloco de Dados leitor leitor escritor escritor

Sincronização e comunicação Assíncrona (sem espera) baseadas em mensagens Requer armazenamento de mensagens (buffer) buffers potencialmente infinitos O que fazer quando o buffer estiver cheio? void send (Task destino, Msg msg); void receive (Task origem, Msg *msg); Tarefa P1 Tarefa P2 send message message receive message tempo tempo

Sincronização e comunicação baseadas em mensagens Síncrona Não requer buffer Facilita a implementação Conhecida como Rendezvous void send (Task destino, Msg msg); void receive (Task origem, Msg *msg); send message blocked M receive message time time

Sincronização e comunicação baseadas em mensagens Remote invocation (e.g. Ada) Conhecida como rendezvous estendida Status send (Task destino, Msg msg); Status receive (Task origem, Msg *msg); Task P1 Task P2 send message blocked time M receive message reply time

Sincronização e comunicação baseadas em mensagens Nomeação das tarefas Direta simplicidade O transmissor nomeia o receptor explicitamente void send( Task t, Msg m); Indireta auxilia a decomposição do software (a mailbox pode ser vista como uma interface entre as várias partes do programa) o transmissor nomeia uma entidade intermediária (canal, mailbox, link ou pipe) void send( MailBox mb, Msg m);

Sincronização e comunicação Nomeação das tarefas Simética baseadas em mensagens Ambos, TX e RX, nomeiam um ao outro (ou à caixa de correio). void send( Task t, Msg m); void receive( Task t, Msg m); void send( Mailbox mb, Msg m); void receive( Mailbox mb, Msg *m); Assimétrica o receptor não nomeia a origem e recebe mensagens de todas as tarefas (ou de todas as caixas de correio) void receive (Msg *m);

Bibliografia [1] Real-Time Systems and Programming Languages. Burns A., Wellings A. 2nd edition [2] Análise de Sistemas Operacionais de Tempo Real Para Applicações de Robótica e Automação. Aroca R. V. Dissertação de Mestrado. [3] Operating System Concepts. Silberschatz, Galvin, Gagne. 8 th edition [4] Sistemas Operacionais Modernos. Tanenbaum 2a edição