|
Ainda analisando a imagem, logicamente, os dois primeiros estados são similares, pois em ambos o processo vai executar, contudo, no segundo estado (Ready) não há, temporariamente, CPU disponível para ele. Já o terceiro estado (Blocked) é diferente dos dois primeiros, pois o processo não pode executar mesmo que a CPU não tenha nada para fazer. Observando as setas que unem as elipses, podem-se observar quatro possíveis transições de estado. A transição “Waiting on an event” ocorre quando o sistema operacional descobre que um processo não pode prosseguir. |
|
Essa descoberta pode ser feita explicitamente pelo processo com uma chamada de sistema (syscall) específica que avisa ao SO sobre a sua condição ou de forma implícita através do acesso a um recurso que não esteja disponível naquele instante.
As transições “preempted” e “dispatched” são causadas pelo escalonador de processos – uma parte/módulo do SO - sem que o processo saiba disso. A transição “preempted” ocorre quando o escalonador decide que o processo em execução já teve tempo suficiente de CPU e é o momento de deixar outro processo ocupar o tempo da CPU. A transição “dispatched” ocorre quando todos os outros processos já compartilharam a CPU, de uma maneira justa, e é hora de o primeiro processo obter novamente a CPU.