Você está na página 1de 37

Universidade Federal do Par Instituto de Cincias Exatas e Naturais Faculdade de Computao

SISTEMAS OPERACIONAIS

Aula 7
Regiane Kawasaki
kawasaki@ufpa.br

Slides adaptados da Profa. Sarita Mazzini Bruschi (ICMC-USP) baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum

Roteiro

Excluso Mtua:

Espera Ocupada; Aula Passada Primitivas Sleep/Wakeup; Semforos; Monitores; Passagem de Mensagem.

Roteiro

Excluso Mtua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semforos; Monitores; Passagem de Mensagem.

Comunicao de Processos Primitivas Sleep/Wakeup

Todas as solues apresentadas at o momento utilizam espera ocupada processos ficam em estado de espera (looping) at que possam utilizar a regio crtica:
Tempo

de processamento da CPU (lao

ocioso).

Comunicao de Processos Primitivas Sleep/Wakeup

Ainda em relao espera ocupada pode ocorrer o problema de inverso de prioridade:

Considere dois processos: H, com alta prioridade


L, com baixa prioridade Regra de escalonamento: H executado sempre que estiver no estado pronto. Situao problema: a) L entra em sua regio crtica, H torna-se pronto para executar; b) H inicia uma espera ociosa, mas como L nunca escalonado enquanto H est executando, L nunca tem a oportunidade de deixar sua regio crtica e, assim, H 5 fica em lao infinito.

Comunicao de Processos Primitivas Sleep/Wakeup

Soluo:

Para solucionar esse problema de espera, um par de primitivas Sleep e Wakeup utilizado. A primitiva Sleep uma chamada de sistema que bloqueia o processo que a chamou, ou seja, suspende a execuo de tal processo at que outro processo o acorde. A primitiva Wakeup uma chamada de sistema que acorda um determinado processo. Ambas as primitivas possuem dois parmetros: o processo sendo manipulado e um endereo de memria. 6

Comunicao de Processos Primitivas Sleep/Wakeup

Problemas que podem ser solucionados com o uso dessas primitivas:

Problema do Produtor/Consumidor: dois processos compartilham um buffer de tamanho fixo. O processo produtor coloca dados no buffer e o processo consumidor retira dados do buffer. Problemas:

Produtor deseja colocar dados quando o buffer ainda est cheio; Consumidor deseja retirar dados quando o buffer est vazio; Soluo: colocar os processos para dormir, at que eles possam ser executados.
7

Comunicao de Processos Primitivas Sleep/Wakeup

Buffer: uma varivel count controla a quantidade de dados presente no buffer.

Produtor: Antes de colocar dados no buffer, o processo produtor checa o valor dessa varivel. Se a varivel est com valor mximo, o processo produtor colocado para dormir. Caso contrrio, o produtor coloca dados no buffer e o incrementa.
8

Comunicao de Processos Primitivas Sleep/Wakeup

Consumidor: Antes de retirar dados no buffer, o processo consumidor checa o

valor da varivel count para saber se ela


est com 0 (zero). Se est, o processo vai dormir, seno ele retira os dados do buffer e decrementa a varivel.

Comunicao de Processos Sincronizao Produtor-Consumidor


Sincronizao

gr

Processo gravador

av a o

r u t i le

Processo leitor

dado Buffer
10

Comunicao de Processos Primitivas Sleep/Wakeup


# define N 100 int count = 0; void producer(void) { int item; while (TRUE) { item = produce_item(); if (count == N) sleep(); insert_item(item); count = count + 1; if (count == 1) wakeup(consumer) } void consumer(void) { int item; while (TRUE) { if (count == 0) sleep(); item = remove_item(); count = count - 1; if (count == N - 1) wakeup(producer) consume_item(item); } }

}
11

Comunicao de Processos Primitivas Sleep/Wakeup

Problemas desta soluo: Acesso varivel count irrestrita:

O buffer est vazio e o consumidor acabou de checar a varivel count com valor 0; O escalonador decide que o processo produtor ser executado; Ento o processo produtor insere um item no buffer e incrementa a varivel count com valor 1; Imaginando que o processo consumidor est dormindo, o processo produtor envia um sinal de wakeup para o consumidor; No entanto, o processo consumidor no dormindo, e no recebe o sinal de wakeup. est
12

Comunicao de Processos Primitivas Sleep/Wakeup

Assim que o processo consumidor executado novamente, a varivel count j tem o valor zero; Nesse instante, o consumidor colocado para dormir, pois acha que no existem informaes a serem lidas no buffer; Assim que o processo produtor acordar, ele insere outro item no buffer e volta a dormir. Ambos os processos dormem para sempre...

Soluo: bit de controle recebe um valor true quando um sinal enviado para um processo que no est dormindo. No entanto, no caso de vrios pares de processos, vrios bits devem ser criados sobrecarregando o sistema!!!!
13

Solues

Excluso Mtua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semforos; Monitores; Passagem de Mensagem;

14

Comunicao de Processos Semforos

Idealizado por E. W. Dijkstra (1965);

Varivel inteira para contar o nmero de sinais de acordar salvos; Um semforo pode ter valor 0, quando no h sinal de acordar armazenado ou um valor positivo se um ou mais sinais de acordar estiverem pendentes;
Duas primitivas de chamadas de sistema: down (sleep) e up (wake); Originalmente P (Proberen - testar) (Verhogen - incrementar) em holands. e V

15

Comunicao de Processos Semforos

Down: verifica se o valor do semforo maior do que 0; se for, o semforo decrementado; se o valor for 0, o processo colocado para dormir sem completar sua operao de down; Todas essas aes so chamadas de aes atmicas.

Aes atmicas garantem que quando uma operao no semforo est sendo executada, nenhum processo pode acessar o semforo at que a operao seja finalizada ou bloqueada.
16

Comunicao de Processos Semforos

Up: incrementa o valor do semforo, fazendo com que algum processo que esteja dormindo possa terminar de executar sua operao down.

Semforo Mutex: garante a excluso mtua, no permitindo que os processos acessem uma regio crtica ao mesmo tempo.

Tambm chamado de semforo binrio


17

Comunicao de Processos Semforo Binrio


Processo deseja entrar na regio crtica

Processo executa Down(s) Processo finaliza Down(s), pois s>0;

Processo bloqueado sem finalizar Down(s), pois s=0;

DO

0)

(S >

N = (S

0)

UP (S) - processo sai da regio crtica Libera processo da fila de espera Processo acessa a regio crtica Fila de espera de processos

18

Roteiro

Excluso Mtua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semforos; Monitores; Passagem de Mensagem;

19

Comunicao de Processos Monitores


Idealizado por Hoare (1974) e Brinch Hansen (1975) Monitor: primitiva (unidade bsica de sincronizao) de alto nvel para sincronizar processos:

Conjunto de procedimentos, variveis e estruturas de dados agrupados em um nico mdulo ou pacote;

Somente um processo pode estar ativo dentro do monitor em um mesmo instante; outros processos ficam bloqueados at que possam estar ativos no monitor;
20

Comunicao de Processos Monitores


monitor example int i; condition c; procedure A(); . end; procedure B(); . end; end monitor;

Dependem da linguagem de programao Compilador que garante a excluso mtua. JAVA


Todos os recursos compartilhados entre processos devem estar implementados dentro do Monitor;
21

Estrutura bsica de um Monitor

Comunicao de Processos Monitores

Execuo:

Chamada a uma rotina do monitor; Instrues iniciais teste para detectar se um outro processo est ativo dentro do monitor; Se positivo, o processo novo ficar bloqueado at que o outro processo deixe o monitor; Caso contrrio, o processo novo executa as rotinas no monitor.

22

Comunicao de Processos Monitores


Condition Variables (condition): variveis que indicam uma condio; e Operaes Bsicas: WAIT e SIGNAL

wait (condition) bloqueia o processo; signal (condition) acorda o processo que executou um wait na varivel condition e foi bloqueado;

23

Comunicao de Processos Monitores


Variveis condicionais no so contadores, portanto, no acumulam sinais; Se um sinal enviado sem ningum (processo) estar esperando, o sinal perdido; Assim, um comando WAIT deve vir antes de um comando SIGNAL.

24

Comunicao de Processos Monitores

Como evitar dois processos ativos no monitor ao mesmo tempo? (1) Hoare colocar o processo mais recente para rodar, suspendendo o outro!!! (sinalizar e esperar) (2) B. Hansen um processo que executa um SIGNAL deve deixar o monitor imediatamente;

O comando SIGNAL deve procedimento do monitor;

ser

ltimo

de

um

A condio (2) mais simples e mais fcil de se implementar.

25

Comunicao de Processos Monitores

26

Comunicao de Processos Monitores

Limitaes de semforos e monitores:

Ambos so boas solues somente para CPUs com memria compartilhada. No so boas solues para sistema distribudos; Nenhuma das solues prov troca de informaes entre processo que esto em diferentes mquinas; Monitores dependem de uma linguagem de programao poucas linguagens suportam Monitores.
27

Solues

Excluso Mtua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semforos; Monitores; Passagem de Mensagem;

28

Comunicao de Processos Passagem de Mensagem


Prov troca de mensagens entre processos rodando em mquinas diferentes; Utiliza-se de duas primitivas de chamadas de sistema: send e receive;

29

Comunicao de Processos Passagem de Mensagem

Podem ser implementadas como procedimentos:


send (destination,&message); receive (source,&message);

O procedimento send envia para um determinado destino uma mensagem, enquanto que o procedimento receive recebe essa mensagem em uma determinada fonte; Se nenhuma mensagem est disponvel, o procedimento receive bloqueado at que uma mensagem chegue.
30

Comunicao de Processos Passagem de Mensagem

Problemas desta soluo:

Mensagens so enviadas para/por mquinas conectadas em rede; assim mensagens podem se perder ao longo da transmisso; Mensagem especial chamada acknowledgement o procedimento receive envia um acknowledgement para o procedimento send. Se esse acknowledgement no chega no procedimento send, esse procedimento retransmite a mensagem j enviada;
31

Comunicao de Processos Passagem de Mensagem

Problemas:

A mensagem recebida corretamente, mas o acknowledgement se perde.


Ento o receive deve ter uma maneira de saber se uma mensagem recebida uma retransmisso cada mensagem enviada pelo send possui uma identificao sequncia de nmeros; Assim, ao receber uma nova mensagem, o receive verifica essa identificao, se ela for semelhante a de alguma mensagem j recebida, o receive descarta a mensagem!
32

Comunicao de Processos Passagem de Mensagem

Problemas:

Desempenho: copiar mensagens de um processo para o outro mais lento do que operaes com semforos e monitores; Autenticao Segurana.

33

Comunicao de Processos Passagem de Mensagem

34

Comunicao de Processos Outros mecanismos

RPC Remote Procedure Call

Rotinas que permitem comunicao de processos em diferentes mquinas. Chamadas remotas.


Sistemas paralelos. Permite que um objeto ativo em uma mquina virtual Java possa interagir com objetos de outras mquinas virtuais Java, independentemente da localizao dessas mquinas virtuais. Permite que servios sejam compartilhados atravs da Web.
35

MPI Message-passing Interface

RMI Java Remote Method Invocation

Web Services

Comunicao de Processos Outros mecanismos

Pipe:

Permite a criao de filas de processos; ps -e | grep cbcc; Sada de um processo a entrada de outro; Existe enquanto o processo existir.

Socket:

Par endereo IP e porta utilizado para comunicao entre processos em mquinas diferentes; Host X (192.168.1.1:1065) Server Y (192.168.1.2:80).

36

Prxima aula...

Problemas Clssicos de Comunicao entre processos

37

Você também pode gostar