4MMPS

De Ensiwiki
Aller à : navigation, rechercher
AttentionCette page est maintenue uniquement par les enseignants. Afin de ne pas perturber le déroulement des cours, elle n'a pas vocation à être modifiée par les élèves. Mais si vous avez des modifications à proposer, merci d'en discuter ou d'envoyer un e-mail aux auteurs de la page (cf. historique)

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

Convocation à l'examen de TP

Vous trouverez dans ce document la salle dans laquelle vous êtes affectés pour l'examen de TP de Pratique du Système (vous pouvez chercher votre nom dans le document avec ctrl-f). Si vous constatez une erreur, contactez Christophe Rippert le plus rapidement possible. Attention : vous devez vous présenter dans la salle à 15h15 pour émarger avant le début de l'épreuve. On rappelle aussi que tous les documents sont interdits pendant l'examen.

Introduction

Ce cours est dédié à la mémoire de Dennis Ritchie, inventeur du langage C et développeur du premier système Unix, Prix Turing 1983.

Le but de ce cours est de comprendre les mécanismes mis en oeuvre dans la construction des systèmes d'exploitation. Il est destiné aux élèves suivant une filière à dominante informatique (ISI, ISSC, SLE), par opposition au cours de Systèmes d'exploitation et programmation concurrente que suivent tous les Ensimag : le cours de SEPC se focalise sur l'utilisation des mécanismes systèmes alors qu'on apprend en Pratique du système à construire ces mécanismes sur une machine nue.

Pratique du système est comme son nom l'indique une matière essentiellement pratique, basée sur un mini-projet de construction d'un (petit) noyau de système d'exploitation. Les pré-requis de ce cours sont des notions d'architecture des ordinateurs et de programmation bas-niveau, ainsi bien sûr que des bases d'algorithmique. On utilisera principalement le langage C dans le développement du projet, avec quelques (très petites) parties en assembleur.

Les premières séances sont très détaillées pour vous guider dans le démarrage du projet, mais les sujets des dernières séances sont volontairement plus succints afin de vous permettre de concevoir à votre guise votre noyau : c'est cette autonomie et aisance avec la programmation système que l'on évaluera lors de l'examen final.

Organisation

Les TP de Pratique du Système ont lieu en alternance avec les TD/TP de SEPC, consultez ADE pour avoir le planning exact.

Les TP se font en monôme, mais vous pouvez bien sûr vous entraider pendant les séances. On rappelle pour mémoire la différence entre l'entraide et le plagiat.

La note de l'enseignement est basée sur :

  • l'assiduité pendant les séances encadrées : chaque absence non-justifiée est pénalisée de deux points de malus sur la note finale, et 3 absences entrainent d'office la note de 0/20 ;
  • l'évaluation du code développé pendant les séances encadrées et qui sera rendu sur Teide avant l'examen de TP, on ne demande pas de compte-rendu mais vous devez commenter votre code ;
  • un examen de TP qui aura lieu à la fin du semestre et pendant lequel on vous demandera de développer en temps limité des prototypes semblables à ceux réalisés pendant les séances encadrées.

L'examen sera sans aucun document (même pas les sources de votre mini-projet). Il aura lieu en salle PC sur des comptes vides et le réseau sera coupé (vous n'aurez donc pas accès à votre compte habituel et aux données qu'il contient). On fournira les documentations nécessaires avec le sujet, notamment des versions PDF de ces pages Ensiwiki.

Attention : la note de Pratique du Système ne se rattrape pas en session 2, la note obtenue à l'examen de TP est définitive.

Le temps de travail attendu pour ce cours est de :

  • 16h30 encadrées (5 séances de 3h et 1 séance d'1h30) ;
  • 1h30 de support sous le format office-hours ;
  • 18h non-encadrées, entre les séances, pour finir ce que vous n'avez pas terminé pendant la séance précédente et préparer la suivante.

Planning des créneaux de support

  • Filière Systèmes et Logiciels Embarqués (Vivien Quéma) : mercredi 15 octobre et mercredi 19 novembre à 17h45 en salle E201
  • Filière Internet, Systèmes et Services Connectés (Sébastien Viardot) : mercredi 8 octobre et mercredi 26 novembre à 12h45 en salle E201
  • Filière Ingénierie des Systèmes d'Information, groupe 1 (François Broquedis) : lundi 6 octobre et lundi 17 novembre à 11h15 en salle E103
  • Filière Ingénierie des Systèmes d'Information, groupe 2 (Christophe Rippert) : lundi 6 octobre et lundi 24 novembre à 11h15 au bureau E107 (bâtiment E, 1er étage, au fond du couloir derrière la E103)

Sujets et documents

Le projet s'étale sur 6 séances encadrées portant chacune sur un aspect différent du système. Ce que vous n'avez pas eu le temps de faire à l'issue d'une séance encadrée doit être fini en temps libre avant la séance suivante. Les sujets de chaque séance sont détaillés sur des pages séparées :

Diapositives d'introduction

Avant de commencer : prise en main de l'environnement de travail

Séance 1 : gestion de l'écran

A lire avant la séance 2 : aide-mémoire sur l'assembleur Intel 32 bits

Note : il n'est pas nécessaire de maitriser l'assembleur x86 pour faire ce TP (on ne vous demandera pas d'écrire du code assembleur), mais vous pouvez lire le document précédent pour vous familiariser avec les bases de ce processeur.

Diapositives d'introduction à la séance 2

Séance 2 : gestion du temps

Diapositives d'introduction à la séance 3

Séance 3 : introduction à la gestion des processus

Séances 4, 5 et 6 : gestion des processus (version ISI)

Séances 4, 5 et 6 : gestion des processus (version ISSC et SLE)

Conseils généraux

Dans ce projet, vous ne devrez écrire que du code C. On utilise l'architecture x86 (car c'est la plus répandue à l'heure actuelle) mais vous n'avez pas besoin de connaitre précisément ses spécificités : on ne vous demandera pas d'écrire du code assembleur. Par contre, vous devez avoir des bases d'architecture des ordinateurs (notions de registres, d'accès mémoire, d'interruption, etc.) pour comprendre les concepts mis en oeuvre dans ce TP.

Une partie significative de la notation portera sur la clarté et la modularité du code produit. On recommande notamment :

  • de séparer les différentes parties dans des modules différents avec des fichiers d'en-tête adaptés et de ne pas tout mettre dans un gros fichier .c ;
  • d'utiliser au maximum le pré-processeur pour éviter les constantes « en dur » dans le code ;
  • de factoriser les parties redondantes dans des fonctions et de ne surtout pas copier-coller des blocs de code ;
  • d'utiliser des noms de fonctions et de variables clairs.

Bibliographie (pour aller plus loin)

  • OSDev, le wiki des développeurs de systèmes ;
  • Andrew S. Tanenbaum : Modern Operating Systems et Operating Systems Design and Implementation disponibles à la Bibliothèque Universitaire de Sciences ;
  • Abraham Silberschatz, Peter B. Galvin et Greg Gagne  : Operating Systems Concepts.