Académique Documents
Professionnel Documents
Culture Documents
RAPPORT
sur le sujet
OS
rédigé par
Avril 2020
Table des matières
1 Introduction 4
1.1 Contexte du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Objectif du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Organisation du rapport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Spécification du projet 5
2.1 Pilotes et périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Attribution des identificatifiants . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Interface de Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Noyau : Fonctionnement et Rôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1 Description Générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2 Méthodes Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 Langage Interprété . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.4 Évolutivité du Noyeau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Gestion des Processus : Simulation de l’Exécution Concurrente . . . . . . . . . . . . . 6
2.3.1 Description Générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.2 Description Générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Disques durs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Manuel utilisateur 16
5 Déroulement du projet 17
5.1 Réalisation du projet par étapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 Répartition des tâches entre membres de l’équipe . . . . . . . . . . . . . . . . . . . . . 17
6 Conclusion et perspectives 18
6.1 Résumé du travail réalisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2 Améliorations possibles du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1
Table des figures
1 IHM Graphique - Mode de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 IHM Graphique - Mode Task Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 IHM Graphique - Mode Text Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2
Remerciements
Les auteurs du projet voudraient remercier vivement...
3
1 Introduction
Intéréssons nous à notre projet de génie logiciel, qui aura pour but de simuler le comportement
d’un mini-système d’exploitation, de ses périphériques et de ses applications. Plus précisément, chaque
périphérique sera associé à un pilote défini par un numéro unique. Ces pilotes permettront au noyau
d’interagir avec les périphériques en utilisant des primitives. Par exemple, la commande ’ioctl’ posi-
tionnera l’emplacement du disque où lire ou écrire. Nous émulerons le comportement de divers périphé-
riques, tels que le clavier, la souris, le microphone, l’écran, l’imprimante, le haut-parleur et le disque
dur. Certains n’autoriseront uniquement la lecture (le système pourra lire les signaux envoyés par ces
périphériques), tandis que d’autres uniquement l’écriture (le système ne pourra qu’envoyer des signaux
vers ces périphériques). Le disque dur, quant à lui, permettra à la fois la lecture et l’écriture. Notre
système prendra en charge la gestion concurrente des processus. Lors du lancement d’une application,
un processus sera créé, comportant les instructions données par le langage. Ces processus seront exé-
cutés de manière concurrentielle par le système, qui gérera plusieurs processus simultanés. Le système
donnera l’illusion de traiter plusieurs processus “en même temps” en utilisant l’approche “round-robin”
pour répartir équitablement le temps d’exécution entre les processus.
Attention ! ! Dans cette démonstration, il y a des éléments qui doivent se trouver dans
votre rapport final du projet Génie Logiciel, ce sont surtout les sections et les sous-sections
(sous-sous-sections parfois) et les éléments au début : page de garde, table des matières
etc., et la bibliographies à la fin.
4
2 Spécification du projet
Nous avons présenté l’objectif du projet dans la section 1. Dans cette section, nous présentons la
spécification de notre logiciel réalisé. Ceci correspond principalement au document de spécification du
projet (cahier des charges).
5
— exit : Termine l’exécution d’un processus.
— wait : Attend la fin d’un processus.
— kill : Envoie un signal à un processus en suivant les conventions classiques.
4. Gestion de la Mémoire :
— brk, sbrk : Ajuste la taille du segment de données d’un processus.
— nmap, munmap : Gère la mémoire mappée.
5. Interprocessus :
— pipe : Crée un canal de communication entre deux processus.
— socket : Crée un point de communication pour les processus réseau (à ajuster en fonction
des besoins et de l’avancement du projet).
6. Synchronisation :
— semaphore : Permet la synchronisation entre processus.
— mutex : Utilisé pour la synchronisation entre threads (à adapter en fonction des besoins).
7. Contrôle des Périphériques :
— ioctl : Contrôle divers aspects des périphériques.
8. Gestion des Fichiers et des Répertoires :
— mkdir, rmdir : Crée et supprime des répertoires respectivement.
— unlink : Supprime un fichier.
6
— Implémentation d’un mécanisme de changement de contexte pour une transition fluide d’un
programme à un autre.
— Sauvegarde de l’état du programme en pause et restauration de l’état du programme suivant
lors du changement de contexte..
— Impression de Simultanéité :
— Malgré l’exécution séquentielle réelle, la simulation doit créer une impression de simultanéité
grâce à la rapidité d’exécution du processeur.
— Configurabilité du Quantum de Temps :
— Le quantum de temps alloué à chaque programme doit être configurable pour s’adapter aux
exigences spécifiques du système d’exploitation. Cette configuration aura une valeur par
défaut et pourra être modifiée grâce à une commande, ce qui permettra entre autres de
vérifier le bon fonctionnement du module Round Robin.
7
3 Conception et réalisation du projet
Nous allons maintenant nous intéresser à l’aspect conception de notre projet
8
8. Classe Ecran (Classe concrète, et fille de Classe Peripherique) :
— Classe Abstraite.
— Attributs.
— String idPériphérique : Identifiant unique.
— Image Image : Représentation visuelle de l’écran.
— Méthodes.
— write() : Écriture des données vers le périphérique.
9. Classe Pilote :
— Attributs :
— String idPériphérique : Identifiant unique.
— Image Image : Représentation visuelle du pilote.
— Méthodes :
— envoyerCommande() : Envoie une commande au périphérique.
— recevoirDonnees() : Réceptionne les données du périphérique.
10. Classe Processus :
— Attributs :
— String ID
— String état
— List<String> Instructions
— LangageInterprete langage
— Méthodes :
— executer()
11. Classe Ordonnanceur :
— Attributs :
— List<Processus> Liste_processus
— int nb_processus
12. Gestionnaire Periphériques :
— Attributs :
— List<Peripherique> peripheriques
— List<Pilote> pilotes
— Méthode :
— ajouterPeripherique()
— lirePeripherique()
13. Classe Pilote :
— Attributs.
— String idPériphérique : Identifiant unique.
— Image Image : Représentation visuelle du pilote.
— Méthodes.
— envoyerCommande() : Envoie une commande au périphérique.
— recevoirDonnees() : Réceptionne les données du périphérique.
14. Classe Processus :
— Attributs.
— String ID : Identifiant du processus.
— String état : État du processus.
— List<String> Instructions : Liste des instructions du processus.
— LangageInterprete langage : Langage interprété par le processus.
— Méthodes.
— executer() : Exécute les instructions du processus.
15. Classe Ordonnanceur :
— Attributs.
— List<Processus> Liste_processus : Liste des processus.
— int nb_processus : Nombre de processus.
9
16. Classe GestionnairePeripheriques :
— Attributs.
— List<Peripherique> peripheriques : Liste des périphériques.
— List<Pilote> pilotes : Liste des pilotes.
— Méthode.
— ajouterPeripherique() : Ajoute un périphérique.
— lirePeripherique() : Lit un périphérique.
17. Classe Application :
— Attributs.
— LangageInterprete langage : Langage interprété par l’application.
— String instructions : Instructions de l’application.
— Méthode.
— executer() : Exécute les instructions de l’application.
3.2.2 TaskMgmt
La partie données :
— TaskMgmt utilisera le Singleton Pattern pour stocker tous les processus en cours d’exécution
et s’assurer qu’il n’y ait qu’une seule instance. De cette manière, on peut gérer les conflits et
éventuels bugs dûs à la nature multi-threading du programme.
La partie traitement :
— Seuls les pilotes et les programmes codés dans le langage interprété du système sont concernés
par cette classe.
— Pour les pilotes, TaskMgmt vérifie s’il y a eu un changement dans le périphérique (ex : une
touche a été utilisée) et envoie l’information au noyau qui réagit en conséquence.
— Pour les processus qui utilisent le langage interprété du système, TaskMgmt s’occupe de frag-
menter et d’envoyer petit à petit les différentes opérations que font chaque processus (Round
Robin).
3.2.3 FileExe
FileExe s’occupera d’interpréter chaque petit bout de code qui a été transmis par TaskMgmt.
Comme son nom l’indique, ce sera une structure de données "file".
— Idées : Il faudra créer un "pipe" pour établir un moyen de communication entre deux pro-
cessus. Si le code en langage interprété lit une fonction CALL, il faut refaire l’ordre d’exécu-
tion/interprétation.
10
3.3 Conception de l’IHM graphique
Pour l’IHM graphique, nous avons voulu nous inspirer de l’invite de commandes (cmd) de notre cher
Windows. Plongeons maintenant dans les différents modes de notre IHM graphique
Ce mode est le mode de base de notre IHM. On remarque la presence du chemin dans lequel l’uti-
lisateur se trouve actuellement. Ce dernier pourra y entrer des commandes, récupérer ses anciennes
commandes et les modifier en utilisant les flèches directionnelles. Il permettera aussi de créer des
périphériques, des processus, et de lancer un éditeur de texte pour coder ces processus.
11
Ce mode est le mode de gestion de notre IHM. Il est constitué de la liste des noms des processus,
de leur identifiants (ID), et potentiellement des valeurs RAM et CPU qui seront générés en fonction
de la complexité des programmes
12
3.4.2 Tests de Performance
— Objectif: Évaluer les performances globales du système, notamment en termes de temps de
réponse, de débit de lecture/écriture sur les périphériques, etc.
— Méthodologie: Effectuer des tests de charge pour mesurer la capacité du système à gérer un
grand nombre de processus simultanés ou à traiter des opérations intensives sur les périphé-
riques.
— Exemples:
— Un test de performance pourrait simuler une charge maximale sur le système en exécutant
un grand nombre de processus concurrents et en mesurant le temps nécessaire pour effectuer
des opérations courantes telles que la lecture/écriture sur les périphériques.
— Un test de performance pourrait évaluer la capacité du système à traiter de grandes quantités
de données en mesurant le débit de lecture/écriture sur un disque dur simulé avec différentes
tailles de fichiers.
— Un test de performance pourrait vérifier la réactivité du système en simulant des scénarios
d’utilisation intensive de l’IHM graphique et en mesurant le temps de réponse des interactions
utilisateur.
13
3.5.1 Journal de sauvegarde
Les informations intéressantes à sauvegarder sous forme de journal dans notre logiciel pourraient
inclure :
— Les événements majeurs du système :
— Le démarrage et l’arrêt du système d’exploitation.
— Les actions effectuées par l’utilisateur :
— Les entrées dans le terminal de commande.
— L’initialisation d’un périphérique.
— La création d’un processus.
— L’utilisation de méthodes par les périphériques.
— La création ou la suppression de fichiers, etc.
— Les erreurs et les avertissements rencontrés pendant l’exécution du système :
— Des erreurs d’accès disque.
— Des échecs de création de processus, etc.
— L’ordonnancement des processus :
— Peut également servir à prouver que l’approche de planification Round Robin fonctionne
comme prévu.
— En examinant les logs, les développeurs peuvent vérifier si les processus sont effectivement
exécutés séquentiellement, avec une répartition équitable du temps CPU entre eux. Cela
permet de valider le bon fonctionnement de l’algorithme de planification et de s’assurer
qu’il respecte les spécifications du système en termes de gestion concurrente des processus.
En adoptant cette approche structurée, nous pourrions créer des journaux systématiques et cohérents,
facilitant ainsi l’analyse, le dépannage et la surveillance du système d’exploitation. De plus, l’utilisation
de formats standardisés garantirait une interprétation uniforme des journaux par les différents outils
et analystes.
14
(a) Configuration Initiale : Affichage des paramètres de configuration du système, tels que
la taille du quantum de temps pour la planification des processus, la capacité de stockage
des disques durs simulés, etc. (forme : numérique)
(b) Liste des Périphériques : Affichage des différents périphériques émulés par le système,
y compris leur numéro d’identification et leur type (entrée, sortie, entrée/sortie). (forme :
numérique)
2. Pendant le Déroulement :
(a) Activité des Processus : Affichage en temps réel d’une liste des processus en cours d’exé-
cution, avec des informations telles que leur identifiant, leur état (en cours, en attente,
terminé), la quantité de temps CPU qu’ils ont consommée et éventuellement d’autres détails
pertinents. Cette liste peut être mise à jour dynamiquement pour refléter les changements
dans l’état des processus. (forme : numérique/textuelle)
(b) Utilisation des Périphériques : Affichage en temps réel de l’utilisation des différents
périphériques du système. Cela pourrait inclure des informations telles que le taux de lec-
ture et d’écriture pour les disques durs, le nombre de touches pressées pour le clavier, le
nombre de pixels affichés pour l’écran, etc. Ces informations peuvent être présentées de
manière tabulaire ou dans une vue défilante pour suivre l’activité en temps réel. (forme :
numérique/textuelle)
3. Après le Déroulement :
(a) Résumé de l’Exécution : Affichage des statistiques globales de l’exécution du logiciel,
telles que le nombre total de processus exécutés, la durée d’exécution totale, les éventuelles
erreurs ou avertissements rencontrés, etc. (forme : numérique)
(b) Historique des Événements : Journal des événements significatifs survenus pendant l’exé-
cution, tels que le démarrage et l’arrêt des processus, les opérations de lecture/écriture sur
les disques durs, etc. (forme : texte pour une lecture facile)
15
4 Manuel utilisateur
Cette section est dédiée au manuel utilisateur. C’est la seule section dans laquelle vous pouvez utiliser
des captures d’écran de votre logiciel.
Attention Comme d’habitude, toutes les figures doivent avoir un titre, être numérotées et expliquées
dans des textes.
En cas de nécessité, vous pouvez scinder naturellement cette section en des sous-sections corres-
pondantes à différentes aspects fonctionnels de votre logiciel.
16
5 Déroulement du projet
Dans cette section, nous décrivons comment le projet a été réalisé en équipe : la répartition des
tâches, la synchronisation du travail en membres de l’équipe, etc.
17
6 Conclusion et perspectives
Dans cette section, nous résumons la réalisation du projet et nous présentons également les extensions
et améliorations possibles du projet. Okayyy, j’ai capté
18
Références
[HLR02] L. M. Haas, E. T. Lin, and M. A. Roth. Data integration through database federation. IBM
Syst. J., 41(4) :578–596, 2002.
[HP11] John L. Hennessy and David A. Patterson. Computer Architecture, Fifth Edition : A Quan-
titative Approach. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 5th edition,
2011.
19