Cours du CUCES/CNAM 2006-2007
NSY103 : méthodes de programmation systèmes
Cet espace permet aux auditeurs du cours du CNAM NSY103 (méthodes de programmation système) 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 et présentations (version quasi définitive) :
-
Notes de cours (version 0.9 du 19/05/2007) (format Word)
-
Notes de cours (version 0.9 du 19/05/2007) (format Text Open Document – Open Office)
-
Notes de cours (version 0.9 du 19/05/2007) (format PDF)
Sujet de projets et d’examens :
-
Projet (coef. 1/4) : le sujet retenu est celui proposé par Philippe LAMBERT et Daniel COISSARD du CNAM de Chalons-sur-Saône : << Les systèmes de communication par satellites à orbite basse >> (
format PDF). Le projet est à rendre au plus tard le lundi 11 juin 21h00 (pendant le cours, ou par e-mail). Quelques remarques supplémentaires concernant ce sujet :
- l’ensemble des tous les satellites peut être vu comme réalisant un cluster sous Linux (même s’il y a plusieurs satellites, ils peuvent partager un fichier, ou utiliser des fonctions systèmes comme s’ils étaient sur une seule machine) ;
- pour les autres questions dont les réponses ne sont pas précisées dans le sujet, chaque candidat a le choix pour la technique employée (est-ce qu’un satellite ne peu dialoguer qu’avec son voisin, ou avec tous les satellites, ou quelle technique utiliser pour la communication inter-satellite ou satellite/station terrestre, etc.). Par contre, le candidat expliquera (et argumentera si nécessaire) ses choix.
Proposition de correction de ce projet : vous trouverez ici une correction possible de ce projet (d’autres solutions techniques étaient possibles ; lire le fichier _Lisez-moi.pdf contenu dans l’archive ZIP pour les détails).
-
Examen (coef. 3/4) : l’examen aura lieu le samedi 16 juin 2007 de 08h00 à 10h00 au CNAM de Nancy, le sujet sera inter-régional. 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 17/06/2007:
- voici le sujet de l’examen du 16/06/2007 (format PDF) ;
- et une correction (format PDF).
Session de rattrapage de spetembre : l’examen de rattrapage aura lieu le samedi 08 septembre 2007 de 08h00 à 10h00 au CNAM de Nancy, le sujet sera inter-régional. Mêmes instructions que pour l’examen de juin. Mise à jour du 08/09/2007 : les documents liés à cette session :
- le sujet de la session de rattrapage du 08/09/2007 (format PDF) ;
- et la correction (format PDF).
Codes sources des corrections de TP (avec les sujets) :
-
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)
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)