Buscar

Comunicação entre processos - Parte I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais 
Comunicação entre Processos 
Parte I 
Prof. Sílvio Fernandes 
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO 
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS 
CURSO DE CIÊNCIA DA COMPUTAÇÃO 
Comunicação Interprocessos 
 Imagine que um 
sistema de reserva de 
linha aérea só possui 
um assento 
disponível, todos os 
demais já foram 
ocupados 
 Dois clientes estão 
comprando seus 
bilhetes no mesmo 
instante em terminais 
diferentes 
2 
Negociação 
Comunicação Interprocessos 
 Imagine um pipeline do interpretador de 
comandos 
 A saída do 1º processo deve ser passada para o 2º, e 
isso prossegue até o fim da linha de comandos 
cat arq1 arq2 arq3 | sort > dev/lp 
 cat: concatena; sort: ordena; >: redireciona a saída 
 
3 
Comunicação Interprocessos 
 Se um processo A produz dados e o processo B 
os imprime 
 B deve esperar até que A produza alguns 
dados antes de iniciar a impressão 
 O que esses 3 exemplos tem em comum? 
 Comunicação interprocessos = interprocess 
communication - IPC 
4 
Comunicação Interprocessos 
 Frequentemente processos precisam se 
comunicar com outros processos 
 Há uma necessidade de comunicação entre 
processos que deve ocorrer, de preferência, de uma 
maneira bem estruturada e sem interrupções 
5 
Comunicação Interprocessos 
 Há 3 tópicos relacionados 
1. Um processo passa informação para outro 
2. Garantir que 2 ou mais processos não invadam uns 
aos outros 
3. Sequência adequada quando existirem 
dependências 
 Os mesmos problemas e soluções envolvendo 
comunicação entre processos também se 
aplica a threads (os 2 últimos tópicos) 
6 
Condições de disputa 
 Processos que trabalham juntos podem 
compartilhar algum armazenamento comum 
(memória principal ou arquivo) a partir do qual 
cada um seja capaz de ler e escrever 
 Ex: Quando um processo quer imprimir ele 
coloca o nome do arquivo em um diretório de 
spool e, outro processo, o daemon de 
impressão, verifica periodicamente se há 
algum arquivo para ser impresso 
 
7 
Condições de disputa 
 2 processos querem ter acesso 
simultaneamente à memória compartilhada 
8 
Condições de disputa 
 Ex cont.: Um processo “A” requisita ao SO a 
próxima vaga na fila de impressão, e recebe a 
informação de que a próxima vaga é “7”. 
Nesse momento “A” é escalonado e “B” ganha 
a CPU. “B” requisita ao SO a próxima vaga e 
também recebe “7”, onde ele escreve seu 
arquivo e continua sua execução. Quando “A” 
volta a executar ele escreve seu arquivo na 
posição “7” (sobrescrevendo o arquivo de “B”) 
e atualiza a próxima vaga para “8”. “B” nunca 
receberá qualquer saída 
9 
Condições de disputa 
 Essa situação é chamada de condição de 
corrida ou disputa (race conditions) 
 2 ou mais processos estão lendo ou escrevendo 
algum dado compartilhado e cujo resultado 
final depende das informações de quem e 
quando executa precisamente 
10 
Regiões críticas 
 Para evitarmos condições de disputa 
precisamos de mecanismos para assegurar que 
outros processos sejam impedidos de acessar 
um recurso compartilhado qualquer que já 
esteja em uso por outro processo. Elas são 
conhecidas como técnicas de exclusão mútua 
 O problema anterior aconteceu porque “B” 
começou a usar uma variável compartilhada 
antes que “A” terminasse de usá-la 
11 
Regiões críticas 
 Regiões do código em que há acesso a um 
recurso compartilhado são chamadas de 
regiões críticas ou seção crítica 
 Satisfazer 4 condições para uma boa solução 
1. Nunca dois processos podem estar 
simultaneamente em suas regiões críticas 
2. Nada pode ser afirmado sobre a velocidade ou 
sobre o número de CPUs 
3. Nenhum processo executando fora de sua região 
crítica pode bloquear outro processo 
4. Nenhum processo deve esperar eternamente para 
entrar em sua região crítica 
 
12 
Regiões críticas 
 Exclusão mútua usando regiões críticas 
13 
Exclusão mútua com espera 
ociosa 
 Enquanto um processo estiver ocupado 
atualizando a memória compartilhada em sua 
região crítica, nenhum outro processo cause 
problema invadindo-a 
 Soluções 
 Desabilitando interrupções 
 Variáveis de impedimento 
 Alternância obrigatória 
 Solução de Peterson 
 Instrução TSL 
14 
Exclusão mútua com espera 
ociosa 
 Desabilitando interrupções 
 A solução mais simples é aquela em que cada 
processo desabilita todas as interrupções lodo depois 
de entrar em sua região crítica e reabilita-as antes de 
sair dela 
 A CPU não será alternada para outro processo 
 Não é prudente dar aos processos o poder de 
desligar interrupções 
 Em multiprocessadores, afetará apenas a CPU que 
executou a instrução disable, as outras poderão ter 
acesso a memória compartilhada 
15 
Exclusão mútua com espera 
ociosa 
 Desabilitando interrupções 
 Muitas vezes é uma técnica bastante útil dentro do 
próprio SO, mas inadequada como mecanismo geral 
de exclusão mútua para processos de usuário 
 Mesmo assim está caindo em desuso em virtude do 
número crescente de chips mutinúcleo em PCs 
16 
Exclusão mútua com espera 
ociosa 
 Variáveis de impedimento (lock variable) 
 Uma única variável compartilhada (lock) incialmente 
com o valor 0 
 Para entrar na região crítica, um processo testa antes 
se há impedimento, verificando o valor de lock, 
quando tem acesso modifica para 1 
 Apresenta exatamente a mesma falha do diretório 
de spool 
17 
Exclusão mútua com espera 
ociosa 
 Alternância obrigatória 
 Utiliza uma variável compartilhada turn que indica a 
vez de qual processo pode entrar na região crítica, a 
qual deve ser modificada para o próximo processo 
antes de sair da região crítica 
 Não é uma boa ideia quando um dos processos for 
muito mais lento que o outro 
 Essa situação viola a condição 3: um processo 
bloqueia outro que não está em sua região crítica 
18 
Exclusão mútua com espera 
ociosa 
 Alternância obrigatória 
 
 
 
 
 
(a) Processo 0. (b) Processo 1 
19 
Exclusão mútua com espera 
ociosa 
 Solução de Peterson 
 Consiste em 2 rotinas em ANSI C 
 Antes de entrar na região crítica cada processo 
chama enter_region com seu número de processo (0 
ou 1). Esta chamada fará com que ele fique 
esperando até que seja seguro entrar. 
 Depois de terminar o uso da região crítica, o processo 
chama leave_region para permitir a outro processo 
entrar 
20 
Exclusão mútua com espera 
ociosa 
 Solução de Peterson 
 
 
 
 
 
21 
Exclusão mútua com espera 
ociosa 
 Instrução TSL 
 Solução requer auxílio do hardware 
 Muitos computadores (especialmente com multiplos 
processadores) possuem instruções test and set lock 
 TSL RX, LOCK lê o conteúdo de memória (lock) no 
registrador RX e, então armazena um valor diferente 
de zero no endereço LOCK 
 As operações de leitura e armazenamento da 
palavra são seguramente indivisíveis 
22 
Exclusão mútua com espera 
ociosa 
 Instrução TSL 
 Nenhum outro processador pode ter acesso à 
memória enquanto a instrução não terminar 
 A CPU que está executando a instrução TSL impede o 
acesso ao barramento de memória 
 TSL RX, LOCK copia o valor de RX para LOCK. Um 
processo pode entrar em sua região crítica apenas 
no caso de LOCK ser 0. A leitura do valor de LOCK e 
sua restauração para 0 podem ser feitas por 
instruções ordinárias 
23 
Exclusão mútua com espera 
ociosa 
 Instrução TSL 
 
 
 
 
 
24 
Referências 
 TANENBAUM, Andrew S. Sistemas Operacionais 
Modernos. 3ª Ed., Prentice Hall, 2009. 
 TANENBAUM,Andrew S.; WOODHULL, Albert S. 
Sistemas Operacionais: Projeto e Implementação. 
3ª Ed., Prentice Hall, 2008. 
 MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de 
Sistemas Operacionais. 3a. Edição. LTC, 2004. 
 DEITEL, Harvey; DEITEL, Pau; STEINBUHLER, Kate. 
Sistemas Operacionais. 3ª. Edição. Prentice Hall, 
2005 
 SILBERSCHATZ, Abraham; GALVIN, Peter; GAGNE, 
Greg. Fundamentos de Sistemas Operacionais. 6ª. 
Edição. LTC, 2004. 
25

Continue navegando