-
-
-
CENAPAD-MGCO
A seguir: SJF: Shortest Job First
Acima: Imposição de Políticas de
Anterior: Servidor de Impressora: Solução
Substituindo if por while , corrigimos o problema de desrespeito à propriedade de invariância da exclusão mútua no uso da impressora:
boolean busy = false; key mutex; bed b;
Queue q = new Queue();
ProcessId owner;
void requestPrinter(ProcessId client) {
lock(mutex);
q.enter(client);
while (busy) { wait(b,mutex); }
busy = true;
q.leave(client);
owner = client;
unlock(mutex);
}
void releasePrinter(ProcessId client) {
lock(mutex);
busy = false;
owner = null;
wakeup(b, mutex);
unlock(mutex);
}
Mas continuamos com o escalonamento imposto pelo núcleo!