Você está na página 1de 10

Sistemas Operacionais Comunicao entre Processos

Prof. Ms. Mrcio Andrey Teixeira

Comunicao entre processos

Freqentemente, processos precisam se comunicar com outros processos. Por exemplo, em um pipeline do interpretador de comandos, a sada do primeiro processo deve ser passado para o segundo processo, e isso prossegue at o fim da linha de comandos.

Assim, h uma necessidade de comunicao entre processos que deve ocorrer, de preferncia, de uma maneira muito estruturada.

Em relao a esta comunicao, h trs tpicos de devem ser levados em considerao:

Comunicao entre processos

1) Como um processo passa informaes para outro processo;

2) Como garantir que dois ou mais processos no invadam uns aos outros, quando envolvidos em regies crticas. Por exemplo, suponha que dois processos tentem, cada um, acessar uma determinada regio de memria.

3) O relacionamento, ou seqncia adequada, quando existir dependncia entre processos. Se o processo A produz dados e o processo B os imprime, B deve esperara at que A produza alguns dados para serem impressos.

Comunicao entre processos

Condies de disputa
Processos que trabalham em conjunto podem compartilhar algum armazenamento em comum, do qual cada um pode ler e escrever. Exemplo de compartilhamento: Dados, arquivos etc. Podem estar na memria principal como tambm em um arquivo compartilhado. Exemplo: Um spool de impresso. Quando quer imprimir um arquivo, o processo entre com o nome do arquivo que ser impresso no diretrio de spool. Um outro processo, um deamon de impresso, verifica periodicamente se h algum arquivo para ser impresso e, se houver, os imprime e ento remove os nomes do diretrio de spool Imagine a seguinte seguinte situao:

Comunicao entre processos

Condies de disputa
O nosso spool de impresso contm um grande nmero de vagas numeradas de 1, 2, 3 ...., cada vaga pode conter um nome de um arquivo para ser impresso. Imagine tambm que h duas variveis compartilhadas: out: que aponta para o prximo arquivo a ser impresso; in: que aponta para a prxima vaga no diretrio;
. . .

4 5
Processso A

out = 4

6 7

in = 7

Processso B

. . .

Comunicao entre processos

Condies de disputa
Em um dado instante, as vagas 0 a 3 esto vazias; As vagas de 4 a 6 esto preenchidas; Mais ou menos ao mesmo tempo, os processos A e B decidem colocar um arquivo na fila de impresso; O processo A l in, e armazena o valor 7 na varivel local chamada proxima_vaga_livre; Ocorre uma interrupo O processo B tambm l in e obtem igualmento o nmero 7;
. . .

4 5
Processso A

out = 4

6 7

in = 7

Processso B

. . .

Neste momento, ambos os processos pensam que a prxima vaga livre a 7; O processo B segue em execuo e atualiza a varivel in com o nmero 8;

Comunicao entre processos

Condies de disputa
Ao final, o processo A executa novamente a partir de onde parou. Verifica que a prxima vaga 7, e sobrescreve o nome o arquivo que o processo 8 mandou imprimir. Feito isto, o processo A calcula a nova vaga, e altera o valor de in para 8. Neste instante, o diretrio de spool est inconsistente internamente.
. . .

4 5
Processso A

out = 4

6 7

in = 7

Processso B

. . .

O processo B no conseguir imprimir os seus dados

Comunicao entre processos

Regies Crticas
O que fazer para evitar condies de disputa? A resposta para esta pergunta impedir que dois ou mais pocessos leiam ou escrevam em uma regio de memria compartilhada, ou outro recurso compartilhado.
Em outras palavras, necessrio exlcuso mtua (mutual exclusion). Isto , algum modo de assegurar que outros processos sejam impedidos de usar uma varivel ou um outro recurso compartilhado que j estiver em uso por outro processo.

A escolha de operaes primitivas para evitar este problema muito importante no desenvolvimento de sistemas operacionais. Para conseguir chegar em uma boa soluo para este problema, quatro condies devem ser satisfeita:

Comunicao entre processos

Regies Crticas
1. Nunca dois ou mais processos podem estar simultaneamente em suas regies crticas; 2. Nada pode ser afirmado sobre o nmero e a velocidade de CPUs;

3. Nenhum processo executando em uma regio crtica pode bloquear outros processos; 4. Nenhum processo pode esperar eternamente para entrar em sua regio critica; Em um sentido abstrato, a figura abaixo mostra o comportamento ideal;

Comunicao entre processos

Exemplo:

A entra na regio crtica

A sai na regio crtica

Processo A B entra na regio crtica B deixa a regio crtica

B tenta entrar na regio crtica

Processo b

T1

T2

B bloquado

T3

T4

Você também pode gostar