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

Buffer

Artigo: Buffer. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  28/3/2015  •  308 Palavras (2 Páginas)  •  222 Visualizações

Página 1 de 2

As soluções com espera ocupada têm o grave inconveniente de desperdiçar tempo de

UCP nos loops de espera para a entrada na região crítica. Além disto apresenta um outro

problema quando se trata de processos com prioridades diferente. Suponha dois processos:

um, chamado H, de alta prioridade e outro, chamado L de baixa prioridade. Se o processo L

estiver executando em sua região crítica quando o processo H é selecionado para execução,

então, se o processo H tenta entrar em sua região crítica não pode, pois o processo L está

Ricardo Luís de Freitas Notas de Aula - Sistemas Operacionais - 16

dentro da mesma e, portanto fica em um loop de espera. Mas, como H tem alta prioridade, o

processo L não poder executar até que H termine, pois apresenta prioridade mais baixa.

Tem-se neste caso uma situação chamada de deadlock, onde nenhum dos processos pode

prosseguir pois está aguardando alguma condição que somente pode ser atingida pela

execução do outro.

Para isto, define-se duas rotinas SLEEP e WAKEUP, que realizam a espera através do

bloqueamento do processo, ao invés do desperdício do tempo de UCP.

SLEEP: faz com que o processo que está executando seja transferido do estado de rodando

para o de bloqueado.

WAKEUP: pega um processo em estado bloqueado e o transfere para o estado pronto,

colocando-o disponível para execução quando o escalonador julgar adequado.

Para exemplificar a utilização de SLEEP e WAKEUP, observe o problema do produtor e

do consumidor. Neste problema clássico existem dois processos: um chamado produtor

que coloca dados em um buffer, e outro chamado consumidor que retira dados do buffer.

O buffer apresenta uma capacidade finita de reter dados, de forma que surgem problemas em

duas situações:

i) quando o produtor deseja colocar mais dados em um buffer cheio

ii) quando o consumidor deseja retirar dados de um buffer vazio.

Em ambos os casos, faz-se com que o processo que não pode acessar o buffer no

momento execute um SLEEP e seja bloqueado, somente sendo

...

Baixar como (para membros premium)  txt (2 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com