Cours du CUCES/CNAM 2007-2008 (2ème semestre)
NSY103 : méthodes de programmation systèmes
Cet espace permet aux auditeurs du cours du CNAM NSY103 (méthodes de programmation système) du deuxième semestre 2007/2008 de Nancy et de Metz d’accéder aux notes de cours et autres documentations concernant ce cours. Sauf contre-indication, l’ensemble de ces documents est sous licence libre FDL. En cas de problème, n’hésitez-pas à écrire à : emmanuel@desvigne.org
Documents administratifs :
-
Plan du cours (format PDF)
Notes du cours NSY103 :
-
Notes de cours (version 1.0b du 23/04/2008) (format Word)
-
Notes de cours (version 1.0b du 23/04/2008) (format Text Open Document – Open Office)
-
Notes de cours (version 1.0b du 23/04/2008) (format PDF)
Sujet de projets et d’examens :
-
Projet (coef. 1/3) : le sujet commun proposé pour Nancy et pour Metz est << Création d’un middleware de système d’information de production >> (
format PDF). Le projet est à rendre au plus tard le lundi 16 juin 2008 AVANT de début de l’examen (sur CD-ROM avant la distribution du sujet, ou par e-mail, toute réception d’e-mail donnera lieu à un accusé de réception).
Proposition de correction de ce projet : une correction possible de ce projet sera postée ici après le 16/06/2008.
-
Examen (coef. 2/3) : sauf contre-ordre de dernière minute, l’examen aura lieu le lundi 16 juin 2008 de 18h00 à 21h00. Le sujet sera commun entre Nancy et Metz. Quelques instructions :
- aucun document/note de cours ne sera autorisé,
- pour les questions demandant à produire du code (ou du pseudo code), une liste des primitives systèmes sera fournie, avec pour chacune, son rôle, la liste des arguments, leur type, et la valeur retournée par la fonction.
Mise à jour du 16/06/2008 :
- voici le sujet de l’examen du 16/06/2008 (format PDF) ;
- et une correction (format PDF).
-
Session de rattrapage de spetembre : l’examen a eu lieu le 13/09/2008. Voici :
- le sujet de l’examen du 13/09/2008 (format PDF) ;
- et une correction (format PDF).
Codes sources des corrections de TP (avec les sujets) :
-
Sujet et correction du TP n°1 sur les signaux (classiques et temps réel) (format ZIP)
-
Sujet et correction du TP n°2 sur les tubes anonymes (format ZIP)
-
Sujet et correction du TP n°3 sur les tubes nommés (format ZIP)
-
Sujet et correction du TP sur les files de messages (MSQ) (format ZIP)
-
Exemples de communication avec des sockets (par datagramme – UDP – et par connexion – TPC -) (format ZIP)
-
Exemple (tout simple) d’utilisation de sémaphore sous Linux (format ZIP)
-
Exemple d’utilisation des threads POSIX, des MUTEX, et des variables condition (format ZIP)
Bibliographie et fond documentaire :
!!! Cette section contient des scans d’articles provenant de revues commerciales. Ces articles ne sont présent qu’à des fins d’enseignement, afin d’illustrer les propos du cours par des exemples pratiques de la vie réelle. Ils ne doivent en aucun cas être utilisés à d’autres fins (dans ce cas, je vous invite vivement à vous abonner aux revues en questions, le contenu méritant largement ce modeste investissement). Il va de soit que si un ayant droit des revues citées ici souhaite voir disparaître des docuements, ceux-ci seront retirés immédiatement sur simple demande à emmanuel@desvigne.org.
-
Bibliographie :
-
Joëlle Delacroix : « Linux : programmation système et réseau« , Dunod 2003
-
Nils Schaefer : « Programmation système sous Unix« , sN Informatique (non édité, mais possibilité de commander sur le site)
-
Andrew Tanenbaum : « Systèmes d’exploitation« , Pearsoneducation 2003
-
Jean-Marie Rifflet : « La programmation sous Unix – 3ème édition« , Ediscience 1993
-
Jean-Marie Rifflet : « La communication sous Unix – 2ème édition« , Ediscience 1994
- Mark Mitchell, Jeffrey Oldham, Alex Samuel : « Programmation avancée sous Linux » : excellent livre sous « Open Publication Licence« , traduit en français par Sébastien Le-Ray. La version proposée ici est le premier jet de la traduction ; une version plus récente sera certainement disponible sur ce site.
-
-
Fond documentaire :
-
Un pointeur sachant pointer… : article sur l’utilisation des pointeurs en C (Linux Mag n°50, mai 2003, 8 pages)
-
Un pointeur sachant pointer… (et on recommence) : suite de l’article sur les pointeurs en C du n°50 (Linux Mag n°52, juillet-août 2003, 8 pages)
-
Briques de bases en C : interruptions, errorno, signaux… (Linux Mag n°39, mai 2002, 9 pages)
-
Série de 9 excellents articles (certains sont en 2 parties) parus sur Linux Magazine entre juin 2004 et février 2006 sur « comment construire un système d’exploitation« , avec une mise en pratique : construction d’un OS light (Simple OS), et comparaisons avec Linux :
-
Construisez votre propre OS – Art 1 : boot (Linux Mag n°62, juin 2004)
-
Construisez votre propre OS – Art 2 : interruptions et exceptions (Linux Mag n°63, juillet/août 2004)
-
Construisez votre propre OS – Art 3 : gestion de la mémoire physique (Linux Mag n°64, septembre 2004)
-
Construisez votre propre OS – Art 4 : gestion de la pagination (Linux Mag n°65, octobre 2004)
-
Construisez votre propre OS – Art 5 : gestion de la mémoire virtuelle du noyau (Linux Mag n°66, novembre 2004)
-
Construisez votre propre OS – Art 6, part 1 : pile et changement de contexte (Linux Mag n°68, janvier 2005)
-
Construisez votre propre OS – Art 6, part 2 : threads/noyau, ordonnancement et synchronisation (Linux Mag n°69, février 2005)
-
Construisez votre propre OS – Art 7, part 1 : threads/applications utilisateur, changement de privilège, appels systeme (Linux Mag n°70, mars 2005)
-
Construisez votre propre OS – Art 7, part 2 : gestion de l’espace utilisateur (mmap and co, malloc utilisateur), fork, exec (Linux Mag n°72, mai 2005)
-
Construisez votre propre OS – Art 8 : Virtual File System (read-write, mount, link-symlink and co) (Linux Mag n°74, juillet-août 2005)
-
Construisez votre propre OS – Art 9, part 1 : Pilotes de périphériques caractère (mknod, /dev/mem, /dev/zero, tty, pilotes clavier, série, écran) (Linux Mag n°79, janvier 2006)
-
Construisez votre propre OS – Art 9, part 2 : Pilotes de périphériques bloc (cache de blocs, cache de pages, disques durs, partitions, contrôleur IDE) (Linux Mag n°80, février 2006)
-
-
Petite introduction théorique au temps réel : article sur les systèmes temps-réel (Linux Mag n°82, avril 2006, 4 pages)
-
Le temps réel sous Linux (Linux Mag n°52, juillet-août 2003)
-
Structure interne du noyau Linux version 2.4 (Ce document a été réalisé comme support de cours donné en interne par l’auteur -Tigran Aivazian- chez VERITAS Software Ltd.)
-
Le langage C : Allocateur de mémoire – principes généraux sur comment fonctionnent les primitives malloc() & cie (Linux Mag n°29, mai 2001)
-
Le noyau Linux 2.6, le gestionnaire de mémoire – comment fonctionne en pratique dans le noyau 2.6 l’allocation mémoire et la mémoire virtuelle (Linux Mag n°67, décembre 2004)
-
Comprenez et maîtrisez le multithreading – théorie des threads, implémentation dans les noyaux 2.4 et 2.6, threads Posix (Linux Mag n°63, juillet-août 2004)
-
Modélisation d’un système séquentiel par les threads – exemples d’utilisation des threads (Linux Mag n°50, mai 2003)
-
une correction possible de ce projet sera postée
merci! merci pour la documentation!