sistemas operacionais 6º semestre aula 6 prof. carlos vinícius [email protected] serviÇo...
TRANSCRIPT
![Page 1: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/1.jpg)
Sistemas Operacionais6º Semestre
Aula 6
Prof. Carlos Viní[email protected]
SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIALFACULDADE DE TECNOLOGIA SENAC PELOTAS
![Page 2: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/2.jpg)
Introdução
o Programa executado por apenas um processo é dito de programa sequencialo Existe apenas um fluxo de controle
o Programa concorrente é executado por diversos processos que cooperam entre si para realização de uma tarefa (aplicação)o Existem vários fluxos de controle o Necessidade de interação para troca de informações
(sincronização)
2
![Page 3: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/3.jpg)
Introdução
o Emprego de termos o Paralelismo real: só ocorre em máquinas
multiprocessadoraso Paralelismo “aparente” (concorrência): máquinas
monoprocessadoraso Execução simultânea versus estar “em estado de
execução” simultaneamente
3
![Page 4: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/4.jpg)
Programação Concorrente
o Composta por um conjunto de processos sequenciais que se executam concorrentemente
o Processos disputam recursos comunso e.g.: variáveis, periféricos, etc...
o Um processo é dito de cooperante quando é capaz de afetar, ou ser afetado, pela execução de outro processo
4
![Page 5: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/5.jpg)
Motivação para Programação Concorrente
o Aumento de desempenho:o Permite a exploração do paralelismo real
disponível em máquinas multiprocessadoraso Sobreposição de operações de E/S com
processamentoo Facilidade de desenvolvimento de aplicações
que possuem um paralelismo intrínseco
5
![Page 6: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/6.jpg)
Desvantagens da Programação Concorrente
o Programação complexao Aos erros “comuns” se adicionam erros
próprios ao modeloo Diferenças de velocidade relativas de
execução dos processoso Aspecto não determinístico
o Difícil depuração
6
![Page 7: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/7.jpg)
Especificação do paralelismo
o Necessidade de especificar o paralelismo definindo:o Quantos processos participarãoo Quem fará o queo Dependência entre as tarefas (Grafo)
o Notação para expressar paralelismoo fork/wait (fork/join)o parbegin/parend
7
![Page 8: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/8.jpg)
Fork/Wait
8
Processo B Processo C
Processo A
fork B;fork C;
...wait C;
wait B;
Bloqueado
![Page 9: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/9.jpg)
Parbegin/Parend
o Comandos empregados para definir uma sequência de comandos a serem executados concorrentemente
o A primitiva parend funciona como um ponto de sincronização (barreira)
9
Processo BProcesso C
Processo A
ParbeginTarefa B;Tarefa C;Parend
Bloqueado
![Page 10: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/10.jpg)
Comentários Gerais
o Primitivas de mais alto nível para descrição do paralelismo do tipo parbegin/parend podem ser traduzidas por pré-compiladores e/ou interpretadores para primitivas de mais baixo nível
o Processos paralelos podem ser executados em qualquer ordemo Duas execuções consecutivas do mesmo
programa, com os mesmos dados de entrada, podem gerar resultados diferenteso Não é necessariamente um erro
o Possibilidade de forçar a execução em uma determinada ordem10
![Page 11: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/11.jpg)
O problema do compartilhamento de recursos
o A programação concorrente implica em um compartilhamento de recursoso Variáveis compartilhadas são recursos
essenciais para a programação concorrenteo Acessos a recursos compartilhados devem ser
feitos de forma a manter um estado coerente e correto do sistema
11
![Page 12: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/12.jpg)
Exemplo: relação produtor-consumidor (1)
o Relação produtor-consumidor é uma situação bastante comum em sistemas operacionais
o Servidor de impressão:o Processos usuários produzem “impressões”o Impressões são organizadas em uma fila a
partir da qual um processo (consumidor) os lê e envia para a impressora
12
![Page 13: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/13.jpg)
Exemplo: relação produtor-consumidor (1)
13
P1
P2
Pn
PC
Produtores
Consumidor
![Page 14: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/14.jpg)
Exemplo: relação produtor-consumidor (2)
o Suposições:o Fila de impressão é um buffer circularo Existência de um ponteiro (in) que aponta
para uma posição onde a impressão é inserida para aguardar o momento de ser efetivamente impressa
o Existência de um ponteiro (out) que aponta para a impressão que está sendo realizada
14
![Page 15: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/15.jpg)
Exemplo: relação produtor-consumidor (2)
15
5 4 3 2 1
P1
Pd
outinP2
![Page 16: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/16.jpg)
Exemplo: relação produtor-consumidor (3)
o Sequência de operações:o P1 vai imprimir; lê valor de in (5); perde
processadoro P2 ganha processador; lê valor de in (5);
insere arquivo; atualiza in (6)o P1 ganha processador; insere arquivo (5);
atualiza in (7)o Estado incorreto:
o Impressão de P1 é perdidao Na posição 6 não há uma solicitação válida
de impressão
16
![Page 17: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/17.jpg)
Exemplo: relação produtor-consumidor (3)
17
outin
7 6 5 4 3 2 1
P1
Pd
P2
![Page 18: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/18.jpg)
O problema da seção crítica
o Corrida (race condition)o Situação que ocorre quando vários
processos manipulam o mesmo conjunto de dados concorrentemente e o resultado depende da ordem em que os acessos são feitos
o Seção crítica:o Segmento de código no qual um processo
realiza a alteração de um recurso compartilhado
18
![Page 19: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/19.jpg)
Necessidade da programação concorrente
o Eliminar corridaso Criação de um protocolo para permitir que
processos possam cooperar sem afetar a consistência dos dados
o Controle de acesso a seção crítica:o Garantir a exclusão mútua
19Exit_section
Entry_section
Seção crítica
![Page 20: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/20.jpg)
Propriedades para exclusão mútua
o Regra 1 - Exclusão mútuao Dois ou mais processos não podem estar
simultaneamente em uma seção críticao Regra 2 - Progressão
o Nenhum processo fora da seção crítica pode bloquear a execução de um outro processo
o Regra 3 - Espera limitadao Nenhum processo deve esperar infinitamente
para entrar em uma seção críticao Regra 4
o Não fazer considerações sobre o número de processadores, nem de suas velocidades relativas20
![Page 21: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/21.jpg)
Obtenção da exclusão mútua
o Desabilitação de interrupçõeso Variáveis especiais do tipo locko Alternância de execução
21
![Page 22: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/22.jpg)
Desabilitação de Interrupções
o Não há troca de processos com a ocorrência de interrupções de tempo ou de eventos externos
o Desvantagens:o Poder demais para um usuárioo Não funciona em máquinas
multiprocessadoras (SMP) pois apenas a CPU que realiza a instrução é afetada (violação da regra 4)
22
Seção crítica
CLI ;Desliga interrupções
STI ;Ativa interrupções
![Page 23: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/23.jpg)
Variáveis do tipo lock
o Criação de uma variável especial compartilhada que armazena dois estados:o Zero: livreo 1: ocupado
o Desvantagem:o Apresenta Race conditions
23
While (lock==1);lock=1;
lock=0;
Seção crítica
![Page 24: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/24.jpg)
Alternância
o Desvantagemo Teste contínuo do valor da variável
compartilhada provoca o desperdício do tempo do processador (busy waiting)
o Viola a regra 2 se a parte não crítica de um processo for muito maior que a do outro
24
while (TRUE) { while (turn!=0); critical_section(); turn=1; non_critical_section();}
while (TRUE) { while (turn!=1); critical_section(); turn=0; non_critical_section();}
![Page 25: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/25.jpg)
Implementação de mecanismos para exclusão mútua
o Algorítmica:o Combinação de variáveis do tipo lock e
alternância (Dekker 1965, Peterson 1981)o Primitivas:
o Mutexo Semáforoso Monitor
25
![Page 26: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/26.jpg)
Mutex
o Variável compartilhada para controle de acesso a seção crítica
o CPU são projetadas levando-se em conta a possibilidade do uso de múltiplos processos
o Inclusão de duas instruções assembly para leitura e escrita de posições de memória de forma atômica.o CAS: Compare and Store
o Copia o valor de uma posição de memória para um registrador interno e escreve nela o valor 1
o TSL: Test and Set Locko Lê o valor de uma posição de memória e coloca
nela um valor não zero26
![Page 27: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/27.jpg)
Primitivas lock e unlock
o O emprego de mutex necessita duas primitivas
27
enter_region: tst register,flagcmp register,0jnz enter_regionret
leave_region: mov flag,0ret
lock(flag);
unlock(flag);Seção crítica
![Page 28: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/28.jpg)
Primitivas lock e unlock: problemas (1)
o Busy waiting (spin lock)o Confiar no processo (programador)
o Fazer o lock e o unlock corretamenteo Inversão de prioridades
28
lock(m)
lock(m)
unlock(m)
Outros processos
Troca de processo
Bloqueado fazendobusy wait
![Page 29: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/29.jpg)
Primitivas lock e unlock: problemas (2)
o Solução:o Bloquear o processo ao invés de executar
busy waitingo Baseado em duas novas primitivas
o sleep: Bloqueia um processo a espera de uma sinalização
o wakeup: Sinaliza um processo
29
![Page 30: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/30.jpg)
Semáforos
o Mecanismo proposto por Dijkstra (1965)o Duas primitivas:
o P (Proberen, testar)o V (Verhogen, incrementar)
o Semáforo é um tipo abstrato de dados:o Um valor inteiroo Fila de processo
30
![Page 31: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/31.jpg)
Implementação de Semáforos
o Primitivas P e V
o Necessidade de garantir a atomicidade nas operações de incremento (decremento) e teste da variável compartilhada s.valoro Uso de mutex
o Dependendo dos valores assumidos por s.valoro Semáforos binários: s.valor = 1o Semáforos contadores: s.valor = n31
P(s): s.valor = s.valor - 1 Se s.valor < 0 { Bloqueia processo (sleep); Insere processo em S.fila; }
V(s): s.valor = s.valor + 1 Se S.valor <=0 { Retira processo de S.fila; Acorda processo (wakeup); }
![Page 32: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/32.jpg)
Semáforos X Mutex
o Primitivas lock e unlock são necessariamente feitos por um mesmo processoo Acesso a seção crítica
o Primitivas P e V podem ser realizadas por processos diferentes o Gerência de recursos
32
![Page 33: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/33.jpg)
Troca de Mensagens
o Primitivas do tipo mutex e semáforos são baseadas no compartilhamento de variáveiso Necessidade do compartilhamento de
memóriao Sistemas distribuídos não existe memória
comumo Novo paradigma de programação
o Troca de mensagens o Primitivas
o send e receiveo RPC (Remote Procedure Call)
33
![Page 34: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/34.jpg)
Primitivas send e receive (1)
o Diferentes comportamentos em função da semântica das primitivas send e receive
o Funcionamento básico:
34
Processo BProcesso A
send(dst, msg)
Bloqueado recv(src, msg)
Processo BProcesso A
recv(src, msg)
Bloqueado send(dst, msg)
![Page 35: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/35.jpg)
Primitivas send e receive (2)
o Bibliotecas de comunicaçãoo e.g. sockets, MPI, PVM, etc.
o Grande variedade de funçõeso Ponto a pontoo Em grupoo Primitivas para testar status e andamento de
uma comunicaçãoo Diferentes semânticas
o Bloqueanteo Não bloqueanteo Rendez vous
35
![Page 36: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/36.jpg)
Remote Procedure Call (1)
o Base de comunicação do DCEo Composto por :
o núcleo executivo (run time)o Interfaces para a geração de aplicações
(Interface de programação)36
![Page 37: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/37.jpg)
Remote Procedure Call (2)
o Linguagem própria para descrever funções (chamada/definição)
o Compilador (rpcgen) para gerar stubs e ligar com programa aplicativo
o Comunicação é toda gerada pelo run-time de forma transparente37
Call S
Send
Cliente Servidor
Recv
Unpack
return
Pack Pack
SendRecv
UnpackStub (cliente) Stub (servidor)
Run timewait
Call S return
![Page 38: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/38.jpg)
Deadlock
o Situação na qual um, ou mais processos, fica impedido de prosseguir sua execução devido ao fato de cada um estar aguardando acesso a recursos já alocados por outro processo
38
![Page 39: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/39.jpg)
Condições para ocorrência de Deadlocks (1)o Para que ocorra um deadlock quatro condições
devem ser satisfeitas simultaneamente:
o 1. Exclusão mútua:o Todo recurso ou está disponível ou está
atribuído a um único processo
o 2. Segura/espera:o Os processo que detém um recurso
podem solicitar novos recursos
39
![Page 40: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/40.jpg)
Condições para ocorrência de Deadlocks (2)o 3. Recurso não preemptível:
o Um recurso concedido não pode ser retirado de um processo por outro
o 4. Espera circular: o existência de um ciclo de 2 ou mais processos cada um
esperando por um recurso já adquirido (em uso) pelo próximo processo no ciclo
40
A
R1 R2
B
solicitação
em uso
em uso
solicitação
![Page 41: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA](https://reader036.vdocuments.pub/reader036/viewer/2022070508/570638681a28abb823903400/html5/thumbnails/41.jpg)
Estratégias para tratamento de deadlockso Ignoraro Deteção e recuperação
o Monitoração dos recursos liberados e alocados
o Eliminação de processoso Impedir ocorrência cuidando na alocação de
recursoso Algoritmo do banqueiro
o Prevenção (por construção)o Evitar a ocorrência de pelo menos uma das
quatro condições necessárias
41