Pular para o conteúdo principal

Postagens

Mostrando postagens de outubro, 2011

Esperas não activas

Algumas definições e conceitos Variável Lock – diz se está alguém a executar o while. Garante que o wait() e o signal() são atômicos e que só está um processo de cada vez na zona critica. Wait(condiction_variable, lock) – põe o processo actual numa lista (FIFO) em espera e liberta o lock. Aguarda por um sinal do sistema operativo para poder pôr os processos guardados na FIFO da variável de condição prontos a executar. Signal(condiction_variable) – vai a lista de processos bloqueados (FIFO) faz pop da lista e põem o processo bloqueado na fila de processos prontos a executar pelo sistema operativo. Funcionamento do psedo-código Psedo-Código: Lock lock ; Condition vazio , cheio ; int a[N], nitems, ...; int tirar(){ acquire( lock ); //está alguem apartir desta linha? while (nitems == 0) wait( vazio , lock ); //  Não tenho nada para fazer. Espero! … {algoritmo que faz coisas} … signal( cheio ); //  Bem! Quem estava à espera do meu trabalho para con...