1
Systèmes d’exploitation
Fonctions des systèmes d’exploitation
Nicolas Belloir
Les processus
Définition
Activité / Programme en exécution
Aspect actif vs. Aspect passif (programme / fichier) Unité de travail dans la plupart des systèmes
d'aujourd'hui
Objectif : Exécution concurrente / multiprogrammation / temps partagé
Quelques aspects des processus
Les processus utilisent des ressources (processeur, mémoire, E/S, …)
Processus système vs. Processus utilisateur
Le SE est responsable de la gestion des processus
Création / destruction allocation de ressources Ordonnancement
Synchronisation
Implantation d’un processus
Eléments constituants d'un processus :
section de texte : le code du programme compteur d'instructions
contenu des registres pile d'exécution
section de données : variables globales
Deux processus peuvent exécuter le même programme mais ils ne partagent rien !
Etat d’un processus
Durant son exécution un processus est amené à changer d'état
Etats possibles d'un processus :
nouveau (en cours de création) en exécution (par le processeur)
en attente (d'un événement tel que fin d'E/S) prêt (attend d'être exécuté par le processeur) Terminé
Diagramme d'états
Remarque : à un instant donné t
un processus au plus est en exécution par le processeur plusieurs processus peuvent être prêts ou en attente
nouveau terminé
en exécution prêt
en attente
admis
interruption sortie
dispath de l'ordonnanceur
attente d'E/S ou d'événement terminaison d'E/S
ou d'événement
Commutation de processeur d'un processus à un autre
interruption ou appel système inactif
processus P0 système d'exploitation processus P1
sauver l'état dans le PCB0 recharger l'état depuis le PCB1
interruption ou appel système
inactif exécuter
exécuter
Bloc de contrôle de processus
PCB : Process Control Bloc pointeur état de
processus numéro de processus compteur de programme
registres
limites mémoire liste des fichiers
ouverts
. .
.
Contenu d'un PCB
Etat courant du processus
Compteur d'instructions : adresse de la prochaine instruction à exécuter
Registres de processeur : doivent être sauvegardés afin de reprendre l'exécution du processus là où elle a été
interrompue
Informations sur l'ordonnancement du processus : niveau
Contenu d'un PCB (suite)
Informations sur la gestion mémoire : valeur des
registres de base et de limite, tables de pages ou de segments
Information de comptabilisation : temps CPU et réel, limite de temps, ...
Information de statut d'E/S : listes de périphériques alloués, des fichiers ouverts, ...
Ordonnancement des processus
Objectif : gérer l'accès concurrent aux ressources par les processus
Gestion par files d'attentes
file d'attente des travaux : tous les processus
file d'attente des processus prêts (liste chaînée de PCBs) file d'attente pour chaque périphérique
Diagramme des files d'attente
Représentation de l'ordonnancement
E/S file d'attente d'E/S requête d'E/S
tranche de temps expirée le fils
s'exécute
création d'un fils l'interruption
se produit
en attente d'une interruption
file des processus prêts UC
Ordonnanceurs
Ordonnanceur : programmes chargé de gérer l'ordonnancement
Ordonnanceur à long terme : dans un contexte de traitement par lots (mode batch)
Ordonnanceur à court terme : gère l'allocation du processeur
Ordonnanceur à moyen terme : pour le swap
Ordonnanceur à long terme
Contrôle le degré de multiprogrammation
Fréquence d'exécution faible (de l'ordre de la minute) Algorithme assez complexe et relativement coûteux :
prend en compte les caractéristiques des processus : processus tributaires du processeur vs. processus tributaires des E/S
objectif : mélange équilibré entre les 2 types
Ordonnanceur à court terme
Fréquence d'exécution élevée (< à 0,1 sec) Algorithme doit être efficace !
Si temps d'exécution = 0,01 sec alors 9% du temps perdu dans l'ordonnancement
Problème des systèmes interactifs
Sur certains systèmes interactifs comme Unix il n'y a pas d’ordonnanceur long terme (logique)
Si trop de processus (en particulier si beaucoup
d'utilisateurs) la mémoire ne peut plus les contenir tous Solutions :
"éjecter"des utilisateurs (très convivial !) swap
Ordonnanceur à moyen terme
Régule le degré de multiprogrammation
Transfert de processus de la mémoire vers les unités de stockage et inversement : permutation ou swapping
En général fonction du degré d'utilisation de la mémoire principale
Peut également permettre de réguler le dosage entre
processus tributaires du processeur et processus tributaires
Gestion du swap
swap in processus en mémoire auxiliaire swap out partiellement exécutés
file d'attente d'E/S E/S
UC fin file d'attente des
processus prêts
Ajout de l'ordonnancement à moyen terme au diagramme des files d'attente
Commutation de contexte
C'est la sauvegarde de l'état du processus courant et le chargement de l'état sauvegardé d'un nouveau processus Contexte = PCB
Coût de la commutation (temps perdu) varie d'une machine à l'autre (sur certaines machines dispositifs
spéciaux pour la copie des registres) : de 1 à 1000 micro- sec
Gestion de processus
Organisation arborescente avec init comme racine
init commence par créer un processus getty qui initialise le terminal et demande un login
Puis un processus d'ouverture de session (login process) est créé, qui lit un mot de passe, le crypte et le compare à celui stocké dans le
fichier /etc/passwd
Si correspondance alors une session utilisateur est initialisée par le lancement d'un shell dont l'identifiant utilisateur est correctement positionné
L'identifiant utilisateur permet déterminer les permissions de l'utilisateur pour certains appels système
Information sur les processus
Un processus est identifié par son PID (Process IDentifier) : unique
Le PID est attribué par le système à la création Le père d’un processus est identifié par son PPID Un processus particulier : le processus init
PID = 1
Initialise un terminal par utilisateur connecté à la machine
La commande ps
La commande ps donne la liste des processus en exécution
-e affiche tous les processus
-C affiche tous les processus d’un certain nom -f affiche plus d’information (voir exemple) [belloir@scinfe100 belloir]$ ps –ef
UID PID PPID C STIME TTY TIME CMD root 1 0 0 Feb03 ? 00:00:21 init
belloir 18531 1 0 05:40 ? 00:00:00 xterm - title Terminal
belloir 18533 18531 0 05:40 pts/1 00:00:00 bash belloir 18562 18533 0 05:41 pts/1 00:00:00 ps -ef
La commande kill
La commande kill permet de terminer un processus
kill –signal PID
SIGHUP 1 fin du shell
SIGINT 2 interruption du programme SIGKILL 9 tuer le processus
SIGTERM 15 terminaison douce SIGQUIT 3 terminaison brutale SIGSTOP 17 stopper le processus
[belloir@scinfe100 belloir]$ kill -9 18531
La commande top
05:56:57 up 12 days, 15:24, 5 users, load average: 1,00, 1,00, 1,00 136 processes: 129 sleeping, 2 running, 1 zombie, 4 stopped
CPU0 states: 99,3% user 0,33% system 99,9% nice 0,0% iowait 0,15% idle CPU1 states: 0,3% user 0,50% system 0,0% nice 0,0% iowait 99,7% idle Mem: 2064444k av, 2052732k used, 11712k free, 0k shrd, 432568k buff
1511400k actv, 0k in_d, 45688k in_c
Swap: 2104464k av, 82080k used, 2022384k free 1379552k cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
16801 bdejean 39 19 15936 15M 940 R N 99,9 0,7 652:31 0 setiathome 18597 belloir 19 0 2364 2364 1716 R 1,9 0,1 0:00 1 top
18531 belloir 15 0 4344 4344 2096 S 0,9 0,2 0:01 0 xterm 1 root 15 0 112 80 56 S 0,0 0,0 0:21 1 init
2 root RT 0 0 0 0 SW 0,0 0,0 0:00 0 migration/0 3 root RT 0 0 0 0 SW 0,0 0,0 0:00 1 migration/1
Création de processus
Toute commande est le fils de l’interpréteur de commande
Le processus fils :
hérite d'une copie du code de son père (il exécute donc le même programme que son père)
hérite d'une copie des données de son père
hérite d'une copie des descripteurs de fichiers de son père (mêmes fichiers ouverts et même pointeurs courants)
Création de processus (suite)
Le processus fils :
a le même répertoire de travail que son père
réagit aux signaux de le même façon que son père est attaché au même terminal que son père
Exécution d’une commande
5 modes
Mode interactif (foreground)
Mode en arrière-plan (background) Mode différé
Mode bach
Mode cyclique
Mode interactif
Le plus fréquemment utilisé
Cmd lancée à partir d’un interpréteur de commande Terminal non utilisable pendant l’exécution de la cmd Interruption de la cmd par ctrl-C
Suspension de la commande par ctrl-Z [belloir@]$ emacs
Mode en arrière-plan
Rend immédiatement le contrôle à l’utilisateur
Utile lorsqu’il n’y a pas d’interaction entre l’utilisateur et la commande (lancement d’une interface graphique)
[belloir@]$ emacs &
Ou
[belloir@]$ emacs ctrl-Z
[belloir@]$ bg
Mode différé
Déclenche l’exécution d’une commande à une date fixée Commande at
Gestion par atq ou at –l et atrm
[belloir@]$ at 06:15 16.02.05 <toto
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 29 at 2005-02-16 06:15 [belloir@]$
Mode bash
Permet de placer une cmd dans une file d’attente Le système exécute toujours la cmd en tête de file Gestion des sorties similaires à la commande at Mode altruiste sur système chargé
Mode cyclique
Réalisé à l’aide de la commande crontab
Le pcs cron scrute un fichier dans lequel sont définies les commandes à exécuter à date fixe
Organisation du Système de
Gestion de Fichiers
Récapitulatif
Fichier = unité d’organisation Différents types
Protégés par des droits
Organisation hiérarchique (catalogues) Transfert entre disques et E/S par blocs
Un bloc est composé de secteurs (entre 32 et 4096 octets) En général 512
Les opérations sur les fichiers
Création
Suppression Ouverture Fermeture Lecture Écriture
Ajout de données Aller à la position
Récupérer les attributs Positionner les attributs
Organisation d’ un SGF
Programme d’application Système de fichiers logique
Module d’organisation de fichiers Système de fichiers de base
Contrôle des E/S périphériques
Traducteur entre
« extraire le bloc 123 »
et instruction spécifiques au matériel Accès à un emplacement physique
Utilise la structure des
répertoires pour fournir au MOF les infos qu’il demande en fonction du nom symbolique
Connaît les fichiers et leurs blocs logiques et physiques.
Fait le lien entre les 2.
Gère l’espace libre Utilise des commandes génériques pour lecture et écriture sur disque de blocs
physique.
Ouverture d’un fichier
Table des fichiers ouverts (mémoire)
Contient pour chaque fichier ouvert les informations du fichier Nom, taille, propriétaire, autorisation d’accès, emplacement des blocs de données
Oblige le système à parcourir le répertoire
Chargement dans la table des fichiers ouverts
Ouverture renvoie l’indice dans la table. : descripteur de fichier ou bloc de contrôle.
Exemple de l’accès à /usr/belloir
1 .
1 ..
4 bin
7 dev
14 lib 9 etc
6 usr
8 tmp
Répertoire racine
Le répertoire usr A le nœud
d’information 6
Mode Taille Dates
132
Nœud d’information 6 du répertoire /usr
Indique que /usr est situé dans le bloc 132
6 .
1 ..
21 pierre
30 paul
12 nico
26 belloir
Bloc 132 est le répertoire /usr
/usr/belloir a le nœud D’information 26
ModeTaille Dates 406
Nœud d’information 26 du répertoire /usr/belloir
Indique que /usr/belloir
est situé dans le bloc 406
Allocation de l’espace disque
Allocation : gestion de l’espace disque pour une meilleure performance des accès fichiers
3 méthodes :
Allocation contiguë Allocation chaînée Allocation indexée
Allocation contiguë
Un fichier occupe un ensemble de blocs contiguës sur le disque
Déplacement minimes
Entre le bloc n et le bloc n+1, aucun déplacement de la tête
Plus
Performance des accès
Moins
Difficulté à trouver de la place
Fragmentation externe (petits espaces libres) Evaluation à l’avance de la taille du fichier Compactage de l’espace disque
Allocation contiguë
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 9
Fichier début taille
count 0 2
Toto 6 2
Hello 12 4
Répertoire
Allocation chaînée
Un fichier est une liste chaînée de blocs
Chaque bloc contient un pointeur sur un bloc suivant Plus
Pas de compactage de l’espace disque
Moins
Utilisable avec des fichiers à accès séquentiel uniquement Temps de parcours pour accéder à un nième bloc
Les pointeurs occupent de l’espace mémoire
Solution : travailler sur des clusters de blocs (groupes de blocs)
Allocation chaînée
0 1 2 3
4 5 6 7 X
8 9 15 10 11
12 13 14 15 7
16 17 18 19
Fichier début fin
count 9 7
Répertoire
Application
FAT : la table d’allocation des fichiers
Une partie est réservée à la FAT au début de chaque partition disque
Contient une entrée pour chaque bloc du disque Est indexée sur les numéros de blocs
Organisée comme une liste chaînée
Entrée du répertoire
test … 217
Nom Bloc de départ
618
EOF 339
618 339 217
Allocation indexée
Rassemble tous les pointeurs de bloc dans le bloc index
Améliore les performance de l’allocation contiguë
Chaque fichier a son propre bloc index
Le répertoire contient l’adresse du bloc index Plus
Accès direct rapide et sans fragmentation
Moins
Gaspillage de place du aux pointeurs
Allocation indexée
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19
Fichier bloc index
toto 15
Répertoire
9 161 10-1 -1
MAIS …
Quel est la taille idéale du bloc index ???
La solution Unix : les i-nodes mode
propriétaire
Marques temporelles Taille de bloc
compteur
Blocs directs
données données
données
.
données
données . .
données
49
Gestion de la mémoire
La mémoire
Ressource primordiale : gestion stricte nécessaire Accès rapide
Taille réduite (par rapport au SGF) Différentes politiques de gestion Vue logique pour l’utilisateur
Exemple : le va-et-vient avec partition variable
temps
Syst. D’ex A
Syst. D’ex A
B
Syst. D’ex A
B C
Syst. D’ex B
C
Syst. D’ex C
D Syst. D’ex
B C
D
Syst. D’ex D C
E
Le va-et-vient avec gestion par table des BIT
1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0
A B C
8 16
P 0 5 H 5 3 P 8 6
P 14 4 H 18 2 P 20 4