Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sde2:teme:tema_fr_3_rust_2023 [2023/04/23 02:23]
cristiana.andrei
sde2:teme:tema_fr_3_rust_2023 [2023/04/23 12:01] (current)
cristiana.andrei [Algorithmes de planification]
Line 10: Line 10:
  
 <note important>​ <note important>​
-Date limite: ** Le 25 avril23h55 **  \\+Date limite: ** Le 15 mai23h59 **  \\
 Note: ** 2 points ** de la note \\ Note: ** 2 points ** de la note \\
-Téléchargement du devoir: [[https://​classroom.github.com/​a/​m5-_C3XTGithub]] \\+Lien: [[https://​classroom.github.com/​a/​pT49MSxZDevoir 3]] \\ 
 +Télécharger en retard: **1 point / jour** (maximum 4 jours)
 </​note>​ </​note>​
  
Line 55: Line 56:
   * ''​list''​ - retourner l'​état des processus   * ''​list''​ - retourner l'​état des processus
 Pour cela, vous pouvez créer des fichiers séparés pour chaque planificateur et exportez-le dans ''​scheduler/​src/​schedulers/​mod.rs''​. Pour cela, vous pouvez créer des fichiers séparés pour chaque planificateur et exportez-le dans ''​scheduler/​src/​schedulers/​mod.rs''​.
 +
 +<note important>​
 +Vous devez implémenter le trait ''​Scheduler''​ pour les **3** algorithmes de planification et **rien d'​autre**. Les autres informations présentées ci-dessous sont des détails de mise en œuvre du modèle existant, afin que vous compreniez mieux le fonctionnement du planificateur
 +</​note>​
 +
 +==== Temps d'​exécution ====
 +Dans un système réel, pour le contrôle d'​exécution,​ le comptage du temps d'​exécution d'un processus est effectué à chaque interruption d'​horloge.
 +
 +Pour faciliter la mise en œuvre, le modèle de thème simulera un système réel comme celui-ci :
 +  * Le système simulé utilisera un temps virtuel (logique) indépendant du temps réel pour compter le temps de fonctionnement sur le processeur.
 +  * Vous considérerez qu'une instruction dure une seule période d'​horloge (unité de temps logique).
 +  * Chacune des fonctions présentées ci-dessus représente une seule instruction exécutable par un processus à un instant donné.
  
 ==== Crate scheduler ==== ==== Crate scheduler ====
Line 95: Line 108:
   * **NoRunningProcess** - L'​appel système a été émis alors qu'​aucun processus n'​était planifié.   * **NoRunningProcess** - L'​appel système a été émis alors qu'​aucun processus n'​était planifié.
  
 +==== Processor library ====
 +Cette bibliothèque est utilisée pour simuler le planificateur à partir de la crate **scheduler**.
 +
 +=== ProcessInfo struct ===
 +Contient les informations suivantes sur un processus:
 +  * Pid
 +  * State
 +  * Timings - temps total, temps d'​appel système, running time
 +
 +=== Simulateur de processeur ===
 +Le simulateur utilise les fonctions suivantes:
 +  * **fork** - Envoie un appel système ''​Syscall::​Fork''​
 +  * **exec** - Exécuter une unité de temps.
 +  * **wait** - Envoie un appel système ''​Syscall::​Wait''​
 +  * **signal** - Envoie un appel système ''​Syscall::​Signal''​
 +  * **sleep** - Envoie un appel système ''​Syscall::​Sleep''​
 +  * **exit** - Arrête le processus; le processus informe le système d'​exploitation qu'il a terminé son exécution
 +<note important>​
 +Le premier appel de fonction dans le planificateur doit être un **fork**, afin de créer le premier processus, sinon nous aurons une erreur.
 +</​note>​
 ===== Algorithmes de planification ===== ===== Algorithmes de planification =====
 <​note>​ <​note>​
Line 111: Line 144:
  
 === Round Robin avec des priorités === === Round Robin avec des priorités ===
-Cet algorithme est identique au précédent,​ avec la modification suivante: ​tous les processus ​commencent par la priorité ​5.+Cet algorithme est identique au précédent,​ avec la modification suivante: ​la priorité initiale du processus ​est celle qu'il reçoit à la **fork**. Cette priorité ​**ne peut jamais** être surmontée.
 Chaque fois qu'un processus dépasse son temps, il est pénalisé de 1. À chaque fois le processus se termine avant de dépasser son quantum, il est récompensé par 1. Chaque fois qu'un processus dépasse son temps, il est pénalisé de 1. À chaque fois le processus se termine avant de dépasser son quantum, il est récompensé par 1.
  
Line 128: Line 161:
 Apres chaque exécution d'un processus on va ajouter le numéro d'​unités de traitement exécutées par le processus a ''​virtualruntime''​ (la valeur est en fait quantum_temps - process.quantum). Apres chaque exécution d'un processus on va ajouter le numéro d'​unités de traitement exécutées par le processus a ''​virtualruntime''​ (la valeur est en fait quantum_temps - process.quantum).
 </​note>​ </​note>​
 +
 +===== Documents d'aide =====
 +  * [[:​sde2:​cursuri:​05]]
  
sde2/teme/tema_fr_3_rust_2023.1682205839.txt.gz · Last modified: 2023/04/23 02:23 by cristiana.andrei
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0