NSY 103 - Notes de cours - desvigne.org
Ce document contient les notes de cours de l'UE du CNAM « NSY103 .....
session. 2/ d'un examen écrit comptant pour ¾ de la note finale. ...... Ce chargeur
va ensuite charger le MBR (master boot record), situé dans les ... l1:1:wait:/etc/rc.
d/rc 1.
Part of the document
Méthodes de programmation systèmes UE n° NSY103 Notes de cours
|Code de l'UE : |
|NSY103 |
| |
|Titre de la formation : |
|Méthodes de programmation systèmes |
| |
|Ouvert : |
|Ouvert |
| |
|Type de diplôme : |
|Unité de valeur CNAM. |
| |
|Nombre d'heures : |
|55h (~18 + 1 cours de 3 heures) |
| |
|Durée de la formation : |
|Un semestre - Période : deuxième semestre |
| |
|Jours de cours |
|Lundi & Mercredi |
| |
|Heures de cours |
|18h00-21h00 |
| |
|Lieu de la formation : |
|CUCES UNIVERSITES |
| |
|Salle : |
| S05 LE LUNDI ET S18 LE MERCREDI (à confirmer) |
| |
|URL : |
|http://cours.desvigne.org/ |
| |
|Animateur |
|Emmanuel DESVIGNE |
| | Document sous licence libre FDL - © Emmanuel DESVIGNE, version 1.0b, avril
2008 Avant propos
Ce document contient les notes de cours de l'UE du CNAM « NSY103 :
méthodes de programmation systèmes ». Il a été élaboré à partir des connaissances acquises lors de ma
formation initiale (DESS ingénierie des réseaux et systèmes, obtenu à
Nancy en 1995), de diverses expériences professionnelles (je travaille
actuellement comme responsable informatique à la maternité régionale
de Nancy), à l'aide de la mine d'or que représente Internet, et à
l'aide de ces quelques livres : . Joëlle Delacroix - Linux : programmation système et réseau, Dunod
2003 ; . 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. Dans ces conditions, difficile de revendiquer la paternité du présent
melting pot. Aussi, ce document est mis sous licence libre GNU-FDL.
Vous pouvez le copier, l'imprimer, le diffuser, voire l'apprendre
librement. Le programme officiel invite le formateur à ne voir que les systèmes
Linux et Linux temps réel. Ces systèmes d'exploitation proposent
effectivement tous les mécanismes décrits dans ce document. Ils sont
stables, efficaces... Néanmoins, même s'ils ont une certaine
préférence des personnes ayant rédigé le programme du CNAM pour des
raisons éducatives (et du rédacteur du présent document, avouons-le),
il est difficile de faire l'impasse des autres systèmes d'exploitation
que le marché propose, comme les Unix, XXX-BSD, Mac OS (qui s'en
inspire), et MS-Windows. C'est pourquoi, parfois, les philosophies de
ces derniers OS seront indiquées, afin d'illustrer qu'il peut y avoir
d'autres solutions/implémentations, et pour que le candidat acquière
une culture générale des systèmes d'exploitation. Ces systèmes d'exploitations sont eux-mêmes très largement écrit en C
(et parfois en C++). De plus, les travaux dirigés, travaux pratiques,
projets devront être rédigés dans ces langages. Aussi, le premier
cours sera en grande partie réservé à une mise à niveau sur ces
langages, afin de donner les pointeurs pour que tous les candidats
possèdent des bases identiques. Si le volume (en nombre de pages) de
cette révision est importante, s'agissant d'un pré-requis, le
formateur ne doit pas y passer plus d'une séance. Cette mise à niveau
pourra demander une quantité plus ou moins importante de travail
personnel de la part des candidats. Table des matières
1 Avant propos 2
2 Table des matières 3
3 Programme officiel 9 3.1 Public concerné et conditions d'accès 9
3.2 Finalités de l'unité d'enseignement 9
3.2.1 Objectifs pédagogiques 9
3.2.2 Capacité et compétences acquises 9
3.3 Organisation 9
3.3.1 Description des heures d'enseignements 9
3.3.2 Modalités de validation 9
3.4 Contenu de la formation 9
3.5 Bibliographie 10
3.6 Contacts 11
3.6.1 Coordonnées du secrétariat du responsable national : 11
3.6.2 Coordonnées du responsable de cette formation à NANCY : 11
3.7 Nouveautés à partir de la session 2006-2007 11
3.7.1 Origine de la réforme 11
3.7.2 Résumé du principe de la réforme 11
3.7.3 Plan imposé par cette réforme pour le cours NSY103 12 4 Mise à niveau en C/C++ 13 4.1 Bref historique du C 13
4.2 La compilation 13
4.3 Les composants élémentaires du C 15
4.3.1 Les identificateurs 15
4.3.2 Les mots-clefs 15
4.3.3 Les commentaires 16
4.4 Structure d'un programme C 16
4.5 Les types 18
4.5.1 Les types prédéfinis 18
4.5.2 Les types composés 19
4.6 Les constantes 21
4.6.1 Les constantes entières 21
4.6.2 Les constantes réelles 22
4.6.3 Les constantes caractères 22
4.7 Les opérateurs 23
4.7.1 L'affectation 23
4.7.2 Les opérateurs arithmétiques 23
4.7.3 Les opérateurs relationnels 24
4.7.4 Les opérateurs logiques booléens 24
4.7.5 Les opérateurs logiques bit à bit 25
4.7.6 Les opérateurs d'affectation composée 25
4.7.7 Les opérateurs d'incrémentation et de décrémentation 25
4.7.8 L'opérateur virgule 26
4.7.9 L'opérateur conditionnel ternaire 26
4.7.10 L'opérateur de conversion de type 26
4.7.11 L'opérateur adresse / pointeur / indirection 26
4.7.12 Règles de priorité des opérateurs 28
4.7.13 Les constantes chaînes de caractères 29
4.8 Les instructions de branchement conditionnel 29
4.8.1 Branchement conditionnel if... else 30
4.8.2 Branchement multiple switch 30
4.9 Les boucles 31
4.9.1 Boucle while 31
4.9.2 Boucle do... while 31
4.9.3 Boucle for 32
4.10 Les instructions de branchement non conditionnel 32
4.10.1 Branchement non conditionnel break 32
4.10.2 Branchement non conditionnel continue 32
4.10.3 Branchement non conditionnel goto 33
4.11 Les fonctions 33
4.11.1 Définition d'une fonction 33
4.11.2 Appel d'une fonction 34
4.11.3 Déclaration d'une fonction 34
4.11.4 Cas particulier de la fonction main() 35
4.11.5 Pointeur sur une fonction 35
4.11.6 Fonctions avec un nombre variable de paramètres 36
4.12 Durée de vie des variables 37
4.12.1 Variables globales 38
4.12.2 Variables locales 38
4.12.3 Transmission des paramètres d'une fonction 39
4.12.4 Les qualificateurs de type const et volatile 39
4.13 Les directives au préprocesseur 40
4.13.1 La directive #include 40
4.13.2 La directive #define 40
4.13.3 La compilation conditionnelle 42
4.14 Les bibliothèques standards 43
4.15 Les conventions d'écriture d'un programme C 44
4.16 Le C++ 44
4.16.1 Généralités 44
4.16.2 Différences entre C et C++ 45
4.17 Travaux dirigés 50 5 Introduction : architecture des ordinateurs 54 5.1 Schéma de base 54
5.2 Le microprocesseur (CPU) 54
5.2.1 Présentation 54
5.2.2 Fonctionnement 54
5.2.3 Mémoire cache 55
5.2.4 Signaux de commande 56
5.2.5 Unités fonctionnelles 56
5.2.6 Familles 57
5.2.7 Jeu d'instruction, architecture de CPU 57
5.2.8 Améliorations technologiques 58
5.3 Le bus 59
5.3.1 Description 59
5.3.2 Matériel 60
5.3.3 Dans un ordinateur 61
5.4 Le chipset 61
5.5 La mémoire 62
5.5.1 Caractéristiques techniques 62
5.5.2 Temps d'accès et capacité des différents types de mémoire 63
5.6 Communication périphériques/CPU 63
5.6.1 Les interruptions matérielles (et IRQ) 63