En utilisant un ordinateur, même ayant un seul processeur, nous remarquons qu’on
peut lancer plusieurs programmes en même temps. Or, nous savon qu’un seul
processeur ne peut exécuter qu’un seul programme à la fois. Cette notion de
« multitâches » est obtenue grâce au système d’exploitation.
Pour ce faire, le système d’exploitation utilise une technique appelée ordonnancement
des processus, qui consiste à gérer l’allocation des différents processus au processeur
Il existe plusieurs algorithmes d’ordonnancement des processus, tel que :
- FIFO (First In First Out) : Premier arrivé sera le premier exécuté
- LIFO (Last In First Out) : Dernier arrivé sera le premier exécuté
- SJF (Shortest Job First) : Le processus qui a une durée d’exécution minimale
sera le premier à être exécuté.
On se propose d’élaborer un nouvel ordonnancement basé sur les deux méthodes
FIFO et SJF, en appliquant la démarche ci-dessous :
1 – Remplir un fichier d’enregistrements intitulé « [Link] » par n
processus prêts à être exécutés (3≤n≤30), sachant qu’un processus est
caractérisé par :
Code, qui est une chaine de caractères formée par la lettre "P" suivi d’un
nombre qui commence de 1 et s’incrémente automatiquement de 1 pour
chaque nouveau processus (P1, P2, P3, …)
Une durée d’exécution exprimée en milliseconde
NB : L’ordre de remplissage des processus dans le fichier »[Link] »
représente l’ordre d’ordonnancement FIFO.
2 – A partir du fichier « [Link] », appliquer l’algorithme
d’ordonnancement SJF pour classer les processus dans un nouveau fichier
intitulé « [Link] »
3 – A partir des fichiers « [Link] » et « [Link] », générer un
nouveau fichier texte intitulé « [Link] » contenant les codes des
processus chacun sur une ligne, et ce de la manière suivante :
A – Commencer par place chaque processus ayant le même rang dans les
deux fichiers « [Link] » et « [Link] »
B – Ensuite placer le reste des processus selon leur ordre d’apparition
dans le fichier « [Link] »
Exemple :
[Link] [Link]
[Link]
Code Durée Code Durée
P1 3 P2 1 P3
P2 1 P5 1 P6
P3 2 P3 2 P2
P4 3 P1 3 P5
P5 1 P4 3 P1
P6 5 P6 5 P4
Travail demandé : Implémenter en Python le programme principal ainsi que les
différents modules envisagés.