Systèmes d'exploitation

239
Systèmes d’exploitation 1ère année du cycle d’ingénieurs Ecole Nationale des Sciences Appliquées de Kenitra A. EL Bourichi 1

description

Systèmes d'exploitation :•Chapitre 1: Introduction•Chapitre 2: Le système d’exploitation Linux•Chapitre 3: Gestion des processus•Chapitre 4: Gestion de la mémoire•Chapitre 5: Gestion de fichiers•Chapitre 6: Gestion des entrées/sorties•Chapitre 7: Interblocages

Transcript of Systèmes d'exploitation

Page 1: Systèmes d'exploitation

Systèmes d’exploitation

1ère année du cycle d’ingénieurs

Ecole Nationale des Sciences Appliquées de Kenitra

A. EL Bourichi 1

Page 2: Systèmes d'exploitation

Contenu du premier élément

• Chapitre 1: Introduction

• Chapitre 2: Le système d’exploitation Linux

• Chapitre 3: Gestion des processus

• Chapitre 4: Gestion de la mémoire

• Chapitre 5: Gestion de fichiers

• Chapitre 6: Gestion des entrées/sorties

• Chapitre 7: Interblocages

A. EL Bourichi 2

Page 3: Systèmes d'exploitation

Chapitre 1

Introduction

A. EL Bourichi 3

Page 4: Systèmes d'exploitation

Qu’est ce qu’un système d’exploitation?

Un ordinateur moderne est composé de:

• Un ou plusieurs processeurs

• Une mémoire principale

• Disques durs

• Imprimantes

• Périphériques divers d’entrée/sortie

Un système d’exploitation est un logiciel qui

permet de gérer tous ces composants

A. EL Bourichi 4

Page 5: Systèmes d'exploitation

Système d’exploitation

• Le système d'exploitation (SE, en anglais Operating System ou OS) est un ensemble de programmes servant d’interface entre les ressources matérielles d'un ordinateur et les applications de l'utilisateur (traitement de texte, compilateurs, navigateurs web …)

5 A. EL Bourichi

Page 6: Systèmes d'exploitation

Qu’est ce qu’un système d’exploitation?

Figure 1-1. Place du système d’exploitation

A. EL Bourichi 6

Page 7: Systèmes d'exploitation

Le concept d’abstraction

Figure 1-2. Un système d’exploitation donne une belle image à

une réalité complexe et hideuse A. EL Bourichi 7

Page 8: Systèmes d'exploitation

Rôles du SE

Le maître d’orchestre: essentiel pour utiliser les ressources de la machine – gestion de la mémoire centrale

– gestion des processeurs: diviser le temps de calcul entre plusieurs programmes qui s’exécutent simultanément

– gestion des périphériques: E/S

– gestion des fichiers: sur les mémoires de masses

– gestion des ressources: attribution des ressources nécessaires

– gestion des utilisateurs: pas d’interférence entre eux

8 A. EL Bourichi

Page 9: Systèmes d'exploitation

Noyau (kernel)

Le noyau assure ces fonctionnalités : – gestion des périphériques (au moyen de pilotes)

– gestion des files d'exécution (aussi nommée processus) : • attribution de la mémoire à chaque processus

• ordonnancement des processus (répartition du temps d'exécution sur le ou les processeurs)

• synchronisation et communication entre processus (services de synchronisation, d'échange de messages, mise en commun de segments de mémoire, etc.)

– gestion des fichiers (au moyen de systèmes de fichiers)

– gestion des protocoles réseau (TCP/IP, .. etc.)

9 A. EL Bourichi

Page 10: Systèmes d'exploitation

Noyau • Au lancement:

– Boot: le programme qui initialise l’ordinateur

– Permet aux premiers services d’accéder aux applications système : gestion de la mémoire, accès aux disques durs et accès aux périphériques

• Mémoire centrale (vive): répartition

– Partie réservée pour le système

– Partie réservée pour les applications

• Assure une indépendance entre les applications et le matériel

10 A. EL Bourichi

Page 11: Systèmes d'exploitation

Les bibliothèques dynamiques

• = Libraries

• Regroupent les opérations souvent utilisées, selon les fonctionnalités (E/S, fichier, …)

• Ces opérations sont disponibles pour être appelées et exécutées par d’autres programmes

11 A. EL Bourichi

Page 12: Systèmes d'exploitation

Le système de fichiers

• Un système de fichiers est une structure de données permettant de stocker les informations et de les organiser dans des fichiers sur des mémoires secondaires (disque dur, CD-ROM …) – E.g. une structure hiérarchique – C:\ensa\ginfo\bourichi\SE\polycopie.pdf

• Une telle gestion des fichiers permet de traiter, de conserver des quantités importantes de données ainsi que de les partager entre plusieurs programmes informatiques

• Il offre à l'utilisateur une vue abstraite sur ces données et permet de les localiser à partir d'un chemin d'accès

12 A. EL Bourichi

Page 13: Systèmes d'exploitation

Interface utilisateur

• Via ligne de commande

– shell, MSDos

• Interface graphique

– Xterm, Linux, Windows, Macintosh

– GUI (Graphical User Interface)

13 A. EL Bourichi

Page 14: Systèmes d'exploitation

Shell

• Shell (coquille par opposition au noyau) = L'interpréteur de commandes permettant la communication avec le SE par l'intermédiaire d'un langage de commandes

• Permet à l'utilisateur de piloter les périphériques en ignorant tout des caractéristiques du matériel qu'il utilise, de la gestion des adresses physiques, etc.

• E.g. sur Unix/Linux: bash, csh, tcsh, … – ls : lister les répertoires et les fichiers du répertoire courant

– mv x y : changer le nom du fichier/répertoire « x » en « y »

14 A. EL Bourichi

Page 15: Systèmes d'exploitation

Chapitre 2 L’interface utilisateur du système

Linux

15 A. EL Bourichi

Page 16: Systèmes d'exploitation

Historique

• 1969: Ken Thompson (Bell labs / MIT).

• 1973: écriture en C -> système portable

• 1974-1977: Distribution aux universités

• Apparitions des UNIX propriétaires

AIX (IBM), HP-UX

• 1991 : Linus Torvalds (étudiant finlandais de 21 ans) écrit LINUX (noyau d’UNIX pour PC) basé sur Minix (développé par Andrew Tanenbaum)

A. EL Bourichi

Page 17: Systèmes d'exploitation

Linux

• Propriétés – multi-tâches

– multi-utilisateurs

– Libre et gratuit

• Ouverture/Fermeture d’une session – Travailler sous Linux implique une connexion au système

– Login: • Identification de l’utilisateur: login + mot-de-passe

• droits accordés par le super-utilisateur (root)

– Logout: • commande “logout” dans la console

A. EL Bourichi

Page 18: Systèmes d'exploitation

Répertoire de connexion

• A chaque utilisateur connu du système est associé un répertoire de connexion (home directory).

• Le répertoire de connexion contient aussi certains fichiers de configuration permettant à l'utilisateur de personnaliser son environnement de travail. Ces fichiers sont normalement invisibles (car leur nom commence par un point, voir la commande ls).

• A tout moment, on peut revenir au répertoire de connexion grâce à la commande cd.

A. EL Bourichi

Page 19: Systèmes d'exploitation

Initiation au shell

• Le Shell = interpréteur de commandes – interface utilisateur “de base” (interlocuteur avec le syst.)

– interprétation ligne à ligne

– plusieurs shells: sh, csh, tcsh, bash, ksh, zsh, ...

– langage de programmation

• shell par défaut : bash

A. EL Bourichi

Page 20: Systèmes d'exploitation

Initiation au shell - commandes -

• Format des commandes:

commande [-option(s)] [argument(s)]

Respecter la casse

et les espaces!!

A. EL Bourichi

Page 21: Systèmes d'exploitation

Exécution d’une commande

• Lorsqu’il a la main, un utilisateur peut lancer l’exécution

d’une commande en tapant son nom après le prompt. La commande est alors exécutée.

• Il existe une variable d’environnement: PATH qui contient l’ensemble des chemins des répertoires contenant les commandes les plus utilisées.

• # echo $PATH /bin:/usr/ucb:/usr/bin:/usr/bin/X11:/net/bin:/net/X/bin:/net/pack/frame/ bin

• Cette variable contient tous les chemins où le système peut

trouver les commandes les plus utilisées par le demandeur.

A. EL Bourichi

Page 22: Systèmes d'exploitation

Initiation au shell - méta caractères -

• Caractères spéciaux:

! ^ * ? [] \ ;

• L'astérisque ou étoile: *

– interprété comme toute suite de caractères alphanumériques

– utiliser avec précaution (commande rm par ex...)

• Le point d’interrogation: ?

– remplace 1 seul caractère alphanumérique

A. EL Bourichi

Page 23: Systèmes d'exploitation

Les commandes : file et cat

• file nom_de_fichier : il est possible sous Unix de connaître aussi le

type de fichier sur lequel on travaille.

• Utilisation: – file exo.c affiche toto.c: c program text

• cat [-v] [fichier...] : affichage du contenu d’un fichier

• L’option -v permet d’afficher les caractères non visibles.

• La commande cat permet aussi de concaténer des fichiers:

• cat fichier1 fichier2 > fichier3 cette opération permet de créer un fichier (fichier3) en concaténant les fichiers fichier1 et fichier2. Le seul inconvénient de cet outil est qu’il affiche le contenu du fichier dans sa totalité (sans possibilité simple de contrôler le défilement par pages).

A. EL Bourichi

Page 24: Systèmes d'exploitation

Commandes d’observation du système

• who [am i]: affiche le nom de l’utilisateur, le nom du terminal, la date et l’heure de

connexion et l’écran de «contrôle» de chaque utilisateur actuellement sur le système.

• id : affiche les numéros et les noms de l’utilisateur et des groupes de travail auxquels il appartient.

• groups [utilisateur] : affiche la liste des groupes de travail auxquels appartient un utilisateur X. Si aucun utilisateur n’est spécifié ceux sont les groupes auxquels appartient l’utilisateur qui a tapé la commande qui s’affichent.

• finger [utilisateur][@machine]: permet d’avoir des informations informelles sur les utilisateurs d’une machine précisée. Si aucun utilisateur n’est spécifié, les informations concernent tous les utilisateurs connectés. Si aucun nom de machine n’est renseigné, les données portent sur la machine sur laquelle l’utilisateur qui tape la commande est connecté.

• last [-n] [utilisateur] [terminal]: permet d’afficher les dernières connexions au système. On peut limiter le nombre de lignes renvoyées grâce à l’option -n (où n désigne le nombre de lignes affichées). On peut se limiter aussi aux connexions d’un utilisateur ou aux connexions depuis un terminal.

A. EL Bourichi

Page 25: Systèmes d'exploitation

La commande ps

• On peut visualiser les processus qui tournent sur une machine avec la commande : ps (options), les options les plus intéressantes sont -e (affichage de tous les processus) et -f (affichage détaillée).

• La signification des différentes colonnes est la suivante: – UID nom de l'utilisateur qui a lancé le process

– PID correspond au numéro du process

– PPID correspond au numéro du process parent

– C au facteur de priorité : plus la valeur est grande, plus le processus est prioritaire

– STIME correspond à l'heure de lancement du processus

– TTY correspond au nom du terminal

– TIME correspond à la durée de traitement du processus

– COMMAND correspond au nom du processus.

A. EL Bourichi

Page 26: Systèmes d'exploitation

Les entrées et les sorties

• Il y a trois sortes d'entrées sorties ou flux de données :

– le premier est l'entrée standard, c'est à dire ce que vous saisissez au

clavier,

– le deuxième est la sortie standard, c'est à dire l'écran, plus précisément le shell,

– et le troisième est la sortie standard des messages d'erreurs consécutifs à une commande, qui est généralement l'écran.

• Chacun de ces flux de données est identifié par un numéro descripteur, 0 pour l'entrée standard, 1 pour la sortie standard et 2 pour la sortie standard des messages d'erreur.

A. EL Bourichi

Page 27: Systèmes d'exploitation

Redirections d ’E/S (1/5)

• Redirection de la sortie standard:

– Syntaxe: $ Commande > fichier.

– Exemple :

• $ who > connect

• On retrouve dans le fichier connect la liste des

personnes connectés.

A. EL Bourichi

Page 28: Systèmes d'exploitation

Redirections d ’E/S (2/5)

• Redirection de la sortie standard:

– Remarque:

• Pour éviter d’écraser le contenu d’un fichier suite à une

redirection de la sortie, on peut utiliser la redirection

avec ajout. Dans ce cas le résultat de la commande sera

inséré à la fin du fichier.

– Syntaxe: $ Commande >> fichier.

– Exemple: $ date >> connect

A. EL Bourichi

Page 29: Systèmes d'exploitation

Redirections d ’E/S (3/5)

• Redirection de l’Entrée standard:

– Un fichier peut servir comme entrée standard à une

commande :

– Le fichier source contient les arguments de la commande.

– Syntaxe : $ Commande < fichier_source

– Exemple :

• $ wc -l < connect

• Permet de compter le nombre de lignes dans le fichier connect.

A. EL Bourichi

Page 30: Systèmes d'exploitation

Redirections d ’E/S (4/5)

• Redirection de la sortie erreur standard :

– Chaque programme est doté d’un canal de sortie d’erreur

séparé dont le descripteur de fichier égal à 2.

– Exemple: $ cc programme.c 2>erreurs.

– Les erreurs de compilation du fichier programme.c seront

redirigées vers le fichier erreurs.

– On peut utiliser également le fichier /dev/null pour la

redirection de la sortie erreur.

A. EL Bourichi

Page 31: Systèmes d'exploitation

Redirections d ’E/S (5/5)

• Redirections :

- < : redirige l’entrée à partir d’un fichier

Ex. cat < toto

- > : redirige la sortie vers un fichier

Ex. ls > dir.txt

- >> concatène la sortie avec un fichier

Ex. ls >> dir.txt

- 2> (ou >&*) redirige les erreurs vers un fichier

Ex. rm * 2> erreur.log

- 2>> (ou >>&*) concatène les erreurs avec un fichier

Ex. rm * 2>> erreur.log

A. EL Bourichi

Page 32: Systèmes d'exploitation

Les tubes de communication 1/5

• Définition:

– Lier les entrées et les sorties de plusieurs commandes dans une même ligne de commande.

• Syntaxe: $ Commande1 | Commande2

• Le résultat de la commande1 sera considéré comme argument pour la commande2.

• |: indique un tube.

A. EL Bourichi

Page 33: Systèmes d'exploitation

Les tubes de communication 2/5

• Exemple:

$ ls | grep ensak | tee fichier1 | wc -l.

1 2 3 4 – 1: Liste des fichiers dans le répertoire courant

– 2: Recherche des noms de fichiers qui contiennent la chaîne de

caractères poème.

– 3: Met le résultat de la commande précédente dans fichier1

– 4: compte le nombre de lignes ramenés par grep.

A. EL Bourichi

Page 34: Systèmes d'exploitation

Les tubes de communication 3/5

• Exemple: $ who | wc - l (**)

$who : liste de personnes connectés au système.

$wc -l nom_fichier :Compte le nombre de lignes de

nom_fichier.

La commande (**) permet de compter le nombre de

personnes connectés, elle est équivalente à la ligne de

commande suivante:

$ who>tmp ; wc -l tmp ; rm tmp

A. EL Bourichi

Page 35: Systèmes d'exploitation

Les tubes de communication 4/5

• La commande tee :

– En utilisant des filtres le résultat de la commande

commande1 n’est pas visualisé à l’écran, pour pouvoir le

visualiser on utilisera des tuyaux : commande tee.

– Syntaxe:

• $ commande1 | tee fichier1 | commande2

– Redirige le résultat intermédiaire de commande1 vers

fichier1. Ce même résultat sera traité par la commande

commande2.

A. EL Bourichi

Page 36: Systèmes d'exploitation

Les tubes de communication 5/5

• La commande tee:

– Exemple:

$ ls | grep poème | tee fichier1 | wc -l.

1 2 3 4

• 1: Liste des fichiers dans le répertoire courant

• 2: Recherche des noms de fichiers qui contiennent la chaîne de

caractères poème.

• 3: Met le résultat de la commande précédente dans fichier1

• 4: compte le nombre de lignes ramenés par grep.

A. EL Bourichi

Page 37: Systèmes d'exploitation

Le système de fichiers Linux

• Stocke les données:

– Structure arborescente

– TOUT est fichier

• 3 types de fichiers:

– fichiers ordinaires

– répertoires

– fichiers spéciaux (périph., …)

A. EL Bourichi

Page 38: Systèmes d'exploitation

L’arborescence

A. EL Bourichi

Page 39: Systèmes d'exploitation

L’arborescence

répertoire racine

le répertoire de login: ~

le répertoire courant: .

le répertoire supérieur: ..

connaître le rép. courant: pwd

lister le contenu: ls (voir “man ls”)

/

bin tmp home

ensak

docs cours .cshrc

tp1.txt

chemin d’accès au fichier tp1.tex:

/home/ensak/cours/tp1.txt

ou bien: ~/cours/tp1.txt

A. EL Bourichi

Page 40: Systèmes d'exploitation

chemin relatif

chemin absolu

L’arborescence

/

home tmp

ensak

.cshrc cours docs

tp1.txt

pwd retourne: /home/ensak/cours

répertoire courant

Test

se déplacer: cd

[/home/ ensak/cours]$ cd ..

[/home/ ensak]$

[/home/ ensak]$ cd /tmp

[/tmp]$

créer un répertoire: mkdir [/tmp]$ mkdir Test

supprimer un répertoire: rmdir [/tmp]$ rmdir Test

A. EL Bourichi

Page 41: Systèmes d'exploitation

Les droits d’accès 1/3

• Accès aux fichiers réglementé (sauf: tous les droits pour root)

• 3 types d’utilisateurs: – propriétaire (user)

– personnes du mm groupe (group)

– les autres (others)

• 3 types de permissions – lecture (r)

– écriture (w)

– exécution (x)

afficher le contenu

modifier

exécuter

fichier

afficher le contenu

créer/supp fichiers

traverser

répertoire A. EL Bourichi

Page 42: Systèmes d'exploitation

Les droits d’accès 2/3

• Affichage des caractéristiques: ls -l

-rw-r--r-- 1 adil ginfo 58K 16 Feb 09:19 tp1.txt

groupe

nb liens propriétaire taille date nom

-rw-r--r--

type

user others

group

A. EL Bourichi

Page 43: Systèmes d'exploitation

Les droits d’accès 3/3

• Changer les permissions: chmod chmod <classe op perm, …>|nnn <fic>

– classe: u : user g : group o : others a : all

– op: = : affectation - : suppr. + : ajout

– perm: r : lecture w : écriture x : exécution

chaque perm = 1 valeur:

déf. des permissions (par addition) pour chaque classe

r 4

w 2

x 1

rien 0

Exemples:

chmod u=rwx,g=rx,o=r tp1.txt

chmod a+x script.sh

chmod 755 script.sh

A. EL Bourichi

Page 44: Systèmes d'exploitation

Droits d’accès par défaut

• Chaque fichier ou répertoire nouvellement créé est équipé de

droits d’accès par défaut :

- Pour un répertoire 777 rwxrwxrwx

- Pour un fichier 666 rw-rw-rw-

• La commande umask

-Syntaxe : $ umask [code]

A. EL Bourichi

Page 45: Systèmes d'exploitation

Changement de propriétaire

• Commande chown

-Syntaxe: $ Chown utilisateur fichier 1 [fichier2]

• Commande chogrp

- Syntaxe: $ Chogrp group fichier 1 [fichier2]

A. EL Bourichi

Page 46: Systèmes d'exploitation

Manipulation des fichiers

• Manipulation des fichiers

– copier : cp fic1 fic2

– déplacer/renommer : mv fic1 fic2

– effacer : rm fic

– afficher le contenu : cat fic

– trier le contenu : sort fic

Voir les pages du “man” !!

A. EL Bourichi

Page 47: Systèmes d'exploitation

La commande find

• Permet de chercher dans un répertoire et ses sous-répertoires des fichiers présentant certaines caractéristiques.

• Syntaxe: find chemin expression

• Principales options: – -name fich: recherche le fichier fich.

– -print: écrit le nom du fichier.

– -type: d: répertoire, f: fichier symbolique.

– -exec: permet l’exécution d’une commande sur le fichier représenté par {}.

A. EL Bourichi

Page 48: Systèmes d'exploitation

Exemple

• Rechercher tous les fichiers nommés hello.txt à partir du répertoire racine.

find / -name hello.txt -print.

• Afficher tous les fichiers .h à partir du répertoire courant.

find . -name ’*.h’ -print

• Affiche à l’écran le contenu de tous les fichiers .c.

find . -name ’*.c’ -exec cat ’{}’ \;

A. EL Bourichi

Page 49: Systèmes d'exploitation

La commande grep

• Permet de rechercher un certain motif dans un fichier.

• Le motif est décrit par une expression régulière.

• grep [option] motif fichier Affiche les lignes de fichier qui contiennent le motif motif.

• -l: n’affiche que le nom des fichiers.

• Exemple: – grep ’define’ stdio.h: recherche le mot "define" dans le fichier stdio.h.

– grep ’hello’ *: recherche le mot "hello" dans tous les fichiers du répertoire.

A. EL Bourichi

Page 50: Systèmes d'exploitation

La programmation shell

50 A. EL Bourichi

Page 51: Systèmes d'exploitation

Introduction

• Plus qu'une invite de commande

• Langage de programmation

• Interprété – Non compilé

– Traduit au fur et a mesure de son exécution

• Permet: – L'encapsulation de suites de commandes dans un même programme

– Simplification de certaines tâches quotidiennes ou répétitives

A. EL Bourichi

Page 52: Systèmes d'exploitation

Le shell - Généralités (1) • shell : interpréteurs de langage de commande

– programme exécutable

– interface «directe» entre le système et l’utilisateur

Machine UNIX

Application

Application

Application

shell

52 A. EL Bourichi

Page 53: Systèmes d'exploitation

Le shell - Variables (1)

• Utilisation d’une variable $ VARIABLE=200 affectation SANS ESPACE $ echo $VARIABLE

200

$ VARIABLE=VARIABLE+10

$ echo $VARIABLE

VARIABLE+10

$ VARIABLE=200

$ VARIABLE=$VARIABLE+10

$ echo $VARIABLE

200+10

$ let VARIABLE=$VARIABLE

$ echo $VARIABLE

210

$ let VARIABLE=$VARIABLE+10

$ echo $VARIABLE

220

53 A. EL Bourichi

Page 54: Systèmes d'exploitation

Le shell - Variables (2)

• Variables locales au shell La commande set Liste les variables locales au shell

• Variables d’environnement (ou exportées)

– connues dans les processus lancés par le shell La commande env Liste les variables d’environnement

54 A. EL Bourichi

Page 55: Systèmes d'exploitation

Le shell - Délimiteurs de chaînes Le caractère ’ (simple quote) Tous les caractères entre simple quotes perdent leur aspect spécial. $ echo ’$PWD’

$PWD

Le caractère " (double quote) Les caractères $, \, ’ et ‘ gardent leur rôle de méta-caractères. $ echo "Mon repertoire courant : \"$PWD\""

Mon repertoire courant : "/home/omip/info/wattez"

Le caractère ` (anti quote) Une chaîne entre anti quotes est interprétée comme une commande. $ echo "Mon repertoire courant : \"`pwd`\""

Mon repertoire courant : "/home/omip/info/wattez"

55 A. EL Bourichi

Page 56: Systèmes d'exploitation

Écriture du script

• Un script est un fichier texte dont la première ligne contient le

chemin du Shell par lequel il doit être exécuté

• Fichier script.bash :

• Le nom du fichier n'a pas d'importance, par contre, il doit être

exécutable :

A. EL Bourichi

Page 57: Systèmes d'exploitation

Écriture du script - Premier Script -

• L'exécution se fait en tapant le nom du fichier comme l'appel

d'une commande. Par contre :

– Si l'on est pas dans le répertoire dans lequel est le fichier, Il faut donner le

chemin absolue

– Même si l'on est dans le même répertoire, suivant la configuration de

l'environnement, il faut parfois précéder le nom du fichier de ./

A. EL Bourichi

Page 58: Systèmes d'exploitation

Lecture de l'Entrée Standard

A. EL Bourichi

Page 59: Systèmes d'exploitation

Le shell - Paramètres • Variables concernant les paramètres * liste des paramètres de la commande # nombre de paramètres de la commande 0 nom de la commande 1, ... n valeur des paramètres 1, ... n script shell testParam echo "nombre de parametres $#"

echo "nom de la commande $0"

echo "valeur des parametres 1 et 2 $1 $2"

echo "fin du test"

$ testParam aa bbb cccc

nombre de parametres 3

nom de la commande ./testParam

valeur des parametres 1 et 2 aa bbb

fin du test

$

59 A. EL Bourichi

Page 60: Systèmes d'exploitation

La commande test

• Sert à vérifier des conditions.

• Ces conditions portent sur des fichiers (le plus

souvent), ou des chaînes ou une expression

numérique

• Syntaxe:

– test expression

– [ expression ] attention aux espaces autour de expression

A. EL Bourichi

Page 61: Systèmes d'exploitation

Structures de Contrôle - IF -

• Tests sur les fichiers

– Existence : -e

– Répertoire : -d

– Fichier : -f

– Non vide : -s

– Lisible : -r

– Modifiable : -w

– Exécutable :-x

A. EL Bourichi

Page 62: Systèmes d'exploitation

Structures de Contrôle - IF -

• Comparaison d'entiers

–Egalité : -eq

x = y : [ x -eq y ]

– Inégalité : -ne

x # y : [ x -ne y ]

– Supériorité : -gt

x > y : [ x -gt y ]

– Infériorité : -lt

x < y : [ x -lt y ]

A. EL Bourichi

Page 63: Systèmes d'exploitation

Structures de Contrôle - IF -

• Tester une chaîne

A. EL Bourichi

Page 64: Systèmes d'exploitation

Structures de Contrôle - IF -

• Tester un nombre

A. EL Bourichi

Page 65: Systèmes d'exploitation

Structures de Contrôle - IF -

• Opérations dans une commande test

A. EL Bourichi

Page 66: Systèmes d'exploitation

Structures de Contrôle - IF -

A. EL Bourichi

Page 67: Systèmes d'exploitation

Structures de contrôle - CASE -

Le choix case chaine in

motif1) commande1;;

motif2) commande2;;

...

*) commanden;;

esac

script shell testCase case $1 in

[aeiouy]*) echo "Commence par une voyelle";;

[A-Z]*) echo "Commence par une majuscule";;

???) echo "longueur 3"

ls;;

*) echo "Autres cas !!!";;

esac

$ testCase yes

Commence par une voyelle (l’ordre est important !!!) 67 A. EL Bourichi

Page 68: Systèmes d'exploitation

Structures de Contrôle - FOR -

L’itérative bornée (première forme) for variable in mot1 mot2 ... motn

do

commande

done

script shell testFor for VAR in les sanglots longs

do

echo "Valeur de VAR : $VAR"

done

$testFor

Valeur de VAR : les

Valeur de VAR : sanglots

Valeur de VAR : longs

$ 68 A. EL Bourichi

Page 69: Systèmes d'exploitation

Structures de Contrôle - FOR -

L’itérative bornée (seconde forme) for variable

do

commande

done

Dans ce cas, variable prend pour valeurs successives chacun des paramètres du script

script shell testFor2 for VAR

do

echo "Valeur de VAR : $VAR"

done

$testFor2 je fais souvent

Valeur de VAR : je

Valeur de VAR : fais

Valeur de VAR : souvent

$ 69 A. EL Bourichi

Page 70: Systèmes d'exploitation

Structures de Contrôle - WHILE -

L’itérative non bornée while commande1

do commande2

done

until commande1

do commande2

done

commande2 peut ne pas être effectuée, aussi bien dans la forme while que dans la forme until.

70 A. EL Bourichi

Page 71: Systèmes d'exploitation

Arithmétique et Booléens -Opérateurs-

• Opérateurs arithmétiques

– Addition : +

– Soustraction : –

– Multiplication : *

– Division : /

– Modulo : %

• Opérateurs booléens

– Et : &&

– Ou : ||

– Non : !

A. EL Bourichi

Page 72: Systèmes d'exploitation

Passage d'Arguments

– Les paramètres sont passés sur la ligne d'appel du script,

comme fait pour les commandes

– Les paramètres sont accessibles sous forme de variables

portant le numéro du paramètre, $1, $2 et $3 dénotent

respectivement les paramètres 1, 2 et 3 passés au script

– La variable $# contient le nombre de paramètres passés au

script

– La variable $* contient l'ensemble des paramètres sous

forme de liste

– La variable $0 contient le nom du script

A. EL Bourichi

Page 73: Systèmes d'exploitation

Chapitre 3 Gestion des Processus

73 A. EL Bourichi

Page 74: Systèmes d'exploitation

Gestion de Processus

• Un processus est un programme en exécution – Un processus a besoin de certaines ressources;

CPU, mémoire, fichiers, les périphériques d’E/S, … pour accomplir sa tâche

• L’OS est responsable des activités suivantes en relation avec la gestion des processus – Création et suppression de processus – Suspension et relance du processus – Mécanismes pour:

• Synchronisation entre processus • Communication entre processus • Traitement des interblocages

74 A. EL Bourichi

Page 75: Systèmes d'exploitation

Notion de processus

• Définition – Un processus est un programme en cours d’exécution auquel est associé

un environnement processeur (CO, PSW, RSP, registres généraux) et un environnement mémoire appelés contexte du processus.

– Un processus est l’instance dynamique d’un programme et incarne le fil d’exécution de celui-ci dans un espace d'adressage protégé(objets propres : ensemble des instructions et données accessibles)

– Un programme réentrant est un programme pour lequel il peut exister plusieurs processus en même temps.

A. EL Bourichi

Page 76: Systèmes d'exploitation

76

Processus • Systèmes monoprocesseurs: pseudo-parallélisme

• Multiprogrammation: basculement entre processus

• Un processus possède:

- son propre espace d’adressage: programme, données…

- Une entrée dans la Table des Processus: sert pour la reprise après suspension

• Un processus est créé par un autre processus, le processus parent.

– UNIX: fork –création d’un clone et execve –modifier l’image du processus

– Windows: CreateProcess

• Processus

– Démons (daemon) ou en arrière-plan, exemples: courriers électroniques, pages web…

– Premier-plan

• Voir la liste des processus:

– Ctrl+alt+del sur Windows

– ps sur UNIX

A. EL Bourichi

Page 77: Systèmes d'exploitation

77

Les Appels Systèmes

• L’interface entre le SE et les programmes utilisateurs est définie par l’ensemble des appels systèmes.

• L’appel système est analogue a un appel procédural classique, mais il est effectué en mode noyau.

• Code en assembleur

A. EL Bourichi

Page 78: Systèmes d'exploitation

78

… Appels Systèmes POSIX

• Gestion des Processus

– fork, execve, exit…

• Gestion des Fichiers

– open, close, read, write, stat…

• Gestion des Répertoires

– mkdir,rmdir,link …

A. EL Bourichi

Page 79: Systèmes d'exploitation

79

… Processus • Fin de Processus

– Volontaire: arrêt normal (Unix: exit, Windows: ExitProcess) ou arrêt pour erreur (le fichier à compiler n’existe pas)

– Involontaire: arrêt pour erreur fatale (division par 0) ou arrêté par un autre processus (Unix: kill, Windows: TerminateProcess)

• Hiérarchie de Processus – Existe sous UNIX, arborescence de parent-enfants, un processus peut

créer un autre processus par l’appel système fork

– N’existe pas sous Windows, CreateProcess retourne un HANDLE utilisé pour contrôler le processus

• Implémentation de Processus – Un processus possède son propre espace d’adressage: programme,

données, pile.

– Le changement de contexte (changement de processus) Table de processus, avec une entrée/ processus contenant registres, identificateur, ptr vers le segment texte, ptr vers segment de données, ptr vers le segment de pile, état …

A. EL Bourichi

Page 80: Systèmes d'exploitation

80

Etats de Processus

Elu (En cours d’exécution)

Bloqué Prêt

1- Le processus est bloqué, en attente d’une donnée, événement

2- L’ordonnanceur choisit un autre processus

3- L’ordonnanceur choisit ce processus

4- La donnée devient disponible

(1) (2)

(3)

(4)

A. EL Bourichi

Page 81: Systèmes d'exploitation

81

Terminaison de processus

• Un processus exécute sa dernière instruction

– pourrait passer des données à son parent

– ses ressources lui sont enlevées

• Le processus parent termine l’exécution d’un fils pour différentes raisons

– le fils a excédé ses ressources

– le fils n’est plus requis

• Le parent pourrait être le SE

A. EL Bourichi

Page 82: Systèmes d'exploitation

82

Création et synchronisation de processus

En UNIX, le fork créé un processus identique au père, excepté son pid

exec peut être utilisé pour exécuter un nouveau programme

A. EL Bourichi

Page 83: Systèmes d'exploitation

83

Sauvegarde d’informations de processus

• Un processus s’exécute sur l’UCT de façon intermittente

• Chaque fois qu’un processus reprend l ’UCT (transition prêt exécution) il doit la reprendre dans la même situation où il l’a laissée (même contenu de registres UCT, etc.)

• Donc au moment où un processus sort de l’état exécution il est nécessaire de sauvegarder ses informations essentielles, qu’il faudra récupérer quand il retourne à cet état

A. EL Bourichi

Page 84: Systèmes d'exploitation

84

PCB = Process Control Block: Représente la situation actuelle d’un processus, pour le

reprendre plus tard

Registres UCT

A. EL Bourichi

Page 85: Systèmes d'exploitation

85

Process Control Block (PCB)

– pointeur: les PCBs sont rangés dans des listes chaînées

– état de processus: prêt, exec, attente…

– compteur programme: le processus doit reprendre à l’instruction suivante

– autres registres UCT

– bornes de mémoire

– fichiers qu’il a ouvert

– etc.

A. EL Bourichi

Page 86: Systèmes d'exploitation

86

Commutation de processeur Aussi appélé commutation de contexte ou context switching

• Quand l’UCT passe de l’exécution d’un processus 0 à l’exécution d`un proc 1, il faut

– mettre à jour et sauvegarder le PCB de 0

– reprendre le PCB de 1, qui avait été sauvegardé avant

– remettre les registres d’UCT tels que le compteur d’instructions etc. dans la même situation qui est décrite dans le PCB de 1

A. EL Bourichi

Page 87: Systèmes d'exploitation

A. EL Bourichi 87

Commutation de processeur (context switching)

Il se peut que beaucoup de temps passe avant le retour au

processus 0, et que beaucoup d’autres processus soient exécutés

entre temps

Page 88: Systèmes d'exploitation

88

La pile d’un processus

• Quand un processus fait appel à une procédure, il est nécessaire de mettre dans une pile l’adresse à laquelle le processus doit retourner après avoir terminé cette procédure.

• Aussi on met dans cette pile les variables locales de la procédure qu’on quitte, les paramètres, etc., pour les retrouver au retour

• Chaque élément de cette pile est appelé stack frame ou cadre de pile

• Donc il y a normalement une pile d’adresses de retour après interruption et une pile d’adresses de retour après appel de procédure

– Ces deux piles fonctionnent de façon semblable, mais sont indépendantes

• Les informations relatives à ces piles (base, pointeur…) doivent aussi être sauvegardées au moment de la commutation de contexte

A. EL Bourichi

Page 89: Systèmes d'exploitation

89

La Pile d’un processus

A

B

Appel A Appel B

PILE

Données P

Données B

Données A

P

A. EL Bourichi

Page 90: Systèmes d'exploitation

90

Configuration typique de mémoire pour un processus

programme

Données fixes

Tas pour structures

dynamiques (listes)

Pile de contrôle

A. EL Bourichi

Page 91: Systèmes d'exploitation

Notion d’interruptions

• Une interruption est un mécanisme permettant de stopper l’exécution du programme en cours afin d’aller exécuter une tâche.

• Elle est caractérisée par un numéro et un traitement associé (la routine ou traitant d’interruption)

• On distingue principalement deux types d’événements :

– Les interruptions externes ou matérielles. – Les interruptions internes ou logicielles (traps).

A. EL Bourichi

Page 92: Systèmes d'exploitation

92

Rôle du matériel et du logiciel dans le traitement d’interruptions

MATÉRIEL LOGICIEL

Signal d’interruption généré

UCT termine l’instruction courante

et détecte interruption

Registres d’UCT sont

sauvegardés dans la pile des interr.

UCT saute à l’adresse trouvée dans

le vecteur d’interruption

Infos

sauvegardées dans PCB

Le code de traitement de

l’interruption est exécuté

L’ordonnanceur choisit un

processus qui est prêt

Les registres d’UCT sont rechargés

avec ces infos

Les infos relatives à ce processus

sont rétablies à partir de son PCB

dispatcher

L’UCT reprend l’exec de ce proc

A. EL Bourichi

Page 93: Systèmes d'exploitation

93

Files d’attente

• Les ressources d’ordinateur sont souvent limitées par rapport aux processus qui en demandent

• Chaque ressource a sa propre file de processus en attente

• À un moment donné, un proc ne peut se trouver que dans une seule des différentes files du SE

• En changeant d’état, les processus se déplacent d ’une file à l`autre

– File prêt: les processus en état prêt=ready

– Files associés à chaque unité E/S

– etc.

A. EL Bourichi

Page 94: Systèmes d'exploitation

94

Ce sont les PCBs qui sont dans les files d’attente (d’ou le besoin d ’un pointeur dans le PCB)

file prêt

Nous ferons l’hypothèse que le premier processus dans une file est celui qui utilise la ressource: ici,

proc7 exécute, proc3 utilise disque 0, etc. A. EL Bourichi

Page 95: Systèmes d'exploitation

Trois structures de donnée essentielles pour la gestion des processus

Les structures de données suivantes sont reliées mais distinctes dans leur utilisation et contenu

• Pile propre à chaque processus pour gérer les appels-retours aux procédures, méthodes, fonctions etc.

• Pile du SE pour gérer les interruptions et retours des interruptions

• Liste des PCBs actifs dans le système à un moment donné, est partitionnée en plusieurs listes d’attente, une pour chaque ressource qui peut être affectée à un processus

Chacune de ces piles ou listes doit sauvegarder des informations pour pouvoir retourner

• à la bonne place

• du bon processus

• avec les bonnes données

95 A. EL Bourichi

Page 96: Systèmes d'exploitation

Ces listes sont différentes!

• Pile propre à chaque processus pour gérer les appels-retours aux procédures, méthodes, fonctions etc.

– Cette pile doit exister dans tout système qui admet ces appels, même si le système n’admet ni les interruptions, ni la multiprogrammation

– Elle est gérée par le système d’exécution du programme compilé

• Pile du SE pour gérer les interruptions et retours des interruptions

– Cette pile doit exister dans tout système qui admet des interruptions, même s’il n’admet pas de multiprogrammation

– Elle est gérée directement par le matériel

• Liste des PCBs actifs dans le système

– Cette liste a besoin d’exister seulement dans les systèmes multiprogrammés

– Elle est gérée par le SE

96 A. EL Bourichi

Page 97: Systèmes d'exploitation

Ordonnanceur (Scheduler)

A. EL Bourichi

Page 98: Systèmes d'exploitation

Ordonnanceur (Scheduler)

• Election: allocation du processeur

• Préemption: réquisition du processeur

– ordonnancement non préemptif : un processus élu le demeure sauf s’il se bloque de lui-même

– ordonnancement préemptif : un processus élu peut perdre le processeur

• s’il se bloque de lui-même (état bloqué)

• si le processeur est réquisitionnépour un autre processus (état prêt)

A. EL Bourichi

Page 99: Systèmes d'exploitation

Système multiprocessus Ordonnanceur et

répartiteur

A. EL Bourichi

Page 100: Systèmes d'exploitation

100

Ordonnancement

Ordonnanceur (scheduler): partie du SE qui sélectionne les processus.

Algorithme d’ordonnancement (scheduling algorithm)

- non-préemptif: sélectionne un processus, puis le laisse s’exécuter jusqu’à ce qu’il se bloque (E/S, wait) ou se termine.

- préemptif: sélectionne un processus et le laisse s’exécuter pendant un quantum, préemption par l’interruption horloge

Comportement de Processus:

- Processus de traitement - Processus d’E/S

A. EL Bourichi

Page 101: Systèmes d'exploitation

101

… Algo d’ordonnancement 1er arrivé, 1er servi (first come first served)

Le job le plus court en premier (shortest job first)

Délais d’exécution connus

Shortest remaining time next

Tourniquet (round robin)

Quantum court: trop de changement de contexte

Quantum long: dégradation temps de réponse aux requêtes interactives

Par Priorités

Prévenir contre les situations de « famine » en diminuant la priorité du processus à chaque interruption ou priorité égale à l’inverse de la fraction d’utilisation du dernier quantum...

Par Tirage au Sort

A. EL Bourichi

Page 102: Systèmes d'exploitation

Politiques d'ordonnancement • Premier arrivé, premier servi

– FIFO, sans réquisition

• Par priorités constantes

• Par tourniquet (round robin)

• Par files de priorités de priorités constantes

multiniveaux avec ou sans extinction de priorité

A. EL Bourichi

Page 103: Systèmes d'exploitation

Chapitre 4 Gestion de la mémoire

103 A. EL Bourichi

Page 104: Systèmes d'exploitation

Besoins en mémoire

• Premier ordinateurs disposaient de moins d'1Ko de RAM

• Aujourd'hui 4Go

• Tout va bien, pas besoin de gérer la mémoire?

• Non!

• Besoins toujours croissants (multimédia)

104 A. EL Bourichi

Page 105: Systèmes d'exploitation

Hiérarchisation de la mémoire

105 A. EL Bourichi

Page 106: Systèmes d'exploitation

Monoprogrammation simple

• Figure 4.1 pg 203 Tanen

106 A. EL Bourichi

Page 107: Systèmes d'exploitation

Multiprogrammation avec partitions fixes

• Figure 4,2 Tannen

107 A. EL Bourichi

Page 108: Systèmes d'exploitation

Problèmes de la multiprogrammation

• Réallocation

• Protection mémoire

108 A. EL Bourichi

Page 109: Systèmes d'exploitation

Réallocation (relocation)

• On ne sais pas où commence le programme

• 2 solutions:

• 1) Relocation software

• 2) Relocation hardware

• Adresse réelle = Reg. de base + Reg. Déplacement (80x86)

109 A. EL Bourichi

Page 110: Systèmes d'exploitation

Structure exécutable

Le compilateur génère un fichier exécutable.

Qu'est-ce qu'il y a dans un fichier exécutable? (un .exe par exemple)

110 A. EL Bourichi

Page 111: Systèmes d'exploitation

Structure exécutable

Le code machine

On doit savoir où on commence!

–=> adresse main() (point d'entrée)

Exécutable

–Code machine

–Table symboles

Adresses points d'entrés (fonction main en C ou les

méthodes public static en Java )

111 A. EL Bourichi

Page 112: Systèmes d'exploitation

Structure exécutable

Module1.exe Code main = 0FFH

112 A. EL Bourichi

Page 113: Systèmes d'exploitation

Loader

Il faut maintenant charger (to load) le programme en mémoire.

Loader = programme de l'OS qui va charger l'exécutable en mémoire et transférer le contrôle au point d'entrée principal.

113 A. EL Bourichi

Page 114: Systèmes d'exploitation

Chargement programme

Mém Libre

Module1.exe main = 0FFH

OS

Module1

OS

Mem Libre

20000H 20000H

114 A. EL Bourichi

Page 115: Systèmes d'exploitation

Chargement programme

1) Copier code de Module1.exe à partir de l'adresse 2000H

2) Faire un jmp à l'adresse du main() de Module1.

Oui mais elle vaut combien cette adresse?

115 A. EL Bourichi

Page 116: Systèmes d'exploitation

Chargement programme

1) Copier code de Module1.exe à partir de l'adresse 2000H

2) Faire un jmp à l'adresse du main() de Module1.

Oui mais elle vaut combien cette adresse?

Elle vaut 2000H + 00FFH = 20FFH

116 A. EL Bourichi

Page 117: Systèmes d'exploitation

Relocation

La relocation est le fait de corriger l'adresse d'un symbole pour avoir son adresse réelle en mémoire.

117 A. EL Bourichi

Page 118: Systèmes d'exploitation

Protection mémoire

• Solution 1: Block ID (IBM 360)

• Mémoire divisée en blocs de 2Ko

• Chaque bloc à un ID de 4 bit (pas forcément unique)

• Chaque processus à un ID mémoire de 4 bits

• Seul l’OS peut changer les blocs et process ID’s

• Si processus ID = bloc ID alors on peut lire et écrire

• Si ID's non compatibles => erreur (interruption)

118 A. EL Bourichi

Page 119: Systèmes d'exploitation

Protection mémoire

• Solution 2: Base + limite

• On a deux registres protégés (seuls l'OS peut les changer)

• On peut accéder les adresses [Base, Base+limite]

• Si on sort: erreur (segmentation fault) => interrupt

119 A. EL Bourichi

Page 120: Systèmes d'exploitation

Limitations partitions fixes?

120 A. EL Bourichi

Page 121: Systèmes d'exploitation

Limitations partitions fixes

• Nombre de processus exécutés fixe, ...

• Taille des partitions fixe

• Si programme plus grand que partition => KO

• 2 solutions:

• Va-et-vient

• Mémoire virtuelle

121 A. EL Bourichi

Page 122: Systèmes d'exploitation

Va-et-vient

• On va permettre de retirer (swap-out) des processus de la mémoire pour les y remettre plus tard (swap-in).

• La mémoire devient une ressource « préemptible » (cad qu'on peut confisquer)

122 A. EL Bourichi

Page 123: Systèmes d'exploitation

Va-et-vient

• A rentre

• Swap-in

123 A. EL Bourichi

Page 124: Systèmes d'exploitation

Va-et-vient

• B rentre

• Swap-in

124 A. EL Bourichi

Page 125: Systèmes d'exploitation

Va-et-vient

• C rentre

• Swap-in C

• Veut rentrer D

125 A. EL Bourichi

Page 126: Systèmes d'exploitation

Va-et-vient

• Swap-out A

126 A. EL Bourichi

Page 127: Systèmes d'exploitation

Va-et-vient

• Swap-in D

• Veut faire revenir

• A

127 A. EL Bourichi

Page 128: Systèmes d'exploitation

Va-et-vient

• Swap-out B

128 A. EL Bourichi

Page 129: Systèmes d'exploitation

Va-et-vient

• Swap-in A

129 A. EL Bourichi

Page 130: Systèmes d'exploitation

Va-et-vient

130 A. EL Bourichi

Page 131: Systèmes d'exploitation

Fragmentation

• A force, on risque de voire apparaître des trous trop petits pour pouvoir y mettre un processus

• Il faut compacter ou tasser les zones mémoire pour faire de la place.

• Lent!

• Ex: 256Mo RAM copier 4 octets prend 40ns

• => 2,7 sec pour copier toute la mémoire!

131 A. EL Bourichi

Page 132: Systèmes d'exploitation

Gestion place libre par tableau de bits (bitmap)

• On découpe la mémoire en unités d'allocation (blocs) de plusieurs Ko.

• Bit à 1 = place prise, 0 = libre

• Figure 4.7 (a),(b) Tanen

132 A. EL Bourichi

Page 133: Systèmes d'exploitation

Gestion place libre par tableau de bits

• La recherche d'une page libre peut-être lente, ...

133 A. EL Bourichi

Page 134: Systèmes d'exploitation

Gestion place libre par listes chaînées

• On indique pour chaque zone libre ou occupée son début et sa taille.

• Figure 4.7 (a), (c) Tanen

134 A. EL Bourichi

Page 135: Systèmes d'exploitation

Gestion place libre par listes chaînées

• Pour éviter la fragmentation, on fusionne les trous

• Figure 4.8 Tanen

135 A. EL Bourichi

Page 136: Systèmes d'exploitation

Overlays (Segments de recouvrement)

• Parfois la taille d'un programme > taille mémoire physique!

• Historiquement: segments de recouvrement (overlays)

• On découpe le programme en zone qu'on charge au besoin

• C'est le programmeur qui doit gérer le quand du chargement!

• Plus vraiment utilisé

136 A. EL Bourichi

Page 137: Systèmes d'exploitation

Mémoire virtuelle

• C'est le même principe que les overlays sauf que c'est géré par l'OS

• L'OS découpe le processus en petites parties.

• On conserve les parties les plus utilisées en RAM

• Les autres sont stockées sur disque

• Au besoin on sort des parties non utilisées et charge de nouvelles parties en RAM

• => processus bloqué en E/S lors du chargement de la partie manquante

137 A. EL Bourichi

Page 138: Systèmes d'exploitation

Mémoire virtuelle: pagination

• Adresse physique – dans processeur sans pagination:

– Mov reg,1000

– Charge le contenu de l'adresse physique Base+1000 dans REG

• Espace d'adressage = espace des adresses physiques existants réellement

138 A. EL Bourichi

Page 139: Systèmes d'exploitation

Mémoire virtuelle: pagination • Adresse virtuelle

– dans processeur avec pagination:

– Mov reg,1000

– Base+1000 est une adresse virtuelle

– On la traduit d'abord en adresse réelle, puis on charge son contenu de dans REG

• Espace d'adressage = espace des adresses représentables

139 A. EL Bourichi

Page 140: Systèmes d'exploitation

Mémoire virtuelle unique ou multiple

• Mémoire virtuelle unique: tous les processus partagent le même espace d'adressage virtuel – => Ils peuvent (potentiellement) partager des

zones mémoire pour s'échanger des données.

• Mémoire virtuelle multiple: chaque processus a son propre espace d’adressage virtuel, il est donc (virtuellement) tout seul dans la mémoire.

140 A. EL Bourichi

Page 141: Systèmes d'exploitation

Mémoire virtuelle: pratiquement • La traduction se fait par l'unité de gestion de la

mémoire (memory management unit: MMU)

• Figure 4,9 Tanen

141 A. EL Bourichi

Page 142: Systèmes d'exploitation

Mémoire virtuelle: pratiquement

• Les processus sont découpés en pages

• Ces pages sont chargé dans des "pages frames" (cadres de pages) de la mémoire physique

• Ex: accéder à l'adresse 0

142 A. EL Bourichi

Page 143: Systèmes d'exploitation

Mémoire virtuelle: pratiquement

• Mov reg,8192

• Traduit en?

143 A. EL Bourichi

Page 144: Systèmes d'exploitation

Mémoire virtuelle: pratiquement

• Mov reg,8192

• Traduit en?

• Mov REG,24576

144 A. EL Bourichi

Page 145: Systèmes d'exploitation

Mémoire virtuelle: pratiquement

• Mov reg,32780

• Que se passe-t-il?

145 A. EL Bourichi

Page 146: Systèmes d'exploitation

Page fault (défaut de page)

• Mov reg,32780

• Que se passe-t-il?

• Défaut de page (page fault)

• On va sélectionner un page frame peu utilisé

• On la sort de la mémoire (swap out)

• On rentre la page manquante dans le cadre libre

• On exécute quelle instruction après ça?

146 A. EL Bourichi

Page 147: Systèmes d'exploitation

Page fault (défaut de page)

• Mov reg,32780

• Que se passe-t-il?

• Défaut de page (page fault)

• On va sélectionner un page frame peu utilisé

• On la sort de la mémoire (swap out)

• On rentre la page manquante dans le cadre libre

• On exécute quelle instruction après ça?

• On ré-exécute Mov reg,32780 !!! (pas directement l'instruction suivante!)

147 A. EL Bourichi

Page 148: Systèmes d'exploitation

Taille des pages

• Vous n'avez rien remarqué sur la taille des pages?

• Ce sont des exposants de 2!

• Pourquoi?

148 A. EL Bourichi

Page 149: Systèmes d'exploitation

Taille des pages

• Vous n'avez rien remarqué sur la taille des pages?

• Ce sont des exposants de 2

• Pourquoi?

• Page de 4Ko, il faut 12 bits pour représenter 0 à 4095

• Adresse 16 bits: 4 bits pour le numéro de page et 12 bits pour le déplacement (offset dans la page)

149 A. EL Bourichi

Page 150: Systèmes d'exploitation

Table des pages

• Les 4 bits de poids fort sont utilisé comme numéro de page dans la table des pages

• En réalité, les adresses font 32 bits

• Problème?

Page 151: Systèmes d'exploitation

Table des pages

• En réalité, les adresses font 32 bits

• Problème?

• 20 bits de numéros de pages = 1 millions de pages!!

• Adresse 64 bits ??!!

Page 152: Systèmes d'exploitation

Segmentation

• Avec la pagination, on a un espace d'adressage par processus.

• Or on peut (veut) en avoir plusieurs.

• Ex:?

152 A. EL Bourichi

Page 153: Systèmes d'exploitation

Segmentation

• Dans le pentium on a des registres de segment qui définissent des espaces d'adressage propre.

• Combinaison avec la pagination?

153 A. EL Bourichi

Page 154: Systèmes d'exploitation

Segmentation

• Dans le pentium on a des registres de segment qui définissent des espaces d'adressage propre.

• Combinaison avec la pagination?

• Naïvement: Segment + offset = adresse virtuelle

• Pas si simple!!!

• On a une indirection en plus:

• Le registre de segment (appelé sélecteur) pointe vers un descripteur de segment.

154 A. EL Bourichi

Page 155: Systèmes d'exploitation

Segmentation

• Reg segment = selector

155 A. EL Bourichi

Page 156: Systèmes d'exploitation

Segmentation et pagination

• Ensuite on traduit l'adresse

156 A. EL Bourichi

Page 157: Systèmes d'exploitation

Descripteur de segment

157 A. EL Bourichi

Page 158: Systèmes d'exploitation

Sélecteur de segment

158 A. EL Bourichi

Page 159: Systèmes d'exploitation

Chapitre 5 Gestion des fichiers

159 A. EL Bourichi

Page 160: Systèmes d'exploitation

Systèmes de gestion des fichiers

Information logique Information physique

Disque

Cylindre

Piste

Secteur

Nom folder

Nom fichier

Indications fichier

A. EL Bourichi

Page 161: Systèmes d'exploitation

Concept de fichier

• Définition : Un fichier est une unité de stockage

logique de l’information. – Abstraction des propriétés physiques des dispositifs de stockage

– la correspondance est établie par le SE

• Opérations sur les fichiers :Création, Ecriture/Lecture, Suppression

A. EL Bourichi

Page 162: Systèmes d'exploitation

Attributs d’un fichier

Constituent les propriétés du fichiers et sont stockés dans un fichier spécial appelé répertoire (directory). Exemples d’attributs: Nom:

pour permet aux personnes d’accéder au fichier

Identificateur:

Un nombre permettant au SE d’identifier le fichier

Type:

Ex: binaire, ou texte; lorsque le SE supporte cela

Position:

Indique le disque et l’adresse du fichier sur disque

Taille:

En bytes ou en blocs

Protection:

Détermine qui peut écrire, lire, exécuter…

Date:

pour la dernière modification, ou dernière utilisation

Autres…

A. EL Bourichi

Page 163: Systèmes d'exploitation

Type des fichiers

• Type de fichiers: exécutable, commande, texte,..

• Certains SE supportent et reconnaissent le type de fichiers

– Windows utilise les suffixes des noms de fichiers : .exe, .bat, .txt, .com...

• Unix ne supporte pas le typage des fichiers

A. EL Bourichi

Page 164: Systèmes d'exploitation

Conception d’un système de fichier

• Le système de fichiers doit avoir un moyen de calculer/mémoriser – La décomposition des fichiers en blocs.

– Le positionnement du début de chaque fichier.

– Les positions de tous les blocs du même fichier.

– Tous les blocs de mémoire libre sur un disque.

A. EL Bourichi

Page 165: Systèmes d'exploitation

Organisation des disques

• Organisation: blocs de mémoire de taille fixe (N octets)

disque organisé en Tête, Cylindre, Secteur

A. EL Bourichi

Page 166: Systèmes d'exploitation

A. EL Bourichi

Page 167: Systèmes d'exploitation

• Pour un meilleur compromis: temps d'accès et

capacité de stockage certains SGF organisent

l'espace du disque en blocs de secteurs

• Les opérations de lecture et d'écriture du SGF

se font bloc par bloc

A. EL Bourichi

Page 168: Systèmes d'exploitation

Méthode d ’allocation

• Méthodes d'allocation

– Allocation contiguë (séquentielle simple)

– Allocation par blocs chaînés

– Allocation indexée

A. EL Bourichi

Page 169: Systèmes d'exploitation

Allocation Contiguë

• Allocation contiguë : chaque fichier occupe un nombre de blocs contigus sur le disque

A. EL Bourichi

Page 170: Systèmes d'exploitation

0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

15 16 17 18 19

20 21 22 23 24

Allocation contiguë

fichier début longueur

Mail 0 2

Liste 7 5

temp 16 3

A. EL Bourichi

Page 171: Systèmes d'exploitation

Problème d’extension d’un fichier

A. EL Bourichi

Page 172: Systèmes d'exploitation

Probléme de fragmentation

A. EL Bourichi

Page 173: Systèmes d'exploitation

Allocation Contiguë

• Avantages : – Simple à implémenter

– Accès direct aux blocs en temps constant

– Adapté aux supports « Write Once »

• Inconvénients : – Problème : Extension d’un fichier

– Problème : Fragmentation

– Blocs libre: Nécessite de connaître à l’avance de la taille du fichier

A. EL Bourichi

Page 174: Systèmes d'exploitation

Allocation chaînée

• Un fichier occupe une liste chaînée de blocs sur le disque

• Chaque bloc contient une partie des données et un pointeur sur le bloc suivant

A. EL Bourichi

Page 175: Systèmes d'exploitation

0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

15 16 17 18 19

20 21 22 23 24

fichier début fin

Mail 9 22

16

10

2

22

18

-1

Allocation chaînée

A. EL Bourichi

Page 176: Systèmes d'exploitation

Allocation chaînée

• Avantages – Possibilité d’étendre un fichier

– Allocation par bloc individuel

• Inconvénients – Solution non adaptée à l’accès direct

– L’accès à un bloc quelconque nécessite l’ accès à tous les blocs qui le précèdent

– Les pointeurs.

A. EL Bourichi

Page 177: Systèmes d'exploitation

Allocation chaînée FAT

• Idée :Séparer les pointeurs et les données

• Technique: – Utilisation d ’ une table d ’ allocation de fichier (FAT : File Allocation

Table)

– A chaque bloc est associée une entrée dans la FAT qui contient le n° du bloc suivant

– Méthode Utilisée dans MS-DOS

A. EL Bourichi

Page 178: Systèmes d'exploitation

FAT - Exemple

A. EL Bourichi

Page 179: Systèmes d'exploitation

Allocation chaînée -FAT-

• Avantages – Extension des fichiers

– les blocs de données ne contiennent pas les pointeurs

– accès direct facile

– Protection de la FAT

• Inconvénients – Occupation de la mémoire centrale par la FAT

– Une table pour un disque de 1Go en blocs de 1Ko occuperait 4 Mo (+ 4Mo pour la FAT « ombre »)

A. EL Bourichi

Page 180: Systèmes d'exploitation

Allocation indexée

• Idée: – Éclater la FAT en plusieurs petites tables appelées nœuds

d’informations ( i-node)

– A chaque fichier est associé un nœud d ’ information

– Chaque table contient les attributs et les adresses sur le disque des blocs du fichier

A. EL Bourichi

Page 181: Systèmes d'exploitation

Structure d ’un i-node

A. EL Bourichi

Page 182: Systèmes d'exploitation

Exemple 1

A. EL Bourichi

Page 183: Systèmes d'exploitation

Exemple 2

A. EL Bourichi

Page 184: Systèmes d'exploitation

Exemple 3

• Supposons que l'on cherche le fichier /usr/ast/courrier;

A. EL Bourichi

Page 185: Systèmes d'exploitation

Allocation indexée

• Avantages: – Seuls les i-nodes des fichiers ouverts sont chargés en

mémoire centrale

– Allocation par bloc individuel

– Accès direct facile • nécessite au maximum 4 accès disque

– Adaptée aux disques de très grande capacité

A. EL Bourichi

Page 186: Systèmes d'exploitation

Gestion de l’espace libre

• Système maintient une liste d'espace libre, qui

mémorise tous les blocs disque libres (non

alloués) – Création d'un fichier : recherche dans la liste d'espace libre de la quantité requise

d'espace et allocation au fichier : l'espace alloué est supprimé de la liste

– Destruction d'un fichier : l'espace libéré est intégré à la liste d'espace libre

• Il existe différentes représentations possibles de

l'espace libre – vecteur de bits

– liste chainée des blocs libres

A. EL Bourichi

Page 187: Systèmes d'exploitation

Vecteur de bits

• La liste d'espace libre est représentée par un

vecteur binaire, dans lequel chaque bloc est

figuré par un bit. – Bloc libre : bit à 0

– Bloc alloué : bit à 1

A. EL Bourichi

Page 188: Systèmes d'exploitation

Liste chainée

• La liste d'espace libre est représentée par une

liste chainée des blocs libres

A. EL Bourichi

Page 189: Systèmes d'exploitation

Protection des fichiers

• Protection contre les dégâts physiques

– FIABILITE

• redondance, sauvegardes

• Protection contre les accès inappropriés

– PROTECTION

• droits d'accès, mots de passe

A. EL Bourichi

Page 190: Systèmes d'exploitation

Protection contre les accès 1/2

• Association d'un mot de passe à chaque

fichier (IBM)

– viable sur un système monoutilisateur

– difficile à mettre en œuvre sinon

A. EL Bourichi

Page 191: Systèmes d'exploitation

Protection contre les accès 2/2

• Définition de droits d'accès

– lecture (r), écriture (w), exécution (x), destruction ...

• A chaque fichier est associé une liste d'accès,

spécifiant pour chaque utilisateur, les types

d'accès qui lui sont autorisés

A. EL Bourichi

Page 192: Systèmes d'exploitation

Protection contre les dégâts physiques

• Utilisation de la redondance interne : – l'information existe en double exemplaire : une version primaire,

une version secondaire

– le système maintient la cohérence entre les deux versions

• Redondance par sauvegarde périodique : – sauvegarde complète : la totalité des objets est dupliquée même

si ils n'ont pas été modifiés

– sauvegarde incrémentale : seuls les objets modifiés depuis la

dernière sauvegarde sont dupliqués.

A. EL Bourichi

Page 193: Systèmes d'exploitation

Annexe I: Manipulation des fichiers en

langage C

A. EL Bourichi 193

Page 194: Systèmes d'exploitation

Définition

Un fichier est un ensemble structuré de données stocké sur un support externe (disquette ,

disque dur, …). Un fichier structuré est composé d’une suite d’enregistrements homogènes

qui regroupent le plus souvent plusieurs composantes appelées champs.

Les fichiers sont caractérisés par deux notions :

• le mode d’organisation : est la méthode

choisie pour ranger les données dans le

fichier (séquentiel, indexé,...) ;

• Garantir la persistance des données (les données sont préservées après l’exécution)

• Volume de données variable et plus grand que pour les structures de données statiques

(tableaux).

Buts

Caractéristiques

… …

• le mode d’accès : est la méthode choisie pour rechercher un enregistrement en cas

de lecture ou pour rechercher son emplacement en cas d’écriture (séquentiel,

direct, binaire, ...).

Séquentiel Indexé

Index

194 A. EL Bourichi

Page 195: Systèmes d'exploitation

On distingue généralement deux types d'accès :

Accès séquentiel :

• Pas de cellule vide.

• On accède à une cellule en se déplaçant, depuis la cellule de départ.

• On ne peut pas détruire une cellule.

• On peut ajouter une cellule à la fin.

Accès direct (RANDOM I/O)

• Cellule vide possible.

• On peut directement accéder à une cellule.

• On peut modifier n'importe quelle cellule.

Remarque : Le langage C ne distingue pas les fichiers à accès séquentiel des

fichiers à accès direct.

Il existe d’autre part deux façons de coder les informations stockées dans un fichier :

En binaire :

Fichier dit « binaire », les informations sont codées en brut sans aucune

transformation. Ils ne sont pas éditables.

en ASCII :

Fichier dit « texte », les informations sont codées en ASCII. Ces fichiers sont

éditables. Le dernier octet de ces fichiers est EOF. 195 A. EL Bourichi

Page 196: Systèmes d'exploitation

Manipulation des fichiers en langage C

Les opérations possibles avec les fichiers sont : Créer, Ouvrir, Fermer, Lire, Ecrire,

Détruire, Renommer en utilisant des fonctions rangées dans STDIO.H

Déclaration

Consiste à définir un pointeur qui permet de fournir l'adresse d'une cellule donnée dans

le fichier ouvert.

FILE *pointeur ; /* majuscules obligatoires pour FILE */

Ouverture

Permet d’associer le pointeur déclaré de type FILE avec le fichier à manipuler et de

préciser les possibilités d’accès (lecture, écriture ou lecture/écriture). L’ouverture se

fait par :

La déclaration d’un tel pointeur se fait par :

PointeurFILE = fopen (nomFichier, mode) ;

Avec :

NomFichier : Nom du fichier figurant sur le disque, exemple: "C :\Etudiants.dat"

Mode : chaîne de caractères qui détermine le mode d’accès

Pointeur

196 A. EL Bourichi

Page 197: Systèmes d'exploitation

Mode Description

Fichier Texte Fichier Binaire

r rb lecture seule. Le fichier doit exister. Pointeur au début

w wb écriture seule (destruction de l'ancienne version si elle

existe, création du fichier si non). Pointeur au début

a ab écriture d'un fichier existant, pas de création d'une

nouvelle version. Pointeur à la fin du fichier.

r+ rb+ lecture/écriture d'un fichier existant (mise à jour), pas de

création d'une nouvelle version. Pointeur au début

w+ wb+ lecture/écriture (destruction ancienne version si elle

existe, sinon création du fichier). Pointeur au début.

a+ ab+

lecture/écriture d'un fichier existant (mise à jour), pas de

création d'une nouvelle version. Pointeur à la fin du

fichier. Fermeture:

Permet de supprimer le flux associé au fichier ouvert après avoir achever les transferts de

données survenus. La fermeture d’un fichier ouvert se fait par :

fclose(Pointeurfichier);

FcloseAll(); /* pour fermer tous les flux ouverts*/

Remarque : fopen renvoie l’adresse du flux s’il est créé si non elle renvoie NULL

197 A. EL Bourichi

Page 198: Systèmes d'exploitation

Ecriture

Fichiers texte

Ecrire un caractère

Ecrit l’entier n, le pointeur avance du nombre de cases correspondant à la taille d'un

entier. Retourne n si l’écriture s’est bien passée sinon retourne EOF.

int putc(char c, FILE *Pointeurfichier);

Ecrit la valeur du caractère c à la position courante du pointeur , le pointeur avance

d'une case mémoire Retourne le caractère écrit sinon EOF en cas d’erreur.

int putw(int n, FILE *Pointeurfichier);

Ecrire un entier

Ecrire une chaîne de caractères

int fputs(char *S, FILE *Pointeurfichier);

Ecrit la chaîne de caractères S, le pointeur avance de la longueur de la chaîne

Retourne le dernier caractère écrit sinon retourne EOF en cas d’erreur.

Ecrire de données formatées

int fprintf(FILE *Pointeurfichier, char *format, liste d'expressions); 198 A. EL Bourichi

Page 199: Systèmes d'exploitation

Ecrit des données formatées (caractère %c, entier %d, réel %f, chaîne %s), le pointeur

avance du nombre d’octets écrits. Retourne le nombre d’octets écrits ou EOF en cas

d’erreur. Fichiers binaire

int fwrite(void *p,int taille_bloc,int n,FILE *Pointeurfichier);

Ecrit à partir de la position courante du pointeur Pointeurfichier n blocs de taille

taille_bloc lus à partir de l'adresse p. Le pointeur Pointeurfichier avance d'autant d’octets

écrits. Retourne le nombre de blocs écrits.

Lecture

Fichiers texte

Lire un caractère

Renvoie l’entier situé à la position pointée par Pointeurfichier ou EOF en cas

d’erreur ou fin du fichier; le pointeur avance de la taille d'un entier

int getc(FILE *fichier);

int getw(FILE *Pointeurfichier);

Lire un entier

renvoie le caractère situé à la position pointée par Pointeurfichier ou EOF si erreur

ou fin de fichier; le pointeur avance d'un octet.

199 A. EL Bourichi

Page 200: Systèmes d'exploitation

Lire une chaîne de caractères

char *fgets(char *S,int n,FILE *Pointeurfichier);

Lit n-1 caractères à partir de la position du pointeur et les range dans S en ajoutant

'\0'. Retourne NULL en cas d’erreur

Ecrire de données formatées

int fscanf(FILE *Pointeurfichier, char *format, liste d'adresses);

Lit des données depuis la position du pointeur PointeurFchier dans des variables

dont les adresses sont indiquées. Les données lues sont convertie en fnction des

format indiqués par format. La fonction retourne le nombre de champs lus.

Fichiers binaire

int fread(void *p,int taille_bloc,int n,FILE *Pointeurfichier);

lit à partir de la position courante du pointeur Pointeurfichier n blocs de taille

taille_bloc et les place dans l'adresse p. Le pointeur Pointeurfichier avance d'autant

d’octets lus. Retourne le nombre de blocs lus.

200 A. EL Bourichi

Page 201: Systèmes d'exploitation

Fonction fseek

int fseek(FILE *fichier,long offset,int Mode);

déplace le pointeur de offset cases à partir en fonction de la valeur de Mode.

Valeurs possibles pour Mode sont :

SEEK_SET = 0 -> à partir du début du fichier.

SEEK_CUR =1 -> à partir de la position courante du pointeur.

SEEK_END =2 -> en arrière, à partir de la fin du fichier

Fonction rewind

void rewind(FILE *fichier);

Repositionne le fichier à son début.

Positionnement dans un fichier – Accès direct

Au cours de la manipulation d’un fichier, il existe toujours une position courante du

pointeur de lecture/écriture. Cette position représente le numéro de l’octet pointé. Elle est

modifiée suite à chaque opération de lecture/écriture. Elle est incrémentée du nombre

d’octets lus ou écrits.

Fonction ftell

long ftell(FILE *fichier);

Retourne la position courante par rapport au début du fichier 201 A. EL Bourichi

Page 202: Systèmes d'exploitation

TP

Écrire un programme C qui fait la même chose que la commande Linux

cat fic1>>fic2

202 A. EL Bourichi

Page 203: Systèmes d'exploitation

Chapitre 6 Gestion des E/S

203 A. EL Bourichi

Page 204: Systèmes d'exploitation

Périphériques d’E/S

• Les périphériques d’E/S consistent: – du périphérique lui-même

– d’un contrôleur (avec des registres)

• Le contrôleur simplifie l’interface – tu demandes une piste

– le contrôleur convertis la demande en cylindre, secteur et tête

– le SE voit cette interface

• Le logiciel qui parle au contrôleur est un pilote de périphérique (Device Driver)

204 A. EL Bourichi

Page 205: Systèmes d'exploitation

Pilotes de périphérique

• Comment est-ce qu’ils communiquent avec les périphériques?

– Ils écrivent dans la mémoire mappée aux registres du périphérique (memory mapped I/O) ne requiert aucune instructions spéciales

– Écrit aux ports mappées au registres (n’utilisent pas d’espace d’adresses mais ce mode requiert des instructions spéciales)

205 A. EL Bourichi

Page 206: Systèmes d'exploitation

Pilotes de périphérique – Attente active (Busy Waiting)

• Quand est-ce que le pilote communique avec son périphérique?

– Attente active

• Le programme de l’usager fait un appel de système

• Le pilote est appelé par le noyau

• Le pilote boucle continuellement en interrogeant le périphérique pour savoir quand l’E/S est finit

• Désavantage: CPU complètement pris

206 A. EL Bourichi

Page 207: Systèmes d'exploitation

Pilotes de périphérique – Interruptions

• Quand est-ce que le pilote communique avec son périphérique? – Interruptions

• Pilote démarre le contrôleur et demande une interruption quand l’E/S est terminé

• Le pilote retourne le contrôle au SE; le processus qui a demandé l’E/S bloque si il a absolument besoin des données

• Quand le contrôleur complète le travail, il génère une interruption

• Désavantage: Plus complexe

207 A. EL Bourichi

Page 208: Systèmes d'exploitation

Pilotes de périphérique – Interruptions

1) Pilote écrit dans les registres du contrôleur. Le contrôleur démarre le périphérique.

2) Le contrôleur finit l’E/S et signal le contrôleur d’interruption par certaines lignes sur le bus

3) Quand le contrôleur d’interruption est prêt il lève une interruption sur une des pattes du CPU

4) Quand le CPU est prêt, le contrôleur d’interruption place le numéro du périphérique sur le bus

208 A. EL Bourichi

Page 209: Systèmes d'exploitation

Pilotes de périphérique – Interruptions

• Le CPU passe en mode noyau

• L’adresse du gestionnaire d’interruption est déterminée – (Interrupt Vector)

• Le flux du programme change pour le gestionnaire des interruptions

• Quand le gestionnaire a finis, le flux normal du programme reprend.

209 A. EL Bourichi

Page 210: Systèmes d'exploitation

Pilotes de périphérique - DMA

• Quand est-ce que le pilote communique avec son périphérique? – Accès Direct à la Mémoire (Direct Memory Access) (DMA)

• Une puce spéciale qui contrôle le flux d’information entre le RAM et les contrôleurs

• Configuré pour chaque transfert par le CPU avec un nombre d’octets, le numéro du périphérique, les adresses mémoire pour les données et la direction

• Quand le transfert est terminé la puce DMA signal une interruption comme décrit au paravent

• Désavantage: encore plus complexe, mais enlève du travail du CPU

210 A. EL Bourichi

Page 211: Systèmes d'exploitation

Chapitre 7 Interblocages

211 A. EL Bourichi

Page 212: Systèmes d'exploitation

212

Ressources

• Exemples de ressources – imprimantes

– graveur de CD-ROM

– fichiers

– tables internes du système

• L'ordre dans lequel les ressources sont attribuées est important

• Supposons qu'un processus possède une ressource A et demande une ressource B – au même moment un autre processus possède B et demande

A

– les deux sont bloqués de façon permanente A. EL Bourichi

Page 213: Systèmes d'exploitation

213

Ressources (1)

• Un interblocage peut se produire lorsque… – les processus se voient attribuer un accès exclusif à des

ressources.

• Ressources retirables (préemptibles) – peuvent être retirées d'un processus sans effet négatif – ex. mémoire

• Ressources non retirables (non préemptibles) – peuvent causer des problèmes si retirées du processus – ex. graveur de CD

• En général les interblocages impliquent des ressources non retirables.

A. EL Bourichi

Page 214: Systèmes d'exploitation

214

Ressources (2)

• Séquence d'événements nécessaires pour utiliser une ressource:

1. Solicitation de la ressource

2. Utilisation de la ressource

3. Libération de la ressource

• Doit attendre si l'accès est refusé: – le processus peut alors être bloqué

– ou un code d'erreur est retourné

A. EL Bourichi

Page 215: Systèmes d'exploitation

215

Ressources (3)

Figure 1 : Utiliser un sémaphore pour protéger les ressources. (a) Une ressource. (b) Deux ressources typedef int semaphore; typedef int semaphore; semaphore resource_1; semaphore resource_1; semaphore resource_2; void process_A(void){ void process_A(void) { down(&resource_1); down(&resource_1); use_resource_1( ); down(&resource_2); up(&resource_1); use_both_resources( ); } up(&resource_2); up(&resource_1); } (a) (b)

A. EL Bourichi

Page 216: Systèmes d'exploitation

216

Ressources (4) Figure 2 : (a) Code exempt d’interblocage. (b) Code contenant un interblocage potentiel typedef int semaphore; semaphore resource_1; semaphore resource_1; semaphore resource_2; semaphore resource_2; void process_A(void) { void process_A(void) { down(&resource_1); down(&resource_1); down(&resource_2); down(&resource_2); use_both_resources( ); use_both_resources( ); up(&resource_2); up(&resource_2); up(&resource_1); up(&resource_1); } } void process_B(void) { void proces_B(void) { down(&resource_1); down(&resource_2); down(&resource_2); down(&resource_1); use_both_resources( ); use_both_resources( ); up(&resource_2); up(&resource_1); up(&resource_1); up(&resource_2); } } (a) (b)

A. EL Bourichi

Page 217: Systèmes d'exploitation

217

Introduction aux interblocages

• Définition formelle: Un ensemble de processus est en interblocage si chacun d'eux attend un événement qui ne peut être provoqué que par un autre processus de l'ensemble.

• L'événement attendu est habituellement la libération d'une ressource

• Aucun de ces processus ne peut … – s'exécuter

– libérer de ressources

– être réveillé

A. EL Bourichi

Page 218: Systèmes d'exploitation

218

Les 4 conditions d'un interblocage 1. Condition d'exclusion mutuelle

• chaque ressource est soit attribuée à un seul processus, soit disponible

2. Condition de détention et d'attente • les processus ayant déjà obtenu des ressources peuvent

en demander des nouvelles.

3. Pas de réquisition • les ressources déjà détenues ne peuvent être retirées de

force à un processus

4. Condition d'attente circulaire • il doit y avoir un cycle d'au moins deux processus

• chacun attend une ressource détenue par un autre processus du cycle.

A. EL Bourichi

Page 219: Systèmes d'exploitation

219

Modélisation des interblocages (1)

• Modélisation au moyen de graphes dirigés

– La ressource R est détenue par le processus A

– Le processus B attend après la ressource S

– Les processus C and D sont en interblocage

A. EL Bourichi

Page 220: Systèmes d'exploitation

220 Ordonnancement provoquant un interblocage

Modélisation des interblocages (2)

A. EL Bourichi

Page 221: Systèmes d'exploitation

221

Modélisation des interblocages (3)

Interblocage évité par un ordonnacement différent A. EL Bourichi

Page 222: Systèmes d'exploitation

222

Stratégies de gestion des interblocages

1. Ignorer les problèmes (la politique de l’autruche)

2. Les détecter et y remédier

3. Les éviter de manière dynamique en allouant les ressources avec précaution

4. Les prévenir en empêchant l'apparition d'une des 4 conditions de leur existence.

A. EL Bourichi

Page 223: Systèmes d'exploitation

223

La politique de l'autruche

• Ignorer le problème

• Raisonnable si

– les interblocages se produisent rarement

– le coût de la prévention est élevé

• UNIX et Windows utilisent cette approche

• Il existe un compromis entre

– ce qui est pratique

– ce qui est correct

A. EL Bourichi

Page 224: Systèmes d'exploitation

224

Détection avec une seule ressource de chaque type

• Noter la détention et la demande en ressource

• cycle = interblocage

A. EL Bourichi

Page 225: Systèmes d'exploitation

225

Détection avec plusieurs ressources de chaque type (1)

Structures de données utilisées par l'algorithme

A. EL Bourichi

Page 226: Systèmes d'exploitation

226

Détection avec plusieurs ressources de chaque type (2)

Exemple de détection d'interblocage

Ressources existantes Ressources disponibles

A. EL Bourichi

Page 227: Systèmes d'exploitation

227

Reprendre après un interblocage (1)

• Reprendre au moyen de la préemption – Prendre une ressource d'un autre processus

– dépend de la nature de la ressource

• Reprendre au moyen du "rollback" – enregistrer des points de reprise

– l'état du processus est sauvé pour être restauré ultérieurement

– reprendre le processus si un interblocage se produit

A. EL Bourichi

Page 228: Systèmes d'exploitation

228

Reprendre après un interblocage (2)

• Reprendre au moyen de la suppression de processus

– rudimentaire mais simple

– Suspendre un processus pour libérer ses ressources

– les autres processus peuvent utiliser ses ressources

– choisir un processus pouvant être redémarré depuis le début (ex. compilation)

A. EL Bourichi

Page 229: Systèmes d'exploitation

229

Évitement des interblocages Trajectoires des ressources

Exemple: 2 processus A. EL Bourichi

Page 230: Systèmes d'exploitation

230

États sûr et non sûr

• On dit d'un état qu'il est sûr s'il n'est pas bloqué et qu'il existe un ordonnancement selon lequel chaque processus peut s'exécuter jusqu'au bout, même si tous demandent d'un seul coup leur nombre maximum de ressources.

A. EL Bourichi

Page 231: Systèmes d'exploitation

231

États sûrs et non sûrs (1)

Démonstration que l'état de (a) est sûr

On suppose qu’il y a 10 ressources en tout.

A. EL Bourichi

Page 232: Systèmes d'exploitation

232

États sûrs et non sûrs (2)

Démonstration que l'état de (b) n'est pas sûr

Si A demande et obtient une ressource supplémentaire (figure b) alors on est dans un état non sur

A. EL Bourichi

Page 233: Systèmes d'exploitation

233

L'algorithme du banquier pour une ressource unique (Dijkstra 1965)

• 3 états d'allocation de ressource – (a) sûr – (b) sûr – (c) non sûr

A. EL Bourichi

Page 234: Systèmes d'exploitation

234

L'algorithme du banquier pour plusieurs ressources

C R

A. EL Bourichi

Page 235: Systèmes d'exploitation

235

L'algorithme du banquier pour plusieurs ressources

1. Rechercher une rangée R dont les demandes de ressources non satisfaites sont inférieur ou égales à A

2. Marquez le processus R comme achevé et ajouter toutes ses ressources au vecteur A

3. Recommencer les étapes 1 et 2 jusqu'à ce que tous les processus soient terminés (état sûr) où jusqu'à ce qu'un interblocage se produise (état non sûr).

• Si B demande un scanner, on ne peut le lui accorder

• Par contre, on peut servir D

• Si E en demande un aussi alors on ne peut pas lui accorder et il devra patienter.

A. EL Bourichi

Page 236: Systèmes d'exploitation

236

Prévention des interblocages S'attaquer à la condition de l'exclusion mutuelle

• Certains périphériques (tel que l'imprimante) peuvent être spoolés (traités en différé) – seul le démon d'imprimante peut directement utiliser

l'imprimante

– cela élimine les interblocages

• Tous les périphériques ne peuvent être spoulés.

• Principe: – éviter d'attribuer une ressource lorsque cela n'est pas

absolument nécessaire

– le plus petit nombre possible de processus peuvent réclamer la ressource

A. EL Bourichi

Page 237: Systèmes d'exploitation

237

S'attaquer à la condition de détention et d'attente

• Exige que les processus demandent toutes ses ressources avant l'exécution – le processus n'attend jamais après une ressource

• Problèmes – peut ignorer le nombre de ressources qu'il aura besoin

(sinon on pourrait utiliser l’algorithme du banquier)

– les ressources ne sont pas utilisées de manière optimale

• Variation: – un processus doit libérer toutes les ressources qu'il détient

– il obtient ensuite tout ce dont il a besoin en une seule fois

A. EL Bourichi

Page 238: Systèmes d'exploitation

238

S'attaquer à la condition de non-préemption

• Cette option est difficilement réalisable

• Considérer un processus utilisant une imprimante

– au milieu de la tâche

– réquisitionner l'imprimante

– !!??

– Solution dans ce cas: utiliser

le disque et le

démon d’impression

A. EL Bourichi

Page 239: Systèmes d'exploitation

239

S'attaquer à la condition de l'attente circulaire

• Ressources ordonnées numériquement

• Un processus peux demander plusieurs ressources mais il doit respecter l’ordre

• Dans l’exemple, si i<j alors – A peux demander i

– B ne peux pas demander i sans d’abord libérer j

• Le problème est qu’il est difficile de trouver un ordonnancement adéquat