Systèmes avancés, M1

Le cours du lundi 18 mars est annulé.

Plan

  1. Introduction, programmes, processus, ordonnanceur, appels système fork, _exit, wait, waitpid, execve. Paragraphe 3.1 du poly.
  2. Communication entre processus : fichiers. Cohérence, atomicité. Paragraphe 3.2 du poly.
  3. Opérations atomiques (O_CREAT, rename) et atomiques conditionnelles (O_EXCL, link). Le buffer cache, fsync. Lockfiles et flock. Paragraphe 3.2 du poly et paragraphe 3.8.1.
  4. Structures de données du noyau : i-nœud mémoire, entrée de la table de fichiers ouverts, descripteur de fichiers. Comportement du pointeur de position courante et des locks à travers fork. Redirections : dup, dup2. Tubes anonymes. Paragraphes 2.1, 3.4 et 3.3.
  5. Tubes nommés. Sockets de domaine Unix. Paragraphes 3.3.2 à 3.3.4.
  6. Protection mémoire. Mémoire virtuelle et applications. L'appel système mmap. Paragraphes 3.5 et 3.6.
  7. L'appel système mmap (suite). Introduction à la cohérence. Autres problèmes liés à mmap. Mémoire partagée POSIX. Rappel : sémaphores, moniteurs, variables de condition. Sémaphores POSIX. Paragraphes 3.6.5 et 3.7 du poly.
  8. Introduction aux threads. Threads système (processus légers) et threads utilisateur. Techniques d'implémentation des threads utilisateur : modèle 1-N, modèle 1-1, modèle M-N. Description du projet.
  9. Notion de cache. Le buffer cache. Les caches du processeur. Modèles de mémoire faibles. Opérations atomiques et cohérentes. Détails sur le comportement du cache. Paragraphe 3.8.
  10. Cohérence de mmap: msync. Opérations atomiques et cohérentes en C11. Exemples: compteur atomique, valeurs read-mostly, implémentation des spinlocks.

Feuilles de TP

  1. fork, exec.
  2. Locks et lockfiles.
  3. Descripteurs de fichier à travers fork, redirections, tubes.
  4. Tubes nommés.
  5. Allocation de mémoire. Code fourni.
  6. Mémoire partagée. Code fourni.
  7. Sémaphores POSIX. Code fourni.
  8. Mapping de fichiers. Code fourni. Données d'exemple.
  9. Threads.
  10. Encore des threads. Code fourni.
  11. Opérations atomiques et cohérentes. Code fourni: dormeur.c, citations.

Liste de diffusion

Les questions à propos du cours et du projet sont les bienvenues sur la liste m1.systeme-avance.info@listes.u-paris.fr. L'inscription à cette liste est obligatoire.

Si vous avez besoin d'un serveur de vidéoconférence et de partage d'écran pour travailler sur votre projet, vous pouvez aller sur https://galene.org:8443/group/systeme-avance/nom-du-groupe/nom-du-groupe est un nom que vous choisissez. Le mot de passe est vide. Attention, le chat est effacé après quatre heures.

Projet

Le projet est à rendre dans la nuit du 7 au 8 mai 2024 avant 4h du matin.

Le projet est la partie pratique de l'examen, et compte pour 50% de la note finale.