Capítulo 6: Sincronização de Processos. Operating System Concepts 8th Edition
|
|
|
- Débora Eliana Câmara Morais
- 7 Há anos
- Visualizações:
Transcrição
1 Capítulo 6: Sincronização de Processos
2 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 Clássicos de Sincronização Monitores Exemplos de Sincronização Alternativas 6.2
3 Objetivos Apresentar o conceito de sincronização de processos. Introduzir o problema da seção crítica, cujas soluções podem ser usadas para garantir a consistência dos dados compartilhados. Apresentar tanto soluções de software quanto de hardware para o problema da região crítica. Examinar vários problemas clássicos de sincronização de processos. Explorar várias ferramentas usadas para resolver problemas de sincronização de processos. 6.3
4 Fundamentos Processos podem ser executados simultaneamente Pode ser interrompido a qualquer momento, completando parcialmente a execução. Acesso concorrente a dados compartilhados pode resultar em inconsistências. Manter a consistência de dados requer a utilização de mecanismos para garantir a execução ordenada de processos cooperantes. Ilustração do problema: Suponha que seja desejado fornecer uma solução para o problema do produtor-consumidor que utilize todo o buffer. É possível fazer isso tendo um inteiro count que mantém o número de posições ocupadas no buffer. Inicialmente, count é inicializado em 0. Ele é incrementado pelo produtor após a produção de um novo item e decrementado pelo consumidor após a retirada. 6.4
5 Produtor e Consumidor /* Produtor: produz um item e coloca em nextproduced */ /* Consumidor: consome o item em nextcomsumed */ while (true) { while (true) { while (count == BUFFER_SIZE) while (count == 0) ; // não faz nada ; // não faz nada buffer [in] = nextproduced; nextconsumed = buffer[out]; in = (in + 1) % BUFFER_SIZE; out = (out + 1) % BUFFER_SIZE; count++; count--; } } 6.5
6 Condição de Corrida count++ pode ser implementado como register1 = count register1 = register1 + 1 count = register1 count pode ser implementado como register2 = count register2 = register2-1 count = register2 Considere a seguinte ordem de execução com, inicialmente, count = 5 : S0: producer execute register1 = count {register1 = 5} S1: producer execute register1 = register1 + 1 {register1 = 6} S2: consumer execute register2 = count {register2 = 5} S3: consumer execute register2 = register2-1 {register2 = 4} S4: producer execute count = register1 {count = 6 } S5: consumer execute count = register2 {count = 4} 6.6
7 Problema da seção crítica Considere um sistema de n processos {p0, p1, pn-1} Cada processo tem um segmento de código de seção crítica Os processos podem estar modificando variáveis comuns, atualizndo tabelas, escrevendo arquivos, etc. Quando um processo estiver em uma seção crítica, nenhum outro processo pode estar nessa mesma seção crítica. O problema da seção crítica é eleborar um protocolo para resolver isso Cada processo deve pedir permissão para entrar na seção crítica na seção de entrada, deve seguir a seção crítica até a seção de saída, e então, ir para a seção remanescente. 6.7
8 Seção crítica Estrutura geral de um processo Pi típico: do { seção de entrada seção crítica seção de saída seção remanescente } while (TRUE); 6.8
9 Solução para o Problema da Região Crítica 1. Exclusão Mútua - Se um processo Pi está executando sua região crítica, então nenhuma região crítica de outro processo pode estar sendo executada. 2. Progresso - Se nenhum processo está executando uma região crítica e existem processos que desejam entrar nas regiões críticas deles, então a escolha do próximo processo que irá entrar na região crítica não pode ser adiada indefinidamente. 3. Espera Limitada - Existe um limite para o número de vezes que outros processos são selecionados para entrar nas regiões críticas deles, depois que um processo fez uma requisição para entrar em sua região e antes que essa requisição seja atendida. É assumido que cada processo executa em uma velocidade diferente de zero Nenhuma hipótese é feita referente à velocidade relativa de execução dos N processos. 6.9
10 Manipulação da Seção Crítica no SO Duas abordagens dependendo se o kernel é preventivo ou não preemptivo Preemptivo - permite preempção do processo ao executar no modo kernel Não Preemptivo - executa até sair do modo kernel, bloquear ou render voluntariamente CPU Essencialmente livre de condições de corrida no modo kernel 6.10
11 Tentativas de Solução para a Região Crítica Inicialmente será considerada uma solução para dois processos É assumido que as instruções de máquina LOAD (carrega) e STORE (armazena) são atômicas; isto é, não podem ser interrompidas. Inicialmente são apresentadas duas tentativas e depois a solução 6.11
12 Tentativa 1 Variáveis compartilhadas: var turn: (0..1); inicialmente turn = 0 turn = i Pi pode entrar na sua região crítica Processo Pi do { while turn!= i ; /* não faz nada */ // REGIÃO CRÍTICA turn = j; // SEÇÃO REMANESCENTE } while (TRUE); Satisfaz exclusão mútua, mas não progresso. 6.12
13 Tentativa 2 Variáveis compartilhadas: var flag: array [0..1] of boolean; inicialmente flag [0] = flag [1] = false. flag [i] = true Pi pronto para entrar na região crítica Processo Pi do { flag[ i ] = true; while ( flag[ j ] ) ; /* não faz nada */ // REGIÃO CRÍTICA flag [ i ] = false; // SEÇÃO REMANESCENTE } while (TRUE); Satisfaz exclusão mútua, mas não progresso. 6.13
14 Solução de Peterson Os dois processos compartilham duas variáveis: int turn; Boolean flag[2] A variável turn indica de quem é a vez de entrar na região crítica. O vetor flag é usado para indicar se um processo está pronto para entrar na região crítica. flag[i] = true significa que processo Pi está pronto! 6.14
15 Algoritmo Para Processo Pi do { flag[i] = TRUE; turn = j; while ( flag[j] && turn == j) ; /* não faz nada */ // REGIÃO CRÍTICA flag[i] = FALSE; // SEÇÃO REMANESCENTE } while (TRUE); 6.15
16 Sincronização por Hardware Muitos sistemas fornecem suporte de hardware para código de seção crítica Sistemas Monoprocessados podem desabilitar interrupções Código em execução pode executar sem preempção Geralmente muito ineficiente em sistemas multiprocessados Sistemas Operacionais que usam isso não escalam Arquiteturas modernas fornecem instruções atômicas especiais de hardware Atômica = não interrompível Testar uma posição de memória e setar um valor Ou trocar conteúdos de duas posições na memória 6.16
17 Solução para problemas de seção crítica usando Locks do { obtém lock região crítica libera lock região remanescente } while (TRUE); 6.17
18 Instrução TestAndSet Definição: boolean TestAndSet (boolean *target) { boolean ret = *target; *target = TRUE; return ret; } 1. Executa atomicamente 2. Retorna o valor original do valor passado por parâmetro 3. Define o novo valor do parâmetro passado para verdadeiro. 6.18
19 Solução usando TestAndSet Variável booleana compartilhada lock, inicializada em FALSE. Solução: while (true) { while ( TestAndSet (&lock )) ; /* não faz nada */ // REGIÃO CRÍTICA lock = FALSE; // SEÇÃO REMANESCENTE } 6.19
20 Instrução Swap Definição: void Swap (boolean *a, boolean *b) { boolean temp = *a; *a = *b; *b = temp: } 6.20
21 Solução usando Swap Variável booleana compartilhada lock, inicializada em FALSE; Cada processos tem uma variável booleana key local. Solução: while (true) { key = TRUE; while ( key == TRUE) Swap (&lock, &key ); // REGIÃO CRÍTICA lock = FALSE; // SEÇÃO REMANESCENTE } 6.21
22 Exclusão Mútua de espera limitada com TestAndSet() do { waiting[i] = TRUE; key = TRUE; while (waiting[i] && key) key = TestAndSet(&lock); waiting[i] = FALSE; // critical section j = (i + 1) % n; while ((j!= i) &&!waiting[j]) j = (j + 1) % n; if (j == i) lock = FALSE; else waiting[j] = FALSE; // remainder section } while (TRUE); 6.22
23 Travas com Mutex As soluções anteriores são complicadas e geralmente inacessíveis para programadores de aplicações Os designers de SO constroem ferramentas de software para resolver o problema da seção crítica O mais simples é a trava mutex Para proteger a seção crítica, primeiro adquira a trava com acquire() e depois solte a trava com release(). A chamda para o acquire() e para o release() devem ser atômicas Variável boleana indicando se a trava está disponível ou não Geralmente implementada através de instruções atômicas do hardware Mas essa solução requer espera ocupada Esta trava é, por isso, chamada de spinlock 6.23
24 acquire() e release() acquire() { while (!disponivel) ; /* espera ocupada */ disponivel = false; } release() { disponivel = true; } do { acquire lock // seção crítica release lock // seção remanescente } while (true); 6.24
25 Semáforo Ferramenta de sincronização que não requer espera ocupada (busy waiting) Semáforo S variável inteira Duas operações padrão modificam S: wait() e signal() Originalmente chamadas P() e V() Menos Complicada Somente pode ser acessada via duas operações indivisíveis (atômicas) wait (S) { while (S <= 0) ; // não faz nada S--; } signal (S) { S++; } 6.25
26 Semáforo como uma Ferramenta Geral de Sincronização Semáforo Contador valor nele armazenado pode ser qualquer número inteiro. Semáforo Binário valor inteiro nele armazenado pode variar entre 0 e 1; pode ser implementado mais simplesmente. Também conhecido como mutex locks É possível implementar semáforo contador S como um semáforo binário Fornece exclusão mútua: Semaphore mutex; // inicializado em 1 do { wait (mutex); // Seção Crítica signal (mutex); // restante do código } while (TRUE); 6.26
27 Implementação de Semáforo Deve garantir que dois processos não possam executar wait () e signal () no mesmo semáforo ao mesmo tempo Daí, a implementação se torna o problema da região crítica na qual o código do wait e signal são colocados em seções críticas. Pode ter espera ocupada na implementação da região crítica Código de implementação é menor Pequena espera ocupada se região crítica está sendo usada raramente Observe que aplicações podem perder muito tempo em regiões críticas e daí esta não é uma boa solução. 6.27
28 Implementação de Semáforo sem Espera Ocupada Associar uma fila de espera com cada semáforo. Cada entrada na fila de espera tem dois itens: valor (de tipo inteiro) ponteiro para o próximo registro na lista Duas operações: block coloca o processo que evoca a operação na fila de espera apropriada. wakeup remove um processo da fila de espera e colocao na fila de processos prontos (ready queue). 6.28
29 Implementação de Semáforo sem Espera Ocupada (Cont.) Implementação de wait: wait(semaphore *S) { S->value--; if (S->value < 0) { adiciona esse processo em S->list ; block(); } } Implementação de signal: signal(semaphore *S) { S->value++; if (S->value <= 0) { remove o processo P de S->list ; wakeup(p); } } 6.29
30 Deadlock (Impasse) e Starvation (Abandono) Deadlock dois ou mais processos estão esperando indefinidamente por um evento que pode ser causado somente por um dos processos esperando o evento Seja S e Q dois semáforos inicializados em 1 P0 P1 wait (S); wait (Q); wait (Q); wait (S); signal (S); signal (Q); signal (Q); signal (S); Starvation bloqueio indefinido. Um processo pode nunca ser removido da fila do semáforo em que está suspensa Priority Inversion inversão de prioridade. Problema de escalonamento em que um processo de baixa prioridade mantém um lock necessário para um processo de maior prioridade 6.30
31 Problemas Clássicos de Sincronização Problema do Buffer de tamanho limitado (Bounded-Buffer) Problema dos Leitores e Escritores Problema do Jantar dos Filósofos (Dining-Philosophers) 6.31
32 Problema do Buffer de Tamanho Limitado N posições, cada um pode armazenar um item Semáforo mutex inicializado com o valor 1 Semáforo full inicializado com o valor 0 Semáforo empty inicializado com o valor N 6.32
33 Problema do Buffer de Tamanho Limitado (Cont.) A estrutura do processo produtor do { A estrutura do processo consumidor do { wait (full); // produz um item wait (mutex); wait (empty); // remove um item do buffer wait (mutex); signal (mutex); // adiciona o item ao buffer signal (empty); signal (mutex); // consome o item removido signal (full); } while (TRUE) } while (TRUE); 6.33
34 Problema dos Leitores e Escritores Um conjunto de dados é compartilhada entre vários processos concorrentes Leitores somente lê um conjunto de dados; eles não realizam nenhuma atualização Escritores podem ler e escrever. Problema permitir múltiplos leitores ler ao mesmo tempo. Somente um único escritor pode acessar os dados compartilhados ao mesmo tempo. Dados Compartilhados Conjunto de dados Semáforo mutex inicializado em 1. Semáforo wrt inicializado em 1. Inteiro readcount inicializado em
35 Problema dos Leitores e Escritores (Cont.) A estrutura de um processo escritor A estrutura de um processo leitor do { do { wait (mutex) ; wait (wrt) ; readercount ++ ; if (readercount == 1) //escrita é feita wait (wrt); signal (mutex); signal (wrt) ; } while (TRUE); // leitura é feita wait (mutex); readercount - - ; if (readercount == 0) signal (wrt) ; signal (mutex) ; } while (TRUE); 6.35
36 Problema do Jantar dos Filósofos Filósofos gastam suas vidas alternando entre pensar e comer Sem interagir com seus vizinhos, ocasionalmente, eles tentam pegar 2 hashis (um de cada vez) para comer da tigela de arroz São necesários ambos para comer. Após comer, eles colocam os hashis novamente na mesa No caso de 5 filósofos: Dados compartilhados: Tigela de arroz (dados compartilhados) Semáforos chopstick [5] inicializados com
37 Problema do Jantar dos Filósofos (Cont.) A estrutura do Filósofo i: do { wait ( chopstick[i] ); wait ( chopstick[ (i + 1) % 5] ); // comer signal ( chopstick[i] ); signal ( chopstick[ (i + 1) % 5] ); // pensar } while (TRUE); Qual é o problema desse algoritmo? 6.37
38 Problema do Jantar dos Filósofos (Cont.) Manipulação da seção crítica Permita que no máximo 4 filósofos estejam sentados simultaneamente à mesa. Permita que um filósofo pegue os hashis apenas se ambos estiverem disponíveis (a escolha deve ser feito em uma seção crítica). Use uma solução assimétrica: O filósofo de numeração ímpar pega primeiro o pauzinho esquerdo e depois o pauzinho direito. O filósofo de número par pega primeiro o pauzinho direito e depois o pauzinho esquerdo. 6.38
39 Problemas com Semáforos Uso incorreto de operações em semáforos: signal (mutex). wait (mutex) wait (mutex) wait (mutex) Omissão de wait (mutex) ou signal (mutex) (ou ambos) Deadlock e Starvation podem ocorrer com esses erros. 6.39
40 Monitores Uma abstração de alto nível que fornece um mecanismo conveniente e eficaz para a sincronização de processos Tipo abstrato de dados, variáveis internas são somente acessíveis por código dentro do procedimento Somente um processo por vez pode estar ativo no monitor Mas não é poderoso o suficiente para modelar alguns esquemas de sincronização monitor nome_do_monitor { // declaração de variáveis compartilhadas procedimento P1 ( ) { } procedimento Pn ( ) { } codigo_de_inicializacao ( ) { } } 6.40
41 Visão Esquemática de um Monitor 6.41
42 Variáveis Condicionais condicional x, y; Duas operações são permitidas em uma variável condicional: x.wait() um processo que invoca essa operação é suspenso até x.signal(). x.signal() retoma um dos processos (se houver) que evocou x.wait(). Se não foi executado x.wait() na variável, então essa ação não tem efeito. 6.42
43 Monitor com Variáveis Condicionais 6.43
44 Opções de Variáveis Condicionais Se o processo P chamar x.signal() e o processo Q estiver suspenso em x.wait(), o que deve acontecer a seguir? Tanto Q quanto P não podem ser executados paralelamente. Se Q for reiniciado, então P deve esperar Opções incluem: signal e wait - P espera até que Q deixe o monitor ou aguarde outra condição. signal e continue - Q espera até que P saia do monitor ou aguarde outra condição. Ambos têm prós e contras - o implementador deve decidir. Monitores implementados em Pascal compreendem: P que executa signal imediatamente sai do monitor, Q é retomado. Implementado em outras linguagens, incluindo Mesa, C #, Java. 6.44
45 Solução para o problema dos Filósofos monitor DP { enum {THINKING, HUNGRY, EATING} state[5]; condition self [5]; Cada filósofo evoca as operações pickup() e putdown() na seguinte sequência: dp.pickup (i) // COMER dp.putdown (i) void test (int i) { if ( (state[(i + 4) % 5]!= EATING) && (state[i] == HUNGRY) && (state[(i + 1) % 5]!= EATING) ) { state[i] = EATING ; self[i].signal () ; } } void pickup (int i) { state[i] = HUNGRY; test(i); if (state[i]!= EATING) self [i].wait; } void putdown (int i) { state[i] = THINKING; // test left and right neighbors test((i + 4) % 5); test((i + 1) % 5); } initialization_code() { for (int i = 0; i < 5; i++) state[i] = THINKING; } } 6.45
46 Exemplos de Sincronização Solaris Windows XP Linux Pthreads 6.46
47 Sincronização no Solaris Implementa uma variedade de travas (locks) para suportar multitarefa, múltiplas threads (incluindo threads tempo real), e multiprocessamento Usa mutex adaptativos para eficiência quando está protegendo dados de segmentos com código curto Usa variáveis condicionais e travas leitores-escritores quando seções longas de código necessitam acessar dados Usa turnstiles para ordenar a lista de threads esperando para adquirir um mutex adaptativo ou uma trava leitor-escritor 6.47
48 Sincronização no Windows XP Usa máscaras de interrupção para proteger acesso aos recursos globais em sistemas monoprocessados Usa spinlocks em sistemas multiprocessados Spinlocking-thread nunca sofrerá preempção. Também fornece dispatcher objects os quais podem agir como mutexes ou semáforos Dispatcher objects podem também fornecer eventos Um evento age de forma parecida com variáveis condicionais 6.48
49 Sincronização no Linux Linux: Antes do kernel versão 2.6, desabilita interrupções para implementar seções críticas curtas Versão 2.6 e posterior, totalmente preemptável Linux provides: semáforos inteiros atômicos spinlocks versões de leitores-escritores Em sistemas de uma única CPU, os spinlocks são substituídos pela habilitação e desabilitação da preempção do kernel 6.49
50 Sincronização em Pthreads Pthreads API é independente de SO Ela fornece: travas mutex variáveis condicionais Extensões não portáveis incluem: travas de leitura-escrita spinlocks 6.50
51 Alternativas Memória Transacional OpenMP Linguagens de programação funcional 6.51
52 Memória transacional Uma transação de memória é uma sequência de operações de leitura-gravação da memória que são realizadas atomicamente. void update() { /* leitura/escrita da memória */ } 6.52
53 OpenMP OpenMP é um conjunto de diretivas de compilação e uma API que dão sporte à programação paralela. void update(int value) { #pragma omp critical { count += value } } O código do escopo da diretiva #pragma omp critical é tratado como seção crítica e é realizado automaticamente. 6.53
54 Linguagens de programação funcional As linguagens de programação funcional oferecem um paradigma diferente das linguagens procedurais, pois não mantêm o estado. As variáveis são tratadas como imutáveis e não podem mudar de estado depois de terem sido atribuídos um valor. Há um crescente interesse em linguagens funcionais como Erlang e Scala por sua abordagem no tratamento de condições de corrida. 6.54
55 Fim do Capítulo 6
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:
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
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
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
Threads e Sincronização no Linux
Threads e Sincronização no Linux MCTA026-13 - Sistemas Operacionais Emilio Francesquini e Fernando Teubl Ferreira [email protected] / [email protected] 2019.Q1 Centro de Matemática,
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
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
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
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
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
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
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
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
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
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.
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
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:
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
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
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)
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 [email protected] www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas
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.
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
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
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
Sistemas Operacionais
Sistemas Operacionais Aula 11 Sincronização de Processos Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
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
SO: Sincronização. Sistemas Operacionais Flavio Figueiredo (http://flaviovdf.github.io)
SO: Sincronização Sistemas Operacionais 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Mapa da Disciplina Fim da Seção de Processos SOs geralmente são lecionados em três grandes temas Processos
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
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
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
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
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
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
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
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;
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
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
Resumo: Sistemas Operacionais Abertos
Resumo: Sistemas Operacionais Abertos Prof. Michael A. Pontes Processos Um processo é um programa em execução. Enquanto um processo é executado, ele muda de estado. O estado de um processo é definido pela
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
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
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.
Programação Concorrente
INE 5410 Programação Concorrente Professor: Lau Cheuk Lung (turma A) INE UFSC [email protected] Conteúdo Programático 1. 2. Programação Concorrente 3. Sincronização 1. Condição de corrida, região critica
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 12: Revisão para a P1 Diego Passos Capítulo 1 Sistemas Operacionais São programas. Duas funções: Gerenciar os recursos do hardware. Dividir entre os vários processos.
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,
1B Conceitos Básicos: Indique Verdade/Falso
INE5645 - Programação Paralela e Distribuída - Prova 1B 24/04/2017 Nome 1B Conceitos Básicos: Indique Verdade/Falso a) (Verdade/Falso) Threads distintas em um processo não são tão independentes quanto
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
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
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
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,
1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?
1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU? 2 O que é ambiente de execução? 3 Qual a finalidade da PCB? 4 Quais os componentes básicos da PCB? 5 Quais os 3 grupos de elemento
Retrospectiva da aula passada... Escalonamento. Na aula passada... Comunicação entre processos (-- O jantar dos filósofos --)
Escalonamento Retrospectiva da aula passada... UL Flávia Maristela ([email protected]) Romildo Martins ([email protected]) Race condition Região rítica Exclusão Mútua Na aula passada... Problemas
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem diversos processos em memória. Cada
Capítulo 2 Processos e Threads
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas
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
SISTEMAS EMBARCADOS. Acesso a recursos compar,lhados. Prof. André Schneider de Oliveira
Universidade Tecnológica Federal do Paraná (UTFPR) Departamento Acadêmico de Eletrônica (DAELN) SISTEMAS EMBARCADOS Acesso a recursos compar,lhados Prof. André Schneider de Oliveira [email protected]
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
Sistemas de Informação. Sistemas Operacionais
Sistemas de Informação Sistemas Operacionais PROCESSOS E THREADS PARTE I SUMÁRIO 2. PROCESSO: 2.1 Introdução; 2.2 Estrutura do Processo; 2.3 Estados do Processo; 2.4 Mudanças de Estado do Processo; 2.5
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
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:
Sistemas Operacionais Aula 7
Sistemas Operacionais Aula 7 Anderson L. S. Moreira [email protected] http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE O que fazer
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
SISTEMAS OPERACIONAIS. TÁSSIO JOSÉ GONÇALVES GOMES
SISTEMAS OPERACIONAIS TÁSSIO JOSÉ GONÇALVES GOMES www.tassiogoncalves.com.br [email protected] CONTEÚDO PROCESSOS Fundamentos O Núcleo do Sistema Operacional Escalonamento de Processos Comunicação
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
Programação Concorrente e Paralela
Semáforos e Monitores 2010.2 Notação Andrews: atomicidade e await para definir ações atômicas, Andrews introduz a notação e para especificar sincronização, Andrews introduz a notação: await(b)s; que significa
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
6. Mostre os principais modelos de organização interna de um sistema operacional.
Trabalho 1 Sistemas Operacionais Embarcados Engenharia Elétrica Prof. Carlos Marcelo Pedroso 1 Problemas 1. O IBM 360 modelo 75 é cerca de 50 vezes mais rápida do que o IBM 360 modelo 30. Todavia, o tempo
Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período
Redes de Computadores INF201 - Fundamentos de Sistemas Operacionais - 2º Período PARTE II: PROCESSOS E THREADS SUMÁRIO 5. PROCESSO: 5.1 Introdução; 5.2 Estrutura do Processo; 5.3 Estados do Processo; 5.4
