Vous êtes sur la page 1sur 239

Systmes dexploitation

1re anne du cycle dingnieurs Ecole Nationale des Sciences Appliques de Kenitra
A. EL Bourichi 1

Contenu du premier lment


Chapitre 1: Introduction Chapitre 2: Le systme dexploitation Linux Chapitre 3: Gestion des processus Chapitre 4: Gestion de la mmoire Chapitre 5: Gestion de fichiers Chapitre 6: Gestion des entres/sorties Chapitre 7: Interblocages
A. EL Bourichi 2

Chapitre 1

Introduction

A. EL Bourichi

Quest ce quun systme dexploitation?


Un ordinateur moderne est compos de:
Un ou plusieurs processeurs Une mmoire principale Disques durs Imprimantes Priphriques divers dentre/sortie

Un systme dexploitation est un logiciel qui permet de grer tous ces composants
A. EL Bourichi 4

Systme dexploitation
Le systme d'exploitation (SE, en anglais Operating System ou OS) est un ensemble de programmes servant dinterface entre les ressources matrielles d'un ordinateur et les applications de l'utilisateur (traitement de texte, compilateurs, navigateurs web )

A. EL Bourichi

Quest ce quun systme dexploitation?

Figure 1-1. Place du systme dexploitation


A. EL Bourichi 6

Le concept dabstraction

Figure 1-2. Un systme dexploitation donne une belle image une ralit complexe et hideuse
A. EL Bourichi

Rles du SE
Le matre dorchestre: essentiel pour utiliser les ressources de la machine
gestion de la mmoire centrale gestion des processeurs: diviser le temps de calcul entre plusieurs programmes qui sexcutent simultanment gestion des priphriques: E/S gestion des fichiers: sur les mmoires de masses gestion des ressources: attribution des ressources ncessaires gestion des utilisateurs: pas dinterfrence entre eux

A. EL Bourichi

Noyau (kernel)
Le noyau assure ces fonctionnalits :
gestion des priphriques (au moyen de pilotes) gestion des files d'excution (aussi nomme processus) :
attribution de la mmoire chaque processus ordonnancement des processus (rpartition du temps d'excution sur le ou les processeurs) synchronisation et communication entre processus (services de synchronisation, d'change de messages, mise en commun de segments de mmoire, etc.)

gestion des fichiers (au moyen de systmes de fichiers) gestion des protocoles rseau (TCP/IP, .. etc.)

A. EL Bourichi

Noyau
Au lancement:
Boot: le programme qui initialise lordinateur Permet aux premiers services daccder aux applications systme : gestion de la mmoire, accs aux disques durs et accs aux priphriques

Mmoire centrale (vive): rpartition


Partie rserve pour le systme Partie rserve pour les applications

Assure une indpendance entre les applications et le matriel


A. EL Bourichi 10

Les bibliothques dynamiques


= Libraries Regroupent les oprations souvent utilises, selon les fonctionnalits (E/S, fichier, ) Ces oprations sont disponibles pour tre appeles et excutes par dautres programmes

A. EL Bourichi

11

Le systme de fichiers
Un systme de fichiers est une structure de donnes permettant de stocker les informations et de les organiser dans des fichiers sur des mmoires secondaires (disque dur, CD-ROM )
E.g. une structure hirarchique C:\ensa\ginfo\bourichi\SE\polycopie.pdf

Une telle gestion des fichiers permet de traiter, de conserver des quantits importantes de donnes ainsi que de les partager entre plusieurs programmes informatiques Il offre l'utilisateur une vue abstraite sur ces donnes et permet de les localiser partir d'un chemin d'accs

A. EL Bourichi

12

Interface utilisateur
Via ligne de commande
shell, MSDos

Interface graphique
Xterm, Linux, Windows, Macintosh GUI (Graphical User Interface)

A. EL Bourichi

13

Shell
Shell (coquille par opposition au noyau) = L'interprteur de commandes permettant la communication avec le SE par l'intermdiaire d'un langage de commandes Permet l'utilisateur de piloter les priphriques en ignorant tout des caractristiques du matriel qu'il utilise, de la gestion des adresses physiques, etc.
E.g. sur Unix/Linux: bash, csh, tcsh,
ls : lister les rpertoires et les fichiers du rpertoire courant mv x y : changer le nom du fichier/rpertoire x en y

A. EL Bourichi

14

Chapitre 2 Linterface utilisateur du systme Linux

A. EL Bourichi

15

Historique
1969: Ken Thompson (Bell labs / MIT).
1973: criture en C -> systme portable

1974-1977: Distribution aux universits


Apparitions des UNIX propritaires AIX (IBM), HP-UX 1991 : Linus Torvalds (tudiant finlandais de 21 ans) crit LINUX (noyau dUNIX pour PC) bas sur Minix (dvelopp par Andrew Tanenbaum)
A. EL Bourichi

Linux
Proprits
multi-tches multi-utilisateurs Libre et gratuit

Ouverture/Fermeture dune session


Travailler sous Linux implique une connexion au systme Login:
Identification de lutilisateur: login + mot-de-passe droits accords par le super-utilisateur (root)

Logout:
commande logout dans la console

A. EL Bourichi

Rpertoire de connexion
A chaque utilisateur connu du systme est associ un rpertoire de connexion (home directory).
Le rpertoire 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 rpertoire de connexion grce la commande cd.

A. EL Bourichi

Initiation au shell
Le Shell = interprteur de commandes
interface utilisateur de base (interlocuteur avec le syst.) interprtation ligne ligne plusieurs shells: sh, csh, tcsh, bash, ksh, zsh, ... langage de programmation

shell par dfaut : bash

A. EL Bourichi

Initiation au shell - commandes Format des commandes:


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

Respecter la casse et les espaces!!

A. EL Bourichi

Excution dune commande


Lorsquil a la main, un utilisateur peut lancer lexcution dune commande en tapant son nom aprs le prompt. La commande est alors excute. Il existe une variable denvironnement: PATH qui contient lensemble des chemins des rpertoires contenant les commandes les plus utilises.

# 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 systme peut trouver les commandes les plus utilises par le demandeur.
A. EL Bourichi

Initiation au shell - mta caractres Caractres spciaux:


! ^ * ? [] \ ; L'astrisque ou toile: *
interprt comme toute suite de caractres alphanumriques utiliser avec prcaution (commande rm par ex...)

Le point dinterrogation: ?
remplace 1 seul caractre alphanumrique

A. EL Bourichi

Les commandes : file et cat


file nom_de_fichier : il est possible sous Unix de connatre 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 dun fichier Loption -v permet dafficher les caractres non visibles. La commande cat permet aussi de concatner des fichiers: cat fichier1 fichier2 > fichier3 cette opration permet de crer un fichier (fichier3) en concatnant les fichiers fichier1 et fichier2. Le seul inconvnient de cet outil est quil affiche le contenu du fichier dans sa totalit (sans possibilit simple de contrler le dfilement par pages).

A. EL Bourichi

Commandes dobservation du systme


who [am i]: affiche le nom de lutilisateur, le nom du terminal, la date et lheure de connexion et lcran de contrle de chaque utilisateur actuellement sur le systme. id : affiche les numros et les noms de lutilisateur 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 nest spcifi ceux sont les groupes auxquels appartient lutilisateur qui a tap la commande qui saffichent. finger [utilisateur][@machine]: permet davoir des informations informelles sur les utilisateurs dune machine prcise. Si aucun utilisateur nest spcifi, les informations concernent tous les utilisateurs connects. Si aucun nom de machine nest renseign, les donnes portent sur la machine sur laquelle lutilisateur qui tape la commande est connect. last [-n] [utilisateur] [terminal]: permet dafficher les dernires connexions au systme. On peut limiter le nombre de lignes renvoyes grce loption -n (o n dsigne le nombre de lignes affiches). On peut se limiter aussi aux connexions dun utilisateur ou aux connexions depuis un terminal.

A. EL Bourichi

La commande ps
On peut visualiser les processus qui tournent sur une machine avec la commande : ps (options), les options les plus intressantes sont -e (affichage de tous les processus) et -f (affichage dtaille). La signification des diffrentes colonnes est la suivante:
UID nom de l'utilisateur qui a lanc le process PID correspond au numro du process PPID correspond au numro 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 dure de traitement du processus COMMAND correspond au nom du processus.
A. EL Bourichi

Les entres et les sorties


Il y a trois sortes d'entres sorties ou flux de donnes :
le premier est l'entre standard, c'est dire ce que vous saisissez au clavier, le deuxime est la sortie standard, c'est dire l'cran, plus prcisment le shell, et le troisime est la sortie standard des messages d'erreurs conscutifs une commande, qui est gnralement l'cran.

Chacun de ces flux de donnes est identifi par un numro descripteur, 0 pour l'entre standard, 1 pour la sortie standard et 2 pour la sortie standard des messages d'erreur.

A. EL Bourichi

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 connects.

A. EL Bourichi

Redirections d E/S (2/5)


Redirection de la sortie standard:
Remarque:
Pour viter dcraser le contenu dun fichier suite une redirection de la sortie, on peut utiliser la redirection avec ajout. Dans ce cas le rsultat de la commande sera insr la fin du fichier.

Syntaxe: $ Commande >> fichier. Exemple: $ date >> connect

A. EL Bourichi

Redirections d E/S (3/5)


Redirection de lEntre standard:
Un fichier peut servir comme entre 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

Redirections d E/S (4/5)


Redirection de la sortie erreur standard :
Chaque programme est dot dun canal de sortie derreur spar dont le descripteur de fichier gal 2. Exemple: $ cc programme.c 2>erreurs. Les erreurs de compilation du fichier programme.c seront rediriges vers le fichier erreurs. On peut utiliser galement le fichier /dev/null pour la redirection de la sortie erreur.

A. EL Bourichi

Redirections d E/S (5/5)


Redirections :
- < : redirige lentre partir dun fichier Ex. cat < toto - > : redirige la sortie vers un fichier Ex. ls > dir.txt - >> concatne la sortie avec un fichier Ex. ls >> dir.txt - 2> (ou >&*) redirige les erreurs vers un fichier Ex. rm * 2> erreur.log - 2>> (ou >>&*) concatne les erreurs avec un fichier Ex. rm * 2>> erreur.log

A. EL Bourichi

Les tubes de communication 1/5


Dfinition:
Lier les entres et les sorties de plusieurs commandes dans une mme ligne de commande.

Syntaxe: $ Commande1 | Commande2

Le rsultat de la commande1 sera considr comme argument pour la commande2. |: indique un tube.
A. EL Bourichi

Les tubes de communication 2/5


Exemple: $ ls | 1
grep ensak | tee fichier1 | wc -l.

1: Liste des fichiers dans le rpertoire courant 2: Recherche des noms de fichiers qui contiennent la chane de caractres pome. 3: Met le rsultat de la commande prcdente dans fichier1 4: compte le nombre de lignes ramens par grep.

A. EL Bourichi

Les tubes de communication 3/5


Exemple:
$ who | wc - l (**) $who : liste de personnes connects au systme. $wc -l nom_fichier :Compte le nombre de lignes de nom_fichier. La commande (**) permet de compter le nombre de personnes connects, elle est quivalente la ligne de commande suivante: $ who>tmp ; wc -l tmp ; rm tmp

A. EL Bourichi

Les tubes de communication 4/5


La commande tee :
En utilisant des filtres le rsultat de la commande commande1 nest pas visualis lcran, pour pouvoir le visualiser on utilisera des tuyaux : commande tee. Syntaxe:
$ commande1 | tee fichier1 | commande2

Redirige le rsultat intermdiaire de commande1 vers fichier1. Ce mme rsultat sera trait par la commande commande2.

A. EL Bourichi

Les tubes de communication 5/5


La commande tee:
Exemple:
$ ls | grep pome | tee fichier1 | wc -l.

1: Liste des fichiers dans le rpertoire courant 2: Recherche des noms de fichiers qui contiennent la chane de caractres pome. 3: Met le rsultat de la commande prcdente dans fichier1 4: compte le nombre de lignes ramens par grep.

A. EL Bourichi

Le systme de fichiers Linux


Stocke les donnes:
Structure arborescente TOUT est fichier

3 types de fichiers:
fichiers ordinaires rpertoires fichiers spciaux (priph., )

A. EL Bourichi

Larborescence

A. EL Bourichi

Larborescence
rpertoire racine

/
bin tmp home

le rpertoire de login: ~ le rpertoire courant: . le rpertoire suprieur: .. connatre le rp. courant: pwd lister le contenu: ls
(voir man ls)

ensak
.cshrc cours tp1.txt docs

chemin daccs au fichier tp1.tex:


/home/ensak/cours/tp1.txt ou bien: ~/cours/tp1.txt
A. EL Bourichi

Larborescence

pwd retourne: /home/ensak/cours se dplacer: cd [/home/ ensak/cours]$ cd .. [/home/ ensak]$ [/home/ ensak]$ cd /tmp [/tmp]$ chemin relatif chemin absolu

/
tmp home ensak cours docs

Test .cshrc

crer un rpertoire: mkdir [/tmp]$ mkdir Test tp1.txt supprimer un rpertoire: rmdir rpertoire courant [/tmp]$ rmdir Test
A. EL Bourichi

Les droits daccs 1/3


Accs aux fichiers rglement (sauf: tous les droits pour root) 3 types dutilisateurs:
propritaire (user) personnes du mm groupe (group) les autres (others)

3 types de permissions
lecture (r) criture (w) excution (x) afficher le contenu afficher le contenu modifier excuter crer/supp fichiers traverser

fichier
A. EL Bourichi

rpertoire

Les droits daccs 2/3


Affichage des caractristiques: ls -l
groupe
-rw-r--r-- 1 adil ginfo 58K 16 Feb 09:19 tp1.txt

nb liens

propritaire

taille

type

group

date

nom

-rw-r--r-user
A. EL Bourichi

others

Les droits daccs 3/3


Changer les permissions: chmod chmod <classe op perm, >|nnn <fic>
classe:
u : user g : group o : others a : all = : affectation - : suppr. + : ajout r : lecture w : criture x : excution

chaque perm = 1 valeur:


r w x rien 4 2 1 0

op:

perm:

df. des permissions (par addition) pour chaque classe


chmod u=rwx,g=rx,o=r tp1.txt chmod a+x script.sh chmod 755 script.sh

Exemples:

A. EL Bourichi

Droits daccs par dfaut


Chaque fichier ou rpertoire nouvellement cr est quip de droits daccs par dfaut :
- Pour un rpertoire - Pour un fichier 777 rwxrwxrwx 666 rw-rw-rw-

La commande umask -Syntaxe : $ umask [code]

A. EL Bourichi

Changement de propritaire
Commande chown
-Syntaxe: $ Chown utilisateur fichier 1 [fichier2]

Commande chogrp - Syntaxe: $ Chogrp group fichier 1 [fichier2]

A. EL Bourichi

Manipulation des fichiers


Manipulation des fichiers
copier : dplacer/renommer : effacer : afficher le contenu : trier le contenu : cp fic1 fic2 mv fic1 fic2 rm fic cat fic sort fic

Voir les pages du man !!

A. EL Bourichi

La commande find
Permet de chercher dans un rpertoire et ses sousrpertoires des fichiers prsentant certaines caractristiques. Syntaxe: find chemin expression Principales options:
-name fich: recherche le fichier fich. -print: crit le nom du fichier. -type: d: rpertoire, f: fichier symbolique. -exec: permet lexcution dune commande sur le fichier reprsent par {}.

A. EL Bourichi

Exemple
Rechercher tous les fichiers nomms hello.txt partir du rpertoire racine. find / -name hello.txt -print. Afficher tous les fichiers .h partir du rpertoire courant. find . -name *.h -print Affiche lcran le contenu de tous les fichiers .c. find . -name *.c -exec cat {} \;

A. EL Bourichi

La commande grep
Permet de rechercher un certain motif dans un fichier. Le motif est dcrit par une expression rgulire.

grep [option] motif fichier Affiche les lignes de fichier qui contiennent le motif motif. -l: naffiche que le nom des fichiers.
grep define stdio.h: recherche le mot "define" dans le fichier stdio.h. grep hello *: recherche le mot "hello" dans tous les fichiers du rpertoire.
A. EL Bourichi

Exemple:

La programmation shell

A. EL Bourichi

50

Introduction
Plus qu'une invite de commande Langage de programmation Interprt
Non compil Traduit au fur et a mesure de son excution

Permet:
L'encapsulation de suites de commandes dans un mme programme Simplification de certaines tches quotidiennes ou rptitives

A. EL Bourichi

Le shell - Gnralits (1)


shell : interprteurs de langage de commande
programme excutable interface directe entre le systme et lutilisateur

shell Application UNIX Application Application

Machine

A. EL Bourichi

52

Le shell - Variables (1)


Utilisation dune 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
A. EL Bourichi 53

Le shell - Variables (2)


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

Variables denvironnement (ou exportes)


connues dans les processus lancs par le shell
La commande env Liste les variables denvironnement

A. EL Bourichi

54

Le shell - Dlimiteurs de chanes


$ echo $PWD $PWD

Le caractre (simple quote) Tous les caractres entre simple quotes perdent leur aspect spcia

Le caractre " (double quote) Les caractres $, \, et gardent leur rle de mta-caractres. $ echo "Mon repertoire courant : \"$PWD\"" Mon repertoire courant : "/home/omip/info/wattez"

Le caractre ` (anti quote) Une chane entre anti quotes est interprte comme une commande. $ echo "Mon repertoire courant : \"`pwd`\"" Mon repertoire courant : "/home/omip/info/wattez"
A. EL Bourichi 55

criture du script
Un script est un fichier texte dont la premire ligne contient le chemin du Shell par lequel il doit tre excut Fichier script.bash :

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

A. EL Bourichi

criture du script - Premier Script L'excution se fait en tapant le nom du fichier comme l'appel d'une commande. Par contre :
Si l'on est pas dans le rpertoire dans lequel est le fichier, Il faut donner le chemin absolue Mme si l'on est dans le mme rpertoire, suivant la configuration de l'environnement, il faut parfois prcder le nom du fichier de ./

A. EL Bourichi

Lecture de l'Entre Standard

A. EL Bourichi

Le shell - Paramtres
Variables concernant les paramtres
* # 0 1, ... n liste des paramtres de la commande nombre de paramtres de la commande nom de la commande valeur des paramtres 1, ... n
de parametres $#" la commande $0" des parametres 1 et 2 $1 $2" test"

script shell testParam


echo echo echo echo "nombre "nom de "valeur "fin du

$ testParam aa bbb cccc nombre de parametres 3 nom de la commande ./testParam valeur des parametres 1 et 2 aa bbb fin du test $
A. EL Bourichi 59

La commande test
Sert vrifier des conditions. Ces conditions portent sur des fichiers (le plus souvent), ou des chanes ou une expression numrique Syntaxe:
test expression [ expression ] attention aux espaces autour de expression

A. EL Bourichi

Structures de Contrle - IF Tests sur les fichiers


Existence : -e Rpertoire : -d Fichier : -f Non vide : -s Lisible : -r Modifiable : -w Excutable :-x

A. EL Bourichi

Structures de Contrle - IF Comparaison d'entiers


Egalit : -eq x = y : [ x -eq y ] Ingalit : -ne x # y : [ x -ne y ] Supriorit : -gt x > y : [ x -gt y ] Infriorit : -lt x < y : [ x -lt y ]

A. EL Bourichi

Structures de Contrle - IF
Tester une chane

A. EL Bourichi

Structures de Contrle - IF Tester un nombre

A. EL Bourichi

Structures de Contrle - IF Oprations dans une commande test

A. EL Bourichi

Structures de Contrle - IF -

A. EL Bourichi

Structures de contrle - CASE Le choix


case chaine in motif1) commande1;; motif2) commande2;; ... *) commanden;; esac

script shell testCase


case $1 in [aeiouy]*) [A-Z]*) ???) *) esac echo echo echo ls;; echo "Commence par une voyelle";; "Commence par une majuscule";; "longueur 3" "Autres cas !!!";;

$ testCase yes A. EL Bourichi Commence par une voyelle

(lordre est important !!!)

67

Structures de Contrle - FOR Litrative borne (premire 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 A. EL Bourichi $

68

Structures de Contrle - FOR Litrative borne (seconde forme)


for variable do commande done

Dans ce cas, variable prend pour valeurs successives chacun des paramtr du script

script shell testFor2


for VAR do echo "Valeur de VAR : $VAR" done $testFor2 Valeur de Valeur de Valeur de je fais souvent VAR : je VAR : fais VAR : souvent
A. EL Bourichi 69

Structures de Contrle - WHILE Litrative non borne


while commande1 do commande2 done until commande1 do commande2 done

commande2 peut ne pas tre effectue, aussi bien dans la forme while que dans la forme until.

A. EL Bourichi

70

Arithmtique et Boolens -Oprateurs Oprateurs arithmtiques


Addition : + Soustraction : Multiplication : * Division : / Modulo : %

Oprateurs boolens
Et : && Ou : || Non : !
A. EL Bourichi

Passage d'Arguments
Les paramtres sont passs sur la ligne d'appel du script, comme fait pour les commandes Les paramtres sont accessibles sous forme de variables portant le numro du paramtre, $1, $2 et $3 dnotent respectivement les paramtres 1, 2 et 3 passs au script La variable $# contient le nombre de paramtres passs au script La variable $* contient l'ensemble des paramtres sous forme de liste La variable $0 contient le nom du script

A. EL Bourichi

Chapitre 3 Gestion des Processus

A. EL Bourichi

73

Gestion de Processus
Un processus est un programme en excution LOS est responsable des activits suivantes en relation avec la gestion des processus
Cration et suppression de processus Suspension et relance du processus Mcanismes pour:
Synchronisation entre processus Communication entre processus Traitement des interblocages

Un processus a besoin de certaines ressources; CPU, mmoire, fichiers, les priphriques dE/S, pour accomplir sa tche

A. EL Bourichi

74

Notion de processus
Dfinition
Un processus est un programme en cours dexcution auquel est associ un environnement processeur (CO, PSW, RSP, registres gnraux) et un environnement mmoire appels contexte du processus. Un processus est linstance dynamique dun programme et incarne le fil dexcution de celui-ci dans un espace d'adressage protg(objets propres : ensemble des instructions et donnes accessibles) Un programme rentrant est un programme pour lequel il peut exister plusieurs processus en mme temps.

A. EL Bourichi

Processus
Systmes monoprocesseurs: pseudo-paralllisme Multiprogrammation: basculement entre processus Un processus possde: - son propre espace dadressage: programme, donnes - Une entre dans la Table des Processus: sert pour la reprise aprs suspension Un processus est cr par un autre processus, le processus parent.
UNIX: fork cration dun clone et execve modifier limage du processus Windows: CreateProcess

Processus
Dmons (daemon) ou en arrire-plan, exemples: courriers lectroniques, pages web Premier-plan

Voir la liste des processus:


Ctrl+alt+del sur Windows ps sur UNIX
A. EL Bourichi 76

Les Appels Systmes


Linterface entre le SE et les programmes utilisateurs est dfinie par lensemble des appels systmes. Lappel systme est analogue a un appel procdural classique, mais il est effectu en mode noyau. Code en assembleur

A. EL Bourichi

77

Appels Systmes POSIX


Gestion des Processus
fork, execve, exit

Gestion des Fichiers


open, close, read, write, stat

Gestion des Rpertoires


mkdir,rmdir,link

A. EL Bourichi

78

Processus
Fin de Processus
Volontaire: arrt normal (Unix: exit, Windows: ExitProcess) ou arrt pour erreur (le fichier compiler nexiste pas) Involontaire: arrt pour erreur fatale (division par 0) ou arrt par un autre processus (Unix: kill, Windows: TerminateProcess)

Hirarchie de Processus
Existe sous UNIX, arborescence de parent-enfants, un processus peut crer un autre processus par lappel systme fork Nexiste pas sous Windows, CreateProcess retourne un HANDLE utilis pour contrler le processus

Implmentation de Processus
Un processus possde son propre espace dadressage: programme, donnes, pile. Le changement de contexte (changement de processus) Table de processus, avec une entre/ processus contenant registres, identificateur, ptr vers le segment texte, ptr vers segment de donnes, ptr vers le segment de pile, tat
A. EL Bourichi 79

Etats de Processus
Elu (En cours dexcution)
(1) Bloqu (4) (2) (3) Prt

1- Le processus est bloqu, en attente dune donne, vnement 2- Lordonnanceur choisit un autre processus 3- Lordonnanceur choisit ce processus 4- La donne devient disponible
A. EL Bourichi 80

Terminaison de processus
Un processus excute sa dernire instruction
pourrait passer des donnes son parent ses ressources lui sont enleves

Le processus parent termine lexcution dun fils pour diffrentes raisons


le fils a excd ses ressources le fils nest plus requis

Le parent pourrait tre le SE


A. EL Bourichi 81

Cration et synchronisation de processus

En UNIX, le fork cr un processus identique au pre, except son pid exec peut tre utilis pour excuter un nouveau programme
A. EL Bourichi 82

Sauvegarde dinformations de processus


Un processus sexcute sur lUCT de faon intermittente Chaque fois quun processus reprend l UCT (transition prt excution) il doit la reprendre dans la mme situation o il la laisse (mme contenu de registres UCT, etc.) Donc au moment o un processus sort de ltat excution il est ncessaire de sauvegarder ses informations essentielles, quil faudra rcuprer quand il retourne cet tat

A. EL Bourichi

83

PCB = Process Control Block:


Reprsente la situation actuelle dun processus, pour le reprendre plus tard

Registres UCT

A. EL Bourichi

84

Process Control Block (PCB)


pointeur: les PCBs sont rangs dans des listes chanes tat de processus: prt, exec, attente compteur programme: le processus doit reprendre linstruction suivante autres registres UCT bornes de mmoire fichiers quil a ouvert etc.
A. EL Bourichi 85

Commutation de processeur
Aussi appl commutation de contexte ou context switching

Quand lUCT passe de lexcution dun processus 0 lexcution 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 dUCT tels que le compteur dinstructions etc. dans la mme situation qui est dcrite dans le PCB de 1

A. EL Bourichi

86

Commutation de processeur (context switching)

Il se peut que beaucoup de temps passe avant le retour au processus 0, et que beaucoup dautres processus soient excut A. EL Bourichi 87 entre temps

La pile dun processus


Quand un processus fait appel une procdure, il est ncessaire de mettre dans une pile ladresse laquelle le processus doit retourner aprs avoir termin cette procdure. Aussi on met dans cette pile les variables locales de la procdure quon quitte, les paramtres, etc., pour les retrouver au retour Chaque lment de cette pile est appel stack frame ou cadre de pile Donc il y a normalement une pile dadresses de retour aprs interruption et une pile dadresses de retour aprs appel de procdure Ces deux piles fonctionnent de faon semblable, mais sont indpendantes Les informations relatives ces piles (base, pointeur) doivent aussi tre sauvegardes au moment de la commutation de contexte

A. EL Bourichi

88

La Pile dun processus


P A B
Appel A Appel B Donnes B

Donnes A

Donnes P PILE
A. EL Bourichi 89

Configuration typique de mmoire pour un processus

Pile de contrle

Tas pour structures dynamiques (listes) Donnes fixes programme

A. EL Bourichi

90

Notion dinterruptions
Une interruption est un mcanisme permettant de stopper lexcution du programme en cours afin daller excuter une tche.
Elle est caractrise par un numro et un traitement associ (la routine ou traitant dinterruption) On distingue principalement deux types dvnements :
Les interruptions externes ou matrielles. Les interruptions internes ou logicielles (traps).

A. EL Bourichi

Rle du matriel et du logiciel dans le traitement dinterruptions LOGICIEL MATRIEL


Infos sauvegardes dans PCB Signal dinterruption gnr Le code de traitement de linterruption est excut Lordonnanceur choisit un processus qui est prt

UCT termine linstruction courante et dtecte interruption Registres dUCT sont sauvegards dans la pile des interr. UCT saute ladresse trouve dans le vecteur dinterruption

Les infos relatives ce processus sont rtablies partir de son PCB


Les registres dUCT sont rechargs avec ces infos LUCT reprend lexec de ce proc
A. EL Bourichi 92

dispatcher

Files dattente
Les ressources dordinateur sont souvent limites 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 diffrentes files du SE En changeant dtat, les processus se dplacent d une file l`autre
File prt: les processus en tat prt=ready Files associs chaque unit E/S etc.

A. EL Bourichi

93

Ce sont les PCBs qui sont dans les files dattente (dou le besoin d un pointeur dans le PCB)
file prt

Nous ferons lhypothse que le premier processus dans une file est celui qui utilise la ressource: ici, proc7 excute, proc3 utilise disque 0, etc.
A. EL Bourichi 94

Trois structures de donne essentielles pour la gestion des processus


Les structures de donnes suivantes sont relies mais distinctes dans leur utilisation et contenu Pile propre chaque processus pour grer les appels-retours aux procdures, mthodes, fonctions etc. Pile du SE pour grer les interruptions et retours des interruptions Liste des PCBs actifs dans le systme un moment donn, est partitionne en plusieurs listes dattente, une pour chaque ressource qui peut tre affecte un processus Chacune de ces piles ou listes doit sauvegarder des informations pour pouvoir retourner la bonne place du bon processus avec les bonnes donnes
A. EL Bourichi 95

Ces listes sont diffrentes!


Pile propre chaque processus pour grer les appels-retours aux procdures, mthodes, fonctions etc. Cette pile doit exister dans tout systme qui admet ces appels, mme si le systme nadmet ni les interruptions, ni la multiprogrammation Elle est gre par le systme dexcution du programme compil Pile du SE pour grer les interruptions et retours des interruptions Cette pile doit exister dans tout systme qui admet des interruptions, mme sil nadmet pas de multiprogrammation Elle est gre directement par le matriel Liste des PCBs actifs dans le systme Cette liste a besoin dexister seulement dans les systmes multiprogramms Elle est gre par le SE
A. EL Bourichi 96

Ordonnanceur (Scheduler)

A. EL Bourichi

Ordonnanceur (Scheduler)
Election: allocation du processeur

Premption: rquisition du processeur


ordonnancement non premptif : un processus lu le demeure sauf sil se bloque de lui-mme ordonnancement premptif : un processus lu peut perdre le processeur
sil se bloque de lui-mme (tat bloqu) si le processeur est rquisitionnpour un autre processus (tat prt)
A. EL Bourichi

Systme multiprocessus Ordonnanceur et


rpartiteur

A. EL Bourichi

Ordonnancement
Ordonnanceur (scheduler): partie du SE qui slectionne les processus. Algorithme dordonnancement (scheduling algorithm) - non-premptif: slectionne un processus, puis le laisse sexcuter jusqu ce quil se bloque (E/S, wait) ou se termine. - premptif: slectionne un processus et le laisse sexcuter pendant un quantum, premption par linterruption horloge Comportement de Processus: - Processus de traitement - Processus dE/S
A. EL Bourichi 100

Algo dordonnancement
1er arriv, 1er servi (first come first served) Le job le plus court en premier (shortest job first)
Dlais dexcution connus

Shortest remaining time next Tourniquet (round robin)


Quantum court: trop de changement de contexte
Quantum long: dgradation temps de rponse aux requtes interactives

Par Priorits
Prvenir contre les situations de famine en diminuant la priorit du processus chaque interruption ou priorit gale linverse de la fraction dutilisation du dernier quantum...

Par Tirage au Sort


A. EL Bourichi 101

Politiques d'ordonnancement
Premier arriv, premier servi
FIFO, sans rquisition

Par priorits constantes


Par tourniquet (round robin) Par files de priorits de priorits constantes multiniveaux avec ou sans extinction de priorit

A. EL Bourichi

Chapitre 4 Gestion de la mmoire

A. EL Bourichi

103

Besoins en mmoire
Premier ordinateurs disposaient de moins d'1Ko de RAM Aujourd'hui 4Go Tout va bien, pas besoin de grer la mmoire? Non! Besoins toujours croissants (multimdia)

A. EL Bourichi

104

Hirarchisation de la mmoire

A. EL Bourichi

105

Monoprogrammation simple
Figure 4.1 pg 203 Tanen

A. EL Bourichi

106

Multiprogrammation avec partitions fixes


Figure 4,2 Tannen

A. EL Bourichi

107

Problmes de la multiprogrammation
Rallocation Protection mmoire

A. EL Bourichi

108

Rallocation (relocation)
On ne sais pas o commence le programme 2 solutions: 1) Relocation software 2) Relocation hardware Adresse relle = Reg. de base + Reg. Dplacement (80x86)

A. EL Bourichi

109

Structure excutable
Le

compilateur gnre un fichier excutable. Qu'est-ce qu'il y a dans un fichier excutable? (un .exe par exemple)

A. EL Bourichi

110

Structure excutable
Le code machine On

doit savoir o on commence!

=> adresse main() (point d'entre)


Excutable

Code machine Table symboles

Adresses points d'entrs (fonction main en C ou les mthodes public static en Java )
A. EL Bourichi 111

Structure excutable
Module1.exe Code

main = 0FFH

A. EL Bourichi

112

Loader
Il

faut maintenant charger (to load) le programme en mmoire. Loader = programme de l'OS qui va charger l'excutable en mmoire et transfrer le contrle au point d'entre principal.

A. EL Bourichi

113

Chargement programme

OS 20000H

OS

20000H
Mm Libre Module1

Mem Libre
Module1.exe main = 0FFH
A. EL Bourichi 114

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?

A. EL Bourichi

115

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

A. EL Bourichi

116

Relocation
La

relocation est le fait de corriger l'adresse d'un symbole pour avoir son adresse relle en mmoire.

A. EL Bourichi

117

Protection mmoire
Solution 1: Block ID (IBM 360) Mmoire divise en blocs de 2Ko Chaque bloc un ID de 4 bit (pas forcment unique) Chaque processus un ID mmoire de 4 bits Seul lOS peut changer les blocs et process IDs Si processus ID = bloc ID alors on peut lire et crire Si ID's non compatibles => erreur (interruption)
A. EL Bourichi 118

Protection mmoire
Solution 2: Base + limite On a deux registres protgs (seuls l'OS peut les changer) On peut accder les adresses [Base, Base+limite] Si on sort: erreur (segmentation fault) => interrupt

A. EL Bourichi

119

Limitations partitions fixes?

A. EL Bourichi

120

Limitations partitions fixes


Nombre de processus excuts fixe, ... Taille des partitions fixe Si programme plus grand que partition => KO 2 solutions: Va-et-vient Mmoire virtuelle

A. EL Bourichi

121

Va-et-vient
On va permettre de retirer (swap-out) des processus de la mmoire pour les y remettre plus tard (swap-in). La mmoire devient une ressource premptible (cad qu'on peut confisquer)

A. EL Bourichi

122

Va-et-vient
A rentre Swap-in

A. EL Bourichi

123

Va-et-vient
B rentre Swap-in

A. EL Bourichi

124

Va-et-vient
C rentre Swap-in C Veut rentrer D

A. EL Bourichi

125

Va-et-vient
Swap-out A

A. EL Bourichi

126

Va-et-vient
Swap-in D
Veut faire revenir A

A. EL Bourichi

127

Va-et-vient
Swap-out B

A. EL Bourichi

128

Va-et-vient
Swap-in A

A. EL Bourichi

129

Va-et-vient

A. EL Bourichi

130

Fragmentation
A force, on risque de voire apparatre des trous trop petits pour pouvoir y mettre un processus Il faut compacter ou tasser les zones mmoire pour faire de la place. Lent! Ex: 256Mo RAM copier 4 octets prend 40ns => 2,7 sec pour copier toute la mmoire!
A. EL Bourichi 131

Gestion place libre par tableau de bits (bitmap)


On dcoupe la mmoire en units d'allocation (blocs) de plusieurs Ko. Bit 1 = place prise, 0 = libre Figure 4.7 (a),(b) Tanen

A. EL Bourichi

132

Gestion place libre par tableau de bits


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

A. EL Bourichi

133

Gestion place libre par listes chanes


On indique pour chaque zone libre ou occupe son dbut et sa taille. Figure 4.7 (a), (c) Tanen

A. EL Bourichi

134

Pour viter la fragmentation, on fusionne les trous Figure 4.8 Tanen

Gestion place libre par listes chanes

A. EL Bourichi

135

Overlays (Segments de recouvrement)


Parfois la taille d'un programme > taille mmoire physique! Historiquement: segments de recouvrement (overlays) On dcoupe le programme en zone qu'on charge au besoin C'est le programmeur qui doit grer le quand du chargement! Plus vraiment utilis
A. EL Bourichi 136

Mmoire virtuelle
C'est le mme principe que les overlays sauf que c'est gr par l'OS L'OS dcoupe le processus en petites parties. On conserve les parties les plus utilises en RAM Les autres sont stockes sur disque Au besoin on sort des parties non utilises et charge de nouvelles parties en RAM => processus bloqu en E/S lors du chargement de la partie manquante
A. EL Bourichi 137

Mmoire 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 rellement

A. EL Bourichi

138

Mmoire virtuelle: pagination


Adresse virtuelle
dans processeur avec pagination: Mov reg,1000 Base+1000 est une adresse virtuelle On la traduit d'abord en adresse relle, puis on charge son contenu de dans REG

Espace d'adressage = espace des adresses reprsentables


A. EL Bourichi 139

Mmoire virtuelle unique ou multiple


Mmoire virtuelle unique: tous les processus partagent le mme espace d'adressage virtuel
=> Ils peuvent (potentiellement) partager des zones mmoire pour s'changer des donnes.

Mmoire virtuelle multiple: chaque processus a son propre espace dadressage virtuel, il est donc (virtuellement) tout seul dans la mmoire.
A. EL Bourichi 140

Mmoire virtuelle: pratiquement


La traduction se fait par l'unit de gestion de la mmoire (memory management unit: MMU) Figure 4,9 Tanen

A. EL Bourichi

141

Mmoire virtuelle: pratiquement


Les processus sont dcoups en pages Ces pages sont charg dans des "pages frames" (cadres de pages) de la mmoire physique Ex: accder l'adresse 0

A. EL Bourichi

142

Mmoire virtuelle: pratiquement


Mov reg,8192 Traduit en?

A. EL Bourichi

143

Mmoire virtuelle: pratiquement


Mov reg,8192 Traduit en? Mov REG,24576

A. EL Bourichi

144

Mmoire virtuelle: pratiquement


Mov reg,32780 Que se passe-t-il?

A. EL Bourichi

145

Page fault (dfaut de page)


Mov reg,32780 Que se passe-t-il? Dfaut de page (page fault) On va slectionner un page frame peu utilis On la sort de la mmoire (swap out) On rentre la page manquante dans le cadre libre On excute quelle instruction aprs a?
A. EL Bourichi 146

Page fault (dfaut de page)


Mov reg,32780 Que se passe-t-il? Dfaut de page (page fault) On va slectionner un page frame peu utilis On la sort de la mmoire (swap out) On rentre la page manquante dans le cadre libre On excute quelle instruction aprs a? On r-excute Mov reg,32780 !!! (pas directement l'instruction suivante!)
A. EL Bourichi 147

Taille des pages


Vous n'avez rien remarqu sur la taille des pages? Ce sont des exposants de 2! Pourquoi?

A. EL Bourichi

148

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 reprsenter 0 4095 Adresse 16 bits: 4 bits pour le numro de page et 12 bits pour le dplacement (offset dans la page)
A. EL Bourichi 149

Table des pages


Les 4 bits de poids fort sont utilis comme numro de page dans la table des pages En ralit, les adresses font 32 bits Problme?

Table des pages


En ralit, les adresses font 32 bits Problme? 20 bits de numros de pages = 1 millions de pages!! Adresse 64 bits ??!!

Segmentation
Avec la pagination, on a un espace d'adressage par processus. Or on peut (veut) en avoir plusieurs. Ex:?

A. EL Bourichi

152

Segmentation
Dans le pentium on a des registres de segment qui dfinissent des espaces d'adressage propre. Combinaison avec la pagination?

A. EL Bourichi

153

Segmentation
Dans le pentium on a des registres de segment qui dfinissent des espaces d'adressage propre. Combinaison avec la pagination? Navement: Segment + offset = adresse virtuelle Pas si simple!!! On a une indirection en plus: Le registre de segment (appel slecteur) pointe vers un descripteur de segment.

A. EL Bourichi

154

Segmentation
Reg segment = selector

A. EL Bourichi

155

Segmentation et pagination
Ensuite on traduit l'adresse

A. EL Bourichi

156

Descripteur de segment

A. EL Bourichi

157

Slecteur de segment

A. EL Bourichi

158

Chapitre 5 Gestion des fichiers

A. EL Bourichi

159

Systmes de gestion des fichiers


Information logique Information physique

Nom folder Nom fichier Indications fichier

Disque Cylindre Piste Secteur

A. EL Bourichi

Concept de fichier
Dfinition : Un fichier est une unit de stockage logique de linformation.
Abstraction des proprits physiques des dispositifs de stockage la correspondance est tablie par le SE

Oprations sur les fichiers :Cration, Ecriture/Lecture, Suppression

A. EL Bourichi

Attributs dun fichier

Constituent les proprits du fichiers et sont stocks dans un fichier spcial appel rpertoire (directory). Exemples dattributs:

Nom: pour permet aux personnes daccder au fichier Identificateur: Un nombre permettant au SE didentifier le fichier Type: Ex: binaire, ou texte; lorsque le SE supporte cela Position: Indique le disque et ladresse du fichier sur disque Taille: En bytes ou en blocs Protection: Dtermine qui peut crire, lire, excuter Date: pour la dernire modification, ou dernire utilisation A. EL Bourichi Autres

Type des fichiers


Type de fichiers: excutable, 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

Conception dun systme de fichier


Le systme de fichiers doit avoir un moyen de calculer/mmoriser
La dcomposition des fichiers en blocs. Le positionnement du dbut de chaque fichier. Les positions de tous les blocs du mme fichier. Tous les blocs de mmoire libre sur un disque.

A. EL Bourichi

Organisation des disques


Organisation: blocs de mmoire de taille fixe (N octets)
disque organis en Tte, Cylindre, Secteur

A. EL Bourichi

A. EL Bourichi

Pour un meilleur compromis: temps d'accs et capacit de stockage certains SGF organisent l'espace du disque en blocs de secteurs Les oprations de lecture et d'criture du SGF se font bloc par bloc

A. EL Bourichi

Mthode d allocation
Mthodes d'allocation
Allocation contigu (squentielle simple) Allocation par blocs chans Allocation indexe

A. EL Bourichi

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

A. EL Bourichi

Allocation contigu

0
5 10 15 20

1
6 11 16 21

2
7 12 17 22

3
8 13 18 23

4
9 14 19 24

fichier Mail Liste

dbut 0 7

longueur 2 5

temp

16

A. EL Bourichi

Problme dextension dun fichier

A. EL Bourichi

Problme de fragmentation

A. EL Bourichi

Allocation Contigu
Avantages :
Simple implmenter Accs direct aux blocs en temps constant Adapt aux supports Write Once

Inconvnients :
Problme : Extension dun fichier Problme : Fragmentation Blocs libre: Ncessite de connatre lavance de la taille du fichier

A. EL Bourichi

Allocation chane
Un fichier occupe une liste chane de blocs sur le disque Chaque bloc contient une partie des donnes et un pointeur sur le bloc suivant

A. EL Bourichi

Allocation chane
fichier
0 5 1 6 2 18 3 7 8 4 9 16

dbut 9

fin 22

Mail

10 2 11
15 20

12

13

14

16 10 17 21

18 22 19 24

22 -1 23

A. EL Bourichi

Allocation chane
Avantages
Possibilit dtendre un fichier Allocation par bloc individuel

Inconvnients
Solution non adapte laccs direct Laccs un bloc quelconque ncessite l accs tous les blocs qui le prcdent Les pointeurs.

A. EL Bourichi

Allocation chane FAT


Ide :Sparer les pointeurs et les donnes Technique:
Utilisation d une table d allocation de fichier (FAT : File Allocation Table) A chaque bloc est associe une entre dans la FAT qui contient le n du bloc suivant Mthode Utilise dans MS-DOS

A. EL Bourichi

FAT - Exemple

A. EL Bourichi

Allocation chane -FAT Avantages


Extension des fichiers les blocs de donnes ne contiennent pas les pointeurs accs direct facile Protection de la FAT

Inconvnients
Occupation de la mmoire 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

Allocation indexe
Ide:
clater la FAT en plusieurs petites tables appeles nuds dinformations ( i-node) A chaque fichier est associ un nud d information Chaque table contient les attributs et les adresses sur le disque des blocs du fichier

A. EL Bourichi

Structure d un i-node

A. EL Bourichi

Exemple 1

A. EL Bourichi

Exemple 2

A. EL Bourichi

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

A. EL Bourichi

Allocation indexe
Avantages:
Seuls les i-nodes des fichiers ouverts sont chargs en mmoire centrale Allocation par bloc individuel Accs direct facile
ncessite au maximum 4 accs disque

Adapte aux disques de trs grande capacit

A. EL Bourichi

Gestion de lespace libre


Systme maintient une liste d'espace libre, qui mmorise tous les blocs disque libres (non allous)
Cration 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 libr est intgr la liste d'espace libre

Il existe diffrentes reprsentations possibles de l'espace libre


vecteur de bits liste chaine des blocs libres

A. EL Bourichi

Vecteur de bits
La liste d'espace libre est reprsente par un vecteur binaire, dans lequel chaque bloc est figur par un bit.
Bloc libre : bit 0 Bloc allou : bit 1

A. EL Bourichi

Liste chaine
La liste d'espace libre est reprsente par une liste chaine des blocs libres

A. EL Bourichi

Protection des fichiers


Protection contre les dgts physiques
FIABILITE
redondance, sauvegardes

Protection contre les accs inappropris


PROTECTION
droits d'accs, mots de passe

A. EL Bourichi

Protection contre les accs 1/2


Association d'un mot de passe chaque fichier (IBM)
viable sur un systme monoutilisateur difficile mettre en uvre sinon

A. EL Bourichi

Protection contre les accs 2/2


Dfinition de droits d'accs
lecture (r), criture (w), excution (x), destruction ...

A chaque fichier est associ une liste d'accs, spcifiant pour chaque utilisateur, les types d'accs qui lui sont autoriss

A. EL Bourichi

Protection contre les dgts physiques


Utilisation de la redondance interne :
l'information existe en double exemplaire : une version primaire, une version secondaire le systme maintient la cohrence entre les deux versions

Redondance par sauvegarde priodique :


sauvegarde complte : la totalit des objets est duplique mme si ils n'ont pas t modifis sauvegarde incrmentale : seuls les objets modifis depuis la dernire sauvegarde sont dupliqus.

A. EL Bourichi

Annexe I: Manipulation des fichiers en langage C

A. EL Bourichi

193

Dfinition
Un fichier est un ensemble structur de donnes stock sur un support externe (disquette , disque dur, ). Un fichier structur est compos dune suite denregistrements homognes qui regroupent le plus souvent plusieurs composantes appeles champs.

Buts
Garantir la persistance des donnes (les donnes sont prserves aprs lexcution) Volume de donnes variable et plus grand que pour les structures de donnes statiques (tableaux).

Caractristiques
Les fichiers sont caractriss par deux notions : le mode dorganisation : est la mthode choisie pour ranger les donnes dans le fichier (squentiel, index,...) ;

Index

Squentiel

Index

le mode daccs : est la mthode choisie pour rechercher un enregistrement en cas de lecture ou pour rechercher son emplacement en cas dcriture (squentiel, direct, binaire, ...). A. EL Bourichi 194

On distingue gnralement deux types d'accs : Accs squentiel : Pas de cellule vide. On accde une cellule en se dplaant, depuis la cellule de dpart. On ne peut pas dtruire une cellule. On peut ajouter une cellule la fin. Accs direct (RANDOM I/O) Cellule vide possible. On peut directement accder une cellule. On peut modifier n'importe quelle cellule.

Remarque : Le langage C ne distingue pas les fichiers accs squentiel des


fichiers accs direct. Il existe dautre part deux faons de coder les informations stockes dans un fichier : En binaire :

Fichier dit binaire , les informations sont codes en brut sans aucune transformation. Ils ne sont pas ditables.
en ASCII : Fichier dit texte , les informations sont codes en ASCII. Ces fichiers sont ditables. Le dernier octet de ces fichiers est EOF.
A. EL Bourichi 195

Manipulation des fichiers en langage C


Les oprations possibles avec les fichiers sont : Crer, Ouvrir, Fermer, Lire, Ecrire, Dtruire, Renommer en utilisant des fonctions ranges dans STDIO.H Dclaration Consiste dfinir un pointeur qui permet de fournir l'adresse d'une cellule donne dans le fichier ouvert.

Pointeur La dclaration dun tel pointeur se fait par : FILE *pointeur ; /* majuscules obligatoires pour FILE */ Ouverture Permet dassocier le pointeur dclar de type FILE avec le fichier manipuler et de prciser les possibilits daccs (lecture, criture ou lecture/criture). Louverture se fait par : PointeurFILE = fopen (nomFichier, mode) ; Avec : NomFichier Mode

: Nom du fichier figurant sur le disque, exemple: "C :\Etudiants.dat" : chane de caractres qui dtermine le mode daccs
A. EL Bourichi 196

Mode

Fichier Texte
r w

Fichier Binaire
rb wb

Description lecture seule. Le fichier doit exister. Pointeur au dbut criture seule (destruction de l'ancienne version si elle existe, cration du fichier si non). Pointeur au dbut criture d'un fichier existant, pas de cration d'une nouvelle version. Pointeur la fin du fichier. lecture/criture d'un fichier existant (mise jour), pas de cration d'une nouvelle version. Pointeur au dbut lecture/criture (destruction ancienne version si elle existe, sinon cration du fichier). Pointeur au dbut.

ab

r+

rb+

w+

wb+

lecture/criture d'un fichier existant (mise jour), pas de a+ ab+ cration d'une est cr version. Pointeur la fin Remarque : fopen renvoie ladresse du flux sil nouvellesi non elle renvoie NULL du fichier.

Fermeture: Permet de supprimer le flux associ au fichier ouvert aprs avoir achever les transferts de donnes survenus. La fermeture dun fichier ouvert se fait par :
fclose(Pointeurfichier); FcloseAll();
A. EL fermer /* pour Bourichi tous les flux ouverts*/ 197

Ecriture
Fichiers texte Ecrire un caractre

int putc(char c, FILE *Pointeurfichier);


Ecrit la valeur du caractre c la position courante du pointeur , le pointeur avance d'une case mmoire Retourne le caractre crit sinon EOF en cas derreur. Ecrire un entier int putw(int n, FILE *Pointeurfichier);

Ecrit lentier n, le pointeur avance du nombre de cases correspondant la taille d'un entier. Retourne n si lcriture sest bien passe sinon retourne EOF. Ecrire une chane de caractres
int fputs(char *S, FILE *Pointeurfichier); Ecrit la chane de caractres S, le pointeur avance de la longueur de la chane Retourne le dernier caractre crit sinon retourne EOF en cas derreur. Ecrire de donnes formates

int fprintf(FILE *Pointeurfichier, char *format, liste d'expressions);


A. EL Bourichi

198

Ecrit des donnes formates (caractre %c, entier %d, rel %f, chane %s), le pointeur avance du nombre doctets crits. Retourne le nombre doctets crits ou EOF en cas derreur. 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 doctets crits. Retourne le nombre de blocs crits.

Lecture
Fichiers texte Lire un caractre int getc(FILE *fichier); renvoie le caractre situ la position pointe par Pointeurfichier ou EOF si erreur ou fin de fichier; le pointeur avance d'un octet. Lire un entier int getw(FILE *Pointeurfichier); Renvoie lentier situ la position pointe par Pointeurfichier ou EOF en cas A. EL Bourichi derreur ou fin du fichier; le pointeur avance de la taille d'un entier
199

Lire une chane de caractres char *fgets(char *S,int n,FILE *Pointeurfichier); Lit n-1 caractres partir de la position du pointeur et les range dans S en ajoutant '\0'. Retourne NULL en cas derreur Ecrire de donnes formates int fscanf(FILE *Pointeurfichier, char *format, liste d'adresses); Lit des donnes depuis la position du pointeur PointeurFchier dans des variables dont les adresses sont indiques. Les donnes lues sont convertie en fnction des format indiqus 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 doctets lus. Retourne le nombre de blocs lus.
A. EL Bourichi 200

Positionnement dans un fichier Accs direct


Au cours de la manipulation dun fichier, il existe toujours une position courante du pointeur de lecture/criture. Cette position reprsente le numro de loctet point. Elle est modifie suite chaque opration de lecture/criture. Elle est incrmente du nombre doctets lus ou crits. Fonction fseek

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


dplace le pointeur de offset cases partir en fonction de la valeur de Mode. Valeurs possibles pour Mode sont : SEEK_SET = 0 -> partir du dbut du fichier. SEEK_CUR =1 -> partir de la position courante du pointeur. SEEK_END =2 -> en arrire, partir de la fin du fichier Fonction rewind

void rewind(FILE *fichier);


Repositionne le fichier son dbut. Fonction ftell

long ftell(FILE *fichier);


Retourne la position courante par rapport au dbut du fichier
A. EL Bourichi 201

TP
crire un programme C qui fait la mme chose que la commande Linux
cat fic1>>fic2

A. EL Bourichi

202

Chapitre 6 Gestion des E/S

A. EL Bourichi

203

Priphriques dE/S
Les priphriques dE/S consistent:
du priphrique lui-mme dun contrleur (avec des registres)

Le contrleur simplifie linterface


tu demandes une piste le contrleur convertis la demande en cylindre, secteur et tte le SE voit cette interface

Le logiciel qui parle au contrleur est un pilote de priphrique (Device Driver)

A. EL Bourichi

204

Pilotes de priphrique
Comment est-ce quils communiquent avec les priphriques?
Ils crivent dans la mmoire mappe aux registres du priphrique (memory mapped I/O) ne requiert aucune instructions spciales crit aux ports mappes au registres (nutilisent pas despace dadresses mais ce mode requiert des instructions spciales)

A. EL Bourichi

205

Pilotes de priphrique Attente active (Busy Waiting)


Quand est-ce que le pilote communique avec son priphrique?
Attente active
Le programme de lusager fait un appel de systme Le pilote est appel par le noyau Le pilote boucle continuellement en interrogeant le priphrique pour savoir quand lE/S est finit Dsavantage: CPU compltement pris

A. EL Bourichi

206

Quand est-ce que le pilote communique avec son priphrique?


Interruptions
Pilote dmarre le contrleur et demande une interruption quand lE/S est termin Le pilote retourne le contrle au SE; le processus qui a demand lE/S bloque si il a absolument besoin des donnes Quand le contrleur complte le travail, il gnre une interruption Dsavantage: Plus complexe
A. EL Bourichi 207

Pilotes de priphrique Interruptions

Pilotes de priphrique Interruptions


1) Pilote crit dans les registres du contrleur. Le contrleur dmarre le priphrique. 2) Le contrleur finit lE/S et signal le contrleur dinterruption par certaines lignes sur le bus 3) Quand le contrleur dinterruption est prt il lve une interruption sur une des pattes du CPU 4) Quand le CPU est prt, le contrleur dinterruption place le numro du priphrique sur le bus

A. EL Bourichi

208

Pilotes de priphrique Interruptions


Le CPU passe en mode noyau Ladresse du gestionnaire dinterruption est dtermine
(Interrupt Vector)

Le flux du programme change pour le gestionnaire des interruptions Quand le gestionnaire a finis, le flux normal du programme reprend.

A. EL Bourichi

209

Pilotes de priphrique - DMA


Quand est-ce que le pilote communique avec son priphrique?
Accs Direct la Mmoire (Direct Memory Access) (DMA)
Une puce spciale qui contrle le flux dinformation entre le RAM et les contrleurs Configur pour chaque transfert par le CPU avec un nombre doctets, le numro du priphrique, les adresses mmoire pour les donnes et la direction Quand le transfert est termin la puce DMA signal une interruption comme dcrit au paravent Dsavantage: encore plus complexe, mais enlve du travail du CPU

A. EL Bourichi

210

Chapitre 7 Interblocages

A. EL Bourichi

211

Ressources
Exemples de ressources
imprimantes graveur de CD-ROM fichiers tables internes du systme

L'ordre dans lequel les ressources sont attribues est important Supposons qu'un processus possde une ressource A et demande une ressource B
au mme moment un autre processus possde B et demande A les deux sont bloqus de faon permanente
A. EL Bourichi 212

Ressources (1)
Un interblocage peut se produire lorsque
les processus se voient attribuer un accs exclusif des ressources.

Ressources retirables (premptibles)


peuvent tre retires d'un processus sans effet ngatif
ex. mmoire

Ressources non retirables (non premptibles)


peuvent causer des problmes si retires du processus
ex. graveur de CD

En gnral les interblocages impliquent des ressources non retirables.


A. EL Bourichi 213

Ressources (2)
Squence d'vnements ncessaires pour utiliser une ressource:
1. Solicitation de la ressource 2. Utilisation de la ressource 3. Libration de la ressource

Doit attendre si l'accs est refus:


le processus peut alors tre bloqu ou un code d'erreur est retourn
A. EL Bourichi 214

Ressources (3)
Figure 1 : Utiliser un smaphore pour protger les ressources. (a) Une ressource. (b) Deux ressources typedef int semaphore; semaphore resource_1; void process_A(void){ down(&resource_1); use_resource_1( ); up(&resource_1); } typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_A(void) { down(&resource_1); down(&resource_2); use_both_resources( ); up(&resource_2); up(&resource_1); } (b)

(a)

A. EL Bourichi

215

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

Ressources (4)

semaphore resource_1; semaphore resource_2; void process_A(void) { down(&resource_1); down(&resource_2); use_both_resources( ); up(&resource_2); up(&resource_1);

void proces_B(void) { down(&resource_2); down(&resource_1); use_both_resources( ); up(&resource_1); up(&resource_2); } (b)


A. EL Bourichi 216

Introduction aux interblocages


Dfinition formelle:
Un ensemble de processus est en interblocage si chacun d'eux attend un vnement qui ne peut tre provoqu que par un autre processus de l'ensemble.

L'vnement attendu est habituellement la libration d'une ressource Aucun de ces processus ne peut
s'excuter librer de ressources tre rveill

A. EL Bourichi

217

Les 4 conditions d'un interblocage


1.

Condition d'exclusion mutuelle


chaque ressource est soit attribue un seul processus, soit disponible

2.

Condition de dtention et d'attente


les processus ayant dj obtenu des ressources peuvent en demander des nouvelles.

3.

Pas de rquisition
les ressources dj dtenues ne peuvent tre retires de force un processus

4.

Condition d'attente circulaire


il doit y avoir un cycle d'au moins deux processus chacun attend une ressource dtenue par un autre processus du cycle.
A. EL Bourichi 218

Modlisation des interblocages (1)


Modlisation au moyen de graphes dirigs

La ressource R est dtenue par le processus A Le processus B attend aprs la ressource S Les processus C and D sont en interblocage
A. EL Bourichi 219

Modlisation des interblocages (2)

Ordonnancement provoquant un interblocage


A. EL Bourichi

220

Modlisation des interblocages (3)

Interblocage vit parA.un ordonnacement diffrent 221 EL Bourichi

Stratgies de gestion des interblocages


1.

Ignorer les problmes (la politique de lautruche) Les dtecter et y remdier Les viter de manire dynamique en allouant les ressources avec prcaution Les prvenir en empchant l'apparition d'une des 4 conditions de leur existence.
A. EL Bourichi 222

2.

3.

4.

La politique de l'autruche
Ignorer le problme Raisonnable si
les interblocages se produisent rarement le cot de la prvention est lev

UNIX et Windows utilisent cette approche Il existe un compromis entre


ce qui est pratique ce qui est correct
A. EL Bourichi 223

Dtection avec une seule ressource de chaque type

Noter la dtention et la demande en ressource cycle = interblocage


A. EL Bourichi 224

Dtection avec plusieurs ressources de chaque type (1)

Structures de donnes utilises par l'algorithme


A. EL Bourichi 225

Dtection avec plusieurs ressources de chaque type (2)

Ressources existantes

Ressources disponibles

Exemple de dtection d'interblocage


A. EL Bourichi 226

Reprendre aprs un interblocage (1)


Reprendre au moyen de la premption
Prendre une ressource d'un autre processus dpend 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 ultrieurement reprendre le processus si un interblocage se produit
A. EL Bourichi 227

Reprendre aprs un interblocage (2)


Reprendre au moyen de la suppression de processus
rudimentaire mais simple Suspendre un processus pour librer ses ressources les autres processus peuvent utiliser ses ressources choisir un processus pouvant tre redmarr depuis le dbut (ex. compilation)

A. EL Bourichi

228

vitement des interblocages


Trajectoires des ressources

Exemple: 2 processus
A. EL Bourichi

229

tats sr et non sr
On dit d'un tat qu'il est sr s'il n'est pas bloqu et qu'il existe un ordonnancement selon lequel chaque processus peut s'excuter jusqu'au bout, mme si tous demandent d'un seul coup leur nombre maximum de ressources.

A. EL Bourichi

230

tats srs et non srs (1)

Dmonstration que l'tat de (a) est sr


On suppose quil y a 10 ressources en tout.
A. EL Bourichi 231

tats srs et non srs (2)

Dmonstration que l'tat de (b) n'est pas sr


Si A demande et obtient une ressource supplmentaire (figure b) alors on est dans un tat non sur
A. EL Bourichi 232

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

3 tats d'allocation de ressource


(a) sr (b) sr (c) non sr

A. EL Bourichi

233

L'algorithme du banquier pour plusieurs ressources

C
A. EL Bourichi

R
234

L'algorithme du banquier pour plusieurs ressources

1. 2.

3.

Rechercher une range R dont les demandes de ressources non satisfaites sont infrieur ou gales A Marquez le processus R comme achev et ajouter toutes ses ressources au vecteur A Recommencer les tapes 1 et 2 jusqu' ce que tous les processus soient termins (tat sr) o jusqu' ce qu'un interblocage se produise (tat non sr). 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 A. EL Bourichi 235 il devra patienter.

Prvention des interblocages


S'attaquer la condition de l'exclusion mutuelle

Certains priphriques (tel que l'imprimante) peuvent tre spools (traits en diffr)
seul le dmon d'imprimante peut directement utiliser l'imprimante cela limine les interblocages

Tous les priphriques ne peuvent tre spouls. Principe:


viter d'attribuer une ressource lorsque cela n'est pas absolument ncessaire le plus petit nombre possible de processus peuvent rclamer la ressource
A. EL Bourichi 236

S'attaquer la condition de dtention et d'attente

Exige que les processus demandent toutes ses ressources avant l'excution
le processus n'attend jamais aprs une ressource

Problmes
peut ignorer le nombre de ressources qu'il aura besoin (sinon on pourrait utiliser lalgorithme du banquier) les ressources ne sont pas utilises de manire optimale

Variation:
un processus doit librer toutes les ressources qu'il dtient il obtient ensuite tout ce dont il a besoin en une seule fois
A. EL Bourichi 237

S'attaquer la condition de non-premption


Cette option est difficilement ralisable Considrer un processus utilisant une imprimante
au milieu de la tche rquisitionner l'imprimante !!?? Solution dans ce cas: utiliser le disque et le dmon dimpression
A. EL Bourichi 238

S'attaquer la condition de l'attente circulaire

Ressources ordonnes numriquement


Un processus peux demander plusieurs ressources mais il doit respecter lordre Dans lexemple, si i<j alors
A peux demander i B ne peux pas demander i sans dabord librer j

Le problme est quil est difficile de trouver un ordonnancement adquat


239