Système d'exploitation
(code : IGI-3004 / IT-3006)

Horaires IGI-3004 :     Cours : 14h.          TD : 4h.          TD machine : 10h.           Examen partiel : 2h.          Examen final : 2h.

Responsable :  Jean Cousty

Horaires IT-3006:

Responsable :  Laurent Najman
 

Objectifs

Acquérir des connaissances et compétences fondamentales liées aux principes de fonctionnement des systèmes d'exploitation (voir détails ci-dessous). Ces principes sont illustrés en particulier sur les exemples de Unix, Linux et Windows. Lors de séances de TD sur machines, les compétences et connaissances acquises (ou en cours d'acquisition) sont mises en oeuvre à travers la programmation en C de logiciels s'exécutant sous Linux.

Connaissances à acquérir :

Compétences à acquérir :

Au fil des années ces compétences sont déclinées sous forme de micro compétences qui sont évaluées lors des examens. Vous trouverez donc une liste (non-exhaustive) de micro-compétences à acquérir dans l'unité au bas de cette page.

Pré-requis

Une première expérience de la programmation en C/C++ et la connaissance de l'utilisation d'Unix/Linux sont pré-requises. Ces pré-requis sont censés avoir été acquis dans les années précédentes. Afin de s'éviter de perdre trop de temps lors des TP, l'étudiant est invité à suivre les liens suivants :

Pour ceux qui veulent aller plus loin sur bash, le lien suivant est intéressant:

Organisation et sujets des cours et travaux dirigés

Cours 1 : Introduction et makefile
TDm 1 : Appels système pour la manipulation de fichiers
Cours 2 : Processus
TDm 2 : Création, affichage et synchronisation élémentaire de processus
Cours 3 : Communication inter-processus par signaux et tubes & Processus légers
TDm 3 : Communication inter-processus par signaux et tubes
TD 1 : Création de processus & communication inter-processus par tubes et signaux
Examen partiel.
Cours 4 : Modèles de synchronisation : sémaphores, producteur/consommateur, dinêr de philosophes
TD 2 : Synchronisation de processus
TDm 4 : Création et synchronisation de processus légers
Cours 5 : Gestion de la mémoire
Cours 6 : Mémoire virtuelle
TDm 5 : Gestion de la mémoire : impact sur les temps d'exécution & outils d'aide au développement
Examen final.

Environnement de travail : machine virtuelle Linux téléchargeable

Même si votre ordinateur pesrsonnel est sous Windows, il est possible d'exécuter un système d'exploitation Linux pour reproduire l'environnement de travail des TDm. En effet, sous le système d'exploitation Windows, vous pouvez exécuter une machine virtuelle sous Linux. Pour cela, vous pouvez par exemple utiliser la machine virtuelle donnée ici sur laquelle Linux a déjà été installé pour vous.

Pour utiliser cette machine virtuelle, vous devez installer le lecteur de machine virtuelle VMware, téléchargeable ici.

Afin de décompresser cette machine virtuelle, n'importe quel gestionnaire d'archives (comme 7-zip téléchargeable ici) peut être utilisé.

Une fois que cette machine virtuelle est lancée, vous pouvez vous connecter avec le compte "user" dont le mot de passe est "azerty".

Micro-compétences à acquérir (liste non exhaustive)

Prendre en compte l'effet d'un appel système fork dans un programme
Identifier les processus créés par un programme utilisant 'fork' pour se dupliquer plusieurs fois
Identifier les relations père-fils (arbre des processus) entre les processus créés par un programme utilisant 'fork' pour se dupliquer plusieurs fois
Analyser la nature déterministe ou non-déterministe du résultat produit par un programme multiprocessus
Prendre en compte le mécanisme d'exécution simultanée de processus pour prévoir l'affichage d'un programme multi-processus
Prendre en compte l'effet d'un recouvrement dans un programme
Décrire le déroulement d'un programme multiprocessus utilisant des recouvrements
Décrire l'effet de l'appel système wait et d'une boucle permettant d'attendre que tous les fils d'un processus soient terminés

Écrire un programme élémentaire pour envoyer un signal au processus parent
écrire un programme élémentaire permettant de faire une action spécifique à la réception d'un signal donné

Analyser les messages échangés par plusieurs processus via des tubes non nommés (à partir du code source du programme)
Décrire l'affichage d'un programme multiprocessus échangeant des messages via des tubes
Vérifier l'atomicité de l'opérations d'écritures sur un tube en s'appuyant sur l'exemple d'un programme multi-processus donné
Expliquer le déroulement d'un programme faisant appel à la sémantique bloquante de la lecture et de l'écriture sur un tube
Expliquer pourquoi les opérations de lecture/écriture sur des tubes ont une sémantique bloquante

Expliquer le lien entre une "situation physique" (de type producteur/consommateur) et un programme muti threadé donné
Expliquer un problème donné de synchronisation pouvant survenir lors du déroulement d'un programme multi-threadé de type producteurs / consommateurs mal programmé
Identifier et expliquer une exécution problématique due à une mauvaise synchronisation des processus dans un programme de type Producteur / consommateur
Identifier les ressources et sections critiques dans un programme donné
Synchroniser les threads d'un programme type producteur / consommateur par exclusion mutuelle
Identifier un problème d'attente active
Écrire un programme pour résoudre un problème de type producteur / consommateur sans attente active

Expliquer le lien entre une "situation physique" (de type dîner de philosophe) et un programme informatique muti threadé
Expliquer un problème donné dans le déroulement d'un programme multi-threadé de type dîner de philosophes non synchronisé
Identifier une situation problématique pour le déroulement d'un programme multi-threadé de type dîner de philosophes non synchronisé
Synchroniser les threads d'un programme type dîner de philosophe par exclusion mutuelle
Déterminer l'ensemble de sémaphores (et leur valeur initiale) pour synchroniser les threads d'un programme type dîner de philosophes autorisant plusieurs threads à agir en même temps
Écrire un programme pour résoudre un problème de dîner de philosophes en autorisant plusieurs threads à agir en même temps
Expliquer ce qu'est un interblocage
Démontrer qu'un programme ne peut pas conduire à une situation d'interblocage
Pour un programme donné pouvant aboutir à une situation d'interblocage, exhiber une séquence d'exécution aboutissant à un interblocage

Calculer la taille maximale des fichiers dans un système à i-noeud spécifié
Expliquer ce qu'est un i-noeud et l'adressage indirect dans les systèmes de fichiers à i-noeuds
Expliquer le fonctionnement d'un système de fichier par liste chaînée avec table d'allocation
Appréhender un système de fichier inconnu

Expliquer la propriété d'optimalité de l'algorithme de Belady
Appliquer l'algorithme de Belady
Appliquer l'algorithme FIFO
Appliquer l'algorithme LRU
Détecter le nombre de défauts de page générés par un algorithme de remplacement de pages
Expliquer ce qu'est l'anomalie de Belady
Expliquer les caractéristiques principales de différents algorithmes de remplacement de pages


Bibliographie

Couverture OS

On lira également avec profit

Projet de programmation en système d'exploitation (atelier d'approfondissement en informatique PR3006)

Le sujet 2014 n'est pas encore disponible.

A titre de curiosité, vous pouvez regarder

Quelques anciens sujets de travaux dirigés



Dernière mise à jour :  par Jean Cousty.