TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Topicos em relação a comuniçao de processos

Por:   •  3/7/2018  •  Bibliografia  •  3.676 Palavras (15 Páginas)  •  157 Visualizações

Página 1 de 15

S.O- Comunicação Interprocessos é a comuniçao de processos, por exemplo em um pipeline do interpretador de comandos, a saída do primeiro processo deve ser passada para o segundo processo e isso prossegue até o final da linha de comando. Assim há uma necessidade de comunicação entre processos de maneira estrutura e sem interrupções

Pipeline-execuçao de varias instruçoes

3 Topicos em relaçao a comuniçao de processos

  1.  Como é passado a informaçao para outro processo.
  2. Garantia que um processo nao invada o espaço de outro qnd estiver em att critica (ocorre quando dois processos tentam se apropriar do último 2 Mb de memóriadisponível).
  3. Quando um processo depende do outro para que seja executado.

Condiçao de disputa-Quando algum processo compartilha um espaço de armazenamento comum com outro processo e os dois podem ler e escrever e querem fazer isso ao mesmo tempo criando assim uma condiçao de disputa.

O armazenamento compartilhado pode estar na memoria principal ou em arquivo compartilhado.

Situações que ocorrem condição de disputa-Memória compartilhada, Arquivos compartilhados ou qualquer outra coisa compartilhada.

O que fazer para evitar condições de disputa?

-Impedir que mais de um processo leia e escreva ao mesmo tempo em ambiente compartilhado.

      -Utilizar exclusão mútua (mutual exclusion) para assegurar que outros processos sejam impedidos de      usar uma variável ou um arquivo compartilhado que já estiver em uso por um processo.

4 Soluções para evitar condições de disputa

-Nunca dois processos podem estar juntos em suas regiões críticas

-Nada pode ser afirmado sobre a velocidade ou sobre o número de CPUs

        -Nenhum processo executando fora de sua região crítica pode bloquear outros processos.

        -Nenhum processo deve esperar eternamente para entrar em sua região crítica.

Região Crítica- é a area onde os processos tem acesso a memoria, a arquivos compartilhados ou quando precisam fazer outra coisa crítica que pode ocorrer disputa.

Exclusão Mútua-

Desabilitanto interrupções- Cada processo desabilita todas as interrupçoes depois de entrar na sua região critica, e reabilita as interrupçoes antes de sair , com as interrupçoes desabilitadas não ocorre interrupção de relógio e a CPU nn sera mais alterada para outro processo entao um processo pode verificar e atualizar a memoria compartilhada sem temer intervençao de outro processo.

O problema é que nao é prudente dar aos processos o poder de desligar as interrupçoes porque ele pode não ligar mais as interrupçoes.

Variaveis de impedimento-  Há uma variavel lock compartilhada com valor 0, antes de entrar na rg ele verifica a variavel lock se lock for 0 o processo muda para 1 e entra, se for 1 ele esperar até q se torne 0.

O problema é se um processo ler a variavel lock e ver que ela esta 0 antes q possa alterar para 1 outro processo ler 0 e assim 2 processos estarao na rg critica.

Alternancia obrigatória-  Há uma variavel turn que controla a vez de qm entra na rg, o P1 verifica a variavel turn encontra 0 e entra na rg, o P2 tbm encontra 0 e fica em um laço fechado até q se torne 1 para entrar, entrando em espera ociosa e assim q o P1 sair muda a variavel para 1.

O problema é se o P1 e P2 o terminar rapidamente na rg e o P2 mudar rapidamente para 1 entao dois processos vao entra na rg critica juntamente.  

Soluçao de Peterson-Na soluçao de peterson ha 2 variaveis para controlar a entrada e a saida de rg chamando a funçao enter_region para para colocar turn 0 e leave_region para mudar turn para 1.

O problema é q se dois processos chamarem enter_region quase simultaneamente vai ser armazenado os numero dos dois processos na variavel turn, oq foi armazenado por ultimo sera considerado e o primero sobreposto.

Instruçao TSL-(auxilio hardware)A intrução tsl le o conteudo de palavra de memoria lock no registrador RX e armazena um valor diferente de 0 no endereço de memoria lock.

A CPU quando executando a instrução tsl impede o acesso ao barramento de memoria para q outras cpus nao tenham acesso até que ela termine.

Para entrar na rg o processo chama a enter_region que faz uma espera ociosa e verifica a variavel lock  e retorna se lock for igual a 1 ele entra, depois de sair da rg o processo chama leave_region que muda a variavel lock para 0.

As soluçoes Peterson e TSL tratam a rg com sucesso mas tem um defeito que é precisar de espera ociosa que gastam muito tempo de CPU e tambem pode ocorrer a inversão de prioridade dos processos.

Dormir e acordar- Nessa solução é usado dois sistemas sleep e wakeup o sleep faz os processos serem suspenso e o wakeup desperta os processos.

Produtor-Consumidor-(Buffer ilimitado) 2 processos compartilham um buffer comum e de tamanho fixo.

Produtor- coloca informaçoes dentro do buffer e Consumidor retira essas informaçoes.

Um problema é qnd o produtor quer colocar informaçoes no buffer porem eles ja esta cheio, a soluçao é colocar o produtor para dormir e só desperta-lo qnd o consumidor tirar 1 ou mais itens do buffer, se o consumidor for tirar algo do buffer e eles estiver vazio eles simplesmente ira dormir até q o produtor coloque algo no buffer e o desperter.

Ocorre o msm problema de condição de disputa q o spool de impressão, ele tem uma vaiavel count para controlar os itens no buffer.

O problema é que se for enviado um sinal para acordar e ele é perdido porque o processo que ainda nao esta dormindo.

Para solucionar esse problema foi add um bit de espera que guarda os sinais de acordar, e qnd for enviado um sinal de acordar para um processo que ainda nn esta dormindo ele guardara e assim q esse processo for dormir o bit avisaram ele que nn precisa. (semaforo resolve esse problema)

Semáforo-Dijkstra sugeriu usar uma variavel inteira para contar o numero de sinais de acordar para uso futuro, o semáforo é 0 nn qnd nao tem sinais de acordar e 1 ou mais qnd tiver sinais q tivessem pendentes. Com as duas operaçoes up e down, down verifica se o valor é maior que 0 se for ele decrescenta 1 se o valor é verificado e é igual a 0 o processo é posto pra dormir e up incrementara um e acordara um processo.

...

Baixar como (para membros premium)  txt (23.3 Kb)   pdf (102.4 Kb)   docx (20.6 Kb)  
Continuar por mais 14 páginas »
Disponível apenas no TrabalhosGratuitos.com