-
Notifications
You must be signed in to change notification settings - Fork 4
Sujet PTut TacOS
Projet tut 2011 2012
Intitulé court du projet : TacOS - OS 32 bits
Intitulé long du projet : Extension de l’OS 32 bits TacOS développé en 2009/2010 par des étudiants.
Domaines de compétences concernés par le projet : Système d’exploitation, C, architecture PC
Objectifs (2 ou 3 lignes)
L'objectif de ce projet tutoré et de continuer le développement du système d'exploitation initié en 2009/2010 par des étudiants pendant leur projet tutoré. Le développement de cet OS permet aux étudiants d'apprendre en détail le fonctionnement des OS et en particulier les problématiques qui se posent lors de l'implémentation. Objectif à long terme : fournir un OS simple à visée pédagogique.
Ressources nécessaires
Salles de travail : Informatique Équipements matériels : PC sous Linux Logiciels : gcc (disponible), qemu (disponible?), gdb (disponible?) Aspects bibliographiques
La recherche bibliographique abordera les 2 points suivants :
-
Présentation (succincte) du rôle de chacun des éléments principaux d'un système d'exploitation. Détailler les différences d'architecture entre différents systèmes d'exploitations (Linux, Windows, Minix, Hurd, etc.).
-
La seconde partie sera en rapport avec le choix des étudiants sur ce qu'ils souhaitent développer (cf description détaillée du projet).
Description détaillée du projet
TacOS est un système d'exploitation pour architecture Intel x86. Voici ce qui est actuellement plus ou moins en place :
- Interruptions / Exceptions / Appels systèmes
- Ordonnancement générique
- Pagination et allocation dynamique de mémoire
- Chargement d'exécutables au format ELF
- Affichage texte (80x25)
- Implémentation très partielle de la libc
- Système de fichier FAT16/FAT32 en lecture
- Terminaux virtuels
- Driver série et ethernet (couche physique)
- Sémaphores
- Signaux
Plusieurs axes d'amélioration sont possibles en plus d'un travail de stabilisation de l'OS. Il conviendra donc de préciser avec les tuteurs sur quels aspects vous souhaitez vous concentrer. Voici quelques idées :
- Ordonnancement : Développer de nouveaux ordonnanceurs. Fournir aussi des outils pour tester les performances de ces algorithmes. Cela s'accompagnerait aussi par l'écriture de quelques ordonnanceurs classiques.
- Amélioration des IPC et développement de nouvelles.
- Amélioration du système de drivers.
- Modification de l'OS pour tendre vers une architecture plus proche des micro-kernel.
- Développement d'un tout nouveau système de fichier innovant (ou pas).
- Affichage graphique et développement des fonctions pour dessiner facilement. Et pourquoi pas faire un vrai gestionnaire de fenêtre.
- Portage de l'OS sur une autre architecture processeur.
- Gestion USB.
- Réécriture totale de certaines parties de l'OS si cela est justifié/intéressant.
Cette liste n'est pas exhaustive, il est envisageable de travailler sur d'autres parties auxquelles nous n'avons pas pensé si cela semble réalisable et apporte quelque chose d'intéressant pour TacOS.
Compétences requises :
- Maitriser la programmation en C.
- Avoir de bonnes connaissances sur le fonctionnement d'un OS.
- Savoir utiliser gdb (au pire ça viendra :D).
Alors pour résumer, si vous :
- êtes doté d'assez de patience pour ne pas craquer lorsque plus rien ne marche.
- êtes aware que "xor eax, eax" c'est mieux que "mov eax, 0".
- êtes curieux d'apprendre.
- cherchez juste un prétexte pour manger de la nourriture mexicaine.
Alors bienvenue au club et n'attendez plus pour vous jeter sur ce projet !