MAIN3 : Programmation système
Principes de base des systèmes d’exploitation
Cours original de Pierre Sens
Modifié par Adrien Cassagne
[Link]@[Link]
1
Organisation de l'UE
• [Link]
• 5 séances de 4h (= 20h, nombre d’heures inférieur aux précédentes années)
- Cours
- TD
- TP (un peu de travail à la maison pour terminer les TP)
• Notations :
- 30 % 1 TP noté (à déterminer)
- 70 % examen (30/05 de 10h45 à 12h45, amphi)
2
Bibliographie
• Pré requis
• Connaitre un peu de C
• Connaitre un peu l’architecture des ordinateurs
• Livres
• Principes [appliqués] des systèmes d'exploitation (plusieurs éditions)
Peter Galvin, Abraham Silberschatz
• Systèmes d'exploitation (plusieurs éditions)
Andrew Tanenbaum
3
Rôle de l'UE
• Comprendre les mécanismes internes et algorithmes des systèmes
d'exploitation
• Pas spécifique à un système (Linux, Windows, BSD …)
4
Cours 1 : Introduction aux systèmes d'exploitation
• Définition : un système d'exploitation (Operating system – OS) est un
logiciel qui gère la machine physique
• Offre aux applications une vision abstraite de la machine
P1 P2 P3 Applications
Système
Matériel
5
Historique
• Les systèmes ont suivi les évolutions des
ordinateurs
• 1940 : Ordinateurs à tubes à vide
• Pas de systèmes, Programmation par recablage
• ENIAC : 1946, ~18 000 tubes, 30 tonnes
• 1960 : Ordinateurs à transistors
• Systèmes centraux = mainframe ("gros" systèmes)
• Introduction des principaux concepts des OS
6
Historique (2)
• Mainframe
• ATLAS - 1960 : introduction du traitement par lots (batch)
• Exécution automatique d'une série de programmes (commandes)
P3
P2 Diagramme de Gantt
P1
Temps
• CTSS (MIT) - 1962 : 1er Mainframe à temps partagé (time sharing)
• Partage du temps en quantum : temps maximum d'exécution consécutive
P3
P2
P1
Temps
quantum (timeslice) 7
Historique (3)
• Principaux mainframes
• IBM OS/360 – 1965
• Multics (MIT) - 1964
• De nombreux utilisateurs et terminaux
• 1965-1970 : Mini-ordinateurs Multics
• PDP 7/8/11 de DEC
• Moins puissant, moins d'utilisateurs
• Ken Thompson et Dennis Richie conçoivent un système
plus léger écrit en assembleur : UNICS (69) => UNIX (71)
• 1973 : Invention du langage C par Dennis Richie
• UNIX réécrit à 90 % en C PDP-7
8
Historique (4)
• 1975-1980 : Micro-ordinateur
• Machine moins puissante dédiée à un utilisateur
• Apple I - 1976
• PC (Personnal Computer) introduit par IBM - 1981
• Systèmes : CP/M puis MSDOS (Bill Gates). Mono-tâches, mono-utilisateurs
• Banche MSDOS : …Windows 3.11→ W.95 → W. 98 → W. Millenium (Fin)
• 1990 : Unix pour PC
• Minix / Linux / FreeBSD …
• Open-source, multi-tâches, multi-utilisateurs
• 1993 : Nouvelle branche pour Windows
• Nouveau système d'exploitation inspiré de VMS (Mainframe)
• Windows NT : WNT 4 → WNT 5 → W. 2000 → W. XP → W. Vista → W. 7 → W. 8 → W. 10
9
Composants d'un ordinateur
Mémoire vive Mémoire morte
Code et variables des Code pour le démarrage du
Processeur
programmes et du système système (eg. BIOS)
généraliste
Exécution des
programmes CPU RAM ROM
utilisateur et du Cache D
système
Bus
Processeurs
spécialisés pour les
Contrôleur Périphériques
échanges avec les
périphériques D
= unité d'échange
1 contrôleur par type de périphérique (disque, réseau, ….)
Accès direct à la mémoire : DMA (Direct Memory Access)
Entrée/sortie (E/S) : entrée = lecture, sortie = écriture 10
Composants d'un ordinateur
• Hypothèse du cours : 1 seul cœur par CPU => pas de "vrai"
parallélisme entre l'exécution des programmes (tâches)
• Parallélisme entre exécution et transfert depuis les périphériques
E/S P2
contrôleur
P3
CPU P2
P1
P2 demande
une E/S
11
Hiérarchie des temps d'accès
registre 1 cycle ~0.5ns
x4 4 cycles ~2ns
cache L1
x2 10 cycles ~5ns
cache L2
x 20 RAM ~100ns
Disque ~10ms
x 106
12
Systèmes d'exploitation : architecture
13
Modes d'exécution
2 modes
• Mode utilisateur : accès restreint (confinement) aux ressources
Exécution des codes des programmes
• Mode système : accès privilégié à toutes les ressources du système
Exécution des codes du noyau.
Utilisateur P1 P2 Interdit
Système
Noyau
14
Amorçage du système (boot)
• A la mise sous tension la RAM est vide : charger et initialiser le système en RAM
⇒ Utilisation d'un "mini" OS présent en ROM (le BIOS sur PC)
ROM
BIOS
MBR Système
Séquence d'amorçage
1. Mise sous tension : exécuter le code présent en ROM (BIOS)
2. Vérifier les périphériques
3. Copier le contenu du premier bloc du disque en RAM (MBR – Boot loader Block) BIOS
4. Exécuter le boot loader en RAM
5. Charger le système d’exploitation Loader
15
Multi-boot
• Remplacer le block boot par un code faisant un aiguillage
16
Rôles du système
Gérer / partager les différentes ressources entre les programmes
Gestion du processeur : algorithme d'ordonnancement de tâches
Gestion de la mémoire : allocation mémoire, gestion de la mémoire
virtuelle
Gestion du disque : cache disque et système de gestion de fichiers
17
Définitions
• Programme : exécutable stocké sur disque
• Processus / tâche : programme chargé en mémoire (contexte mémoire
et registre) pour être exécuté
• Mono-programmation : 1 seule tâche présente en mémoire
• Multi-programmation : plusieurs tâches présente en mémoire
18
Etats d'un processus
• Prêt : le processus prêt à s'exécuter
• Elu : le processus s'exécute
• Bloqué : le processus attente une ressource (E/S, clavier, paquet réseau, un
synchronisation …)
Batch Temps partagé
19