Aperçu du sujet
EXERCICE 1 (6 points) Cet exercice porte sur la programmation Python, la programmation orientée objet, les structures de données (file), l’ordonnancement et l’interblocage. On s’intéresse aux processus et à leur ordonnancement au sein d’un système d’exploitation. On considère ici qu’on utilise un monoprocesseur. 1. Citer les trois états dans lesquels
EXERCICE 1 (6 points) Cet exercice porte sur la programmation Python, la programmation orientée objet, les structures de données (file), l’ordonnancement et l’interblocage. On s’intéresse aux processus et à leur ordonnancement au sein d’un système d’exploitation. On considère ici qu’on utilise un monoprocesseur. 1. Citer les trois états dans lesquels un processus peut se trouver. On veut simuler cet ordonnancement avec des objets. Pour ce faire, on dispose déjà de la classe dont voici la documentation : Processus Classe Processus: p = Processus(nom: str, duree: int) Crée un processus de nom <nom> et de durée <duree> (exprimée en cycles d'ordonnancement) p.execute_un_cycle() Exécute le processus donné pendant un cycle. p.est_fini() Renvoie True si le processus est terminé, False sinon. Pour simplifier, on ne s’intéresse pas aux ressources qu’un processus pourrait acquérir ou libérer. 2. Citer les deux seuls états possibles pour un processus dans ce contexte. Pour mettre en place l’ordonnancement, on décide d’utiliser une file, instance de la classe ci-dessous. File Classe File 1 class File: 2 def __init__(self): 3 """ Crée une file vide """ 4 self.contenu = [] 5 6 def enfile(self, element): 7 """ Enfile element dans la file """ 8 9 10 def defile(self): 11 """ Renvoie le premier élément de la file et l'enlève de la file """ 12 return self.contenu.pop(0) 13 14 def est_vide(self): 24-NSIJ1AN1 Page : 2 / 13 15 """ Renvoie True si la file est vide, False sinon """ 16 return self.contenu == [] Lors de la phase de tests, on se rend compte que le code suivant produit une erreur : 1 f = File() 2 print(f.defile()) 3. Rectifier sur votre copie le code de la classe pour que la function File defile renvoie lorsque la file est vide. None On se propose d’ordonnancer les processus avec une méthode du type tourniquet telle qu’à chaque cycle : • si un nouveau processus est créé, il est mis dans la file d’attente ; • ensuite, on défile un processus de la file d’attente et on l’exécute pendant un cycle ; • si le processus exécuté n’est pas terminé, on le replace dans la file. Par exemple, avec les processus suivants Liste des processus processus cycle de création durée en cycles A 2 3 B 1 4 C 4 3 D 0 5 On obtient le chronogramme ci-dessous : Figure 1. Chronogramme pour les processus A, B, C et D Pour décrire