Vous êtes sur la page 1sur 3

ALGORITHME ET PROGRAMMATION JAVA

Travaux Pratique : Ordonnancement des processus : Algorithme SJF

On souhaite mettre sur pied une mini application java permettant de simuler le rôle de
l’ordonnanceur de notre système d’exploitation.

Nous savons que la plupart des SE sont multitâches et qu’un processus est un ensemble instruction à
exécuter par le processeur. Dans l’optique d’optimiser le travail du processeur des algorithme
d’ordonnancement ont été mis sur pied pour faciliter son travail : FIFO, SJF, SRT, RR, FCFS. Nous
avons déjà étudié ces algorithmes au cours de Système d’exploitation

Processus Traitement
 Nom : String  tab :Processus[]
 Date : double  temps : double
 Durée :double
 Trot : double
 TAtt :double

1) Créer un projet ordonnancement, puis la classe processus

2) Définissez les méthodes de la forme canonique


3) Créer la classe Traitement

4) Dans la classe traitement définissez une méthode remplir processus qui permettra
d’initialiser nos processus à ordonnancer
5) Dans la classe traitement définissez la méthode tri_Fifo qui permet trier un tableau de
processus par date d’arriver croissante

6) Créer la méthode tri_duree qui permet de trier un tableau de processus par durée
d’exécution croissante
7) Les processus n’arrivent pas dans la salle d’attente au même moments. Donc un processus
ne saurait s’exécuter à un instant t quelque même s’il remplit tous les conditions nécessaires
quel que soit l’algorithme que s’il est arrivé à un instant t’<=t.

Algorithme et Programmation java JORDAN YIYUEME software Engineer


ALGORITHME ET PROGRAMMATION JAVA

Ecrire la méthode getListAttente qui permet de rechercher les processus présents dans la file
d’attente à un instant T quelconque

8) Pour son exécution un processus occupe la ressource processeur pendant sa durée


d’exécution lorsqu’il est à l’état élu
Ecrive la méthode SJF qui permet d’exécuter un processus suivant l’algorithme SJF

NB : avec l’algorithme SJF c’est le processus qui possède le plus court temps dans la file
d’attente qui s’exécute. TabR est votre tableau de résultat dans lequel vous consignerez vos
processus déjà ordonnancer. IndR est l’indice de l’élément courant dans le tableau de
résultat
9) On souhaite reconstituer la liste des processus restant à exécuter. Ecrivez une méthode
processusRestant qui retournera la liste des processus restant à exécuter

10) Créer une classe Test qui possèdera la méthode main suivante
Vous devez compléter la méthode

public static void main(String[] agrs){


Traitement traitement=new Traitement();
// initialisation du tableau de processus
System.out.println("saisir le nombre de processus");
int n=scanner.nextInt();
traitement.remplir(n);
// par suite on va trier le tabelau traitement.getTab() par date d'arrive croissante
Processus[] tab= traitement.tri_Fifo(traitement.getTab);
// par suite il faut initialiser le temps à la date d'arriver du premier processus
int temps=tab[0].getDate();
Processus[] tabR=new Processus[n]();
int indR=0;

while(n>=1){

Algorithme et Programmation java JORDAN YIYUEME software Engineer


ALGORITHME ET PROGRAMMATION JAVA

// il faut construire un tableau constituer uniquement des processus present à


temps=tab[0].getDuree();
Processus[] tab1=traitement.getListAttente(tab,temps);
//il faut trier notre tableau par duree d'execution croissante
Processus[] tab2=traitement.trie_duree(tab1);
/*comme notre tableau de processus esf trier par duree d'execution croissante à
date=temps
je suis sur que le processus tab2[0] est celui qui possede la duree d'execution la plus
courte à la date=temps.*/
traitement.sjf(tab2,tabR,indR,temps);
n--; // apres voir executer un processus le nombre de processus a executer diminue.
// j'elemine de ma liste de processus celui que je viens d'executer le nouveau
tableau n'aura pas la meme taille que le precedent
Processus[] pRestant =processusRestant(n,tabR);
indR++;
}
}

Algorithme et Programmation java JORDAN YIYUEME software Engineer

Vous aimerez peut-être aussi