Buffer
Artigo: Buffer. Pesquise 861.000+ trabalhos acadêmicosPor: ValSilva17 • 28/3/2015 • 308 Palavras (2 Páginas) • 246 Visualizações
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
...