Dans la planification non préemptive du travail le plus court en premier (SJF), le processeur est alloué au processus qui a le temps de rafale de processeur le plus court parmi les processus de la file d'attente prête. Une fois qu'un processus se voit attribuer le CPU, il ne peut pas être préempté par un autre processus, même si ce dernier a un temps de rafale CPU plus court. Cela signifie que le processus en cours d'exécution continuera à s'exécuter jusqu'à ce qu'il termine son exécution ou se bloque pour une raison quelconque.
Voici un exemple pour illustrer la planification SJF non préemptive :
Considérez l'ensemble de processus suivant avec leurs temps de rafale de processeur :
Processus 1 :Temps de rafale =5
Processus 2 :Temps de rafale =3
Processus 3 :Temps de rafale =8
Initialement, les trois processus sont dans la file d'attente prête. Le CPU est alloué au processus 2 car il a le temps de rafale CPU le plus court. Le processus 2 commence à s'exécuter et s'exécute pendant 3 unités de temps. Au temps t =3, le processus 2 termine son exécution et se termine.
Désormais, la file d'attente prête contient le processus 1 et le processus 3. Le processus 1 a un temps de rafale de processeur plus court que le processus 3, le processeur lui est donc alloué. Le processus 1 s'exécute pendant 5 unités de temps et termine son exécution au temps t =8.
Enfin, seul le processus 3 reste dans la file d'attente prête. Le processeur lui est alloué et fonctionne pendant 8 unités de temps. Au temps t =16, le processus 3 termine son exécution et le CPU devient inactif.
En résumé, l'ordre dans lequel les processus sont exécutés dans cet exemple est :Processus 2, Processus 1 et Processus 3. Le temps total nécessaire pour terminer tous les processus est de 16 unités de temps.
|