Notes Os
Notes Os
Notes Os
et
Outils de programmation
Introduction
Le système d’exploitation (SE) est un
ensemble de programmes qui
Réalise l’interface entre le matériel de
l’ordinateur et les utilisateurs
Prend en charge la gestion des
ressources de la machine et le partage de
celles-ci
physiques: mémoire, unités E/S, UCT...
Logiques = virtuelles: fichiers et bases de
données partagés, canaux de communication
logiques, virtuels...
les ressources logiques sont bâties par le
2
logiciel sur les ressources physiques
Pourquoi étudier les SE?
6
Une synthèse historique
Mainframes et grands serveurs
Multics et beaucoup d’autres
(1960s)
Unix
(1970)
Ordinateurs Personnels
MS-DOS
(1981)
Mac/OS
(1984)
Windows NT Windows
Linux (1988) (1990)
(1991)
Solaris (1995)
Windows 2000
7
Windows XP
Types de systèmes
8
Multi utilisateurs, multitâches
10
Systèmes temps réel
11
Types de systèmes
Systèmes embarqués
Système temps réel dédié pour une
application particulière
Injection automatique pour une auto
Programmation micro-onde
Systèmes distribués - répartis
il y a un SE qui fonctionne entre
ordinateurs
l ’usager voit les ressources éloignées
comme si elles étaient locales
12
Services et facilités
14
Services et facilités
15
Services et facilités
Gestion de la protection
Mécanismes garantissant que les ressources
de système ne peuvent être utilisées que par
les programmes auxquels les droits
nécessaires ont été accordés (protection de
système et la machine des programmes
utilisateurs)
Protège SE des programmes d’autres utilisateurs
Protège un utilisateur d’un autre utilisateur
Empêche les entrées non-autorisées dans le
système (service de login)
17
Services et facilités
24
Langage de commandes
Les ordinateurs modernes ont la possibilité
de regrouper les commandes CLI en
miniprogrammes
Langage de commandes (scripts)
Les commandes sont analysées par l’outil
interpréteur de commande qui appelle la routine
système appropriée en assurant le passage des
paramètres
Chaque SE a son langage de commandes
propre
JCL (Job Control Language) de SE MVS
Langage Shell de SE Unix 25
GUI Interface – Windows Vista
30
Système de gestion de fichiers
Offre à l’utilisateur une unité de stockage
indépendante des propriétés physiques des
supports de conservation: le fichier
Fichier logique (vue de l’utilisateur)
Fichier physique
Assure la correspondance entre le fichier
logique et le fichier physique
Structure de répertoire
31
Système de gestion de fichiers
Le fichier logique
Un type de données standard défini dans les langages
de programmation sur lequel un certain nombre
d’opérations peuvent être réalisées
Création, ouverture, fermeture, destruction
Les opérations de création ou d’ouverture effectuent la liaison
du fichier logique avec le fichier physique
Un ensemble d’enregistrements, un type de données
regroupant des données de type divers liées entre
elles par une certaine sémantique inhérente au
programme qui les manipule
32
Système de gestion de fichiers
Fichier physique
Correspond à l’entité allouée sur le
support permanent et contient
physiquement les enregistrements
définis dans le fichier logique
Le fichier physique est constitué d’un
ensemble de blocs physiques qui
doivent être alloués au fichier logiques
33
Fichier physique
Différentes méthodes d’allocation de la
mémoire secondaire
Allocation contiguë
Allocation par zones
Allocation par blocs chaînés
Pour pouvoir allouer des blocs aux
fichiers il faut connaître à tout moment
l’ensemble des blocs libres et donc gérer
l’espace libre sur le disque
Liste d’espace libre
34
Exemple
Allocation par blocs chaînes (DOS/Windows)
L’ensemble des chaînages des blocs de fichiers est
regroupé dans une table FAT(File Allocation Table)
Nombre d’entrées = Nombre de blocs de données sur
le disque
Chaque entrée de la table correspond à un bloc du
disque et contient:
Si le bloc appartient à un fichier et n’est pas le dernier bloc
de ce fichier => le numéro du bloc suivant
Si le bloc appartient à un fichier et est le dernier bloc de ce
fichier => une valeur de fin de fichier
Si le bloc n’appartient pas à un fichier => une valeur de bloc
libre
35
Répertoire
Correspondance fichier logique – fichier physique
Effectue par le biais d’une table appelée
répertoire qui contient des informations de
gestion des fichiers
Le nom logique du fichier
Le type du fichier
Codé dans son nom logique à l’aide d’une extension
L’adresse physique du fichier
Dépend de la méthode d’allocation mise en œuvre sur le
disque
La taille en octets ou en blocs du fichier
Le nom du propriétaire
Les protections appliquées au fichier
36
Répertoire
Le système de gestion de fichiers offre des
primitives permettant de manipuler les répertoires
Les différentes structures de répertoires
existantes se distinguent par le nombre de
niveaux
Structure en arbre est composée d’un répertoire initial (la
racine) et d’un ensemble de nœuds constitués par l’ensemble
de sous-répertoires et d’un ensemble de feuilles qui sont les
fichiers eux-mêmes
Le nom complet d’un fichier (path name) est
constitué de son nom précédé du chemin dans
la structure de répertoires depuis la racine
37
Partitions
Gérer des milliers de fichiers dans un seul
ensemble – difficile
Solution – diviser l’ensemble du système de
gestion de fichiers en morceaux indépendants –
partitions
Partition constitue un disque virtuel auquel est associé
un répertoire qui référence l’ensemble des fichiers
présents sur la partition
Chaque partition est repérée par un nom – label
La partition doit être connectée à l’arborescence de
fichiers de la machine
38
Services et facilités
Gestion du processeur
Allocation du processeur aux différents
programmes: ordonnancement
Selon le type de SE l’algorithme
d’ordonnancement répond à des objectifs différents
Gestion de la concurrence
Communication entre plusieurs programmes,
synchronisation de l’accès aux données partagées
(outil de communication et de synchronisation
entre programmes)
39
Notion de Processus
Définitions
40
Notion de Processus: Définitions
Prêt
43
Diagramme d’états d’un processus
Transition Prêt –>Élu – opération d’élection
Transition Élu->Bloqué – opération de blocage
Transition Bloqué->Prêt – opération de déblocage Fin
Réveil
Élu En exécution
Élection
En attente du Prêt
processeur
Déblocage
Bloqué Blocage
Création d’un processus = état Prêt 44
Bloc de contrôle du processus
Identificateur processus
PCB (Process Control État du processus
Block) – une structure
Compteur ordinal
de description du Contexte pour reprise
processus associé au (registres et pointeurs, piles …)
programme exécutable Chaînage selon les files de
PCB permet la l’Ordonnanceur
sauvegarde et la Priorité (ordonnancement)
restauration du Informations mémoire
contexte mémoire et (limites et tables
du contexte pages/segments)
processeur lors des Informations sur les ressources
utilisées fichiers ouverts, outils
opérations de de synchronisation, entrées-
commutations de sorties
45
contexte Informations de comptabilisation
Opérations sur les processus
46
Opérations sur les processus
Création de processus
Un processus peut créer un ou plusieurs
autres processus en invoquant un appel
système de création de processus
Le processus créateur – processus père
Les processus créés – processus fils
Au fil des opérations de création initiées par
les processus, se développe un arbre de
filiation entre processus
47
Opérations sur les processus
Création de processus
Les opérations de création de processus
admettent les variantes suivantes selon
les SE
Le processus créé hérite ou non de données
et du contexte de son processus créateur
Le processus créé peut s’exécuter
parallèlement à son père. Dans certains
systèmes, le processus père doit attendre la
terminaison de ses fils pour pouvoir reprendre
sa propre exécution
48
Opérations sur les processus
Destruction de processus
Processus a terminé son exécution
Le processus s’autodétruit en appelant une routine
système de fin d’exécution
Processus commet une erreur irrécouvrable
Le processus est terminé par le système
Autre processus demande la destruction du
processus
Appel à une routine système
Le contexte du processus est démantelé
Ressources allouées au processus sont libérées
Bloc de contrôle est détruit
49
Opérations sur les processus
Suspension d’exécution –
momentanément arrêter l’exécution
d’un processus pour la reprendre
ultérieurement
Le contexte du processus est sauvegardé
dans son PCB
Le processus passe dans l’état bloqué
Reprise d’exécution
Transition de déblocage, le processus entre
dans l’état prêt
50
Ordonnancement sur l’unité centrale
Politiques d’ordonnancement
Exemples
Ordonnancement sous Linux
51
Ordonnancement sur l’unité centrale
52
Ordonnancement préemptif et
non préemptif
Fin
Réveil
Élu En exécution
Élection
Déblocage
Bloqué Blocage
Ordonnancement préemptif
La transition de l’état élu vers l’état prêt est autorisée: un processus
quitte le processeur s’il a terminé son exécution, s’il se bloque ou si
le processeur est réquisitionné
54
Déroulement des opérations
d’ordonnancement
Élection
Bloqué Élu
Prêt
Élu
Les opérations d’ordonnancement prennent place lors de tout changement d’états
55
des processus
Entités systèmes responsable de
l’ordonnancement
Les processus prêts et bloqués sont gérés dans
deux files d’attentes distinctes qui chaînent leur PCB
Le module Ordonnanceur (scheduler) trie la file des
processus prêts. Le tri s’appuie sur un critère donné
spécifié par la politique d’ordonnancement
56
Entités systèmes responsable de
l’ordonnancement
Préemption
Prêts
CPU
Répartiteur PCB PCB PCB PCB Ordonnanceur
CPU Classement selon une
politique d’ordonnancement
Élection
CPU
PCB PCB PCB PCB
Blocage Déblocage
Bloqués
Ordonnanceur et répartiteur
57
Politiques d’ordonnancement
Politique d’ordonnancement détermine
quel sera le prochain processus élu
Avantages – Simplicité
Inconvénient
Processus de petit temps d’exécution sont pénalisés en terme
de temps de réponse par les processus de grand temps
d’exécution qui se trouvent avant eux dans la file d’attente
59
Politiques d’ordonnancement
Plus Court d’Abord
L’ordre d’exécution des processus est fonction de
leur temps d’exécution
Sans réquisition
Difficulté
Connaissance a priori des temps d’exécution des
processus
60
Politiques d’ordonnancement
Politique par priorité
Chaque processus possède une priorité
62
Exemple
Systèmes actuels – combinaison de deux des
politiques: celles des priorités fixes et celles du
tourniquet
La file des processus prêts est divisée en autant de
sous files Fi qu’il existe de niveaux de priorité
Gestion de la concurrence
Communication entre plusieurs
programmes, synchronisation de
l’accès aux données partagées (outil
de communication et de
synchronisation entre programmes)
64
Gestion de la concurrence
Les processus peuvent avoir besoin de
communiquer entre eux pour échanger des
données par le biais
D’une zone mémoire partagée
D’un fichier
En utilisant les outils de communication offerts par le
système d’exploitation
Les processus ne sont plus indépendants
Accès concurrents aux ressources logicielles
65
Gestion de la concurrence
Une ressource désigne toute entité dont a
besoin un processus pour s’exécuter
Matérielle (le processeur, un périphérique)
Logicielle (variable)
Une ressource est caractérisée par
un état
libre
occupée
Nombre de points d’accès
Le nombre de processus pouvant l’utiliser en même
temps
66
Gestion de la concurrence
Ressource critique – ressource ne
pouvant être utilisée que par un seul
processus à la fois
Processeur, imprimante
Utilisation d’une ressource
Allocation de la ressource
Utilisation
Restitution de la ressource
67
Gestion de la concurrence
Les phases d’allocation et de
restitution d’une ressource doivent
assurer que la ressource est utilisée
conformément à son nombre de points
d’accès
Étape d’allocation
Peut bloquer un processus, si tous les
points d’accès sont occupés
68
Gestion de la concurrence
Étape de restitution
Peut entraîner le déblocage d’un autre
processus en attente d’accès
Synchronisation entre processus doit
garantir une bonne utilisation des
ressources
Une communication cohérente
Sans perte de données
69
Services et facilités
Gestion de la mémoire
Allocation de la mémoire centrale: principe
de la mémoire virtuelle, à un instant
donné, seules les parties de code et
données utiles à l’exécution sont chargées
en mémoire centrale
70
Gestion de la mémoire
La tâche principale de la gestion de la
mémoire est de charger des programmes
en mémoire pour qu’ils soient exécuté par
le CPU
Mémoire virtuelle
La taille du programme, des données et de la pile
peut dépasser la mémoire disponible. Le SE
garde en mémoire les parties du programme qui
sont utilisées et stocke le reste dans le disque
Cette méthode est basée sur deux principes de
gestions, la SEGMENTATION et la PAGINATION
71
Gestion de la mémoire
Pagination
L’espace d’adressage du programme est découpé en
morceaux linéaires de même taille appelés pages
L’espace de la mémoire physique est lui-même
découpé en morceaux linéaires de même taille appelés
case
Taille page = case – définie par le matériel (selon SE entre 512
octets et 8192 octets)
Charger un programme en mémoire centrale - placer
les pages dans les cases disponibles
Pour connaître à tout moment quelles sont les cases libres en
mémoire centrale, le système maintient une table des cases
Pour chaque case de la mémoire physique, information
– Libre ou occupée
72
– Si occupée, quelle page et quel processus la possèdent
Pages et Cases (1)
Programme Mémoire
Page 2 Case 1
ALLOCATION
Page 3
Page 1 P1 Case 2
Table des cases
Page 4
Page 3 P1 -1 libre
1 P1
Espace d’adressage du processus P1 (16 Ko) Page1 P2 3 P1
1 P2
-1 libre
2 P1
Page 1 Page 2 P1
4 P1
ALLOCATION
Page 4 P1 2 P2
Page 2
Page2 P2 Case 8
Espace d’adressage du processus P2 (7 Ko)
75
Recherche d’une case
77
Gestion de la mémoire
Conversion adresse logique – adresse physique
Il fait convertir l’adresse paginée générée au niveau du
processeur en une adresse physique équivalente
L’adresse physique s’obtient à partir de son adresse
logique en remplaçant le numéro de page p par
l’adresse physique d’implantation de la case contenant
la page p et en ajoutant à cette adresse le
déplacement d du mot dans la page
MMU (memory management unit) – un dispositif
matériel (partie de CPU), effectue cette conversion
78
Gestion de la mémoire
Conversion adresse logique – adresse
physique
Pour toute page il faut connaître dans quelle case
de la mémoire centrale celle-ci a été placée
Correspondance page – case s’effectue grâce à une
structure – table de pages
La table des pages – contient autant d’entrées que
de pages dans l’espace d’adressage d’un
processus
Chaque processus a sa propre table des pages
Chaque entrée – un couple <numéro de page,
numéro de case physique dans laquelle la page est
chargée> 79
Table de pages
Page Frame
Pages not in main memory:
1 6 page fault when accessed
2 4 Disk
3 1 2 3 4
4 8
5 5 6 7 8
6 10 9 10 11
7 1
8 2
9
10 7
11
84
Gestion de la mémoire
Algorithmes de remplacement de pages
FIFO (First In, First Out)
La page la plus anciennement chargée qui est
remplacée
Performances ne sont pas toujours bonnes (l’âge ne
reflète pas d’utilité)
LRU ( Least Recently Used)
La page la moins récemment utilisée qui est remplacée
Localité temporelle
Le plus utilisé, mais plus coûteuse
85
Gestion de la mémoire
Algorithmes de remplacement de pages
LFU (Least Frequently Used)
La page la moins fréquemment utilisée est remplacée
Problème vis-à-vis des pages abondamment référencées
sur un court laps de temps =>compteur pour ces pages –
elevé => ne sont pas retirées de la mémoire même si elles
ne sont plus jamais référencées
MFU (Most Frequently Used)
La page la plus fréquemment utilisée qui est remplacée
L’argument à la base – une page ayant un petit nombre de
références vient sans doute d’être chargée en mémoire
centrale et doit donc y rester
86
Étapes lors de défaut de page
88
Gestion de la mémoire
Réalisation de la table des pages
Structure matérielle réalisée grâce à des registres de
la MMU
Nécessite un accès à la mémoire
Ne peut convenir que pour de petites tables des pages
Structure logicielle placée en mémoire centrale
Deux accès à la mémoire
Un premier accès permet de lire l’entrée de la table des pages
correspondant à la page p cherchée et délivre une adresse
physique c de case dans la mémoire centrale
Un second accès est nécessaire à la lecture ou l’écriture de
l’octet recherché à l’adresse c+d
Réalisation des tables de pages de très grande taille
89
Gestion de la mémoire
Protection de l’espace d’adressage des
processus
Des bits de protection sont associés à chaque
page de l’espace d’adressage du processus et
permettent ainsi de définir le type d’accès
autorisés à la page
Ces bits de protection sont mémorisés pour
chaque page dans la table des pages du
processus
3 bits sont utilisés - l’autorisation d’accès en
Lecture – r
Écriture – w
Exécution - x
90
Translation d’adresse
Pagination
Pagination multiniveaux
L’espace d’adressages logiques supporté par les
SE actuels est très grand (de 232 à 264 octets)
La table des pages d’un processus peut devenir
également de très grande taille et comporter
jusqu’à un million d’entrées
Il n’est dès lors plus envisageable de charger de
manière contiguë la table des pages d’un processus
Solution: paginer la table des pages elle-même
93
Gestion de la mémoire
Pagination
Pagination multiniveaux
L’adresse paginée devient un triplet <hp, p, d>
hp – l’entrée d’une hypertable des pages
Chaque entrée correspond à une page contenant une partie de
la table des pages du processus
p – une entrée de cette partie de la table des pages
d – un déplacement dans la page p
L’hypertable des pages est placée en mémoire
centrale et son adresse d’implantation en mémoire
centrale est repérée par un registre matériel de la
MMU
3 accès à la mémoire
94
Gestion de la mémoire
Segmentation
La pagination constitue un découpage de
l’espace d’adressage du processus qui ne
correspond pas à l’image que le programmeur a
de son programme
Données
Programme principal
Procédures séparées
Pile d’exécution
La segmentation est un découpage de l’espace
d’adressage qui cherche à conserver le vue du
programmeur
95
Gestion de la mémoire
Segmentation
Lors de la compilation, le compilateur associe un
segment à chaque morceau du programme compilé
Segment est un ensemble d’emplacement
mémoire consécutifs non sécable
Les segments d’un même espace d’adressage peuvent
être de taille différente
Segment 1
données 50 Ko
Segment 2 Segment 3
Programme 20 Ko 70 Ko
Fonction X
principale
Segment 4
Pile 25 Ko
96
Vue Utilisateur Segmentation
Segmentation
98
Gestion de la mémoire
Le principe de la mémoire virtuelle est
couramment implémenté avec la pagination à
la demande
Les pages des processus ne sont chargées en
mémoire centrale que lorsque le processeur
demande à y accéder
99
Mémoire Virtuelle vs. Mémoire Cache
100
Machines virtuelles: le problème et la solution
103
Fonctionnement typique
Le système VM laisse exécuter normalement
les instructions non privilégiées
Les appels au système sont exécutés par le
système VM et les résultats sont passés à la
machine virtuelle sur laquelle le processus
exécute
104
Avantages
Chaque machine virtuelle peut utiliser
un SE différent!
En théorie, on peut bâtir des
machines virtuelles sur des machines
virtuelles!
Protection complète, car les machines
virtuelles sont complètement isolées
les unes des autres
Un nouveau SE peut être développé
sur une machine virtuelle
sans déranger les autres 105
Implémentations
106
Outils de programmation
Les outils classiques utilisés dans le
développement d’un programme sont
Éditeur de texte
Traducteur
Compilateur
Assembleur
Éditeur de liens
Débogueur
107
Outils de programmation
idée
Éditeur de texte
Programme source
Traducteur: compilateur, assembleur
Sous-programmes Sous-programmes
de librairie Programme objet Traduits à part
Éditeur de liens
Programme objet
Chargeur
Programme exécutable
Débogueur
108
Compilateur
109
Compilateur
111
Compilateur
Analyse syntaxique
Analyse la suite de symboles issus de
l’analyseur lexical et vérifie si cette suite de
symboles est conforme à la syntaxe du
langage (règles de la grammaire)
Analyseur syntaxique essaye de construire
l’arbre syntaxique correspondant au
programme. Dans cet arbre les feuilles
correspondent aux symboles issus de
l’analyse lexicale et les nœuds intermédiaires
correspondent aux objets grammaticaux
112
Compilateur
Analyse sémantique
Associer un sens aux différentes phrases du
programme source
Reconnaître les objets manipulés et analyser leurs
propriétés
Type de l’objet, sa durée de vie, sa taille et son adresse
Contrôler que l’utilisation de ces objets se fait de
manière cohérente
Recherche les erreurs de typage, les déclarations
multiples, absentes ou inutiles, les expressions
incohérentes
113
Compilateur
L’optimisation et la génération du code
objet
Étape ultime de la compilation
Consiste à produire dans un fichier objet le
code machine équivalent au code du
langage de haut niveau, 3 étapes
Génération d’un code intermédiaire
Optimisation de ce code intermédiaire
Génération du code final
114
Compilateur
Génération d’un code intermédiaire
Consiste à remplacer les phrases
reconnues par des macros plus aisément
manipulables qui ne font pas de référence
aux registres de la machine cible
Optimisation du code intermédiaire
Vise à produire un code machine plus
performant
L’exécution plus rapide
Un code plus compact dont l’encombrement
mémoire est moindre
115
Compilateur
Optimisation du code intermédiaire
Diverses améliorations, exemples:
La réduction des expressions constantes
Simplification des boucles et prés-évaluation des expressions
constantes
117
Chargeur
Le programme objet après édition de
lien doit être chargé en mémoire
centrale pour être exécuter
Fichier exécutable – fichier relogeable
Lorsque le chargeur copie le code
exécutable depuis le disque vers la
mémoire centrale, il implante le code dans
un espace libre de la mémoire centrale
avec une adresse quelconque appelée
adresse d’implantation mémoire
118
Chargeur
Fichier exécutable – fichier relogeable
Toutes les adresses calculées dans le
programme exécutable doivent être modifiées
Opération de translation des adresses
Ajouter à chaque adresse la valeur de l’adresse
d’implantation mémoire
Deux types de chargement
Statique
L’opération de translation est effectuée au moment du
chargement pour toutes adresses
Dynamique
L’opération de translation est effectuée au moment
d’utilisation d’une adresse relogeable au cours de
l’exécution par le processeur 119
Débogueur
120