Ipc inter process commnunication

Disponível somente no TrabalhosFeitos
  • Páginas : 10 (2430 palavras )
  • Download(s) : 0
  • Publicado : 25 de maio de 2012
Ler documento completo
Amostra do texto
[pic]
EE442 Sistemas Operacionais Ch. 6inter-comunicação
Capítulo 6inter-comunicação
Introdução 6.1
Processosfreqüentemente precisam se comunicar com outros processos. Por exemplo, em um oleoduto casca, a saída do primeiro processo deve ser passado para o processo segundo, e assim por diante para baixo da linha. Assim, existe uma necessidade de comunicação entre osprocessos, de preferência de uma maneira bem estruturado não usando as interrupções. Porque, interrompe diminuir o desempenho do sistema. Que a comunicação entre processos no controle do sistema operacional é chamado de Comunicação entre ou simplesmente IPC.
Em alguns sistemas operacionais, processos que estão trabalhando juntos, geralmente, têm uma área de armazenamento comum que cada um pode lere escrever. Para ver como IPC funciona na prática, vamos considerar um exemplo simples, mas comum, um spooler de impressão. Quando um processo deseja imprimir um arquivo, ele entra no nome do arquivo em um diretório spooler especial. Outro processo, o daemon da impressora, periodicamente verifica se existem arquivos a serem impressos, e se houver, ele envia-los para a impressora e remove seusnomes do diretório.
Suponha que o nosso diretório spooler tem um grande número de slots, número 0, 1, 2, ..., cada uma capaz de conter um nome de arquivo. Também suponha que temos duas variáveis ​​compartilhadas, fora, que aponta para o próximo arquivo a ser impresso, e em, que aponta para o próximo slot livre no diretório. Estas duas variáveis ​​podem ser mantidos em um arquivo de duas palavrasdisponíveis para todos os processos. Pense em um determinado instante, slots de 0 a 3 estão vazias (os arquivos já foram impressos) e slots de 4 a 6 são maçantes (com os nomes de arquivo a ser impresso). Mais ou menos freqüentemente, processa A e B decidem que querem fila de um arquivo para impressão, como ilustrado abaixo





Diretório Spooler
A seguir pode acontecer sobre os pedidos deimpressão de dois processos. Processo A lê e armazena o valor, 7, em um next_free_slot variável local. Só então uma interrupção de relógio e ocorre o processador decide que um processo foi executado por muito tempo, por isso muda para processar Processo B. B também lê, e também recebe a 7, de modo que armazena o nome do seu arquivo no slot 7 e atualizações em que ser um 8. Em seguida, ele sai e fazoutras coisas.
Eventualmente, um processo é executado novamente, a partir do lugar em que parou. Olha next_free_slot, em sua variável local encontra um 7 lá, e escreve seu nome de arquivo no slot 7, apagando o nome que o processo B só colocar lá. Em seguida, ele calcula next_free_slot + 1, que é de 8, e define em até 8.
Notas de Aulas por Uğur Halici 62
EE442 Sistemas Operacionais Ch. 6Comunicação entre
o diretório do spooler está internamente consistente, de modo que o daemon da impressora não vai notar nada de errado, mas o processo B nunca vai ter uma saída. Situações como esta, onde dois ou mais processos estão lendo ou escrevendo dados compartilhados eo resultado final depende de quem executa precisamente quando, são chamadas de condições de corrida.
A chave para a prevenção deproblemas aqui e em muitas outras situações que envolvem memória compartilhada, arquivos compartilhados, e compartilhado tudo, é encontrar alguma maneira de proibir mais de um processo de leitura e escrita dos dados compartilhados ao mesmo tempo. Coloque em outras palavras, o que nós precisamos é de exclusão mútua (alguma forma de ter certeza que se um processo está usando uma variável compartilhada ouarquivo, o outro processo serão excluídos fazendo a mesma coisa. A dificuldade acima ocorreu porque o processo B começou a usar uma das variáveis ​​compartilhadas antes Um processo foi terminado com ele.
6,2 problema da Seção Crítica
O problema de evitar condições de corrida também pode ser formulada de uma maneira abstrata. parte do tempo, um processo está ocupado fazendo cálculos internos...
tracking img