devoir de syst emes d’exploitation 1 objectif g en eral 2 … · 2012. 1. 8. · le but de ce...
TRANSCRIPT
Institut Galilee Systemes d’exploitationAnnee 2010-2011 ISPG INFO 1
Devoir de systemes d’exploitation
Le projet est a realiser en binomes. Le code (ecrit en C) doit utiliser les fonctions du C stan-dard et etre compilable avec gcc. Le projet doit adopter une approche de compilation separee :un fichier makefile doit etre fourni avec le code pour simplifier la compilation. Un rapport doitetre rendu avec le projet. Il sera note sur l’effort de redaction et sur la presentation, autantque sur le contenu (qui ne contiendra pas de code C). Le rapport devra etre fourni au formatPDF et le code sous forme d’une archive (format de compression zip ou tar.gz uniquement).Enfin, une presentation sur machine de 15 minutes sera demandee.
1 Objectif general
Le but de ce projet est de realiser un simulateur d’algorithmes d’ordonnancement. Apartir d’une configuration de processus et du choix d’un algorithme d’ordonnancement, leprogramme doit afficher le diagramme d’execution tel qu’il a ete vu dans les cours et lestravaux diriges.
2 Description du projet
2.1 Le programme principal
Le programme principal doit prendre en parametre :– Un nom de fichier qui contient la description des proprietes des processus (premier
parametre).– L’une des options suivantes permettant de selectionner l’algorithme d’ordonnancement :– -FIFO : First In First Out– -SJF : Shortest Job First– -SRT : Shortest Remaining Time– -RR quantum : Round Robin avec quantum la valeur du quantum de temps (par defaut
a 1)– -FP nbFiles quantum : files de priorites avec nbFiles le nombre de files de priorite
(par defaut a 5) et quantum la valeur du quantum de temps (par defaut a 1)– -p nb : indique le nombre de processeurs ou coeurs de la machine ; si l’option n’est pas
specifiee, on considere que la machine possede uniquement 1 processeur.– -out nomFichier : indique si la sortie doit etre dans un fichier texte ou non ; si l’option
n’est pas specifiee, le programme affiche le resultat a l’ecran.Votre programme devra obligatoirement supporter toutes ces options (en respectant lasyntaxe). Par contre, si vous n’avez pas le temps de coder tous les algorithmes, un messaged’erreur pourra s’afficher afin d’indiquer que l’option n’est pas implementee. Bien entendu,plus il y aura d’options implementees (et correctement), plus la note finale sera elevee.
2.2 Execution du programme principal
Voici, par un exemple, un exemple de commande pour executer le simulateur a partir d’unfichier de description des processus config.txt :
1
./ordo config.txt -RR 1Nous supposons ici que le contenu du fichier config.txt est le suivant :
0 3 10 4 21 4 34 4 2
La sortie ecran pourrait etre la suivante a partir du fichier precedent :
4 --------*--*-**3 ----*--*--*-*--2 -*-*--*--*-----1 *-*--*---------
000000000011111012345678901234
La sortie devra etre obligatoirement en mode texte (soit a l’ecran, dans le terminal, soitdans un fichier texte) : aucune interface graphique n’est demandee.
2.3 Les fichiers d’entree
Le fichier contenant la description des proprietes des processus doit etre au format texteou au format binaire. Dans le premier cas (fichier texte), pour chaque processus est decrit sadate de soumission, son temps d’execution et sa priorite. Chaque valeur doit etre separee parun espace ou une tabulation. Chaque ligne du fichier correspond a un seul processus. Dans ledeuxieme cas (fichier binaire), les valeurs des processus sont decrites dans le meme ordre, lesprocessus etant decrit les uns apres les autres. a noter que la gestion des fichiers binaires doitetre realisee en bas niveau.
3 Informations generales
3.1 Le code
Il est tres important de bien structurer votre code : la note globale en tient compte.Une bonne structuration commence par une separation des differents outils qui sont utilises.Par exemple, pour la gestion des processus, il est necessaire d’utiliser une liste chaınee (lenombre de processus dans le 2 fichier etant inconnu). Dans ce cas, il faut regrouper toutes lesmethodes associees a la gestion de la liste chaınee dans un fichier separe (fichier source .c etfichier d’entete .h associe). De meme, les algorithmes d’ordonnancement implementes doiventfigurer dans d’autres fichiers. La programmation, realisee en C, doit etre propre (indentationdu code) et commentee. Pour compiler facilement votre code, vous devez imperativementfournir un makefile avec les sources. Ce dernier doit permettre de compiler l’ensemble desfichiers sources et de creer le ou les executables. Pour un exemple de makefile, reportez-vousa l’annexe.
2
3.2 Le rapport
Le rapport final a pour but de presenter tout le travail realise lors de ce projet. Il presentele fonctionnement general de l’application ainsi que sa structure (organisation du code). Ildecrit l’ensemble des structures utilisees sous la forme de schemas. Il ne contiendra aucuncode C. Cependant, il est possible de presenter les algorithmes utilises sous la forme presenteeen annexe. Enfin, le rapport doit etre structure et un effort est demande sur la grammaire etl’orthographe.
3.3 La soutenance
La presentation de 15 minutes permet de presenter brievement sur machine le fonction-nement du programme. Il est donc necessaire d’envoyer le code a l’avance par e-mail poureviter de perdre du temps a le recuperer a partir d’une clef USB ou depuis Internet. Le codesera compile au prealable par nos soins sur une machine d’une salle de TP et la presentationdoit donc obligatoirement etre realisee sur cet ordinateur (pas d’ordinateur personnel). Il estnecessaire que le binome prepare a l’avance une demonstration (penser a joindre au projetdes fichiers de configuration de processus) dans le but de mettre en avant les fonctionnalitesdu programme.
3.4 Planning
Voici le planning previsionnel concernant le pro jet :– 06/02/2011 : code + rapport ;– 8/02/2010 : presentation sur machine (salles et horaires precises ulterieurement).
Remarque 1 : La note tiendra compte de la proprete du code (commentaires, indentation,choix du nom des variables), du choix des structures et des algorithmes implementes. Cesdeux derniers points devront etre mis en valeur dans le rapport.
Remarque 2 : Le code de chaque binome doit etre unique.
3
Annexes
Makefile
Voici un makefile simple pour compiler deux programmes executables differents :
Annexes
Makefile
Voici un makefile simple pour compiler deux programmes exécutables di!érents :!tout : prog1 prog2
prog1 : prog1 . ogcc !o prog1 prog1 . o
prog1 . o : prog1 . c prog1 . hgcc !c prog1 . c !W !Wall
prog2 : prog2 . ogcc !o prog2 prog2 . o
prog2 . o : prog2 . c prog2 . hgcc !c prog1 . c !W !Wall"# $
Dans ce cas, lorsque la commande make est exécutée, deux exécutables sont crées : prog1 et prog2.
Présentation des structures utilisées
Il est conseillé de présenter l’ensemble des structures utilisées dans votre projet (dans le rapportet éventuellement durant la présentation orale). Pour illustrer vos explications, utilisez des schémas.Voici un exemple de représentation d’une liste chaînée d’entiers :
3Valeur
Suivante
5
Cellule
Liste
Valeur
Suivante
Cellule
Valeur
Suivante
Cellule
8
Algorithmes
Les algorithmes de votre programme peuvent être présentés sous la forme suivante :!Fonction PGCD(a , b : e n t i e r s p o s i t i f s ) : e n t i e rDébut
TantQue a "= b Fai reS i ( a > b) a l o r s
a # a ! bSinon
b # b ! aFinTantQueretourner a
Fin"# $
4
Dans ce cas, lorsque la commande make est executee, deux executables sont crees : prog1et prog2.
Presentation des structures utilisees
Il est conseille de presenter l’ensemble des structures utilisees dans votre pro jet (dansle rapport et eventuellement durant la presentation orale). Pour illustrer vos explications,utilisez des schemas. Voici un exemple de representation d’une liste chaınee d’entiers :
Annexes
Makefile
Voici un makefile simple pour compiler deux programmes exécutables di!érents :!tout : prog1 prog2
prog1 : prog1 . ogcc !o prog1 prog1 . o
prog1 . o : prog1 . c prog1 . hgcc !c prog1 . c !W !Wall
prog2 : prog2 . ogcc !o prog2 prog2 . o
prog2 . o : prog2 . c prog2 . hgcc !c prog1 . c !W !Wall"# $
Dans ce cas, lorsque la commande make est exécutée, deux exécutables sont crées : prog1 et prog2.
Présentation des structures utilisées
Il est conseillé de présenter l’ensemble des structures utilisées dans votre projet (dans le rapportet éventuellement durant la présentation orale). Pour illustrer vos explications, utilisez des schémas.Voici un exemple de représentation d’une liste chaînée d’entiers :
3Valeur
Suivante
5
Cellule
Liste
Valeur
Suivante
Cellule
Valeur
Suivante
Cellule
8
Algorithmes
Les algorithmes de votre programme peuvent être présentés sous la forme suivante :!Fonction PGCD(a , b : e n t i e r s p o s i t i f s ) : e n t i e rDébut
TantQue a "= b Fai reS i ( a > b) a l o r s
a # a ! bSinon
b # b ! aFinTantQueretourner a
Fin"# $
4
Algorithmes
Les algorithmes de votre programme peuvent etre presentes sous la forme suivante :
Annexes
Makefile
Voici un makefile simple pour compiler deux programmes exécutables di!érents :!tout : prog1 prog2
prog1 : prog1 . ogcc !o prog1 prog1 . o
prog1 . o : prog1 . c prog1 . hgcc !c prog1 . c !W !Wall
prog2 : prog2 . ogcc !o prog2 prog2 . o
prog2 . o : prog2 . c prog2 . hgcc !c prog1 . c !W !Wall"# $
Dans ce cas, lorsque la commande make est exécutée, deux exécutables sont crées : prog1 et prog2.
Présentation des structures utilisées
Il est conseillé de présenter l’ensemble des structures utilisées dans votre projet (dans le rapportet éventuellement durant la présentation orale). Pour illustrer vos explications, utilisez des schémas.Voici un exemple de représentation d’une liste chaînée d’entiers :
3Valeur
Suivante
5
Cellule
Liste
Valeur
Suivante
Cellule
Valeur
Suivante
Cellule
8
Algorithmes
Les algorithmes de votre programme peuvent être présentés sous la forme suivante :!Fonction PGCD(a , b : e n t i e r s p o s i t i f s ) : e n t i e rDébut
TantQue a "= b Fai reS i ( a > b) a l o r s
a # a ! bSinon
b # b ! aFinTantQueretourner a
Fin"# $
4
4