SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Sistemas de Gestão de Bases de Dados
Sistemas de Gestão de Bases de DadosSistemas de Gestão de Bases de Dados
Sistemas de Gestão de Bases de DadosClara Ferreira
 
PRÁTICA PEDAGÓGICA III
PRÁTICA PEDAGÓGICA IIIPRÁTICA PEDAGÓGICA III
PRÁTICA PEDAGÓGICA IIIUFMA e UEMA
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos DistribuídosFrederico Madeira
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaHelder Lopes
 
Introdução ao OSPF e BGP
Introdução ao OSPF e BGPIntrodução ao OSPF e BGP
Introdução ao OSPF e BGPAbivio Pimenta
 
Aula 05 - Exercício de projeto - Projeto de Redes de Computadores
Aula 05 - Exercício de projeto - Projeto de Redes de ComputadoresAula 05 - Exercício de projeto - Projeto de Redes de Computadores
Aula 05 - Exercício de projeto - Projeto de Redes de ComputadoresDalton Martins
 
Redes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesRedes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesHelder Lopes
 
Pré-projeto Mestrado UNIFRA
Pré-projeto Mestrado UNIFRAPré-projeto Mestrado UNIFRA
Pré-projeto Mestrado UNIFRAAlexandre Brust
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebAnderson Luís Furlan
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Slide referenciação bibliográfica segundo normas da abnt slide
Slide referenciação bibliográfica segundo normas da abnt slideSlide referenciação bibliográfica segundo normas da abnt slide
Slide referenciação bibliográfica segundo normas da abnt slideVera Moreira Matos
 
Routers e portos de interface
Routers e portos de interfaceRouters e portos de interface
Routers e portos de interfaceGabriel Santos
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugolGabriel Faustino
 

Was ist angesagt? (20)

Sistemas de Gestão de Bases de Dados
Sistemas de Gestão de Bases de DadosSistemas de Gestão de Bases de Dados
Sistemas de Gestão de Bases de Dados
 
PRÁTICA PEDAGÓGICA III
PRÁTICA PEDAGÓGICA IIIPRÁTICA PEDAGÓGICA III
PRÁTICA PEDAGÓGICA III
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos Distribuídos
 
Memoria Virtual
Memoria VirtualMemoria Virtual
Memoria Virtual
 
Servidor WEB
Servidor WEBServidor WEB
Servidor WEB
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
 
Introdução ao OSPF e BGP
Introdução ao OSPF e BGPIntrodução ao OSPF e BGP
Introdução ao OSPF e BGP
 
Aula15 - Array PHP
Aula15 - Array PHPAula15 - Array PHP
Aula15 - Array PHP
 
Aula 05 - Exercício de projeto - Projeto de Redes de Computadores
Aula 05 - Exercício de projeto - Projeto de Redes de ComputadoresAula 05 - Exercício de projeto - Projeto de Redes de Computadores
Aula 05 - Exercício de projeto - Projeto de Redes de Computadores
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Redes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesRedes de computadores e Telecomunicações
Redes de computadores e Telecomunicações
 
Pré-projeto Mestrado UNIFRA
Pré-projeto Mestrado UNIFRAPré-projeto Mestrado UNIFRA
Pré-projeto Mestrado UNIFRA
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento Web
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Slide referenciação bibliográfica segundo normas da abnt slide
Slide referenciação bibliográfica segundo normas da abnt slideSlide referenciação bibliográfica segundo normas da abnt slide
Slide referenciação bibliográfica segundo normas da abnt slide
 
Aula1 tipos de redes
Aula1 tipos de redesAula1 tipos de redes
Aula1 tipos de redes
 
Critérios de validade
Critérios de validadeCritérios de validade
Critérios de validade
 
Routers e portos de interface
Routers e portos de interfaceRouters e portos de interface
Routers e portos de interface
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugol
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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