Sistemas Operacionais

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

Download "Sistemas Operacionais"

Transcrição

1 Sistemas Operacionais Programação Concorrente Sincronização entre processos Edson Moreno

2 Sumário Conceituação Princípios de concorrência Região crítica Coordenação de Acesso à Região crítica

3 Introdução Threads são Processos leves Definidos para permitir paralelismo em um programa de aplicação As threads possuem Sua própria pilha de execução e program counter Cada uma roda um código seqüencial (definido no programa de aplicação) Podem criar processos (threads) filhos Compartilham o mesmo espaço de endereçamento (dados globais) do processo pesado Portanto, Quando uma thread altera um valor compartilhado, todas percebem esta mudança Arquivos abertos por uma thread são disponível as outras do mesmo processo pesado Como manter a coerência dos dados? A partir do emprego de mecanismos de sincronização

4 Sumário Conceituação Princípios de concorrência Região crítica Coordenação de Acesso à Região crítica

5 Princípios de concorrência Exemplo 1 Algoritmo do produtor consumidor Produtor: processo que gera n valores Consumidor: consome os dados gerados pelo produtor Meio de armazenamento: fila circular Produtor Consumidor

6 Princípios de concorrência Exemplo 1 - Produtor consumidor Produtor #define N 10 # int buffer[n], addrprod = 0, addrcons = 0 ; Consumidor void * produtor(){ int i, p=50; for(i=0; i<20; i++) { while(((addrprod + 1) % N) == addrcons){ p++; buffer[addrprod] = p ; addrprod= ( addrprod + 1 ) % N ; void * consumidor(){ int i, c; for (i=0; i<20; i++){ while(addrprod == addrcons) { c = buffer[addrcons] ; printf("consumi o valor %d,c); printf( Posição consimida %d, addrcons); addrcons= ( addrcons + 1 ) % N ;

7 Princípios de concorrência Exemplo 1 - Produtor consumidor Produtor Consumidor Cenário de execução Se o consumidor for executado primeiro Buffer está vazio Produtor ainda não gerou valores Processador ficará preso fazendo while void * consumidor(){ int i, c; for (i=0; i<20; i++){ while(addrprod == addrcons) { c = buffer[addrcons] ; printf("consumi o valor %d,c); printf( Posição consimida %d, addrcons); addrcons= ( addrcons + 1 ) % N ;

8 Princípios de concorrência Exemplo 1 - Produtor consumidor Produtor Consumidor void * produtor(){ int i, p=50; for(i=0; i<20; i++) { while(((addrprod + 1) % N) == addrcons){ p++; buffer[addrprod] = p ; addrprod= ( addrprod + 1 ) % N ; Cenário de execução Quando o produtor for executado Executa o comando while Começa a inserir valores no buffer Posição de deposito é incrementado Tratamento para buffer circular Processo se repete até a thread perder o processador

9 Sumário Conceituação Princípios de concorrência Região crítica Coordenação de Acesso à Região crítica

10 Região crítica Ocorre quando Sistema composto por N processos (onde N > 1) Cada processo executa seu próprio código independente dos demais Processos compartilham um dado recurso O estado de um processo é desconhecido pelo outro O estado/valor do recurso pode ser alterado

11 Região crítica Exemplo Thread 0 a Thread 1 void * t0(){ long i ; for (i=0; i< ; i++){ a = a + 5 ; printf("encerrei a t0 %d\n",sizeof(int)); void * t1(){ long i ; for (i=0; i< ; i++){ a = a + 2; printf("encerrei a t1\n");

12 Região crítica Exemplo Thread 0 a = 60 Thread 1 PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 5 ; // adicionar 5 ao acumulador store a ; // armazenar na variável a PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 2 ; // adicionar 2 ao acumulador store a ; // armazenar na variável a Supondo a com valor inicial 60 e a seguinte linha de tempo T0: Thread0 executa load a e perde o processador: o valor do acumulador (60) é salvo

13 Região crítica Exemplo Thread 0 a = 60 Thread 1 PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 5 ; // adicionar 5 ao acumulador store a ; // armazenar na variável a PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 2 ; // adicionar 2 ao acumulador store a ; // armazenar na variável a Supondo a com valor inicial 60 e a seguinte linha de tempo T0: Thread0 executa load a e perde o processador: o valor do acumulador (60) é salvo T1: Thread1 ganha o processador e executa load a: o valor do acumulador é 60

14 Região crítica Exemplo Thread 0 a = 60 Thread 1 PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 5 ; // adicionar 5 ao acumulador store a ; // armazenar na variável a PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 2 ; // adicionar 2 ao acumulador store a ; // armazenar na variável a Supondo a com valor inicial 60 e a seguinte linha de tempo T0: Thread0 executa load a e perde o processador: o valor do acumulador (60) é salvo T1: Thread1 ganha o processador e executa load a: o valor do acumulador é 60 T2: Thread1 executa add 2: o valor do acumulador é 62

15 Região crítica Exemplo Thread 0 a = 62 Thread 1 PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 5 ; // adicionar 5 ao acumulador store a ; // armazenar na variável a PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 2 ; // adicionar 2 ao acumulador store a ; // armazenar na variável a Supondo a com valor inicial 60 e a seguinte linha de tempo T0: Thread0 executa load a e perde o processador: o valor do acumulador (60) é salvo T1: Thread1 ganha o processador e executa load a: o valor do acumulador é 60 T2: Thread1 executa add 2: o valor do acumulador é 62 T3: Thread1 executa store a: o valor do acumulador é armazenado na variável

16 Região crítica Exemplo Thread 0 a = 62 Thread 1 PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 5 ; // adicionar 5 ao acumulador store a ; // armazenar na variável a PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 2 ; // adicionar 2 ao acumulador store a ; // armazenar na variável a Supondo a com valor inicial 60 e a seguinte linha de tempo T0: Thread0 executa load a e perde o processador: o valor do acumulador (60) é salvo T1: Thread1 ganha o processador e executa load a: o valor do acumulador é 60 T2: Thread1 executa add 2: o valor do acumulador é 62 T3: Thread1 executa store a: o valor do acumulador é armazenado na variável T4: Thread0 ganha o processador, o valor do acumulador é restaurado (60) e executa a operação add 5: o valor do acumulador passa a ser 65

17 Região crítica Exemplo Thread 0 a = 65 Thread 1 PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 5 ; // adicionar 5 ao acumulador store a ; // armazenar na variável a PRESSUPONDO O SEGUINTE ASSEMBLY GERADO load a ; // carregar a no acumulador add 2 ; // adicionar 2 ao acumulador store a ; // armazenar na variável a Supondo a com valor inicial 60 e a seguinte linha de tempo T0: Thread0 executa load a e perde o processador: o valor do acumulador (60) é salvo T1: Thread1 ganha o processador e executa load a: o valor do acumulador é 60 T2: Thread1 executa add 2: o valor do acumulador é 62 T3: Thread1 executa store a: o valor do acumulador é armazenado na variável T4: Thread0 ganha o processador, o valor do acumulador é restaurado (60) e executa a operação add 5: o valor do acumulador passa a ser 65 T5: Thread0 executa store a o valor do acumulador é armazenado na variável a (60)

18 Região crítica Solução para o problema Emprego de protocolos de entrada e saída na região crítica Sinaliza-se a entrada na região crítica Opera-se sobre a região crítica Sinaliza-se a saída da região crítica A abordagem deve garantir que Ao entrar, somente 1 processo execute/acesse a região crítica Ao sair, permite que outro processo entre na seção crítica

19 Região crítica Requisitos para solução do problema Exclusão mútua A somente um processo por vez é permitido entrar na seção crítica; Progresso Deve ser permitido a um processo entrar na sua seção crítica se nenhum outro processo está usando a seção crítica Espera limitada Um processo não pode ficar indefinidamente esperando para entrar na seção crítica, enquanto outros processos, repetidamente, entram e saem de suas respectivas seções críticas

20 Sumário Conceituação Princípios de concorrência Região crítica Coordenação de Acesso à Região crítica

21 Solução por Hardware Desabilitar interrupções Nada interrompe as instruções em operação Instruções implementadas por hardware test-and-set (atômicas)

22 Test And Set Exclusão mútua Arquiteturas de processador com instrução TAS (Test And Set) Lê posição de memória e atualiza os bits de estado Escreve na posição de memória o conteúdo de um registrador Leitura e escrita Realizadas atomicamente function Test_And_Set (var lock : boolean): boolean; begin Test_And_Set := lock; lock := true; end;

23 Produtor Test And Set Exclusão mútua entre consumidor e produtor, com a instrução TAS while (cond) { dado = produz(); while (contador == n); enter(); buffer[novo] = dado; novo = (novo+1) mod n; contador++; leave(); Consumidor while (cond) { while (contador == 0); enter(); dado = buffer[prox]; prox = (prox+1) mod n; contador--; leave(); consome(dado); enter testa uma variável, lock se lock = 1, entrada na seção crítica permitida lock = 0, espera até que lock = 1

24 Test And Set ENTER: MOV #0,R1 TAS R1,LOCK JZ ENTER RET LEAVE: MOV #1,R1 STORE R1,LOCK RET Esta solução é chamada espera ociosa Processo em leave mantém o processador desnecessariamente Má utilização do tempo do processador

25 Solução por software Algoritmo de Dekker Implementação dedjikstra Propôs série de soluções evolutivas Cada uma evidencia bugs comuns em programas concorrentes 1 - uma variável 2 - duas variáveis 3 - três variáveis 4 - correta Algoritmo de Peterson garante Exclusão mútua Justiça para 2 processos

26 Primeira Tentativa Espera ociosa(busy-waiting) => while Alternância explícita dos processos Velocidade ditada pelo mais lento Problema da solução? variável global compartilhada => turn: 01; Processo 0 while turn <> 0 do { nothing ; < região crítica > turn := 1; Processo 1 while turn <> 1 do { nothing ; < região crítica > turn := 0;

27 Primeira Tentativa Espera ociosa(busy-waiting) => while Alternância explícita dos processos Velocidade ditada pelo mais lento Problema da solução? Espera ociosa e Intertravamento (um proc pode necessitar mais acesso) variável global compartilhada => turn: 01; Processo 0 while turn <> 0 do { nothing ; < região crítica > turn := 1; Processo 1 while turn <> 1 do { nothing ; < região crítica > turn := 0;

28 Segunda Tentativa Cada processo Tem sua própria chave para a RC Vê o quadro de avisos do outro mas não pode alterá-lo Não existe bloqueio se outro processo falha fora da Região crítica Problema da solução? variável global compartilhada => var flag: array [01] of boolean; Processo 0 while flag[ 1 ] do { nothing ; flag[ 0 ] := true; < região crítica > flag[ 0 ] := false; Processo 1 while flag[ 0 ] do { nothing ; flag[ 1 ] := true; < região crítica > flag[ 1 ] := false;

29 Segunda Tentativa Cada processo Tem sua própria chave para a RC Vê o quadro de avisos do outro mas não pode alterá-lo Não existe bloqueio se outro processo falha fora da Região crítica Problema da solução? Pode não garantir exclusão mútua (flags inicializadas em false) variável global compartilhada => var flag: array [01] of boolean; Processo 0 while flag[ 1 ] do { nothing ; flag[ 0 ] := true; < região crítica > flag[ 0 ] := false; Processo 1 while flag[ 0 ] do { nothing ; flag[ 1 ] := true; < região crítica > flag[ 1 ] := false;

30 Terceira Tentativa Em relação à segunda tentativa, apenas uma mudança no código Ponto de inicialização da intenção de acesso à região crítica Garante exclusão mútua Cada processo pode ativar o valor de seu flag sem saber da condição do outro Problema da solução? Processo 0 flag[ 0 ] := true; while flag[ 1 ] do { nothing ; < região crítica > flag[ 0 ] := false; Processo 1 flag[ 1 ] := true; while flag[ 0 ] do { nothing ; < região crítica > flag[ 1 ] := false;

31 Terceira Tentativa Em relação à segunda tentativa, apenas uma mudança no código Ponto de inicialização da intenção de acesso à região crítica Garante exclusão mútua Cada processo pode ativar o valor de seu flag sem saber da condição do outro Problema da solução? Propenso a deadlock Processo 0 flag[ 0 ] := true; while flag[ 1 ] do { nothing ; < região crítica > flag[ 0 ] := false; Processo 1 flag[ 1 ] := true; while flag[ 0 ] do { nothing ; < região crítica > flag[ 1 ] := false;

32 Quarta Tentativa Processos indicam intenção de acesso à região crítica via flag Problema da solução? Process 0 Process 1 flag[0] := true; flag[1] := true; while flag[1] do while flag[0] do begin begin flag[0] := false; flag[1] := false; <pequena latência>; <pequena latência>; flag[0] := true; flag[1] := true; end; end; < região crítica >; < região crítica >; flag[0] := false; flag[1] := false; PO sets flag [0] to true P1 sets flag [1] to true P0 checks flag [1] P1 checks flag [0] P0 sets flag [0] to false flag[0] = flag[1] = FALSE TRUE P1 sets flag [1] to false FALSE P0 sets flag [0] to true TRUE P1 sets flag [1] to true

33 Quarta Tentativa Solução é quase correta Gentileza mútua Possibilidade dos processos cederem a vez um para o outro indefinidamente Pode acarretar em adiantamento indefinido (livelock) Na prática Situação difícil de se sustentar durante um longo tempo Velocidade dos processos Na teoria Existe a probabilidade de ocorrer, logo Invalida a proposta como solução geral do problema

34 Solução Correta de Dekker Garante exclusão mútua e justiça Usa flags (intenção de acesso) e turn (direito de acesso) var flag: array [0 1] of boolean; turn: 0 l; procedure P0; begin repeat flag [0] := true; while flag [1] do if turn = 1 then begin flag [O] := false; while turn = 1 do {nothing; flag [0] := true end; < região crítica >; turn := 1; flag [0] := false; < restante > forever end; procedure Pl; begin repeat flag [1] := true; while flag [0] do if turn = 0 then begin flag [1] := false; while turn = 0 do {nothing; flag [1] := true end; < região crítica >; turn := 0; flag [1] := false; < restante > forever end; Begin flag [0] := false; flag [1] := false; turn := 1; parbegin P0; P1 parend end

35 Solução de Peterson Proposta em 1981 Solução simples e elegante para o problema da exclusão mútua Facilmente generalizada para o caso de n processos A solução do algoritmo consiste em Ao marcar a sua intenção de entrar na região crítica, o processo já indica (para o caso de empate) que a vez é de um outro

36 Algoritmo de Peterson Garante exclusão mútua e justiça Usa flags (intenção de acesso) e turn (direito de acesso) var flag array [0 1] of boolean; turn:01; procedure P0; begin repeat flag [0] := true; turn := 1; while flag [1] and turn = 1 do {nothing; < região crítica >; flag [0] := false; < restante > forever end; procedure Pl; begin repeat flag [1] := true; turn := 0; while flag [0] and turn = 0 do {nothing; < região crítica >; flag [1] := false; < restante > forever end; begin flag [0] := false; flag [1] := false; turn := 1; parbegin P0; P1 parend end

37 Solução por software: Semáforo Semáforo Semáforos são usados para exclusão mútua Um semáforo s é uma estrutura de dados, formada por Um contador Um apontador para uma fila de processos bloqueados no semáforo Somente pode ser acessado por duas operações atômicas Se dois processos tentam acessar ou liberar uma região simultaneamente Essas operações serão seqüencializadas

38 Semáforo (Pthreads) Primitivas struct semaphore { int count; queuetype queue; void semwait(semaphore s){ // função P scount--; if(scount<0){ 1 Coloca o processo na lista de espera (squeue) 2 Bloqueia o processo void semsignal(semaphore s){ // função V scount++; if(scount<=0){ 1 Remove um processo P da lista de espera (squeue) 2 Coloca o processo P na lista de pronto

39 Semáforo (Pthreads) Fluxo de acesso à região crítica quando do emprego de semáforos

40 Semáforo (Pthreads) Permite: Controlar o fluxo de controle do programa e Acessar a áreas de dados compartilhadas por threads concorrentes Especificar um número determinado de threads que podem entrar na seção crítica Exemplo Fila para pegar passagem no aeroporto com 5 caixas, quando uma caixa fica livre outro cliente pode ser tratado, mas somente 5 clientes podem ser tratados concorrentemente

41 Semáforo (Pthreads) Principais operações int sem_init(sem_t *sem, int pshared, unsigned int value); Inicializa um semáforo Parâmetros sem: Objeto semáforo a ser inicializado pshared: Se diferente de zero indica que o semaforo pode ser compartilhado entre processos pesados Value: Valor de inicialização do contador do semáforo int sem_wait(sem_t * sem); Decrementa o valor do semáforo Se o valor do semáforo for negativo então O processo que chamou o comando wait é bloqueado Senão O processo acessa a região crítica

42 Semáforo (Pthreads) Principais operações int sem_trywait(sem_t * sem); Decrementa o valor do semáforo somente se este não estiver com valor negativo Retorna 0 (zero) se o valor do semáforo não for negativo O processo que chamou o comando wait é bloqueado Senão O processo que chamou não é bloqueado int sem_post(sem_t * sem); Incrementa o valor do semaforo Move um processo da lista de bloqueados para a lista de pronto, se houve int sem_getvalue(sem_t * sem, int * sval); Captura o valor atual do semáforo e armazena em sval int sem_destroy(sem_t * sem); Elimina o controle dado pelo semáforo

43 Semáforo (Pthreads) prod cons void *produtor() { int i; for(i=0; i<100; i++) { sem_wait(&s0); buffer = i; sem_post(&s1); #include <pthreadh> #include <semaphoreh> sem_t s0, s1; int buffer; void *consumidor() { int i, k; for(i=0; i<100; i++) { sem_wait(&s1); k = buffer; sem_post(&s0); printf("valor consumido: %d\n", k); void main() { pthread_t tid1, tid2; sem_init(&s0, 0, 1); sem_init(&s1, 0, 0); pthread_create(&tid1, NULL, produtor, NULL); pthread_create(&tid2, NULL, consumidor, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL);

44 Mutex (Pthreads) Utilizado para : Proteger estruturas de dados compartilhadas em modificações concorrentes Implementar seções críticas e monitores Similar a um semáforo, mas que só pode assumir dois valores Locked: Bloqueia o acesso a uma dada região crítica Unlocked: Libera o acesso a uma dada região crítica Cenário de operação com mutex Uma thread que deseja fazer lock em mutex que já está com lock por outra thread é suspenso até que a thread faça o unlock do mutex primeiro

45 Mutex (Pthreads) Principais Operações int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex-attr_t *mutexattr); Inicializa os valores do multiplexador Parametros: Mutex: objeto mutex Mutexattr: Objeto mutex_t pode ser inicializado estaticamente na criação com o comando pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER; int pthread_mutex_lock(pthread_mutex_t *mutex); Impede o acesso de outros processo à região crítica Se região estiver bloqueada, o processo chamador é suspenso int pthread_mutex_trylock(pthread_mutex_t *mutex); Tenta impedir o acesso de outros processo à região crítica Se região já estiver bloqueada, o processo chamador não é bloqueado

46 Mutex (Pthreads) Mutex (Principais Operações) int pthread_mutex_unlock(pthread_mutex_t *mutex); Libera o acesso à região crítica int pthread_mutex_destroy(pthread_mutex_t *mutex); Destroy o controle dado pelo objeto mutex

47 Mutex (Pthreads) Exemplo #include <stdioh> #include <stdlibh> #include <pthreadh> int saldo = 100; pthread_mutex_t m; void * deposita( void *str ) { int i, a; for(i=0; i<100; i++) { pthread_mutex_lock(&m); a = saldo; a = a + 1; saldo = a; pthread_mutex_unlock(&m); void main() { pthread_t thid1, thid2; pthread_mutex_init(&m, NULL); void * retira( void *str ) { int i, b; for (i=0; i<100; i++) { pthread_mutex_lock(&m); b = saldo; b = b - 1; saldo = b; pthread_mutex_unlock(&m); pthread_create (&thid1, NULL, deposita, NULL)!= 0); pthread_create (&thid2, NULL, retira, NULL)!= 0); pthread_join(thid1, NULL); pthread_join(thid2, NULL); printf( SALDO ATUAL = %d\n, saldo);

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

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

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

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

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

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

Introdução a Programação Concorrente. Aula 02. Prof. André Luis Meneses Silva

Introdução a Programação Concorrente. Aula 02. Prof. André Luis Meneses Silva Introdução a Programação Concorrente Aula 02 Prof. André Luis Meneses Silva Agenda Pthreads Trabalhando com Threads Exclusão Mútua Semáforos Pthreads Históricamente, fabricantes de hardware implementam

Leia mais

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa Concorrência Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa Compartilhamento de recursos globais. Gerência de alocação de recursos. Localização de erros de programação

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

Sincronização e Comunicação entre Processos. Sincronização e Comunicação Volnys Bernal 1. Agenda

Sincronização e Comunicação entre Processos. Sincronização e Comunicação Volnys Bernal 1. Agenda entre Processos 004-006 Volnys Bernal 004-006 Volnys Bernal Agenda entre Processos Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Região Crítica Classificação dos mecanismos de sincronizaçã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

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

Semáforo Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 1 Semáforo Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Semáforo Sumário Semáforo Problema produtor-consumidor

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

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

Problema do Produtor -Consumidor. Solução por semáforos Problema do Produtor -Consumidor Solução por semáforos Autoria Autores alunos da disciplina SO II Local Instituto de Informática UFRGS Versão v7 agosto de 2008 por C. Geyer Visão geral do assunto...2 Conceito...3

Leia mais

Sincronização de Processos (2)

Sincronização de Processos (2) Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância

Leia mais

Sincronização. Problema da Exclusão Mútua

Sincronização. Problema da Exclusão Mútua Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)

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

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 Programação multithread Prática

Leia mais

Sincronização. Problema da Exclusão Mútua

Sincronização. Problema da Exclusão Mútua Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)

Leia mais

Sistemas Operacionais Aula 6

Sistemas Operacionais Aula 6 Sistemas Operacionais Aula 6 Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE O que fazer

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

Sistemas Operacionais II

Sistemas Operacionais II Mecanismos de sincronização de processos Instituto de Informátic ca - UFRGS Sistemas Operacionais II Da teoria à prática... (Processos, threads, mutex, semáforos, variáveis de condição e monitores) Aula

Leia mais

Tipos de Soluções (cont.)

Tipos de Soluções (cont.) Tipos de Soluções (cont.) Sincronização de Processos: Semáforos Aula 12 Profa. Patrícia Dockhorn Costa Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software

Leia mais

Execução Concorrente

Execução Concorrente Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2011 / 2012 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro

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

Sistemas Operativos: Concorrência (Parte 2)

Sistemas Operativos: Concorrência (Parte 2) Sistemas Operativos: Concorrência (Parte 2) Pedro F. Souto (pfs@fe.up.pt) April 1, 2014 Sumário Monitores Variáveis de Condição Semáforos Leitura Adicional Sumário Monitores Variáveis de Condição Semáforos

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

Sincronização de Processos (2)

Sincronização de Processos (2) Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância

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 7. SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS: 7.1 Introdução; 7.2 Aplicações Concorrentes;

Leia mais

Sincronização. Problema da Exclusão Mútua

Sincronização. Problema da Exclusão Mútua Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)

Leia mais

Execução Concorrente

Execução Concorrente Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2015 / 2016 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro

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

Tipos de Soluções (cont.)

Tipos de Soluções (cont.) Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância

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

1 a Questão Unidade I e II (45 pontos)

1 a Questão Unidade I e II (45 pontos) DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/08 Teste 1 Unidades I e II Total: 200 pontos Aluno: Escore: 1 a Questão Unidade I e II (45 pontos)

Leia mais

Sistemas Operativos: Concorrência

Sistemas Operativos: Concorrência Sistemas Operativos: Concorrência Pedro F. Souto (pfs@fe.up.pt) March 16, 2012 Sumário Race Conditions e Secções Críticas Exclusão Mútua via Programação Exclusão Mútua via Inibição de Interrupções. Locks

Leia mais

MC504 Sistemas Operacionais MC514 Sistemas Operacionais: Teoria e

MC504 Sistemas Operacionais MC514 Sistemas Operacionais: Teoria e Instituto de Computação Universidade Estadual de Campinas Nome: MC504 Sistemas Operacionais MC514 Sistemas Operacionais: Teoria e Prática Profa. Islene Calciolari Garcia 18 de setembro de 2013 Questão

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

Semáforos. Walter Fetter Lages.

Semáforos. Walter Fetter Lages. Semáforos Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter Fetter

Leia mais

UFRJ IM - DCC. Sistemas Operacionais I. Unidade II Concorrência

UFRJ IM - DCC. Sistemas Operacionais I. Unidade II Concorrência UFRJ IM - DCC Sistemas Operacionais I Unidade II 19/2/2007 Prof Antonio Carlos Gay Thomé Prof Aux Simone Markenson Pech 1 Organização da Unidade Processos Threads Princípios da ncia Exclusão o Mútua M

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

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

Leia mais

Sistemas de Computação. Threads e Sincronização

Sistemas de Computação. Threads e Sincronização Threads e Sincronização Processos concorrentes Os processos em execução sob um sistema operacional podem ser: independentes (não há interferência entre eles) cooperativos (há interferência entre eles)

Leia mais

Concorrência entre Processos

Concorrência entre Processos Concorrência entre Processos Prof. Dr. André Carvalho andre@icomp.ufam.edu.br Agenda n Concorrência entre Processos Condições de disputa, seções críticas n Soluções para Seções Críticas n Problemas clássicos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Programa Seqüencial Representado por apenas um processo Existe apenas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Problemas clássicos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Produtor / consumidor O jantar dos filósofos O barbeiro sonolento

Leia mais

Arquitetura de Computadores Sistemas Operacionais II

Arquitetura de Computadores Sistemas Operacionais II Definição de Processo Arquitetura de Computadores Sistemas Operacionais II Processo é o mesmo de Programa? Programa Estrutura estática Instruções + Dados Processo Entidade Ativa Instância de um Programa

Leia mais

Sincronização de Processos (1) Mecanismos de busy wait

Sincronização de Processos (1) Mecanismos de busy wait Sincronização de Processos (1) Mecanismos de busy wait Condições de Corrida Exemplo: Fila de impressão. Qualquer processo que queira imprimir precisa colocar o seu documento na fila de impressão (compartilhada).

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

Programação de Sistemas Carris

Programação de Sistemas Carris Programação de Sistemas Carris Programação de Sistemas Carris : 1/18 Problema (1) A fim de incentivar os alfacinhas a deslocar na cidade de Volvo, a Carris-Companhia de Carris de Ferro de Lisboa decidiu

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

Introdução aos Sistemas Operacionais. Threads

Introdução aos Sistemas Operacionais. Threads Introdução aos Sistemas Operacionais Threads Eleri Cardozo FEEC/Unicamp O que é uma Thread? Uma thread (linha de controle) é uma unidade de execução e de controle, alocação e compartilhamento de recursos

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

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

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aulas 6 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi

Leia mais

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

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/12 PROVA I Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos Aluno: G A B A R I T O Escore: Responda às perguntas de forma

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

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

Programando com Threads em C

Programando com Threads em C Programando com Threads em C AEDS III Bruno Diniz de Paula (diniz@dcc.ufmg.br) e-commerce System Performance Evaluation and Experimental Development Lab O que são Threads? Linhas de execução concorrentes

Leia mais

Programação Paralela

Programação Paralela Programação Paralela Conteúdo: Introdução Motivação Desafios Modelagem Programação Paralela Memória Compartilhada Pthreads Programação Paralela Troca de Mensagens MPI Métricas de desempenho Introdução

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

Semáforos. Gerenciamento de Recursos I

Semáforos. Gerenciamento de Recursos I Semáforos O problema dos leitores/escritores, apresentado a seguir, consiste em sincronizar processos que consultam/atualizam dados em uma base comum. Pode haver mais de um leitor lendo ao mesmo tempo;

Leia mais

Leandro Soares de Sousa (DSc.) Página: Aula 04 - desenvolvimento multithread

Leandro Soares de Sousa (DSc.)   Página:   Aula 04 - desenvolvimento multithread Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 04 - desenvolvimento multithread Mais e mais ferramentas! 2 Processos e Threads: desenvolvimento

Leia mais

Programação concorrente usando threads POSIX e Java

Programação concorrente usando threads POSIX e Java Programação concorrente usando threads POSIX e Java MAC 431 / MAC 5742 Introdução à Computação Paralela e Distribuída Daniel Cordeiro DCC - IME - USP 13 de agosto de 2012 Introdução Por que escrever programas

Leia mais

Programação Orientada a Objetos. Concorrência

Programação Orientada a Objetos. Concorrência Programação Orientada a Objetos Concorrência Cristiano Lehrer, M.Sc. Níveis de concorrência: Introdução Nível de instrução de máquina: Executando duas ou mais instruções de máquina simultaneamente. Nível

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II O problema da seção crítica... Instituto de Informátic ca - UFRGS Sistemas Operacionais II Exclusão mútua (implementação) Aula 04 Seção crítica Porção de código que não pode ser executado por dois ou mais

Leia mais

Escalonamento (Exclusão Mútua)

Escalonamento (Exclusão Mútua) Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Escalonamento (Exclusão Mútua) Lucas Cordeiro lucascordeiro@ufam.edu.br Notas de Aula Baseado nas Notas

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

Programação de Sistemas Cafetaria

Programação de Sistemas Cafetaria Programação de Sistemas Cafetaria Programação de Sistemas Cafetaria : 1/14 Problema Uma cafetaria vende duas classes de café, cada um servido por uma fila dedicada: local e levar ( take away ). Ao entrar

Leia mais

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

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 7 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi

Leia mais

Semáforos. Gerenciamento de Recursos I

Semáforos. Gerenciamento de Recursos I Semáforos O problema dos leitores/escritores, apresentado a seguir, consiste em sincronizar processos que consultam/atualizam dados em uma base comum. Pode haver mais de um leitor lendo ao mesmo tempo;

Leia mais

Notas da Aula 5 - Fundamentos de Sistemas Operacionais

Notas da Aula 5 - Fundamentos de Sistemas Operacionais Notas da Aula 5 - Fundamentos de Sistemas Operacionais 1. Operações Atômicas Uma operação é dita atômica quando ela é indivisível no tempo. Em outras palavras, uma vez que a operação tenha sido iniciada,

Leia mais

SSC0640 Sistemas Operacionais I

SSC0640 Sistemas Operacionais I SSC0640 Sistemas Operacionais I 8ª Aula Comunicação e Sincronismo de Processos Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana

Leia mais

Sincronização e comunicação entre processos

Sincronização e comunicação entre processos Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Sincronização e comunicação entre processos Em um sistema multiprogramável com

Leia mais

Sistemas Operacionais. Comunicação entre processos

Sistemas Operacionais. Comunicação entre processos Sistemas Operacionais Comunicação entre processos Comunicação entre Processos Os SO s hoje são multi-tarefa Alguns processos precisam cooperar para cumprir seus objetivos Sugestões de implementação? Exemplos

Leia mais

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

Sistemas Operacionais. Condição de corrida e Região crítica Sistemas Operacionais Condição de corrida e Região crítica Região Crítica Parte do código que acessa a área compartilhada Condição em que dois processos lêem e escrevem um dado compartilhado e o resultado

Leia mais

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012 1 2005-2009 Volnys Bernal 1 2005-2009 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Interface de threads Interfaces de threads de usuário x threads de núcleo

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos - Parte 1 Prof. Dr. Fábio Rodrigues de la Rocha (Processos - Parte 1) 1 / 46 Um aspecto importante no estudo sobre sistemas operacionais é o gerenciamento de processos.

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

Problema dos Leitores/Escritores

Problema dos Leitores/Escritores Sincronização: Semáforos Problema dos Leitores/Escritores Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina: Sistemas Operacionais

Leia mais

ASOP - Arquitecturas e Sistemas Operativos (2009/10) 2 a Parte do Exame (Sistemas Operativos/A) 5 de Julho de 2010

ASOP - Arquitecturas e Sistemas Operativos (2009/10) 2 a Parte do Exame (Sistemas Operativos/A) 5 de Julho de 2010 ASOP - Arquitecturas e Sistemas Operativos (2009/10) 2 a Parte do Exame (Sistemas Operativos/A) 5 de Julho de 2010 IMPORTANTE: Esta parte do Exame está cotada para 10 valores, tem uma duração de 1 hora

Leia mais

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores Sistemas Operacionais Sincronização: Semáforos Problema dos Leitores/Escritores Autoria Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina:

Leia mais

Pthreads. O que são threads? Mario João Junior. Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional.

Pthreads. O que são threads? Mario João Junior. Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional. Pthreads Mario João Junior O que são threads? Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional. O que são threads? No UNIX, uma thread: Existe no interior

Leia mais

Leandro Soares de Sousa (DSc.) Página: Parte II

Leandro Soares de Sousa (DSc.)   Página:   Parte II Tópicos Especiais em Sistemas Computacionais Leandro Soares de Sousa (DSc.) e-mail: leandro.uff.puro@gmail.com Página: http://www.ic.uff.br/~lsousa Parte II Mais e mais ferramentas! 2 Processos e Threads:

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

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Pai Natal Programação de Sistemas Pai Natal : 1/16 Problema (1) Considere o Pai Natal ( Santa Claus ) se encontra a dormir na sua loja em Rovaniemi-Lapónia finlandesa, sendo acordado

Leia mais

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 4. Comunicação e Sincronização de Processos

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 4. Comunicação e Sincronização de Processos Aula 4 Comunicação e Sincronização de Processos Comunicação e Sincronização de Processos Cooperação Variáveis compartilhadas Operações atômicas Exclusão mútua Requisitos para exclusão mútua Referências:

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos Semáforos Semáforos Mecanismo de sincronização que não requer espera ocupada Dijkstra propôs usar uma variável inteira para contar o n o de WAKEUPs para uso futuro Menos

Leia mais

Na Aula Anterior... O Conceito de Threads

Na Aula Anterior... O Conceito de Threads GSI018 Sistemas Operacionais 12/09/2016 Na Aula Anterior... Nesta Aula Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Comunicação entre Processos Pipes;

Leia mais

Mecanismos de Sincronização com Variáveis Compartilhadas

Mecanismos de Sincronização com Variáveis Compartilhadas Mecanismos de Sincronização com Variáveis Compartilhadas Rômulo Silva de Oliveira Edição do Autor, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Introdução Problema da seção crítica

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

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

Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ

Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ Computação Concorrente (MAB117) Gabarito Segunda Prova Prof. Silvana Rossetto 9 de julho de 2015 1 DCC/IM/UFRJ Questão 1 (2,5 pts) O código Java abaixo implementa uma solução para o problema do barbeiro

Leia mais

Sincronização e Comunicação

Sincronização e Comunicação Sincronização e Comunicação Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 28 Sumário 1 Concorrência 2 Sistemas Multiprogramáveis Troca de mensagens

Leia mais

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 2. Gerência de Processos

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 2. Gerência de Processos Aula 2 Gerência de Processos Gerência de Processos O que são Processos e Threads? Porque são necessários? Como são implementados? Como são controlados? Escalonamento Referências: Capítulo 4: 4.1 a 4.5

Leia mais

Sincronização e memória compartilhada no Linux

Sincronização e memória compartilhada no Linux Sincronização e memória compartilhada no Linux Memória compartilhada Modelo de memória UNIX Processo aloca (allocate) um segmento no qual deseja compartilhar Processos que desejam acessar o segmento alocado,

Leia mais

OO Engenharia Eletrônica

OO Engenharia Eletrônica OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à programação multi-thread. Thread: linha de execução de um processo. Multi-thread: execução de múltiplas threads em um processo. Prof.

Leia mais

Threads. threads em Linux Taisy Weber

Threads. threads em Linux Taisy Weber Threads threads em Linux Taisy Weber Ambiente UNIX Processos: revisão de conceitos básicos processos no SO UNIX programação criação (exec, fork, etc), sincronização (wait), eliminação, processos zombie

Leia mais