Projet système : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Dépôts Mercurial)
(Actualités)
Ligne 9 : Ligne 9 :
 
* Le jeu de tests a été ajouté dans votre dépôt Mercurial, dans le répertoire user sous le nom tst.c. Bons tests !
 
* Le jeu de tests a été ajouté dans votre dépôt Mercurial, dans le répertoire user sous le nom tst.c. Bons tests !
 
* Mise en place des entrepôts mercurial sur ensibm.
 
* Mise en place des entrepôts mercurial sur ensibm.
*'''Le code source doit être rendu pour le vendredi 10 juin à 10h'''; Pour la soutenance, nous utiliserons un clone de votre entrepôt de référence dans le compte d'un enseignant. C'est une bonne idée de vérifier que la version dans votre entrepôt fonctionne.
+
*'''Nous prendrons en compte le code source qui sera poussé dans le dépôt principal jeudi 14 juin à 23h59m59s'''; Pour la soutenance, nous utiliserons un clone de votre entrepôt de référence dans le compte d'un enseignant. C'est une bonne idée de vérifier que la version dans votre entrepôt fonctionne.
  
 
= Enseignants =
 
= Enseignants =

Version du 12 juin 2012 à 11:00

AttentionCette page est maintenue par les enseignants et utilisée par les élèves de la matière concernée. Vos contributions sont les bienvenues, mais merci d'en discuter avant de faire des modifications non triviales de la page, pour être sûr de ne pas perturber le déroulement du cours.

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 

Actualités

  • Le jeu de tests a été ajouté dans votre dépôt Mercurial, dans le répertoire user sous le nom tst.c. Bons tests !
  • Mise en place des entrepôts mercurial sur ensibm.
  • Nous prendrons en compte le code source qui sera poussé dans le dépôt principal jeudi 14 juin à 23h59m59s; Pour la soutenance, nous utiliserons un clone de votre entrepôt de référence dans le compte d'un enseignant. C'est une bonne idée de vérifier que la version dans votre entrepôt fonctionne.

Enseignants

Damien Dejean, Grégory Mounié, Franck Rousseau, Sébastien Viardot, Mnacho Echenim

Projet dans Teide

Présentation

Les projets de spécialité système permet de mettre en oeuvre des concepts associés aux systèmes d'exploitation : synchronisation, concurrence, partage de tâche, temps réel, pilotes matériel, ...

Les projets sont répartis en deux catégories:

  • Conception d'un système d'exploitation sur machine nue, Présentation
  • Réalisation d'un outil de synchronisation de données pour l'Ensimag.

Catégorie conception d'un système d'exploitation

Un cahier des charges minimal est à réaliser (voir Documentation du projet). Les extensions seront à définir au début du projet avec l'encadrant selon le goût des groupes.

Deux versions du projet existent (avec le même cahier des charges initial), seules les extensions diffèrent :

  • Projet sur PC
  • Projet sur FPGA

Projet sur PC

PC
L'objectif est d'exploiter un PC classique et d'en écrire le système d'exploitation.

Les extensions possibles sont :

  • la mise en œuvre de la mémoire virtuelle,
  • l'exploitation de périphériques complexes (carte graphique, carte son, carte réseau, ...),
  • l'exploitation de plusieurs processeurs dans le système d'exploitation.

Projet sur FPGA

FPGA
L'objectif est de concevoir la partie matérielle et logicielle (toujours en écrivant un système d'exploitation).

Le développement est assez proche de ce qui peut se faire lors du développement de systèmes embarqués complexes (consoles, téléphones portables de type "smartphone", ...).

Il est possible dans ce type de projet de concevoir dans les extensions des IP et d'en écrire les pilotes permettant de les exploiter dans le système. Ainsi les projets système pourront intégrer une part importante de conception d'accélérateur matériel de traitement de l'information.

Les accélérateurs matériels, aussi appelés IP, sont utilisés pour leur très grande performance, aussi bien en terme de puissance de calcul que de consommation d'énergie.

Par exemple, ils constituent la majeure partie des circuits utilisés en téléphonie mobile ou encore en compression vidéo temps-réel (vidéophonie sur mobile, etc ...)

Les IP sont des unités de traitement "cablées" qui implémentent tout ou partie d'un algorithme. De nombreux algorithmes sont même plus faciles à implémenter en matériel qu'en logiciel du fait de la structure hautement parallèle des IP. Pour utiliser une IP, un processeur standard lui envoie des données puis récupère le résultat des calculs. Dans le cadre du projet de spécialité, les système conçus pourront intégrer, au choix, des accélérateur :

  • 3D Z-buffer (utilisée pour les jeux vidéo)
  • 3D photo-réaliste par lancer de rayon
  • code correcteur d'erreur pour les transmission
  • encryptage/décryptage pour la sécurité
  • compression/décompression vidéo pour le multimédia
Des projets à plusieurs binômes peuvent être constitués afin de concevoir des systèmes complexes logiciels et matériel. Merci de signaler à Sébastien Viardot le type de projet que vous souhaitez faire.

Pour travailler à distance (par exemple sur ensiarchi51):Lancer un serveur VNC sur la machine :

  • Définir un mot de passe pour l'accès distant
ssh ensiarchi51.imag.fr vncpasswd
sviardot@ensiarchi51.imag.fr's password: 
Using password file /home/ensiens.imag.fr/sviardot/.vnc/passwd
Password: projetsysteme
Warning: password truncated to the length of 8.
Verify:   projetsysteme
Would you like to enter a view-only password (y/n)? n
  • Lancer le serveur :
ssh ensiarchi51.imag.fr vncserver
sviardot@ensiarchi51.imag.fr's password: 
New 'X' desktop is ensiarchi51:1
Starting applications specified in /home/ensiens.imag.fr/sviardot/.vnc/xstartup
Log file is /home/ensiens.imag.fr/sviardot/.vnc/ensiarchi51:1.log
  • Se connecter avec un client VNC depuis votre machine avec :
adresse : ensiarchi51.imag.fr
display : 1 ou 5901 (remplacer 1 par le numéro retourné lors du lancement du serveur)
  • Quand vous avez fini de travailler, tuer le serveur VNC :
ssh ensiarchi51.imag.fr killall Xtightvnc

Suivi

Accompagnement des étudiants

  • Autant que possible l'équipe encadrante fait en sorte qu'il y ait toujours 1 ou 2 enseignant(s) par 1/2 journée dans les salles où se font le projet. (que l'enseignant soit le tuteur du groupe ou non)
  • Le tuteur d'un groupe fait un point au moins une fois par semaine sur l'état d'avancement du projet. Un journal de bord doit être rempli quotidiennement.
  • A la fin du projet un jeu de test est fourni pour valider partiellement les fonctionnalités du projet.

Les consignes transmises au départ

  • Un spécification technique initiale est fournie au départ (à compléter au niveau des extensions),
  • Les étapes de progression pour atteindre l'objectif minimal.

Attente à la fin du projet

Pour chaque équipe, nous attendons les éléments suivants.

Livrables 
Le cahier des charges complété avec les extensions, les plannings prévisionnel et effectif, un code clair et commenté de la réalisation, un journal de bord à jour, un dépôt bien renseigné des évolutions faites pendant tout le projet (outil mercurial)
Soutenance 
Une présentation de la réalisation. Il est important de montrer ce qui fonctionne et ce qui ne fonctionne pas. Les enseignants ont à leur disposition une fiche de soutenance où sont passés en revue les points critiques du projet.
Page web 
Une page web succincte dans le wiki (qui sera publique)
  • accessible à tout le monde, non spécialiste en système, c'est la "vitrine" de votre projet en quelque sorte ;
  • présentant ce qui a été fait ;
  • mettant l'accent sur les apports et les difficultés rencontrées ;
  • sans le code source ;
  • créée dans le wiki à partir de la page des résultats du projet système
et éventuellement
  • documentant les extensions réalisées ;
  • référençant les sources externes (comme le code libre utilisé, vérifiez bien les conditions liées à la licence, très important !) ;
  • présentant des captures d'écran / vidéos de démos intéressantes ;
  • mettant à disposition le binaire du noyau pour pouvoir le tester dans un émulateur.
Il peut être utile de relire les consignes sur la réalisation d'une page Web.

Résultats des projets passés

Les pages demandées ci-dessus sont regroupées dans les résultats du projet système.

Documentation du projet

PC
FPGA

Documentation externe

gdb et ddd

  • Tout la documentation est accessible par les commandes :
info gdb
info ddd

Éléments d'assembleur et de C

  • Insérer de l'assembleur dans du C (pratique non recommandée car beaucoup de pièges) : info gcc, section C extensions, puis Extended Asm

Processeurs Intel

Attention: ne pas imprimer ces documents (plus de 500 pages chacun)

Développement d'OS

  • Art of Assembly (l'édition DOS 16 bit contient des informations sur la programmation des drivers)

Dépôts Mercurial

Les dépôts Mercurial sont hébergés sur ensibm. Ils ont été initialisés avec les sources de départ du projet. Pour en récupérer une copie, utilisez l'une des deux commandes suivantes selon l'architecture sur laquelle vous travaillez :

Pour les 2A et pour les 2A apprentissage:

hg clone ssh://votre_login@ensibm.imag.fr//usr/local/psys/login1-login2-login3/repo psys

Pour récupérer les points de départs pour un autre usage (nécessite d'avoir un compte sur ensibm) :

hg clone ssh://votre_login@ensibm.imag.fr//usr/local/psys/master.both


Notez bien que le double slash dans .fr//usr indique que le nom part de la racine et pas du HOME de l'utilisateur. Il n'est donc pas une erreur !

Cela créera un répertoire de travail nommé psys. Evidemment, il faut remplacer les mots votre_login, login1, login2 et login3 (le cas échéant) par les valeurs pertinentes. Les logins de votre équipe sont triés par ordre alphabétique.

PC
Pour intégrer votre TP de PSE, nous vous conseillons de copier un par un les fichiers pertinents. Il faut utiliser la commande hg add pour qu'ils soient pris en compte par Mercurial. Certains correctifs de la FAQ (et d'autres) ont été intégrés par rapport à la version distribuée en PSE. De plus, le répertoire user a été ajouté pour l'étape d'implantation du mode utilisateur.

Vous pouvez vous référer à la page Mercurial pour apprendre à utiliser ce gestionnaire de version. Grosso modo, il fonctionne comme git. La seule différence est que hg commit va prendre par défaut tous les changements dans tous les fichiers gérés. Vous pouvez aussi consulter |le tutoriel officiel complet en français.

Pour supprimer les messages:

 remote: Not trusting file /usr/local/psys/login1-login2-login3/repo/.hg/hgrc from untrusted user mounie, group perms

Il suffit de rajouter/créer dans votre fichier .hgrc de votre home sur ensibm les lignes suivantes:

 [trusted]
 users = mounie

Pour de plus amples explications vous pouvez lire in Mercurial

Catégorie réalisation d'un outil de synchronisation

Ce sujet marque le début d'un projet à long terme dont le but sera de proposer un outil de synchronisation de fichiers (à la Dropbox) aux étudiants de l'Ensimag, qui pourront synchroniser leurs données sur les serveurs de l'Ensimag et non plus sur des serveurs extérieurs à l'école.

Le but de cette première version du projet sera d'établir, en lien avec des utilisateurs, des enseignants et le service informatique, une liste précise des fonctionnalités souhaitables pour une première version, une évaluation des avantages et défauts des solutions existantes, puis la réalisation de la première version multi-plateforme de l'outil.