SlideShare una empresa de Scribd logo
1 de 7
1.SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS
Na década de 1960, com o surgimento dos sistemas multiprogramáveis, passou a ser possível
estruturar aplicações, Este tipo de aplicação, denominada aplicação concorrente, tem como base a
execução cooperativa de múltiplos processos
Em sistemas multiprogramável com um único processador, os processos alternam sua execução
segundo critérios de escalonamento estabelecidos pelo Sistema Operacional.
O compartilhamento de recursos entre os processos pode ocasionar situações indesejáveis, capazes
até de comprometer a execução das aplicações. Para evitar esse tipo de problema, os processos
concorrentes devem ter suas execuções sincronizadas, a partir de mecanismos oferecidos pelo
sistema operacional, com o objetivo de garantir o processamento correto dos programas.
2.Aplicações Concorrentes
Os mecanismos que garantem a comunicação entre os processos concorrentes e o acesso aos
recursos são chamados de mecanismos de sincronização. Muitas vezes, em uma aplicação
concorrente, é necessário que processos comuniquem-se entre si, e essa comunicação pode ser
implementada de diversos mecanismos, como troca de mensagens. No projeto de sistemas
operacionais multiprogramáveis, é fundamental a implementação destes mecanismos para garantir
a integridade e a confiabilidade na execução de aplicações concorrentes.
Sincronização
Processo de gravação Processo leitura
Buffer
Dados
Aqui estão dois processos concorrentes, a compartilhar um buffer para trocar
informações através do processo de gravação e leitura.
2.1.Problemas de Compartilhamento de Recurso
Na falha na sincronização entre processosconcorrentes podemocorreras seguistes
problemas.
1. Problema do programa Conta_Corrente
Que atualiza o saldo bancário de um cliente após um lançamento de débito ou
crédito no arquivo de contas correntes.
Neste arquivo são armazenados os saldos de todos oscorrentistas do banco. O
programa lê o registro do cliente no arquivo, lê o valor a ser depositado ou retirado
e, em seguida, atualiza o saldo no arquivode contas
Ex:
PROGRAMConta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
END.
3. Sincronização Condicional
E uma situação onde o acesso ao recurso compartilhado exige a sincronização de
processos vinculada a uma condição de acesso. Um recurso podenão se encontrar
pronto para uso devido a uma condição específica. Nesse caso, o processoque
deseja acessá-lo deverá permanecer bloqueado (em espera) até que o recurso fique
disponível.
Ex:
Problema do Produtor/Consumidorou Problema do Buffer Limitado. No caso, o
recurso compartilhado é um buffer, sendo controlado por uma variável. Sempre
que a variável for 0, significa que o buffer esta vazio e o processo quelê dados
dessebuffer, chamado de processo consumidordeve permanecer aguardando (fica
no estado de espera) até que se grave um dado. Da mesma forma, quando a
variável for igual ao tamanho do buffer, significa que o buffer está cheio e o
processoprodutordeve aguardar (estado de espera) a leitura de um novo dado.
Nesta solução, a tarefa de ler ou gravar dados no buffer é realizado por dois
procedimentos que executam concorrentemente, de forma mutuamente exclusiva.
4.Semáforo
Um semáforo é uma variável inteira, não negativa, que só podeser manipulada por
duas instruções: DOWN e Up. A instrução UP incrementa uma unidade ao valor
do semáforo, enquanto a DOWN decrementa a variável. Como valores negativos
não podemser atribuídos a um semáforo, a instrução DOWN executada em um
semáforo com valor 0, faz com que o processoentre no estado de espera.
Os semáforos podemser classificados como binários ou contadores. Os semáforos
binários só podem assumir os valores 0 e 1, enquanto os semáforos contadores
podemassumir qualquer valor inteiro positivo, além do 0.
4.1.Exclusão Mútua Utilizando Semáforos
A exclusão mútua podeser implementada através de um semáforo binário
associado ao recurso compartilhado. A principal vantagem desta solução não
ocorrência da espera ocupada.O semáforo fica associado a um recurso
compartilhado, indicando quando o recurso está sendo acessado por um dos
processos concorrentes.Seo semáforo for igual a 1, então o semáforo é
decrementado e o processo consegueexecutar sua região crítica. Caso o semáforo
seja 0, então o processo écolocado em estado de espera, não gerando um overhead
do sistema.
4.2. Sincronização Condicional Utilizando Semáforos
Ocorre quando um processosolicita uma operação de Entrada/Saída. O pedido faz
com que o processo execute uma instrução DOWN no semáforo associado ao
evento e fique no estado de espera, até que a operação seja completada. Quando a
operação termina, a rotina de tratamento da interrupção executa um UP no
semáforo, liberando o processodo estado de espera.
4.3. Problema dos Filósofos
O problema dos filósofos é um exemplo clássico de sincronização de processos.
Nesse problema, há uma mesa com cinco pratos e cinco garfos, onde os filósofos
podemsentar, comer e pensar. Todavez que um filósofo para de pensar e deseja
comer, é necessário que ele utilize dois garfos, posicionados à sua direita e à sua
esquerda.
Existem várias soluções para resolver o problema dos filósofos, entre elas:
1.Permitir que apenas quatro filósofos sentassem à mesa simultaneamente;
2. Permitir que um filósofo pegue um garfo apenas se o outro estiver
disponível;
3. Permitir que um filósofo ímpar pegue primeiro o seu garfo da esquerda e
depois o da direita, enquanto um filósofo par pegue o garfo da direita e, em
seguida, o da esquerda.
1.8 . Problema do Barbeiro
O problema do barbeiro é outro exemplo clássico de sincronização de Processos. Neste
problema, um barbeiro recebe clientes para cortar o cabelo. Na barbearia há uma cadeira de
barbeiro e apenas cinco cadeiras para clientes esperarem. Quando um cliente chega, caso o
barbeiroesteja trabalhando, ele senta se houver uma cadeira vazia ou vai embora se todas as
cadeiras estiverem ocupadas. No caso de o barbeiro não ter nenhum cliente para atender, ela
senta na cadeira e dorme até que um novo cliente apareça.
A solução utiliza um semáforo contador e dois semáforos binários. Quando o barbeiro seleciona
um cliente para atender, é executada uma instrução DOWN no semáforo contador. Caso não exista
nenhum cliente aguardando, o barbeiro continua a espera de um cliente.
Quando o barbeiro recurso associado ao semáforo s

Más contenido relacionado

La actualidad más candente

パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介Amazon Web Services Japan
 
Aula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoAula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoVinícius de Paula
 
070517 Jena
070517 Jena070517 Jena
070517 Jenayuhana
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
DDD Modeling Workshop
DDD Modeling WorkshopDDD Modeling Workshop
DDD Modeling WorkshopDennis Traub
 
Gerência de Armazenamento: Interface do Sistema de Arquivos
Gerência de Armazenamento: Interface do Sistema de ArquivosGerência de Armazenamento: Interface do Sistema de Arquivos
Gerência de Armazenamento: Interface do Sistema de ArquivosAlexandre Duarte
 
Modelos osi tcpip
Modelos osi tcpipModelos osi tcpip
Modelos osi tcpipSuguha
 
Aula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivosAula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivoscamila_seixas
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 
Programowanie obiektowe na przykładzie języka PHP oraz PSR
Programowanie obiektowe na przykładzie języka PHP oraz PSRProgramowanie obiektowe na przykładzie języka PHP oraz PSR
Programowanie obiektowe na przykładzie języka PHP oraz PSRInterSynergy
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Gradle入門
Gradle入門Gradle入門
Gradle入門orekyuu
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAmazon Web Services Japan
 
Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Tetsu Yama
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosVictor Hazin da Rocha
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 

La actualidad más candente (20)

パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
Aula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoAula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de Projeto
 
070517 Jena
070517 Jena070517 Jena
070517 Jena
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
DDD Modeling Workshop
DDD Modeling WorkshopDDD Modeling Workshop
DDD Modeling Workshop
 
Gerência de Armazenamento: Interface do Sistema de Arquivos
Gerência de Armazenamento: Interface do Sistema de ArquivosGerência de Armazenamento: Interface do Sistema de Arquivos
Gerência de Armazenamento: Interface do Sistema de Arquivos
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Ciclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemasCiclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemas
 
Modelos osi tcpip
Modelos osi tcpipModelos osi tcpip
Modelos osi tcpip
 
Aula15 - Array PHP
Aula15 - Array PHPAula15 - Array PHP
Aula15 - Array PHP
 
Aula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivosAula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivos
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Programowanie obiektowe na przykładzie języka PHP oraz PSR
Programowanie obiektowe na przykładzie języka PHP oraz PSRProgramowanie obiektowe na przykładzie języka PHP oraz PSR
Programowanie obiektowe na przykładzie języka PHP oraz PSR
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Gradle入門
Gradle入門Gradle入門
Gradle入門
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas Distribuídos
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 

Destacado

Sistemas Operacionais 10 comunicação entre processos
Sistemas Operacionais 10   comunicação entre processosSistemas Operacionais 10   comunicação entre processos
Sistemas Operacionais 10 comunicação entre processosMauro Duarte
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Arthur Emanuel
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisDuFelix02
 
SO-03 Comunicação e Sincronização de Processos
SO-03 Comunicação e Sincronização de ProcessosSO-03 Comunicação e Sincronização de Processos
SO-03 Comunicação e Sincronização de ProcessosEduardo Nicola F. Zagari
 
Capítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisCapítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisWindson Viana
 
Sistemas Operacionais Multimidia Cap7 Tanenbaum
Sistemas Operacionais Multimidia   Cap7 TanenbaumSistemas Operacionais Multimidia   Cap7 Tanenbaum
Sistemas Operacionais Multimidia Cap7 Tanenbaumandfelipe
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processosComputação Depressão
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketAdriano Teixeira de Souza
 

Destacado (10)

Sistemas Operacionais 10 comunicação entre processos
Sistemas Operacionais 10   comunicação entre processosSistemas Operacionais 10   comunicação entre processos
Sistemas Operacionais 10 comunicação entre processos
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Sockets : Introdução
Sockets : IntroduçãoSockets : Introdução
Sockets : Introdução
 
SO-03 Comunicação e Sincronização de Processos
SO-03 Comunicação e Sincronização de ProcessosSO-03 Comunicação e Sincronização de Processos
SO-03 Comunicação e Sincronização de Processos
 
Sistemas operacionais 5
Sistemas operacionais   5Sistemas operacionais   5
Sistemas operacionais 5
 
Capítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisCapítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - Coulouris
 
Sistemas Operacionais Multimidia Cap7 Tanenbaum
Sistemas Operacionais Multimidia   Cap7 TanenbaumSistemas Operacionais Multimidia   Cap7 Tanenbaum
Sistemas Operacionais Multimidia Cap7 Tanenbaum
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 

Similar a Sincronização de Processos Concorrentes e Solução de Problemas Clássicos

Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2Gustavo Souza
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoAlexandre Duarte
 
Problemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessosProblemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessosLucas Vinícius
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockWilliams Gomes da Silva
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - IFabio Moura Pereira
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal RailsLuiz Costa
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisAbadia Cardoso
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosCharles Fortes
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Luiz Arthur
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Huge
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Luiz Arthur
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 

Similar a Sincronização de Processos Concorrentes e Solução de Problemas Clássicos (20)

Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Problemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessosProblemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessos
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
 
Algoritmo lamport
Algoritmo lamportAlgoritmo lamport
Algoritmo lamport
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal Rails
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas Operacionais
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Resenha WoSida 2015
Resenha WoSida 2015Resenha WoSida 2015
Resenha WoSida 2015
 
Redes de computador
Redes de computadorRedes de computador
Redes de computador
 
Rm1150230212 totvs gestao_bibliotecaria
Rm1150230212 totvs gestao_bibliotecariaRm1150230212 totvs gestao_bibliotecaria
Rm1150230212 totvs gestao_bibliotecaria
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 
Trabalho individual
Trabalho individualTrabalho individual
Trabalho individual
 

Sincronização de Processos Concorrentes e Solução de Problemas Clássicos

  • 1.
  • 2.
  • 3. 1.SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS Na década de 1960, com o surgimento dos sistemas multiprogramáveis, passou a ser possível estruturar aplicações, Este tipo de aplicação, denominada aplicação concorrente, tem como base a execução cooperativa de múltiplos processos Em sistemas multiprogramável com um único processador, os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo Sistema Operacional. O compartilhamento de recursos entre os processos pode ocasionar situações indesejáveis, capazes até de comprometer a execução das aplicações. Para evitar esse tipo de problema, os processos concorrentes devem ter suas execuções sincronizadas, a partir de mecanismos oferecidos pelo sistema operacional, com o objetivo de garantir o processamento correto dos programas. 2.Aplicações Concorrentes Os mecanismos que garantem a comunicação entre os processos concorrentes e o acesso aos recursos são chamados de mecanismos de sincronização. Muitas vezes, em uma aplicação concorrente, é necessário que processos comuniquem-se entre si, e essa comunicação pode ser implementada de diversos mecanismos, como troca de mensagens. No projeto de sistemas operacionais multiprogramáveis, é fundamental a implementação destes mecanismos para garantir a integridade e a confiabilidade na execução de aplicações concorrentes. Sincronização Processo de gravação Processo leitura Buffer Dados
  • 4. Aqui estão dois processos concorrentes, a compartilhar um buffer para trocar informações através do processo de gravação e leitura. 2.1.Problemas de Compartilhamento de Recurso Na falha na sincronização entre processosconcorrentes podemocorreras seguistes problemas. 1. Problema do programa Conta_Corrente Que atualiza o saldo bancário de um cliente após um lançamento de débito ou crédito no arquivo de contas correntes. Neste arquivo são armazenados os saldos de todos oscorrentistas do banco. O programa lê o registro do cliente no arquivo, lê o valor a ser depositado ou retirado e, em seguida, atualiza o saldo no arquivode contas Ex: PROGRAMConta_Corrente; . . READ (Arq_Contas, Reg_Cliente); READLN (Valor_Dep_Ret); Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret; WRITE (Arq_Contas, Reg_Cliente); . END. 3. Sincronização Condicional
  • 5. E uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso. Um recurso podenão se encontrar pronto para uso devido a uma condição específica. Nesse caso, o processoque deseja acessá-lo deverá permanecer bloqueado (em espera) até que o recurso fique disponível. Ex: Problema do Produtor/Consumidorou Problema do Buffer Limitado. No caso, o recurso compartilhado é um buffer, sendo controlado por uma variável. Sempre que a variável for 0, significa que o buffer esta vazio e o processo quelê dados dessebuffer, chamado de processo consumidordeve permanecer aguardando (fica no estado de espera) até que se grave um dado. Da mesma forma, quando a variável for igual ao tamanho do buffer, significa que o buffer está cheio e o processoprodutordeve aguardar (estado de espera) a leitura de um novo dado. Nesta solução, a tarefa de ler ou gravar dados no buffer é realizado por dois procedimentos que executam concorrentemente, de forma mutuamente exclusiva. 4.Semáforo Um semáforo é uma variável inteira, não negativa, que só podeser manipulada por duas instruções: DOWN e Up. A instrução UP incrementa uma unidade ao valor do semáforo, enquanto a DOWN decrementa a variável. Como valores negativos não podemser atribuídos a um semáforo, a instrução DOWN executada em um semáforo com valor 0, faz com que o processoentre no estado de espera.
  • 6. Os semáforos podemser classificados como binários ou contadores. Os semáforos binários só podem assumir os valores 0 e 1, enquanto os semáforos contadores podemassumir qualquer valor inteiro positivo, além do 0. 4.1.Exclusão Mútua Utilizando Semáforos A exclusão mútua podeser implementada através de um semáforo binário associado ao recurso compartilhado. A principal vantagem desta solução não ocorrência da espera ocupada.O semáforo fica associado a um recurso compartilhado, indicando quando o recurso está sendo acessado por um dos processos concorrentes.Seo semáforo for igual a 1, então o semáforo é decrementado e o processo consegueexecutar sua região crítica. Caso o semáforo seja 0, então o processo écolocado em estado de espera, não gerando um overhead do sistema. 4.2. Sincronização Condicional Utilizando Semáforos Ocorre quando um processosolicita uma operação de Entrada/Saída. O pedido faz com que o processo execute uma instrução DOWN no semáforo associado ao evento e fique no estado de espera, até que a operação seja completada. Quando a operação termina, a rotina de tratamento da interrupção executa um UP no semáforo, liberando o processodo estado de espera. 4.3. Problema dos Filósofos O problema dos filósofos é um exemplo clássico de sincronização de processos. Nesse problema, há uma mesa com cinco pratos e cinco garfos, onde os filósofos podemsentar, comer e pensar. Todavez que um filósofo para de pensar e deseja comer, é necessário que ele utilize dois garfos, posicionados à sua direita e à sua esquerda.
  • 7. Existem várias soluções para resolver o problema dos filósofos, entre elas: 1.Permitir que apenas quatro filósofos sentassem à mesa simultaneamente; 2. Permitir que um filósofo pegue um garfo apenas se o outro estiver disponível; 3. Permitir que um filósofo ímpar pegue primeiro o seu garfo da esquerda e depois o da direita, enquanto um filósofo par pegue o garfo da direita e, em seguida, o da esquerda. 1.8 . Problema do Barbeiro O problema do barbeiro é outro exemplo clássico de sincronização de Processos. Neste problema, um barbeiro recebe clientes para cortar o cabelo. Na barbearia há uma cadeira de barbeiro e apenas cinco cadeiras para clientes esperarem. Quando um cliente chega, caso o barbeiroesteja trabalhando, ele senta se houver uma cadeira vazia ou vai embora se todas as cadeiras estiverem ocupadas. No caso de o barbeiro não ter nenhum cliente para atender, ela senta na cadeira e dorme até que um novo cliente apareça. A solução utiliza um semáforo contador e dois semáforos binários. Quando o barbeiro seleciona um cliente para atender, é executada uma instrução DOWN no semáforo contador. Caso não exista nenhum cliente aguardando, o barbeiro continua a espera de um cliente. Quando o barbeiro recurso associado ao semáforo s