Explication d'un script C - C - Programmation
Marsh Posté le 08-03-2017 à 10:22:23
Bah ya rien de compliqué, c'est juste moche et avec pas mal de trous. Il a un array Tproc (global) de "structures de processus" (avec une durée d'exécution et un état), lignes 7~15 il traverse le tableau pour essayer de trouver le proc vivant (flag == RUN) avec le plus bas taux d'exécution et stocke son indice dans i (en partant du principe qu'il y a au moins un proc ligne 4 sinon il va mourir), puis il renvoie ça aprè avoir imprimé l'indice sur stdout.
Marsh Posté le 08-03-2017 à 13:42:35
masklinn a écrit : Bah ya rien de compliqué, c'est juste moche et avec pas mal de trous. Il a un array Tproc (global) de "structures de processus" (avec une durée d'exécution et un état), lignes 7~15 il traverse le tableau pour essayer de trouver le proc vivant (flag == RUN) avec le plus bas taux d'exécution et stocke son indice dans i (en partant du principe qu'il y a au moins un proc ligne 4 sinon il va mourir), puis il renvoie ça aprè avoir imprimé l'indice sur stdout. |
Merci Beaucoup pou votre aide et cette explication que je trouvé très claire.
J'ai un autre code et je veux savoir ce qu'il fait si ça vous dérange pas.
Code :
|
Marsh Posté le 08-03-2017 à 17:08:41
Il choisit aléatoirement un processus qui est en RUN.
Et c'est de la merde, surtout si peu de processus sont en RUN.
Marsh Posté le 08-03-2017 à 17:22:48
C'est pire que ça :
Le modulo devrait être fait sur MAXPROC et pas sur MAXPROC+1 (ou alors, MAXPROC représente le nombre maximum de processus -1, et le tableau est déclaré struct proc TPROC[MAXPROC+1], mais je n'y crois guère )
Si aucun processus n'est en RUN, alors il part en boucle infinie et bouffe de la CPU autant qu'il peut !
De plus, comme le srand est fait dans la fonction, on risque d'avoir à chaque fois le même processus choisi, si les états n'évouent pas : le getpid renvoyant toujours la même chose, on risque très fort d'avoir toujours la même séquence de nombre "aléatoires" qui va être renvoyée, donc, au final, toujours le même processus qui sera choisi
Vraiment, ce code n'est pas terrible !
Marsh Posté le 09-03-2017 à 08:04:16
Farian a écrit : C'est pire que ça : |
Merci pour vos réponse,
Ce que je ne comprend pas, c'est comment ce code ci-dessous permet de sélectionné d'une manière aléatoire un processus, avec un modulo !!
Code :
|
Marsh Posté le 09-03-2017 à 08:16:42
Random() choisit un entier au "hasard".
Modulo est le reste d'une division entière donc n'importe quel entier modulo X donne un entier compris dans [0..X-1]
Dans la ligne que tu as postée je ne comprends pas l'utilité du cast vers int.
Marsh Posté le 09-03-2017 à 08:50:58
h3bus a écrit : Random() choisit un entier au "hasard". |
Merci, si j’enlève le module, est ce qu'il sélectionne n'importe quelle processus de MAXPROC+1 :
Code :
|
Marsh Posté le 09-03-2017 à 10:33:12
raghebgmira a écrit : Merci, si j’enlève le module, est ce qu'il sélectionne n'importe quelle processus de MAXPROC+1 :
|
non, si t'enlèves le modulo ça veut plus rien dire.
Faudrait ptet songer à apprendre les bases là, ça devient problématique
Marsh Posté le 08-03-2017 à 08:31:16
Bonjour,
Est ce qu'il y'a quelqu'un qui peu m'aider a comprendre ce script de sélection des processus.
J'ai compris que ce code permet de sélection le processus qui a le moins temps d'exécution, mais je n'ai pas compris comment fonctionne.
Merci pour votre aide