Académique Documents
Professionnel Documents
Culture Documents
MODULE :
SYSTÈME D’EXPLOITATION 2
FILIÈRE : SMI/S4
Pr Nawal SAEL
1
Descriptif du module
Structure du module:
▪ Gestion des processus et de la mémoire
▪ Notion de base sur les SE
▪ Gestion des processus
▪La Programmation Shell
▪ Introduction
▪ Les variables
▪ Les structures conditionnelles
▪ Les boucles
Volume horaire :
Cours 12 Séances
TD-TP 14 Séances
Rappel sur les Systèmes d’Exploitation
Un système d'exploitation est un programme qui sert comme
intermédiaire / interface entre un utilisateur d'un ordinateur et le
matériel informatique.
56
Rappel sur les Systèmes d’Exploitation
Structure d’un SE ( Point de vue de l’interface présentée à l’utilisateur et
au programmeur) :
• Noyau et utilitaires
• Gestionnaire des tâches
• Gestionnaire de la mémoire
• Gestionnaire des fichiers
• Gestionnaire de périphérique
• Chargeur du système d’exploitation
• Interpréteur de commande
56
Rappel sur les Systèmes d’Exploitation
Le noyau :
• Le système d’exploitation comporte un certain nombre de routines (sous-
programmes). Les plus importantes constituent le noyau (kernel en anglais).
• Il est chargé en mémoire vive à l’initialisation du système et contient de
nombreuses procédures nécessaires au bon fonctionnement du système. Les autres
routines, moins critiques, sont appelées des utilitaires.
• Ce noyau d’un système d’exploitation se compose de quatre parties principales :
les gestionnaire de tâches (ou des processus), de mémoire, de fichiers et de
périphériques d’entrée-sortie.
• Il possède également deux parties auxiliaires : le chargeur du système
d’exploitation et l’interpréteur de commandes.
56
Rappel sur les Systèmes d’Exploitation
Le gestionnaire des tâches :
Sur un système à temps partagé, l’une des parties les plus importantes du
système d’exploitation est le gestionnaire de tâches ou ordonnanceur (Sur
un système à un seul processeur, il divise le temps en laps de tps).
Le gestionnaire de la mémoire :
La mémoire est une ressource importante qui doit être gérée avec prudence.
56
Rappel sur les Systèmes d’Exploitation
56
Rappel sur les Systèmes d’Exploitation
L’interprêteur de commande :
Le système d’exploitation proprement dit est le code qui permet de définir les
appels système.
Les programmes système tels que les éditeurs de texte, les compilateurs, les
assembleurs, les éditeurs de liens et les interpréteurs de commandes ne font
pas partie du système d’exploitation. Cependant l’interpréteur de commandes
(shell en anglais) est souvent considéré comme en faisant partie.
En trouver un autre
Si aucun, un processus spécial est exécuté (idle ou
Processus inactif du système)
Quand un processus devient bloqué
attentes
Temps réel
Respecter les contraintes temporelles
Prédictibilité : l’ordonnanceur doit être prévisible
Certains de ces objectifs peuvent ne pas être maximisés
en même temps (voire contradictoires)
Débit et temps de réponse par exemple…
QUELQUES POLITIQUES D’ORDONNANCEMENT
Un seul processus peut être en exécution sur n’importe quel processeur à tout
moment. Toutefois, plusieurs processus peuvent être prêts et en attente
61
ETATS DES PROCESSUS
en attente
d’un événement
Bloqué
Terminologie
Init :
Le processus init a toujours ID = 1. Le processus init est lancé par le noyau
lui-même. Il ne dispose pas d'un processus parent
Kill :
Lorsqu'un processus s’arrête, il meurt. Si nous voulons qu’ un processus
s’arrête nous le tuons.
Daemon :
Processus qui sont lancés au démarrage du système, Ces processus ne sont
sous le contrôle d’aucun terminal et ont comme propriétaire
l’administrateur du système . Ils assurent des tâches d’ordre général,
Zombi :
Quand un processus est tué, mais il apparaît toujours sur le système, alors
le processus est appelé zombie. Vous ne pouvez pas tuer des zombies,
parce qu'ils sont déjà morts.
58
Terminologie
Temps partagé
Une exploitation dans laquelle plusieurs processus sont simultanément
en cours d’exécution. Cette simultanéité n’est qu’apparente.
Swapping (va-et-vient)
Consiste en la recopie sur disque d’un processus complet ou d’une
partie d’un processus ayant perdu le contrôle de l’unité centrale et ne
pouvant plus rester en mémoire centrale. La mémoire centrale ainsi
libérée est affectée à un processus plus prioritaire.
59
Classification des processus
Il est possible de distinguer deux types de processus : les processus
système
et les processus utilisateurs.
61
Création d’un processus
• Les processus des utilisateurs sont lancés par un interprèteur de
commande (shell). Ils peuvent eux même lancer ensuite d’autres
processus
P1
P2 P3
P4 P5 P6
Destruction d’un processus
• 3 possibilités pour l’arrêt d’un processus
• Normal : par lui même en ayant terminé ses opérations
• Autorisé : par son père qui exécute une commande appropriée
• Anormal : par le système
• temps d’exécution dépassé
• mémoire demandée non disponible
• instruction invalide
• etc.
fichiers ouverts
0 <- /dev/term/c4
signaux traités cmd1 1 -> /dev/term/c4
2 -> /dev/term/c4
3 <-> /tmp/toto
umask = 027
ulimit = 2048 /dev/term/c4 priorité = 20
temps = 0.3
Ce processus a le numéro 36. Il a été lancé par l’utilisateur qui a 106 pour UID.
Il est entrain d’exécuter le programme ‘cmd1’. Il a consommé 0.3 seconde, avec
une priorité de 20. Son masque de création est 027. Son terminal de contrôle
est /dev/term/c4. Son répertoire courant est /usr/c1. Il a 4 fichiers ouverts :
0, 1, 2, et 3.
Structure d’un processus Unix
• Le PPID est le PID du processus père
• Le processus fils hérite de tout l’environnement du processus père, sauf bien
sûr du PID, du PPID et des temps d’exécution
• Le père du processus 36 est le processus 27, et celui de 27 est le processus 1
• Seul le fils 36 a ouvert le fichier /tmp/toto
Père Fils
• Syntaxe : ps options
• Options :
• -a : affiche des renseignement sur tous les processus attachés à
un terminal
• -l : donne, pour chaque processus, le nom de l’utilisateur (user),
le pourcentage de cpu (%cpu), la taille totale du processus dans la
mémoire (size), la mémoire réservée (rss) en Ko …
• -x : affiche également des informations sur les processus non liés au
terminal
• -w : affiche sur 132 colonnes, utile pour voir le nom complet de la
commande associée à chaque processus
Les processus : la commande ps
Parmi les nombreuses options de cette commande, les options suivantes sont
particulièrement utiles :
• Top : Un autre outil populaire sur Linux est top. Il permet d’avoir les
processus selon cpu utilisation ou d'autres propriétés. Vous pouvez
également tuer les processus avec. Utiliser l’aide linux
pour avoir de l’aide sur top.
81
OPÉRATIONS SUR LES PROCESSUS
Créer : La commande fork
Tout processus est crée par un processus père Sous UNIX: fork est le seul
appel système qui crée un nouveau processus
• le processus père et le processus fils ont la même image
mémoire et les mêmes fichiers ouverts
• le processus fils dispose d’une copie de l’espace d’adressage de
son père
Exemple :
un Korn shell (ksh) est démarré et est remplacé par un
bash shell en utilisant la commande exec. Le PID du
shell bash est le même que le pid du Korn .
Quitter le shell bash enfant va me revenir vers le bash
père et non pas le Korn shell (qui n’existe plus).
Opération sur les processus Arrêt d’un
processus : kill
• La commande kill permet d’envoyer un signal au processus
• Syntaxes :
kill -signal pid
kill -l
• Options :
• -9 : demande l’arrêt du processus désigné par son pid
• -l : affiche la liste des signaux disponibles
% kill -l
1) HUP 2) INT 3) QUIT …
7) EMT 8) FPE 9) KILL …
% kill -9 1635
Cette commande tue le processus dont le numéro PID est 1635
Opération sur les processus : kill
61
Les commandes de gestion des PS
88
Opération sur les processus : les priorités
La commande nice
La commande nice permet de lancer une commande avec une priorité plus
faible, afin de permettre éventuellement à d’autres processus de tourner
plus rapidement.
Une valeur positive causera une baisse de priorité, une négative cause
l’augmentation de la priorité (si autorisé). La valeur doit être comprise
entre - 20 et 20. Plus la valeur est élevée et plus le traitement est ralenti.
89
EXERCICE
ENCHAÎNEMENTS CONDITIONNELS
90
EXÉCUTION D’UNE COMMANDE
Foreground
63
EXÉCUTION D’UNE COMMANDE
Background
Le lancement de commandes en arrière-plan permet de rendre
immédiatement le contrôle à l’utilisateur. Cette fonctionnalité est
intéressante pour des tâches ne nécessitant pas d’interaction entre
l’utilisateur et la tâche.
La commande est lancée suivie du caractère &. Son exécution peut être
surveillée par les commandes ps ou jobs.
64
Le Job control
Le Job contrôl est la capacité d’arrêter, de suspendre, de reprendre et de
mettre en arrière plan un processus encours d’exécution
Job en arrière-plan
La création d’un job en arrière-plan est réalisée par & qui lance une commande
en “background”
Exemple
$(find /usr type d print | sort >/tmp/toto &
[1] 2349
Les job créé dans cet exemple comporte deux processus. Le shell après la
commande rend la main et permet l’utilisation du shell en interactif.
La commande jobs -l permet de lister les jobs en cours.
jobs –p pour avoir les ID des processus lancés en arrière plan
91
Le Job control
Job suspendu