Vous êtes sur la page 1sur 31

Systèmes d’Exploitation et

Programmation
Concurrente
II-2-A
ENSI

Chiraz Houaidia
Chiraz.houaidia@ensi-uma.tn
II-2 : Systèmes d’Exploitation et Programmation Concurrente

Approche du cours:
Cours intégré (semestre 3) de 67,5 Heures (4H30/semaine)
Evaluation (ancienne!): 35% Contrôle Continu (CC) + 65% Examen
CC: 55%DS + 45% Note 2 (Participation + TPs)!

Ressources:
1. A. Silberschatz, & P. Glavin and G. Gagne. Operating Systems Concepts, 9th
edition, John Wiley & sons, inc. 2012 (ISBN-13: 978-1118063330).
2. A. Tanenbaum, & Herbert Bos, Modern Operating Systems, 4th edition, Pearson,
ISBN-13: 978-0133591620; (2014)
3. Introduction aux systèmes et aux réseaux (S. Krakowiak, Grenoble)
http://sardes.inrialpes.fr/~krakowia
4. Operating Systems and System Programming (B. Pfa, Stanford)
http://cs140.stanford.edu/

2/31
II-2 : Systèmes d’Exploitation et Programmation Concurrente

Objectifs
• Mieux comprendre les concepts et les mécanismes de base
d’un SE multitâches/multithreads
• Techniques et algorithmes de gestion des ressources
(processus, threads, mémoire centrale, …) …etc.
• Maîtriser les éléments de la programmation système 
Focaliser sur Unix/Linux et le multithread devient nécessaire
• Fork, wait, exec, pipe, ….
• pthread_create, pthread_mutex, sem_wait, …

Prérequis
Pratique du langage C et shell Unix

3/31
Plan du cours

1) Introduction aux systèmes d’exploitation


• Principe de base d’un SE
• Structuration des Ses

2) Gestion des Processus et des Threads


• Notion de ressource/processus/threads.
• Concurrence dans les Ses
• Commutation de contexte d’un processus
• Programmation système sous Unix (Programmation
multithreadée POSIX/java threads)

3) Ordonnancement (Scheduling)
• Notion de files d’attentes
• Politiques d’ordonnancement et comportement des
processus/threads
4/31
Plan du cours

4) Synchronisation et communication des


processus/threads –IPC
• Les mécanismes de synchronisation
• Verrous (mutex de Pthread), sémaphores, moniteurs,
passage par messages, les signaux Unix, les tubes Unix.

5) Gestion de la mémoire (physique + virtuelle)


• Concepts fondamentaux; allocation statique/dynamique;
politiques d’allocation

6) Interblocage (deadlock)
• Notion d’interblocage
• Solutions à l’interblocage (détection/guérison, prévention,
évitement)

5/31
Vous avez dit «Système d’exploitation» ?

User

Application

Operating System

Debian Hardware

6/31
Quelques définitions

Utilisateur= l’humain devant la machine


User
Applications
• suivant le contexte : utilisateur final, ou
développeur
• interagit directement... avec le matériel !

Applications= les logiciels avec lesquels Application


veut interagir l’utilisateur final
• messagerie, traitement de texte, lecteur de
musique, etc
Operating System
Matériel= la machine physique
Et donc :Operating System= tout le reste User
Hardware
• logiciel d’infrastructure : «noyau», «pilotes»,
«services», etc
• «entre le matériel et les applications»

7/31
Rôle de l’OS : les deux fonctions essentielles
et largement interdépendantes !

Machine virtuelle
• cacher la complexité sous une interface «plus jolie»
• fournir certains services de baseaux applications
• IHM, stockage persistant, accès internet, gestion du temps
• permettre la portabilité des programmes
• pouvoir lancer un même exécutable sur différents matériels

Gestionnaire de ressources
• Partager chaque ressource entre les applications
• Exploiter «au mieux» les ressources disponibles
• Assurer la protection des applications (et du système)

8/31
Interfaces d’un système d’exploitation
Notion d'interface (service)
• L'interface est l'ensemble des fonctions accessibles aux utilisateurs
du service
• Chaque fonction est définie par son format (syntaxe), sa
spécification (sémantique).
• Ces descriptions doivent être précises, complètes (y compris les cas
d'erreur), non ambiguës.
• Une interface permet l’accès à un service tel que :
• Exécution de programmes
• charger un programme en mémoire, le lancer, l’arrêter
• choisir quel programme est au premier-plan
• Exploration et administration des espaces de stockage
• naviguer dans les fichiers, copier, supprimer
• confort et ergonomie
• presse-papiers, drag-and-drop, corbeille

9/31
Interfaces d’un système d’exploitation

Au moins deux interfaces d’un SE:


 Appels systèmes (Systemcall): Interface programmable,
 Fonctions fournies par le SE aux applications utilisateurs
 Généralement accédée par des API (Application Programming
Interface) afin de comprendre les réponses des appels systèmes.
o Les 3 plus courantes : Win32 API, POSIX API et JAVA API
o Exp. en C: read (FD, &buffer, nbytes)
 Interface de commandes (textuelle–CLI ou graphique —GUI)
 CLI: rm *.ps
 GUI: déplacer l’icône du fichier vers la corbeille

10/31
Appels système : exemples

source : Silberschatz. Operating Systems Concepts Essentials (2011). p 59


11/31
Interfaces graphiques -GUI

Exemples : Gnome, bureau de Windows, Aqua (Mac OSX)...

12/31
et encore : le GUI tactile

Exemples : Android Launcher, Google Now, Facebook home...

13/31
Structure globale

14/31
Une Structure à niveaux

15/31
Positionnement de l’OS

Application 1 Application 2

O S Kernel

Hardware

Définition : Noyau ou kernel


Le noyau c’est la partie de l’OS qui n’est pas une application

16/31
Le noyau du système

 Monolithique: «Tout en un» seul morceau


 Plus facile à écrire
 Moins élégant que les micro-noyaux
 Micronoyaux: Client/serveur
 Plus difficile à écrire
 Plus résistants aux bugs (donc plus sûres)

17/31
Noyau monolythique

Un seul programme
 lourd et difficile à débugger
 Gâchis de mémoire (tout est chargé)
 Possibilité de modularité (Linux), exemple : Linux

18/31
Micronoyau

Noyau réduit au presque minimum (microkernel), le reste chargé en


serveurs
 Structure client/serveur
 Gère principalement l'ordonnancement et les transferts de
messages entre les programmes
 Les drivers et les applications s'exécutent en mode utilisateur
 Portable et facilement maintenable
 Exemples : Mach, Minix, L4, …etc.

19/31
Modes d’utilisation du système

 Deux modes d'exécution :


 Le mode superviseur (noyau, maître, …), mode privilégié qui
autorise notamment l’appel à des instructions interdites en mode
utilisateur (manipulation des interruptions).
 Ce mode assure la protection du système d’exploitation assisté par
le matériel

20/31
Modes d’utilisation du système

 Le passage du mode utilisateur vers le mode superviseur est soit


provoqué par un appel système, soit par une exception
(déroutement en cas d'opération illicite), soit par l’arrivée d’une
interruption
 Une interruption est provoquée par un signal provenant du monde
extérieur au processeur, et modifiant le comportement de celui-ci.
 Le passage entre les modes utilisateur/noyau s’accompagne de
commutations de contexte (sauvegarde du contexte utilisateur -
changement de mode d'exécution - restauration du contexte
utilisateur).

21/31
Différentes sources d’interruptions
• Minuteur système, ou System Timer
• interruptions périodiques, typiquement 100Hz ou 1000Hz
• permet à l’OS de percevoir le passage du temps
• bonus : permet au noyau de reprendre la main sur
les applications

• Périphériques d’entrées-sorties
• clavier, souris, disque, GPU, réseau, etc

• Pannes matérielles
• température excessive, coupure de courant, etc

• Évènements logiciels exceptionnels


• Erreurs fatales : division par zéro, instruction invalide, etc

22/31
Architecture d’une machine typique

CPU1 CPU2 CPU3

System bus

main
memory I/O bridge

I/O bus
USB disk network
controller controller adapter
U S B bus

network
disk
mouse keyboard

23/31
Applications = CPU en «mode restreint»
Rappel : le cycle de Von Neumann
C PU
while True do :
Charger une instruction depuis la «mémoire»
Décoder ses bits : quelle opération, quelles
memory opérandes, etc
Exécuter l’opération et enregistrer le résultat
repeat

Définition : restricted mode = slave mode = ring 3 = user mode


• Vue partielle de la machine : 1 CPU + 1 mémoire
• Certaines instructions interdites, certaines adresses interdites
• Utile pour exécuter sereinement du code applicatif
• instructions disponibles : opérations ALU, accès mémoire, sauts
ADD R1 <- R3, R4 WRITE [R8] <- R5 CALL 123456
24/31
Noyau = CPU en «mode superviseur»
CPU1 CPU2 CPU3

System bus

main
memory I/O bridge

I/O bus
USB disk network
controller controller adapter
U S B bus

network
disk
mouse keyboard

Définition : supervisor mode = ring 0 = kernel mode = privileged mode


• Accès direct au matériel : nécessaire pour le noyau et lesdrivers

• mode par défaut au démarrage de la machine (boot)

25/31
Exemple : lecture sur le disque 1/3
CPU1 CPU2 CPU3

System bus

main
memory I/O br idge

I/O bus
USB disk network
controller controller adapter
U S B bus

network
disk
mouse keyboard

Pour demander une opération au disque :


le CPU écrit commande + no de bloc + addr. mem destination
à l’addresse mémoire associée au contrôleur du disque
26/31
Exemple : lecture sur le disque 2/3
CPU1 CPU2 CPU3

System bus

main
memory I/O br idge

I/O bus
USB disk network
controller controller adapter
U S B bus

network
disk
mouse keyboard

Le contrôleur de disque lit le secteur demandé et transfère les


données directement en mémoire vive à l’adresse voulue : c’est
un transfert DMA(Direct Memory Access)
27/31
Exemple : lecture sur le disque 3/3 IRQ

CPU1 CPU2 CPU3

System bus

main
memory I/O br idge

I/O bus
USB disk network
controller controller adapter
U S B bus

network
disk
mouse keyboard

À la fin du transfert DMA, le contrôleur du périphérique notifie


le CPU en lui envoyant une Requête d’Interruption(IRQ)

28/31
Un processeur avec support des interruptions
Le cycle de Von Neumann avec interruptions
while True do :
Charger une instruction depuis la mémoire
Décoder ses bits : quelle opération, quelles opérandes, etc
Exécuter l’opération et enregistrer le résultat
If interruption demandée then :
Sauvegarder le contenu des registres
déterminer l’adresse de la routine de traitement
passer en mode superviseur
Sauter à la routine = écrire son adresse dans le compteur ordinal
endif
repeat

Note : à la fin de la routine de traitement, une instruction RETI


repassera le CPU en mode restreint.
29/31
Mécanisme d’interruptions : déroulement
Routine de
Programme traitement
principal d’interruption

charger dans P C
sauvegarder l’adresse de début
requête les registres
d’interruption de la routine

ISR: ...
...
...
...
... RETI

instruction
restauration ”retour
des registres d’interruption”

30/31
Mécanisme d’interruptions : vocabulaire
• IRQ = Interrupt Request
• un «message» envoyé par un périphérique vers le processeur de
façon asynchrone (vs polling, inefficace)
• chaque IRQ porte un numéro identifiant le périphérique d’origine
• ISR = Interrupt Service Routine
• un fragment de programme (= séquence d’instructions) exécuté à
chaque occurence de l’évènement matériel associé
• se termine toujours par une instruction RETI «retour d’interruption»
• pendant une ISR, il peut y avoir de nouvelles IRQ
temporairement mises en attente (permet au programmeur
d’être «seul au monde»)
• Table des Vecteurs d’Interruptions
• tableau de pointeurs indiquant l’adresse de chaque ISR
• le CPU utilise le numéro d’IRQ pour savoir où sauterDion : D

Définition : Noyau ou kernel


Le noyau c’est (exactement) l’ensemble des ISR de la machine et
de toutes les fonctions que celles-ci appellent
31/31

Vous aimerez peut-être aussi