Sistemas Operacionais Processos

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

Download "Sistemas Operacionais Processos"

Transcrição

1 Sistemas Operacionais Processos Prof. Raimundo Macêdo, DCC/UFBA

2 Processo processo: programa em execução consiste de: código do programa executável dados pilha de execução contador de programa valores de registros informações sobre estado de acesso a arquivos etc.

3 Árvore de Processos criação dinâmica de processos A processo pai processo pai processos filhos de B B D E F C processos filhos de A X Processo

4 Criação de Processos no Unix #include <stdlib.h> #define SHELL /bin/sh int my_system (const char *command) { int status; pid_t pid; } pid = fork(); if (pid == 0) { execl (SHELL, SHELL, -c, command, NULL); exit (EXIT_FAILURE); } else if (pid < 0) status = -1; else if (waitpid (pid, &status, 0)!= pid) status = -1; return status; main (int argn, char **argc) { my_system ( ls -la ); }

5 Processos no Linux LaSiD - Laboratório de Sistemas Distribuídos

6 struct task_struct armazena informações sobre processos ver arquivo include/linux/sched.h anexo

7 Alguns Atributos de Processos uid (user identification) gid (group identification) diretório corrente de trabalho descritores de arquivo padrão: standard input standard output standard error

8 Estados de um Processo Executando Bloqueado Pronto

9 Escalonamento de Processos Processos 0 1 n-1... Scheduler

10 Implementação de Processos o sistema operacional mantém uma tabela de processos na tabela de processos há uma entrada por processo

11 Exemplo de Tabela de Processos Gerenciamento de Processos Gerenciamento de Memória Gerenciamento de Arquivos registradores program counter apontador da pilha estado do processo tempo de início de execução tempo de CPU usado... apontador para segmento de código apontador para segmento de dados... diretório raiz diretório corrente descritores de arquivos...

12 Processo Abstrato pilha Concreto heap Processos Comunicação para realização das tarefas Processos Independentes, Competidores ou Cooperantes dados código

13 Processos em Sistemas Centralizados Comunicação Compartilhamento de Memória Primitivas: Semáforos, filas de mensagens, monitores, sinais etc Relógio Único RAM Pi Pn Pj Pk

14 Processos em Sistemas Distribuídos Comunicação Troca de Mensagens Primitivas: send(destino, mensagem) e receive(origem, mensagem) Pi Pj Pk Pn RAM RAM RAM RAM

15

16

17

18 Sincronização entre Processos Race condition: dois processos compartilham dados e o resultado depende de quem executa exatamente quando Solução : Exclusão Mútua

19 Propriedades de um programa distribuído (Lamport, 1977) LaSiD - Laboratório de Sistemas Distribuídos Exemplo:exclusão mútua num sistema controlando semáforos safety: dois semáforos numa estarão verde ao mesmo tempo liveness: um carro esperando na luz vermelha, receberá luz verde no futuro

20 Exemplo de Race Condition Extraído do livro Tanenbaum pg. 54 spooler de fila de impressão 1- A atualiza nexta = in A é interrompido pelo escalonador 3 - B atualiza netxb := in + 1 Processo A Processo B abc prog.c prog.n 4 - B faz spooler [nextb] := file; in := nextb; /* in = 7 * / 5 - Escalonador coloca A na CPU 6 - A faz spooler [nexta] := file; in := nexta; /* in = 7 * / out = 4 in = 6 in e out são variáveis compartilhadas Arquivo de B nunca será impresso

21 Formulação Abstrata do Requisito de Sincronização região crítica: parte do programa que acessa o recurso compartilhado exclusão mútua: garantia de que, se um processo está acessando a sua região crítica, nenhum outro processo estará fazendo o mesmo

22 Requisitos de uma boa solução dois processos não podem estar simultaneamente em suas regiões críticas (safety) nenhuma consideração deve ser feita sobre velocidades relativas de execução de processos nenhum processo executando fora de sua região crítica pode bloquear outros processos (safety) processos devem em algum instante poder entrar em suas regiões críticas (liveness)

23 As soluções em geral implicam : Ação anterior (testar condição)... RC Saída da região em crítica (liberar a RC para outros processos)

24 Métodos para Exclusão Mútua Desligar (desabilitar) interrupções Alternação estrita (strict alternation) Solução de Peterson Instrução TSL (test and set lock) Semáforos Monitores Troca de Mensagens

25 Desligar Interrupções solução simples não é recomendada no nível das aplicações pode ser útil para o kernel somente funciona para sistemas monoprocessados Desabilita as interrupções... RC Habilita interrupções

26 Tentando resolver o problema via software com uso de variáveis tipo tranca while (lock ==1) // wait lock = 1... R.C.... lock =0 Para sair Para entrar Problema : 2 processos podem entrar região crítica caso leia o valor de lock simultaneamente.

27 Resolvendo a Exclusão mútua com Alternação Estrita while (TRUE) { while (turn!= 0) /* wait */ critical_section(); turn = 1; noncritical_section(); } while (TRUE) { while (turn!= 1) /* wait */ critical_section(); turn = 0; noncritical_section(); } Problema : a falha ou não execução de um processo impedirá o acesso do outro processo

28 int wait_turn; Solução de Peterson int interested[2]; /* valores iniciais = 0 */ void enter_region (int process) { } int other; other = 1 - process; interested[process] = TRUE; wait_turn = process; while (wait_turn == process && interested[other] == TRUE); void leave_region (int process) { } interested[process] = False); Exercício para casa : 1) mostrar que a solução de peterson atende aos requisitos de exclusão mútua 2) fazer a versão generalizada para n processos Dica : usar esquema de senhas

29 Exemplo: P0 Solução de Peterson P1 Other = 1 0 = 1 Interested[0] = true wait_turn = 0 other = 1 1 = 0 interested[1] = true wiat_turn = 1 While(cond?) Entra RC LaSiD - Laboratório de Sistemas Distribuídos White(cond?) Espera

30 Solução de exercício Usar liga e desliga interrupções somente para implementar o teste do lock. Obs: lock assume inicialmente valor 1 Testa_RC: DI (desliga) LA lock (acumulador := lock) CMP A,#0 JNZ Entra_Região_Crítica LI (liga interrupções) JMP Testa_RC(testa novamente se valor de lock = 1) Entra_Região_Crítica Set lock,0 (lock:=0) LI (liga interrupções) Sai_RC set lock,#1 LaSiD - Laboratório de Sistemas Distribuídos

31 ... until false; Exercício (trazer na próxima aula) LaSiD - Laboratório de Sistemas Distribuídos A primeira solução de software correta para o problema de exclusão mútua foi feita por Dekker. Mostre que está correta segundo critérios dados em sala de aula. Repeat flag[i] := true; /* para tentar entrar na RC */ while flag[j] do if turn = j then begin flag[i] := false; while turn = j do no_op; flag[i] := true; end; RC... Turn := j; /* saida da RC */ Flag[i]:= false;

32 Resolvendo o Problema no Nível do LaSiD - Laboratório de Sistemas Distribuídos Hardware : A Instrução TSL atomicamente transfere uma posição da memória para um registrador e armazena um valor diferente de zero na na posição de memória enter_region: tsl reg, lock /* reg:= lock; lock:= 1; */ cmp reg, #0 /* reg 0 o valor de lock era zero? */ jnz enter_region /* loop se o valor de lock era 1 */ ret leave_region: mov lock, #0 /* lock := 0*/ ret

33 Tentando resolver o problema: while Enter_region (lock ==1) // wait lock com TST = o... R.C.... Leave_region lock =1 com TST Para entrar Para sair Problema : stavation.

34 Uso de Semáforos para Exclusão Mútua Wait = Down = P Signal = UP = V Wait(mutex) - bloqueia processo se a RC está ocupada Rergião Crítica Signal(mutex) libera a RC para outros processos

35 Semáforos de Dijkstra Abstração conveniente para lidar com o problema de acesso a região crítica e sincronização entre processos Um semáforo é uma variável inteira operações WAIT ou P (Proberen em holandês) SIGNAL ou V (Verhogen em holandês)

36 Semáforos de Dijkstra Definição Clássica de Semáforos Inicialmente S := 1; WAIT(S) : while S 0 no_op S := S -1; SIGNAL(S) : S := S + 1; OBS: Wait e Signal são atômicos pois são regiões críticas Exercício para Casa : Implementar WAIT e SIGNAL

37 Implementando Semáforos de Dijkstra WAIT(S) Enter_region: tsl reg, S /* reg:= S; S:= 1; */ cmp reg, #0 /* reg 0 o valor de lock era zero? */ jnz enter_region /* loop se o valor de lock era 1*/ ret SIGNAL(S): mov lock, #0 /* lock := 0*/ ret

38 Usando Semáforos para resolver o problema de acesso à região crítica para n processos LaSiD - Laboratório de Sistemas Distribuídos Solução : os processos compartilham um semáforo mutex (mutual exclusion) iniciado com valor 1 Repeat wait (mutex) seção crítica signal (mutex) resto da seção until false OBS: BUSY WAIT irá ocorrer, mas pode ser interessante para multiprocessadores ou quando o lock for rápido

39 Usando semáforos para sincronização entre processos cooperantes Exemplo: suponhas processos P1 e P2 cuja operação S1 de P1 necessariamente ter que ser executada antes da operação S2 de P2 Processo 1 S1; Signal (synch); Processo 2 wait (synch); S2;

40 Espera Ocupada (Busy Waiting) Os métodos: Alternação estrita (strict alternation) Solução de Peterson Instrução TSL (test and set lock) Semáforos convencionais são baseados em espera ocupada! implicam em gasto de tempo de CPU

41 Como resolver o problema de BUSY WAIT da especificação clássica dos semáforos? LaSiD - Laboratório de Sistemas Distribuídos Solução : uso de bloqueio de processos e filas de espera associadas aos semáforos Processo P WAIT (S) ---> processo P é bloqueado e colocado na fila de espera associado a S. O controle passa para o escalonador que então passo o controle para outro processo. Processo P SIGNAL (S) ---> o escalonador tira um processo associado a S do estado waiting para ready

42 Estrutura do semáforo com filas LaSiD - Laboratório de Sistemas Distribuídos Type semáforo = Record value : integer; L : lista de processos End; WAIT (S) : S.value := S.value - 1; if S.value < 0 then begin add P to S.L; end; SIGNAL (S) : S.value := S.value + 1; if S.value 0 then begin remove a P from S.L; wakeup(p); end;

43 Problemas Clássicos de sincronização que modelam vários Mecanismos de Sistemas Operacionais Produtor/Consumidor o problema dos filósofos (the dining philosophers problem) o problema dos leitores/escrevedores (the readers and writers problem) o problema do barbeiro que dorme (the sleeping barber problem)

44 O Problema Produtor/Consumidor dois processos compartilham um buffer comum, de tamanho fixo um deles, o produtor, coloca informação no buffer o outro, o consumidor, tira informações do buffer quando o buffer estiver cheio, o produtor dorme quando o buffer ficar vazio, o consumidor dorme este problema é sujeito a race condition

45 Produtor/Consumidor Usando buffer infinito consumidor produtor

46 Produtor entra_região_crítica buffer[fim] := item; fim := fim + 1; num_itens := num_itens +1 ; if num_itens If fim = in = then 1... then tira consumidor da fila FIFO sai_região_crítica Set in = 0; fim = 0;num_itens = 0; Consumidor entra_região_crítica if num_itens > 0 If fim > in then... item := buffer[in] in := in + 1; num_itens:= num_itens - 1; else coloca consumidor na fila FIF sai_região_crítica

47 Solução do problema do Produtor/Consumidor usando semáforo consumidor produtor Produtor repeat produz um novo item; wait (mutex); buffer[fim] := item; fim := fim + 1; Consumidor reapeat wait (full) wait (mutex) item := buffer[in] in := in + 1 signal (mutex); until false; Exercício : fazer o signal algoritmo (mutex); para buffer finito de tamanho N signal (full) until false;

48 Monitores encapsulamento de procedimentos, variáveis e estruturas processos chamam procedimentos do monitor apenas um processo pode estar ativo dentro do monitor num dado instante o compilador constrói a exclusão mútua

49 Estrutura de Monitores monitor example integer i; condition c; procedure producer(x);... end procedure consumer(x);... end end monitor

50 Monitores: Primitivas wait/signal Primitivas do Monitor wait(cond): bloqueia o processo que a chamou e espera por um signal. signal(cond): acorda um processo bloqueado O que fazer depois do signal Hoare: processo acordado ganha o direito de executar e bloqueia o processo que acordou B. Hansen: processo que executou signal() fica obrigado a deixar o monitor

51 Produtor/Consumidor usando Monitor Monitor ProdCons condition full, empty; int cont = 0; Procedure Enter; if (cont == N) wait(full); enter_item; cont = cont + 1; if (cont == 1) signal(empty); end; Procedure Remove; if (cont == 0) wait(empty); remove_item; cont = cont + 1; if (cont == N -1) signal(full); END; Procedure Prod; while (TRUE) Produce_item; ProdCons.Enter; endwhile; end; Procedure Cons; while (TRUE) ProdCons.Remove; Consome_item; endwhile; end; Características Exige suporte da linguagem de programação

52 Troca de Mensagens primitivas send(destino, mensagem) receive(fonte, mensagem) se nenhuma mensagem está disponível, o recebedor pode bloquear até que uma mensagem chegue

53 Produtor/Consumidor com Troca de Mensagens #define N 100 #define MSIZE 4 typedef int message[msize]; void producer(void) { int item; message m; while (TRUE) { produce_item(&item); receive(consumer,&m); build_message(&m,item); send(consumer,&m); } } void consumer(void) { int item; message m; for (int i=0; i<n; i++) send(producer,&m); while (TRUE) { receive(producer,&m); extract_item(&m,item); send(producer,&m); consume_item(item) } }

54 O problema dos filósofos garfo prato com spaghetti mesa

55 O problema dos filósofos (cont.) um conjunto de filósofos está sentado em volta de uma mesa cada filófoso tem um prato de spaghetti para comer o spaghetti, um filósofo precisa de dois garfos entre cada prato tem um garfo a vida de um filósofo consiste de períodos alternados de comer e pensar quando um filósofo tem fome, ele tenta obter os dois garfos ao lado de seu prato se o filósofo consegue obter os garfos, ele come por um tempo e depois repõe os garfos sobre a mesa como programar a ação dos filósofos?

56 O problema dos filósofos Pega o 1o e espera pelo 2o (se ocupado)

57 O problema dos filósofos Se o 2o estiver ocupado, larga os dois garfos Larga e tenta de novo

58 O problema dos filósofos Se o 2o estiver ocupado, larga os dois garfos Larga e tenta de novo APÓS um Tempo Aleatório

59 O problema dos filósofos Usando mutex para exclusão mútua Down(mutex) pega 1o pega 2o come larga os garfos up(mutex)

60

61 Uma solução para o problema dos filósofos #define N 5 #define LEFT (i-1)%n #define RIGHT (i+1)%n #define THINKING 0 #define HUNGRY 1 #define EATING 2 typedef int semaphore; int state[n]; semaphore mutex = 1; semaphore s[n]; void philosopher(int i) { while (TRUE) { think(); take_forks(i); eat(); put_forks(i); } } void take_forks(int i) { down(&mutex); state[i] = HUNGRY; test(i); up(&mutex); down(&s[i]); } void put_forks(int i) { down(&mutex); state[i] = THINKING; test(left); test(right); up(&mutex); } void test(int i) { if (state[i] == HUNGRY && state[left]!= EATING && state[right]!= EATING) { state[i] = EATING; up(&s[i]); } }

62

63 O problema do barbeiro que dorme um barbearia tem: um barbeiro uma cadeira para cortar cabelo n cadeiras para clientes se não há clientes, o barbeiro senta-se na cadeira de cortar cabelo e dorme quando um cliente chega, ele acorda o barbeiro se outros clientes chegam, eles sentam-se nas cadeiras (se houver cadeiras vagas) ou vão embora (se não há cadeiras) como programar o barbeiro e os clientes?

64

65 Uma solução para o problema do barbeiro que dorme #define CHAIRS 5 semaphore customers = 0; sempahore barbers = 0; semaphore mutex = 1; int waiting = 0; void Barber(void) { while (TRUE) { down(customers); down(mutex); waiting = waiting - 1; up(barbers); up(mutex); cut_hair(); } } void Customer(void) { down(mutex); if (waiting < CHAIRS) { waiting = waiting + 1; up(customers); up(mutex); down(barbers); get_haircut(); } else up(mutex); } }

66 Exercício Fazer uma solução para o problema do barbeiro considerando que não há cadeiras de espera

67 O problema dos leitores/escrevedores um conjunto de leitores e escrevedores podem ter acesso a um conjunto compartilhado de dados quando um escrevedor quer escrever, ele tem que ter acesso exclusivo aos dados vários leitores podem ler os dados ao mesmo tempo como programar os leitores e escrevedores?

68 Uma solução para o problema dos escritores/escrevedores semaphore mutex = 1; semaphore db = 1; int rc = 0; void reader(void) { while (TRUE) { down(&mutex); rc = rc + 1; if (rc == 1) down(&db); up(&mutex); read_database(); down(&mutex); rc = rc -1; if (rc == 0) up(&db); up(&mutex); use_data_read(); } } void writer (void) { } while (TRUE) { } think_up_data(); down(&mutex); write_database(); up(&mutex);

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

8 PROBLEMAS CLÁSSICOS

8 PROBLEMAS CLÁSSICOS 8 PROBLEMAS CLÁSSICOS 8.1.1 FILÓSOFOS GLUTÕES Contexto: temos cinco filósofos, cujas únicas atividades são comer macarrão e pensar. Além disso, o macarrão nunca acaba. Componentes do problema: 5 Filósofos

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

Sistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira

Sistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira Sistemas Operacionais Técnicas de Implementação de Exclusão Mútua Aula VI Prof. Rosemary Silveira Tópicos de Apresentação Condições de Corrida Técnicas de Implementação de Exclusão Mútua Condições de Corrida

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 Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal [email protected] www.ezequielzorzal.com

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 08: Sincronização de Processos Ezequiel R. Zorzal [email protected] www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas

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

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 [email protected] http://sites.google.com/site/marceloiury/ Comunicação entre Processos Processos

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

Sincronização de Processos (3) Exercícios - Semáforos

Sincronização de Processos (3) Exercícios - Semáforos Sincronização de Processos (3) Exercícios - Semáforos Uso dos Semáforos 1. Sincronização de execução 2. Acesso a recursos limitados 3. Exclusão mútua Problema do pombo correio Problema do jantar dos canibais

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

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 [email protected] Prazo: dia 02 de abril 2 Aula passada Comunicação entre processos é útil

Leia mais

Produtor - Consumidor c/ Buffer Circular (1) Aula 13 - Exercícios - Semáforos. Produtor - Consumidor c/ Buffer Circular (3)

Produtor - Consumidor c/ Buffer Circular (1) Aula 13 - Exercícios - Semáforos. Produtor - Consumidor c/ Buffer Circular (3) 1 Produtor - Consumidor c/ Buffer Circular (1) Dois problemas p/ resolver: - Variáveis compartilhada - Coordenação quando o buffer estiver CHEIO ou VAZIO Sincronização de Processos (4) Próxima inserção

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Dra. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille e da Profa. Dra. Luciana A. F. Martimiano e nas transparências

Leia mais

7 SINCRONIZAÇÃO DE PROCESSOS

7 SINCRONIZAÇÃO DE PROCESSOS 7 SINCRONIZAÇÃO DE PROCESSOS Quando se trabalha com processos cooperativos, eles podem afetar uns aos outros. Eles compartilham recursos, principalmente posições de memória e arquivos. O acesso a dados

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

Exclusão Mútua Distribuída

Exclusão Mútua Distribuída Exclusão Mútua Distribuída Raimundo Macêdo Laboratório de Sistemas Distribuídos - LaSiD Universidade Federal da Bahia Propriedades de um programa distribuído (Lamport, 1977) Exemplo 2: sistema controlando

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

Sincronização de Processos (3) Exercícios - Semáforos

Sincronização de Processos (3) Exercícios - Semáforos Sincronização de Processos (3) Exercícios - Semáforos Uso dos Semáforos 1. Sincronização de execução 2. Acesso a recursos limitados 3. Exclusão mútua Problema do pombo correio Problema do jantar dos canibais

Leia mais

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

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

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

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

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 [email protected] http://www.lsi.usp.br/~volnys Exclusão Mútua () Objetivo, utilidade, requisitos

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

Aula 7. Problemas Clássicos de Sincronização. 1.1 O Jantar dos Filósofos. 1.2 Leitores e Escritores. 1.3 O Barbeiro Dorminhoco

Aula 7. Problemas Clássicos de Sincronização. 1.1 O Jantar dos Filósofos. 1.2 Leitores e Escritores. 1.3 O Barbeiro Dorminhoco Aula 7 Problemas Clássicos de Sincronização 1.1 O Jantar dos Filósofos 1.2 Leitores e Escritores 1.3 O Barbeiro Dorminhoco Problemas Clássicos de Sincronização Porque estudá-los: Arquétipos: Representação

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

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 [email protected] http://www.lsi.usp.br/~volnys Região Crítica Classificação dos mecanismos de sincronização

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

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 [email protected] Capítulo 2 do livro do

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

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

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

Exclusão Mútua (mutex)

Exclusão Mútua (mutex) 2004-2017 Volnys Bernal 1 Exclusão Mútua (mutex) Volnys Borges Bernal [email protected] Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Tópicos Exclusão Mútua (Mutex)

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

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 de Processos (3) Exercícios - Semáforos

Sincronização de Processos (3) Exercícios - Semáforos Sincronização de Processos (3) Exercícios - Semáforos Uso dos Semáforos 1. Sincronização de execução 2. Acesso a recursos limitados 3. Exclusão mútua Problema do pombo correio Problema do jantar dos canibais

Leia mais

Sincronização de Processos (4) Monitores

Sincronização de Processos (4) Monitores Sincronização de Processos (4) Monitores Monitores (1) Sugeridos por Dijkstra (1971) e desenvolvidos por Hoare (1974) e Brinch Hansen (1975), são estruturas de sincronização de alto nível, que têm por

Leia mais

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

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Comunicação e Sincronismo entre processos Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 1 Comunicação entre Processos Processos

Leia mais

Sistemas Operacionais

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

Leia mais

Programação Concorrente

Programação Concorrente Programação Concorrente Monitores e Troca de Mensagens Monitores Considere que, no projeto da solução do produtor-consumidor com semáforos, os 2 downs tenham sido trocados Se o buffer estiver cheio deadlock

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto [email protected] Fundamentos Paradigma do produtor-consumidor Sincronização de Processos Produtor while (count == BUFFER_SIZE) ; //no-op //adiciona

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais I Índice 2 Processos... 1 2.2.5 Semáforos... 1 2.2.6 Monitores... 2 2.2.7 Passagem de Mensagens... 5 2 Processos 2.2.5 Semáforos Para resolver este problema, Dijkstra propôs em 1965

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

Capítulo 6: Sincronização de Processos. Operating System Concepts 8th Edition

Capítulo 6: Sincronização de Processos. Operating System Concepts 8th Edition Capítulo 6: Sincronização de Processos Módulo 6: Sincronização de Processos Fundamentos O problema das Regiões Críticas Solução de Peterson Hardware de Sincronização Travas com Mutex Semáforos Problemas

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

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

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

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

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

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

Exercícios Resolvidos (Problemas Clássicos e Outros)

Exercícios Resolvidos (Problemas Clássicos e Outros) 1) Produtor-consumidor com buffer limitado Exercícios Resolvidos (Problemas Clássicos e Outros) Este problema pode ser enunciado como segue. Um par de processos compartilha um buffer de N posições. O primeiro

Leia mais

Sistemas Operativos I

Sistemas Operativos I Sincronização de Processos Luis Lino Ferreira / Maria João Viamonte Fevereiro de 2006 Sumário Problemas inerentes à gestão de recursos Inconsistência de dados versus sincronização de processos O problema

Leia mais

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios SISTEMAS OPERACIONAIS INF09344 - Sistemas Operacionais / INF02780 - Sistemas Operacionais / INF02828 - Sistemas de Programação II Prof a. Roberta Lima Gomes ([email protected]) 2ª. Lista de Exercícios Data

Leia mais

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

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto? LabSO Gerência de AULA 3 Flávia Maristela ([email protected]) Romildo Martins ([email protected]) Porque eu preciso entender este assunto? Para entender como um computador consegue executar

Leia mais

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

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização Aula 6 Primitivas de Sincronização Primitivas de Sincronização Lock / Unlock Sleep / Wakeup Semáforo Monitores Mensagens Sincronização no Linux Lock / Unlock Funcionam como as primitivas vistas até agora

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

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

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

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

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades Trincos Lógicos: Implementações Algorítmicas Hardware Sistema Operativo Trincos lógicos: Propriedades Exclusão mútua Progresso (liveness) Ausência de interblocagem (deadlock) Ausência de míngua (starvation)

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Problemas Clássicos de Comunicação entre Processos Norton Trevisan Roman Marcelo Morandini Jó Ueyama Apostila baseada nos trabalhos de Kalinka Castelo Branco, Antônio Carlos Sementille,

Leia mais

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

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos Conceito de Processo Módulo 4: Processos Um Sistema Operacional executa uma variedade de programas: Sistemas de processamento em lotes (batch) processa jobs Sistemas de tempo partilhado (time shared) roda

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Sincronização entre processos Edson Moreno edsonmoreno@pucrsbr http://wwwinfpucrsbr/~emoreno Sumário Conceituação Princípios de concorrência Região crítica

Leia mais

Fundamentos. Módulo 6: Sincronização de Processos. Bounded-Buffer (Cont.) Bounded-Buffer

Fundamentos. Módulo 6: Sincronização de Processos. Bounded-Buffer (Cont.) Bounded-Buffer Módulo 6: Sincronização de Processos Fundamentos Fundamentos O problema das regiões críticas Hardware de Sincronização Semáforos Problemas Clássicos de Sincronização Regiões Críticas Monitores Sincronização

Leia mais

INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5)

INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5) INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5) 1.1 (Verdade/Falso) Itens próprios de processos são: Espaço de endereçamento,

Leia mais

Sistemas Operacionais Sincronização e Comunicação entre Processos

Sistemas Operacionais Sincronização e Comunicação entre Processos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Sincronização e Comunicação entre Processos Prof. José Gonçalves Dias Neto [email protected]

Leia mais

Concorrência entre Processos

Concorrência entre Processos Concorrência entre Processos Prof. Dr. André Carvalho [email protected] 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. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto [email protected] 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