Vous êtes sur la page 1sur 56

Université sidi Mohamed Ben Abdellah

École Nationale des Sciences Appliquées

Théorie des Systèmes d’exploitation et


programmation Système

Prof. Abdellatif EZZOUHAIRI

Département Génie Électrique et Informatique

Automne 2019
Systèmes d’Exploitation

Chapitre1 : Généralités

Prof. Abdellatif EZZOUHAIRI


Département Génie Électrique et Informatique
Automne 2019
Système d’exploitation (1) ?

Automne 2019 Operating Systems / A. Ezzouhairi 3


Système d’exploitation (2) ?

Automne 2019 Operating Systems / A. Ezzouhairi 4


Système d’exploitation (3) ?

• fournit une base (machine virtuelle)


sur laquelle seront construits les
programmes d’application et les
utilitaires:
services = {appels système}
• Il contient des outils de gestion
utilisables par les applications, tels
que la manipulation de fichiers,
gestion d’impressions, date…

But ? Développer des applications sans se soucier des détails de fonctionnement et de


gestion du matériel, ou des interactions entre les applications.
Automne 2019 Operating Systems / A. Ezzouhairi 5
Système d’exploitation (4) ?
Rôles du systèmes d’exploitation

 Extension de la machine (virtualisation) ;

 Gestion des ressources ;

le SE doit gérer les ressources sur 2 dimensions :

Dans le temps :
1. CPU et plusieurs programmes concurrents ;
2. Le SE decide de la répartition de l’accès au CPU.
Dans l’espace :

1. Libération d’une partie des ressources ;


2. Gestion de la mémoire allouée.

Automne 2019 Operating Systems / A. Ezzouhairi 6


Architecture type

applications
APPLICATIONS
(jeux, outils bureautiques, …)

SYSTEME Interpréteur de commandes, compilateur, …


D’EXPLOITATION noyau

Langage machine
MATERIEL
Dispositifs physiques

Automne 2019 Operating Systems / A. Ezzouhairi 7


Différents types d’OS
Qu’est ce qu’on trouve dans le marché ?

Automne 2019 Operating Systems / A. Ezzouhairi 9


Faits marquants d’UNIX
Faits marquants de LINUX
Différence entre UNIX / Linux ?
Unix est un système d’exploitation multitâches et multi-utilisateur créé pour
“Mainframes” en 1969. C’est un OS généralement ouvert fondé sur une approche par
laquelle il offre de nombreux petits outils chacun dotés d’une mission spécifique.

Linux est un OS développé par Linus Torvalds pour fonctionner sur les architectures à
base du Processeur Intel 80386.
Linux ne contient pas de code provenant d’Unix, mais c’est un système inspiré d’Unix et
complètement réecrit.

Automne 2019 Operating Systems / A. Ezzouhairi 12


Composition d’un OS/SE
Composition d’un OS/SE
Le Noyau

Système de Fichiers

Pilotes / Drivers
Composition d’un OS/SE
Application Programming Interface (API)

Les Bibliothèques / Librairies

Interface Homme Machine (IHM)


Concepts de base
Fichier : ensemble de blocs/enregistrements de données
stockés sur le disque.

Processus : programme en cours d’exécution.

Mémoire virtuelle : espace d’adressage artificiel dont la


taille excède celle de la mémoire physique.

Dispositifs d’E/S : toutes sortes de périphériques.


Concepts de base (interface avec le matériel)
Concepts de base (interaction avec l‘utilisateur)
Concepts de base (interaction avec l‘utilisateur / système LINUX)
Systèmes d’Exploitation

Chapitre 2 : Processus
Sommaire du chapitre

- Introduction aux processus


* notion de programme
* exécution d’un programme
* notion de ressource

- Gestion des Processus

Automne 2019 Operating Systems / A. Ezzouhairi 21


Introduction
Principales caractéristiques d’un OS (UNIX / OS moderne)

Multi-tâches
Comment réaliser
Le Multi-tâche et
Le Multi-utilisateur ???
Multi-utilisateurs

Automne 2019 Operating Systems / A. Ezzouhairi 22


Gestion des processus
Processus ?

En simplifiant, on peut considérer un processus comme un


programme qui s’exécute et possède un compteur (pour indiquer à
quelle instruction il est rendu) des registres, des variables, une pile
d’exécution, un espace d’adressage, un pointeur vers les fichiers
ouverts et connexions réseaux. Son exécution est, en général, une
alternance de calculs effectués par le processeur et de requêtes
d’Entrée/Sortie effectuées par les périphériques.
Il s’agit d’un programme en cours d’exécution + un contexte

- Partage transparent des ressources


- Améliorer la performance des systèmes informatiques
Automne 2019 Operating Systems / A. Ezzouhairi 23
Gestion des processus
Plus précisément un processus est caractérisé par :
- Un numéro d’identification unique,
- Un espace d’adressage (code, données, piles d’exécution),
- Un état principal (prêt, en cours d’exécution (élu), bloqué…),
- Les valeurs des registres lors de la dernière suspension,
- Une priorité,
- Les ressources alloués : fichiers ouverts, mémoires, périphériques …),
- Les signaux à capturer, à masquer, à ignorer, en attente ainsi que les actions
associées,
- Autres informations indiquant, notamment, son processus père, ses processus fils,
son groupe,
ses variables d’environnement, les statistiques et les limites d’utilisation des
ressources…

Le SE maintient dans une table appelée ‘’ table des processus ’’ les informations sur
tous les processus crées (une entrée par processus : Bloc de Contrôle de Processus
PCB), Cette table permet au SE de localiser et gérer tous les processus

Automne 2019 Operating Systems / A. Ezzouhairi 24


Gestion des processus
Programme vs Processus
Programme
- Entité statique décrivant un traitement;
- Code situé sur disque (en langage source ou en langage machine)
- Un programme peut donner lieu à plusieurs processus possibles,
par exemple : un même programme peut être exécutés avec des données différentes

Processus ?
Entité dynamique réalisant un traitement

Code situé en mémoire centrale (en langage machine)

Un processus peut mettre en jeu plusieurs programmes

ex: un programme se terminant par le lancement d’un autre programme (recouvrement)

Automne 2019 Operating Systems / A. Ezzouhairi 25


Gestion des processus
États d’un processus ?

Exemple :

Automne 2019 Operating Systems / A. Ezzouhairi 26


Gestion des processus
Gestion de Processus sous UNIX
A chaque processus correspond une entrée dans la table des processus (process table)

Automne 2019 Operating Systems / A. Ezzouhairi 27


Gestion des processus
Gestion de Processus sous UNIX
Unix alloue 3 régions en mémoire pour chaque processus:
• une région pour le code exécutable (text segment),
• une région pour la pile (stack segment),
• une région pour les données (data segment).

Automne 2019 Operating Systems / A. Ezzouhairi 28


Gestion des processus
Changement de contexte
Une des principales raison pour justifier l’existence des blocs de contrôle des processus
est que dans un système multiprogrammé on a souvent besoin de redonner le contrôle
du CPU à un autre processus. Il faut donc mémoriser toutes les informations nécessaires
pour pouvoir éventuellement relancer le processus courant dans le même état.

Il est important de noter que le passage au mode kernel par un appel système n’implique pas
nécessairement un changement de contexte. On reste en général dans le même processus, sauf qu’on a
accès à des données et des instructions qui sont interdites en mode utilisateur.
Automne 2019 Operating Systems / A. Ezzouhairi 29
Gestion des processus
Exemple : les Démons / Daemons
Les démons / daemon (Disk And Execution MONitor) sont des processus particuliers.
Un démon s’exécute toujours en arrière-plan (background). Ceci implique que son père
n’attend pas la fin de son exécution. Les démons ne sont associés à aucun terminal ou
processus login d’un utilisateur. Ils sont toujours à l’écoute et attendent qu’un
événement se produise. Ils réalisent des tâches de manière périodique.
Exemple de processus Démons
- serveur Web qui attend qu'un client soumette une demande. Le serveur Web dort
en arrière-plan jusqu'au moment où un client se connecte et demande une page
Web.
- lpd (Line Printer Daemon), qui gère toutes les tâches d'impression sous Linux.

- Crond est un exemple de démon qui effectue une opération à intervalles spécifiés. Ce
démon programme les tâches des utilisateurs et des tâches associées au système. Lorsqu'un
utilisateur programme une tâche périodique (par exemple, le nettoyage du répertoire /tmp),
le démon se réveille à intervalles réguliers et lance les processus requis pour exécuter cette
tâche.

Automne 2019 Operating Systems / A. Ezzouhairi 30


Gestion des processus
Hiérarchie
Le système d’exploitation fournit un ensemble d’appels système qui permettent
la création, la destruction, la communication et la synchronisation des
processus.

• Les processus sont crées et détruits dynamiquement.

• Un processus peut créer un ou plusieurs processus qui, à leur tour, peuvent en


créer d’autres.

• Dans certains systèmes (MS-DOS), lorsqu’un processus crée un processus,


l’exécution du processus créateur est suspendue jusqu’à la terminaison du
processus créé (exécution séquentielle).

• Dans UNIX/Windows, les processus créateurs et créés s’exécutent en


concurrence et sont de même niveau (exécution asynchrone mais pas de
relation hiérarchique explicite gérée par le SE).

Automne 2019 Operating Systems / A. Ezzouhairi 31


Gestion des processus
Hiérarchie (UNIX)
• Au démmarage, le programme d’amorçage charge une partie du système d’exploitation à
partir du disque (disquette ou CD) pour lui donner le contrôle. Cette partie détermine les
caractéristiques du matériel, effectue un certain nombre d’initialisations et crée le processus 0.
• Le processus 0 réalise d’autres initialisations (ex. le système de fichier) puis crée deux
processus : init de PID 1 et Daemon (Disk And Execution MONitor) des pages de PID 2.
• Ensuite, d’autres processus sont crées à partir du processus init.

Automne 2019 Operating Systems / A. Ezzouhairi 32


Gestion des processus
Création, Communication et Synchronisation
Création

Communication

Synchronisation

Types de Processus

Automne 2019 Operating Systems / A. Ezzouhairi 33


Gestion des processus
Création
Sous Unix
Création de processus avec system()

Il y a une première façon de créer un sous-processus en Unix/Linux, en utilisant la


commande system(), de la bibliothèque standard de C <stdlib.h>.

Automne 2019 Operating Systems / A. Ezzouhairi 34


Gestion des processus
Création d’un processus sous UNIX / clônage (1)
• La création de processus sous UNIX est réalisée au moyen de l’appel
système : fork()
(c’est le seul moyen de créer des processus par duplication);

• L’appel système fork :


– associe un numéro d’identification (le PID du processus);
– ajoute puis initialise une entrée dans la table des
processus (PCB). Certaines entités comme les descripteurs de
fichiers ouverts, le répertoire de travail courant,la valeur
d’un mask, les limites des ressources sont copiées du processus
parent;
– duplique l’espace d’adressage du processus effectuant
l’appel à fork(pile+données);
– duplique la table des descripteurs....
Les deux processus père et fils
exécutent alors le même code.
Pb : Comment distinguer alors le
processus père du processus fils ?

Automne 2019 Operating Systems / A. Ezzouhairi 35


Gestion des processus
Création d’un processus sous UNIX / clônage (2)

On regarde alors la valeur de retour de fork(), qui peut être :

• La valeur de retour est :


– 0 pour le processus créé (fils).
– le PID du processus fils pour le processus créateur (père).
– négative si la création du processus a échoué (manque d’espace mémoire ou le
nombre maximal de créations autorisées est atteint).
• Au retour de la fonction fork, l’exécution des processus père et fils se poursuit, en temps
partagé, à partir de l’instruction qui suit fork.
• Le père et le fils ont chacun leur propre image mémoire mais ils partagent certaines
ressources telles que les fichiers ouverts par le père avant le fork.

Automne 2019 Operating Systems / A. Ezzouhairi 36


Gestion des processus
Exemple 1

Lequel des deux messages « printf » sera affiché en premier ?

Automne 2019 Operating Systems / A. Ezzouhairi 37


Gestion des processus

Automne 2019 Operating Systems / A. Ezzouhairi 38


Gestion des processus
Exemple 2

Valeur de a ???

Automne 2019 Operating Systems / A. Ezzouhairi 39


Gestion des processus
Exemple 2 / affichage

Automne 2019 Operating Systems / A. Ezzouhairi 40


Gestion des processus
Exemple 3

Automne 2019 Operating Systems / A. Ezzouhairi 41


Gestion des processus
Exécution de l’Exemple 3:

Automne 2019 Operating Systems / A. Ezzouhairi 42


Gestion des processus
Exécution de l’Exemple 3 sans l’appel sleep():

Automne 2019 Operating Systems / A. Ezzouhairi 43


Gestion des processus

Les appels système wait(), waitpid() et exit()

Automne 2019 Operating Systems / A. Ezzouhairi 44


Gestion des processus

Les appels système wait(), waitpid() et exit()

Automne 2019 Operating Systems / A. Ezzouhairi 45


Gestion des processus

La famille des appels système exec()

L’appel système exec permet de remplacer le programme en cours par un


autre programme sans changer de numéro de processus (PID).

Autrement dit, un programme peut se faire remplacer par un autre code


source ou un script shell en faisant appel à exec.

Automne 2019 Operating Systems / A. Ezzouhairi 46


Gestion des processus
La famille des appels système exec()
Exemple

Résultat

Automne 2019 Operating Systems / A. Ezzouhairi 47


Gestion des processus
La famille des appels système exec()

Automne 2019 Operating Systems / A. Ezzouhairi 48


Gestion des processus
Qu’est ce qu’un Processus Léger ?

Automne 2019 Operating Systems / A. Ezzouhairi 49


Gestion des processus
Pourquoi un processus léger

Automne 2019 Operating Systems / A. Ezzouhairi 50


Gestion des processus

Automne 2019 Operating Systems / A. Ezzouhairi 51


Gestion des processus
Processus monolithique

Automne 2019 Operating Systems / A. Ezzouhairi 52


Gestion des processus
Processus Multi-Threads

Automne 2019 Operating Systems / A. Ezzouhairi 53


Gestion des processus
Implémentation des Threads

Automne 2019 Operating Systems / A. Ezzouhairi 54


Gestion des processus
Sous Linux ?

Linux ne fait pas de distinction entre les processus et les threads. Un thread est un processus
qui partage un certain nombre de ressources avec le processus créateur : l’espace
d’adressage, les fichiers ouverts ou autres. Pour la gestion Posix de threads, Linux utilise la
bibliothèque pthread.

Automne 2019 Operating Systems / A. Ezzouhairi 55


Gestion des processus
Sous Linux ?

Automne 2019 Operating Systems / A. Ezzouhairi 56

Vous aimerez peut-être aussi