Bonjour tout le monde, je suis en train de programmer un système d'ordonnancement de processus et je butte sur l'ordonnancement SJF preemptive, c'est à dire que le programme lance le premier processus de la liste, après, il regarde si un processus qui pourrait se terminer avant la fin de celui qui est en cours n'est pas arrivé, si oui, il suspend le process en cours et commence le plus court, après une unité de temps, le programme recommence cette opération, et ce, jusqu'à ce qu'aucun processus en reste à traiter.
J'ai reglé le problème du SJF non preemptive, qui est le même principe, en dehors du fait qu'il ne regarde pas régulièrement si un processus plus court est arrivé, il se contente de finir celui qui est en cours avant de traiter le suivant.
Please, aidez moi pour l'algorithme, je galère un peu là...
P.S. : je sais pas si j'ai été très clair dans les explications, n'hésitez pas à me contacter pour plus d'infos...
A voir également:
Algorithme d'ordonnancement sjf en c
Algorithme d'ordonnancement de processus en c - Meilleures réponses
Est tu sur que l'ordannacement préemptive n'est pas une vue de l'esprit
car sinon il faudrait connaitre la durée d'un processus et en théorie
c'est impossible
en fait, ce programme simule juste le fonctionnement de la file d'attente, au début du programme, on rentre les caractéristiques des processus qu'on veut "étudier".
Parmi les caractéristiques rentrées, il y a le temps d'arrivée dans la queue, le temps estimé de run et la priorité du processus.
en gros, au lancement du programme, j'ai un tableau process[10][8]. Les cases [i][j] avec j de 0 a 3 contiennent dans l'ordre : [0] numéro du processus, [1] temps d'arrivée, [2] temps de run estimé et [3] priorité.
les autres cases sont complétées après par les différentes informations que me ramène les ordonnancements (début, fin, attente et un ratio attente/run).
ben l'algo en lui même il est pas très compliqué, c'est une gestion de tableau, les processus arrivent au fur et à mesure dans un tableau et tu les traites dans l'ordre où ils sont arrivés et cela en fonction du temps d'execution de chacun...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Oui ceci est clair(pas de tableau mais des files de messages).Le
problèmes est que le langage C m'est quelque peut méconnu alors je
n'arrive pas a voir toutes fonctions à utiliser.
faudrait que j'essaye de remettre la main sur mon code pour voir comment j'ai fait ça, mais il me semble que ça n'utilise pas beaucoup de fonctions complexes, c'est juste de la gestion de temps de thread. Cependant, ça fait un moment que je l'ai programmé et je sais pas trop où j'ai pu mettre mes sources...