Vous êtes sur la page 1sur 45

1

Table des matières


Avant-Propos ........................................................................................................................................... 3
Objectifs du cours.................................................................................................................................... 4
CHAPITRE I : Rappel sur le Système informatique .................................................................................. 5
1.1. Définition ................................................................................................................................. 5
1.2. Fonctions ................................................................................................................................. 5
1.3. Architecture ............................................................................................................................. 5
1.4. Logiciel de base ....................................................................................................................... 6
1.5. Notion d’architecture d’ordinateur ......................................................................................... 6
1.5.1. L’unité centrale................................................................................................................ 7
1.5.2. La mémoire central.......................................................................................................... 7
1.5.3. Le dispositif de gestion des entrées/sorties .................................................................... 7
CHAPITRE II : Etude du système d’exploitation ....................................................................................... 9
1.1. Généralité ................................................................................................................................ 9
1.2. Révolution de système d’exploitation ..................................................................................... 9
1.3. Présentation du système d’exploitation ............................................................................... 10
1.4. Définitions du Système d’Exploitation .................................................................................. 11
1.5. Qualités d’un système d’exploitation.................................................................................... 11
1.6. Les Concepts du Système d’Exploitation ............................................................................... 12
1.7. Ordonnancement des processus ........................................................................................... 12
1.7.1. Définition ....................................................................................................................... 12
1.7.2. Ordonnancement .......................................................................................................... 13
Chapitre III : La virtualisation................................................................................................................. 16
1.1. Terminologie.......................................................................................................................... 16
1.2. Démarrer Virtual box ............................................................................................................. 16
1.3. Créer votre première machine virtuelle ................................................................................ 17
1.4. Lancer votre machine virtuelle .............................................................................................. 20
1.5. Démarrage d’une nouvelle VM pour la première fois........................................................... 21
Chapitre iv : Système d’Exploitation DOS, Windows & Linux................................................................ 23
1.1. Historique du DOS ................................................................................................................. 23
1.2. Composantes du DOS ............................................................................................................ 23
1.3. Commandes DOS ................................................................................................................... 24
1.3.1. Commandes des bases .................................................................................................. 24

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 1


2

1.3.2. Commandes utilitaires Windows .................................................................................. 25


1.4. Système d’exploitation Linux ................................................................................................ 26
1.4.1. Linux un système d’exploitation ou Noyau ................................................................... 26
1.4.2. Les Distributions ............................................................................................................ 26
1.4.3. Quelques commandes Linux ......................................................................................... 27
1.4.4. Comparatif des systèmes d’exploitation informatiques ............................................... 36
Chapitre V : Programmation Système ................................................................................................... 38
V.1. Introduction ............................................................................................................................... 38
V.2. Variable ...................................................................................................................................... 38
V.2.1. Définition ............................................................................................................................. 38
V.3. Ecriture et saisi de données ....................................................................................................... 38
V.4. Operateurs ................................................................................................................................. 39
V.4.1. Opérateurs arithmétique .................................................................................................... 39
V.4.2. Combinaison d’opérandes de type différents..................................................................... 39
V.4.3. Opérateurs logiques et de comparaisons ........................................................................... 39
V.4.4. Operateurs d’incrémentation et de décrémentation ......................................................... 39
V.5. Structures conditionnelles ......................................................................................................... 40
V.5.1. Condition SI(if)..................................................................................................................... 40
V.5.2. Sélection (switch) ................................................................................................................ 41
V.6. Boucles ....................................................................................................................................... 41
V.6.1. Boucles tant que (while) ..................................................................................................... 41
V.6.2. Boucles faire… tant que (do while) ..................................................................................... 41
V.6.3. Boucles pour (for)................................................................................................................ 42
V.7. Les tableaux................................................................................................................................ 42
V.7.1. Déclaration de tableau ........................................................................................................ 42
V.7.3. Accès aux éléments d’un tableau........................................................................................ 42
V.8. Fonctions .................................................................................................................................... 42
EXERCICES D’APPLICATION .................................................................................................................... 44
BIBLIOGRAPHIE ...................................................................................................................................... 45

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 2


3

Avant-Propos
Un système d’exploitation moderne comprend un ou plusieurs processeurs, de la
mémoire principale, des disques, des imprimantes, un écran, un clavier, des interfaces
réseau et autres périphériques d’entrées sorties. C’est un système complexe. Ecrire des
programmes qui prennent en compte tous ces composants et les utilisent correctement
de façon optimale, serait une tâche extrêmement difficile. C’est pourquoi, les
ordinateurs sont équipés d’une couche logicielle appelée système d’exploitation
(Windows, Linux, Mac OS) qui a pour rôle la gestion de tous les périphériques
(matériels) et de fournir aux programmes utilisateurs une interface conviviale
simplifié.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 3


4

Objectifs du cours
Ce support n’est qu’un bref très condensé des principes de conception et des
mécanismes mis en œuvre dans les systèmes d’exploitation. La connaissance d’un
système d’exploitation est un vaste sujet.

L’étudiant qui aura suivi avec attention ce cours, découvrira :

- L’importance capitale du système d’exploitation ;


- De quoi est constitué un système d’exploitation ;
- Comment fonctionne-t-il ?;
- Comment il se combine avec le processeur pour gérer les processus ;
- L’ordonnancement préemptif non préemptif avec le quantum de temps ;
- Quelques commandes et appel système qu’utilisent nos systèmes
d’exploitation (DOS, WINDOWS et Linux) ;
- La notion de la virtualisation et création de la machine virtuelle.
- La programmation système avec le langage Python

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 4


5

CHAPITRE I : Rappel sur le Système informatique


1.1. Définition
Un système informatique peut être compris comme un ensemble formé des
matériels et de logiciels permettant de réaliser les tâches de traitement automatique
de l’information.

Celui-ci est relié au monde extérieur par des organes d’accès appelé
« Périphériques» permettant au système informatique de communiquer avec les
usagers humains ou avec d’autres équipements.

1.2. Fonctions
La fonction essentiel d’un système informatique est de fournir de services adaptés à
la résolution des problèmes les plus courants des utilisateurs, tel que :
 Les problèmes de gestion de l’information qui consiste au stockage,
recherche, communiqué, etc.
 Les problèmes liés à la présentation et la mise au point des programmes ;
 Les problèmes liés à l’exploitation des programmes.

1.3. Architecture
Un système informatique peut donc se décomposer en :
 Logiciel de base : qui est un ensemble de programmes réalisant les fonctions
communes à une large classe d’application.
 Logiciel d’application : qui met en œuvre une application spécifique en
faisant appel aux services offerts par le logiciel de base.
 Machine physique : qui représente l’ensemble d’équipements ou composant
matériels du système informatique.

LOGICIEL D’APPLICATION
LOGICIEL DE BASE
MACHINE PHYSIQUE

Noter que dans cette architecture, hiérarchique, chaque couche supérieur utilise les
ressources ou services fournies de la couche inferieur ; et cette dernière présente à
la couche supérieur une interface décrivant les ressources ou services qu’elle
fournit. L’interface de la couche la plus haute est celle du système d’exploitation.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 5


6

1.4. Logiciel de base


A l’intérieur du logiciel de base, on distingue généralement deux niveaux :

 Le Système d’Exploitation ;
 Les outils et services fournis par le logiciel de base tels que les compilateurs,
les chargeurs, les éditeurs, les utilitaires, etc.

OUTILS ET SERVICES
SYSTEME D’EXPLOITATION

1.5. Notion d’architecture d’ordinateur


Les trois éléments essentiels d'un ordinateur sont :

 L’Unité Centrale ;
 La Mémoire Centrale ;
 Le Dispositif de gestion des entrées-sorties.
Ces divers éléments communiquent entre eux par l'intermédiaire du bus, lequel est
subdivisé en :

1) bus des données : qui achemine les données devant être traitées par le
processeur;
2) bus des commandes : qui achemine les commandes devant être exécutées par
le processeur.
Schématiquement un ordinateur peut être représenté comme suit :

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 6


7

1.5.1. L’unité centrale


L’Unité Centrale est le cerveau de l’ordinateur. Elle est constituée d’un
Processeur Central ou Unité Central de Traitement (UCT) dont le rôle est
d’exécuter les programmes préalablement stockés en mémoire centrale en chargeant
les instructions une à une, en les décodant une à une, et en les exécutant.

L’UCT comprend une mémoire locale et privée formée de Registres. Le


registre le plus important est le Compteur Ordinal (CO) qui pointe sur la prochaine
instruction à exécuter. On trouve aussi le Registre d’Instruction (RI) qui contient
l’instruction en cours d’exécution. On peut aussi citer d’autres registres importants tels
que : l’Accumulateur, le Registre d’état, le Registre tampon.
1.5.2. La mémoire central
La mémoire centrale contient les données à traiter et les commandes à
exécuter par le processeur, lesquels y sont préalablement enregistrés. La Mémoire
Centrale est constituée d’un ensemble d’emplacements ou de cellules ou de position
mémoire repérés de manière explicite à l’aide d’une adresse.
1.5.3. Le dispositif de gestion des entrées/sorties
Le dispositif de gestion des Entrées /Sorties est composé des éléments
suivants :

 Les Unités périphériques : qui sont essentiellement constituées d’équipements


d’entrée/sortie et des mémoires auxiliaires. La fonction d’une unité
d’entrée/sortie est de transmettre des données entre l’ordinateur et l’utilisateur.
Les unités d’entrée/sortie sont essentiellement constituées d’équipements
électromécaniques dont le fonctionnement physique est commandé par des
circuits électroniques appelés contrôleurs.

 Les Contrôleurs de périphérique : qui sont des dispositifs électroniques


construits pour assurer les communications avec les périphériques. Ils sont
spécialisés dans leur usage et possèdent leur propre mémoire.

 Les Unités d’échanges : qui sont des dispositifs intercalés entre l’UCT et les
unités périphériques pour palier la disproportion de vitesse de fonctionnement
entre l’UCT (qui est un équipement électronique) et les unités périphériques
(qui sont des équipements électromécaniques). Ils effectuent le transfert
d’information entre l’UCT et les unités périphériques.
Parmi les unités d’échange, on peut citer :
- Les Bus : qui sont constitués d’un ensemble de conducteurs électriques
montés en parallèle ;
- Un Canal : qui est en fait un processeur spécialisé travaillant en parallèle
avec le processeur central.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 7


8

En résumé, notez que Le problème fondamental d’un système d’exploitation est de


réussir à faire fonctionner cet ensemble, à assurer les échanges d'information entre les
différents éléments qui constituent la machine et surtout, du point de vue de
l'utilisateur, à dialoguer avec lui. C'est le rôle du système d'exploitation.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 8


9

CHAPITRE II : Etude du système d’exploitation


1.1. Généralité
L’étude du système d’exploitation est transversale à de nombreuses disciplines
(algorithme, électronique, statistique, Base de données, infographie, …) auxquels elle
emprunte les outils qui lui sont nécessaires. En soi, le système d’exploitation ne
constitue pas une discipline fondamentale, mais plutôt une de nombreuses applications
de l’informatique, comme par exemple l’informatique de gestion. Et chaque système
d’exploitation a son algorithme d’ordonnancement de taches ou encore de gestion des
processus. Nous verrons donc plus loin les différents types d’algorithmes.

1.2. Révolution de système d’exploitation


Nous vivons une époque où l’informatique fait partie intégrante de notre vie
professionnelle et personnelle. Le système d’exploitation (OS) est un ensemble des
programmes qui réalise l’interface entre matériel de l’ordinateur (ou de tout autre
équipement informatique) et les utilisateurs, d’une part afin de construire au-dessus du
matériel une machine virtuelle plus facile d’emploi et plus conviviale, d’autre part afin
de prendre en charge la gestion des ressources de la machine et partage de celles-ci. Le
système d’exploitation est au centre de nos systèmes informatique.

Aujourd’hui :

Dans le domaine des ordinateurs personnel, Microsoft Windows est absolument


majoritaire : plus de 95% de part de marché. C’est le système qui s’est imposé.
Derrière on trouve essentiellement le Mac et GNU/Linux.

Dans le secteur des ordinateurs de poches (des netbook) Windows est encore très
présent mais moins prédominante, la raison en est que ces appareils n’ont pas une très
grande puissance. C’est donc GNU/Linux qui prend le reste du marché, Mac étant
complètement absent.

Dans le secteur des téléphones portables, nous trouvons de tout avec un écosystème
assez riche : Apple avec une version Mac iPhone, Microsoft avec Windows Mobile,
GNU/Linux (avec notamment Android de Google), Symbian et quelques autres
systèmes.

Dans les secteurs de serveurs et autre infrastructure réseaux, Unix a une belle
place quoique la qualité de GNU/Linux et sa compatibilité lui permettent de prendre
des parts très importantes, Windows est présent, mais minoritaire.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 9


10

Demain ?

Pour bien aborder l’avenir concernant les OS, il est nécessaire de prendre un certain
nombre de paramètres supplémentaire :

 Les applications sont de plus en plus sur le Web, la tendance est au « Cloud
Computing » : les applications sont sur le réseau, pas sur l’ordinateur.
 Les téléphones portables permettent de faire de plus en plus de chose.
 Les virus informatique ne s’attaquent qu’à Microsoft Windows (pour l’instant).
 Les exigences des utilisateurs en termes de simplicité d’administration du
système sont très importantes.

Par contrecoup :

 Pour les mobiles, GNU/Linux et Mac vont se partager le marché, Google


prenant la quasi-totalité de la part GNU/Linux.
 Pour les netbooks et terminaux léger, Google Chrome OS(le nouvel OS de
Google) va faire des ravages et prendre probablement plus de trois quart des
parts de marché et sera probablement un jour accusé de position dominante.
Microsoft devrait donc prendre les choses en main pour maintenir sa force.

1.3. Présentation du système d’exploitation


L’ordinateur ne peut rien faire sans programme. Il sera vu comme un
assemblage de métal. Pourtant avec logiciel, un ordinateur peut stocker, traiter et
renvoyer des informations, jouer de la musique ; envoyer un e-mail, faire de recherche
sur l’internet et autre activité de traitement d’information.

Les programmes d’ordinateur peuvent être subdivisés en deux catégories :

 Les programmes systèmes : qui gèrent les opérations inhérentes à


l’ordinateur lui-même.
 Les logiciels d’applications : qui exécutent le travail réel des
utilisateurs.

Le plus fondamental des programmes système est le système d’exploitation,


dont le travail est de contrôler toutes les ressources de l’ordinateur et de fournir une
base sur laquelle les programmes applicatifs peuvent être écrits.

Un système informatique moderne est souvent constitué d’un ou de plusieurs


processeurs, d’une mémoire centrale, des disques durs, des imprimantes, d’un clavier,
d’un écran, des interfaces réseaux, et d’autres équipements d’entrée/sortie ; le tout
formant un système assez complexe. Écrire un programme qui tient compte de tous ces
équipements et les utilisent correctement de façon optimal est un travail très difficile.
Si chaque programmeur devait se préoccuper de comment les disques durs

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 10


11

fonctionnaient, et de la douzaine de choses qui pourrait allez mal quand un bloc de


disque est lu, il est fort probable que beaucoup de programmes ne serait pas écrits et
beaucoup de projets seront abandonnés.

1.4. Définitions du Système d’Exploitation


La difficulté dans la définition du système d’exploitation réside dans le fait
qu’un système d’exploitation rempli fondamentalement 2 fonctions sans lien apparent
à savoir : étendre une machine physique et en gérer les ressources. Cette définition
dépend aussi en grande partie du point de vue de celui qui l’énonce, point de vue qui,
selon le cas, peut pencher pour l’une ou l’autre fonction.

De ce qui précède, un système d’exploitation peut donc être considéré comme :

 L’extension d’une machine physique :


Ici, la fonction du système d’exploitation est de présenter à l’utilisateur
l’équivalent d’une machine étendu ou machine virtuelle plus facile à manipuler que la
machine physique sous-jacente. Pour ce faire, le système d’exploitation fournit
applications une variété de services qui peuvent être obtenus en utilisant des
instructions spéciaux appelées Appels Systèmes.

 Un gestionnaire de ressources :

Ici, la fonction du système d’exploitation est de fournir une allocation


ordonnée et contrôlée des processeurs, des mémoires et des différents équipements
d’entrée /Sortie aux divers programmes concurrents qui tentent d’utiliser les dits
ressources. La gestion des ressources implique le « multiplexage », c’est-à-dire le «
partage » des ressources en temps et en espace. Quand une ressource est multiplexé
temporellement, les différents programmes ou utilisateurs en concurrence l’utilisent à
tour de rôle. Pour le cas d’un multiplexage spatiale, chaque programmes ou utilisateurs
en concurrence occupe une portion d’espace mémoire qui lui alloué par le système
d’exploitation.

1.5. Qualités d’un système d’exploitation


 La fiabilité : limiter les conséquences des défaillances matérielles ou des erreurs
des utilisateurs. En cas de panne, éviter les pertes d’informations ou les
incorrectes.
 Efficacité : utiliser au mieux les ressources et possibilités matérielles (sans en
consommer trop pour lui-même).
 Facilité d’emploi : offrir un langage de commande (dialogue usage/système) et
diagnostique d’erreurs (système/usage) clair et précis ;
 Adaptabilité : permettre des modifications matérielles et logicielles le plus
simples possibles à l’aide d’outils spécialisés ;

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 11


12

 Mesurabilité : enregistrer la comptabilité des ressources utilisées par les


usages, mesurer les paramètres de fonctionnement et de charge ;

1.6. Les Concepts du Système d’Exploitation


L’interface entre le système d’exploitation et les programmes utilisateurs est
défini par un jeu « d’instructions étendues » fournies par le système d’exploitation.
C’est-à-dire, ce que l’on appelle traditionnellement les Appels Système. Pour
réellement comprendre ce que fait un système d’exploitation, il convient d’examiner
minutieusement cette interface qui peut varier d’un système d’exploitation à un autre.
Dans notre cours, nous allons nous baser sur les appels système de Linux et Windows
plus loin.

1.7. Ordonnancement des processus


1.7.1. Définition
a) Processus
Un processus se définit comme étant un programme en cours d’exécution. La
notion de processus est dynamique : un processus nait (commence) lors du chargement
d’un programme et meurt (se termine) à la fin de l’exécution du programme. Dans les
systèmes multiprogrammés et temps-partagé, un processus peut se trouver dans l’un
des états suivants :
1. Elu : si le processus est en cours d’exécution
2. Bloqué : si le processus est en attente qu’un évènement se produit ou
bien d’une ressource pour pouvoir continuer.
3. Prêt : si le processus dispose de toutes les ressources nécessaires à
son exécution à l’exception du processeur.
b) Diagramme de transition d’état de processus
Un processus est donc une entité dynamique qui a une durée de vie limitée (la
durée de l’exécution du programme) et dont on peut caractériser le comportement à un
certain niveau d’abstraction par un diagramme de transitions d’état.

Exit
En exécution Créer/réveil
Suspendre
Elu Prêt
Activer
Détruire

Bloquer
En attente du processeur
Débloquer

Bloqué
En attente de ressources

Détruire

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 12


13

1.7.2. Ordonnancement
1.7.2.1. Définition
L’ordonnancement c’est un mécanisme par lequel on donne la main
successivement à tous les processus prêts, dans un système multitâche. C’est
l’ordonnanceur qui met en œuvre l’ordonnancement.
1.7.2.2. Quelques algorithmes utilisés
Dans cette partie, nous allons voir quelques algorithmes d’ordonnancement
simples. Bien sûr, ces algorithmes sont rarement utilisés tels quels dans le systèmes
d’exploitations modernes, qui utilisent des algorithmes d’ordonnancements bien plus
complexes et souvent plus efficaces.

a) Algorithmes non collaboratifs


Tout d’abord nous allons commencer par un système d’exploitation qui
exécute des programmes qui s’exécute les uns après les autres. Ces programmes sont
exécutés jusqu’à ce qu’ils finissent leur travail ou décident eux-mêmes de stopper leur
exécution, soit pour accéder à un périphérique, soit pour laisser la place à un autre
programmes.

 First Input First Output : FOFI

Avec cet algorithme, les programmes à exécuter sont ajouté dans la file
d’attente quand on le démarre. Ceux-ci sont alors stockés dans la file d’attente dans
l’ordre dans lesquels on les a fait démarrer. L’ordinateur décide alors d’exécuter le
programme entré dans la file d’attente avant tous les autres en première. En clair, les
programmes sont exécutés dans l’ordre dans lesquels ils sont rentrés dans la file
d’attente.

 Last Input First Output : LIFO

Avec cet algorithme, les programmes à exécuter sont ajouté dans la file
d’attente quand on les démarre. Ceux-ci sont alors stocké »s dans la file d’attente dans
l’ordre dans lesquels on les a fait démarrer. Mais contrairement à l’algorithme Last
Input Output, l’ordonnanceur exécuter le programme entré en dernier dans la file
d’attente contenant déjà des programmes en attente, ce sera lui le prochain à être
exécuter, vu qu’il a été ajouté en denier.
Cet algorithme peu souffrir d’un phénomène assez particulier : dans certains
cas, un programme peut très bien mettre énormément de temps avant d’être exécuté.

 Shortest Job First

Cet algorithme est basé sur logique simple. Les programmes à exécuter sont
placé dans la file d’attente et l’ordonnanceur va alors décider d’exécuter ces
processus dans l’ordre. Pour appliquer cet algorithme, on suppose que le temps
d’exécution des différents programmes sont connus à l’avance et sont parfaitement

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 13


14

bornés. Cette contrainte peut sembler absurde, mais elle a un sens dans certains cas
assez rares dans lesquels on connait à l’avance le temps mit par un programme pour
s’exécuter. Dans ce cas l’algorithme est simple : on exécute le programme qui met le
moins de temps à s’exécuter en premier. Une fois celui-ci terminé, on le retire du fil
d’attente et on recommence.

b) Algorithmes préemptifs
 Shortest Remaining Time Next :

C’est une variante préemptive de l’algorithme Shortest Job First vu au-dessus.


Dans cette version, si un programme est ajouté dans la file d’attente, on regarde le
temps que ce nouveau venu mettrait à s’exécuter, et on compare avec le temps qu’il
reste au processus en cours d’exécution avant que celui-ci finisse son travail. Si le
temps mit par le nouveau programme est plus faible que le temps d’exécution du
programme en train de s’exécuter, on charge et on exécute le nouveau venu à la place.

 Fixed priority pre-emptive scheduling


Avec cet algorithme, chaque programme possède une priorité : certains
programmes seront donc prioritaires sur les autres. Cette priorité est définie par un
nombre. Cette priorité est toujours la même et ne peut pas changer. L’ordonnanceur
exécute toujours le programme le plus prioritaire.

 Round-Rubin : Tourniquet
Cet algorithme est le premier de nos algorithmes qui utilise la méthode du
quantum de temps : on donne à chaque programme un temps fixé une bonne fois pour
toute durant lequel il peut s’exécuter. Une fois ce temps fini, l’ordonnanceur stoppe
celui-ci et demande l’exécution d’un autre programme. Il se base toujours sur une file
d’attente de programmes. Cette liste est ordonnée (comme pour l’algorithme FIFO et
LIFO) et a un début et une fin. Tout programme qui vient d’être lancé est placé à la fin
de cette liste.
Chaque programme dans la file d’attente a droit à un quantum de temps.
Quand un programme a fini son exécution, il doit attendre que tous les autres
programmes aient eu droit à leur quantum de temps avant de pouvoir être exécuté une
nouvelle fois. Pour cela, à la fin de chaque quantum de temps, on place le programme
à la fin de la liste d’attente.
 Multilevel feedback queue
Cet algorithme est déjà proche de ceux implémentés dans les systèmes
d’exploitation actuels. La philosophie derrière cet algorithme est :
- D’ordonnancer aux mieux un ensemble de programmes aux temps d’exécution
et aux particularités disparates ;
- D’exécuter en priorité les programmes rapides ;
- D’exécuter en priorité les programmes qui accèdent souvent aux périphériques.
Le principe de cet algorithme est simple : on dispose de plusieurs files d’attentes
comme celle de l’algorithme round-robin. Ces files d’attente sont classées de la plus
basse à la plus haute. Ces files d’attente ont des priorités différentes. De plus, le
quantum de temps est différent suivant la file d’attente : la file d’attente la plus haute a

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 14


15

un quantum de temps très petit, tandis que la file la plus basse a un quantum de temps
élevé.
Exercice pratique des algorithmes d’ordonnancement
a) Soient les processus suivants, dont les données sont précisées par le tableau
suivant :
Processus Temps d’arrivé Temps d’exécution Priorité
P1 0 10 3
P2 5 6 3
P3 5 7 2
P4 8 4 1
P5 12 10 4

Questions :
1. On applique l'algorithme de "premier arrivé, premier servi". Dessiner le
digramme de Gantt correspondant.
2. Calculer le Temps d’attente moyen
3. Calculer le Temps de séjour moyen

b) Avec le même processus du tableau précédant, ". Dessiner le digramme de


Gantt en utilisant l'algorithme de "Round Robin" avec un quantum égal à 7.
c) Avec le même processus du tableau précédant, ". Dessiner le digramme de
Gantt en utilisant l'algorithme de " Priorité"

d) Soit deux processus A et B dont B arrive 2U.T après A. le temps d’exécution de


2 processus sont respectivement 15 et 4. Calculer le TSM ainsi que le TAM en
utilisant l’algorithme de Shortest Remaining Time Next (SRTN).
e) Entre « Avoir un Quantum plus grand» et «Avoir un Quantum plus petit»
en utilisant l’algorithme de Tourniquet, Que préférerez-vous ? et donnez la
raison.
f) Considérons cinq travaux Téléchargement, Rendering, Compilation, Gravure et
Formatage, dont les temps d’exécution et leurs arrivages respectifs sont
données dans la table ci-dessous. Faire un schéma qui illustre son exécution et
calculer le temps de séjour de chaque processus, le temps moyen de séjour, le
temps d’attente et le temps moyen d’attente en utilisant :
- L’algorithme de FIFO
- L’algorithme du plus court d’abord (SJF)
Schéma d’exécution :
Processus Temps d’exécution Temps d’arrivé
T 3 0
R 6 1
C 4 4
G 2 6
F 1 7

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 15


16

Chapitre III : La virtualisation


1.1. Terminologie
Quand on parle de virtualisation (mais aussi pour comprendre les chapitres
suivants de ce support de cours de système d’exploitation), il sera avantagé d’acquérir
un peu de terminologie fondamentale, en particulier les termes suivants :

 Système d’exploitation hôte (OS hôte). C’est le système d’exploitation


de l’ordinateur physique sur lequel votre logiciel de virtualisation a été
installé.

 Système d’exploitation invité (OS invité). C’est le système


d’exploitation en fonction dans la machine virtuelle.

 Machine virtuelle (VM). C’est l’environnement spécial créé par votre


logiciel de virtualisation pour votre système d’exploitation invité qui
s’exécute. Autrement dit, vous lancer votre système d’exploitation invité
“dans” une VM. Normalement, une VM apparaîtra sur le bureau de votre
ordinateur comme une fenêtre, mais elle peut être affichée en mode plein
écran, ou à distance sur un autre ordinateur, selon les interfaces de
logiciel de virtualisation que vous utilisez
Pour notre cas dans e cours de système d’exploitation, nous allons utiliser le
logiciel de virtualisation «Virtual box ».

1.2. Démarrer Virtual box


Après l’installation, vous pouvez démarrer VirtualBox comme suit :

- Sur un hôte Windows, dans le menu standard “Programmes”, cliquez sur


l’élément du groupe “VirtualBox”. Sur Vista ou Windows 7, vous pouvez aussi
taper “VirtualBox” dans la zone de recherche du menu “Démarrer”.

- Sur un hôte Mac OS X, dans la zone de recherche, cliquez deux fois sur
l’élément “VirtualBox” du dossier “Applications”. (Il se peut que vous vouliez
mettre cet élément sur votre Dock.)

- Sur un hôte Linux ou Solaris, selon votre environnement de bureau, une icône
“VirtualBox” peut avoir été mis soit dans le groupe “Système” soit dans “Outils
système” de votre menu “Applications”. Sinon vous pouvez taper VirtualBox
dans un terminal.

Quand vous démarrez VirtualBox pour la première fois, une fenêtre comme celle
suivante devrait apparaître :

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 16


17

Cette fenêtre s’appelle le “gestionnaire VirtualBox”. À gauche, vous pouvez voir un


panneau qui listera, plus tard, toutes vos machines virtuelles. Comme vous n’en avez
pas créées, la liste est vide. Une ligne de boutons au-dessus vous permet de créer de
nouvelles VMs et de travailler sur celles existantes, lorsque vous en avez. Le panneau
à droite affiche les propriétés de la machine virtuelle actuellement sélectionnée s’il y
en a une. De nouveau, comme vous n’avez pas encore de machine, le panneau affiche
un message de bienvenue.

1.3. Créer votre première machine virtuelle


Cliquez sur le bouton “Nouveau” en haut de la fenêtre du gestionnaire VirtualBox. Un
assistant apparaîtra pour vous guider à travers le paramétrage d’une nouvelle machine
virtuelle (VM) :

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 17


18

Sur cet écran, l’assistant de VirtualBox vous demandera le minimum d’informations


dont il a besoin pour créer une VM, en particulier :
1. Le nom de la VM sera plus tard affiché dans la liste des VMs de la fenêtre du
gestionnaire VirtualBox, et il sera utilisé pour les fichiers de la VM sur le
disque. Si vous pouvez utiliser n’importe quel nom, gardez en tête qu’après
avoir créé quelques VMs, vous apprécierez d’avoir donné à vos VMs des noms
parlants ; ainsi “Ma VM” serait moins utile que “Windows XP SP2 avec
OpenOffice”.
2. Pour le “Type de système d’exploitation”, sélectionnez le système
d’exploitation que vous voudrez installer plus tard. Les systèmes d’exploitation
supportés sont ici regroupés ; si vous voulez installer une chose très rare et non
listé, sélectionnez “Autre”. Selon votre sélection, VirtualBox activera ou
désactivera certains paramètres de VM dont peut avoir besoin votre système
d’exploitation invité.
3. Sur la page suivante, sélectionnez la mémoire (RAM) que VirtualBox devra
affecter à chaque fois que la machine virtuelle sera démarrée. La quantité de
mémoire donnée ici sera retirée de votre machine hôte laissée au système
d’exploitation invité, lequel verra cette mémoire comme RAM installée sur
l’ordinateur (virtuel).
4. Ensuite vous devez spécifier un disque dur virtuel pour votre VM.

Attention : Choisissez avec prudence ce paramètre ! La mémoire donnée à la VM ne


sera pas disponible pour votre OS hôte pendant que la VM sera en fonction, donc ne
spécifiez pas plus que vous ne pouvez donner. Par exemple, si votre machine hôte a 1
Go de RAM et si vous entrez 512 Mo de RAM pour une machine virtuelle en
particulier, pendant l’exécution de cette VM, vous n’aurez plus que 512 Mo pour tous
les autres logiciels de votre hôte. Si vous lancez deux VMs en même temps, encore

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 18


19

plus de mémoire sera affectée à la deuxième VM (qui peut même ne pas démarrer si la
mémoire n’est pas disponible). D’un autre côté, vous devriez spécifier autant que votre
système d’exploitation invité (et vos applications) ont besoin pour s’exécuter
correctement.

Vous avez alors les choix suivants :


 Pour créer un nouveau disque dur virtuel vierge, appuyez sur le bouton
“Nouveau”.
 Vous pouvez utiliser un fichier image de disque existant. La boîte à liste
déroulante affichée dans la fenêtre contient toutes les images de disque dont se
souvient VirtualBox, probablement parce qu’elles sont actuellement attachées à
une machine virtuelle (ou elles l’ont jadis été). Vous pouvez aussi cliquer sur le
petit bouton dossier à côté de la boîte à liste déroulante pour ouvrir une boîte
de dialogue de fichier standard qui vous permet de choisir un fichier image de
disque sur le disque de votre hôte.

VirtualBox supporte deux types de fichiers image :


 Un fichier rempli dynamiquement ne grossira que lorsque l’invité stockera
des données sur son disque dur virtuel. Il sera donc petit au départ sur le disque
dur hôte et ne grossira que plus tard jusqu’à la taille indiquée, au fur et à mesure
que des données le rempliront.
 Un fichier à taille fixe occupera immédiatement l’espace spécifié même si
seule une partie de l’espace disque virtuel est en réalité utilisée. S’il occupera
beaucoup plus de place, un fichier à taille fixe connaît moins de latence et il va
donc légèrement plus vite qu’un fichier rempli dynamiquement.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 19


20

1.4. Lancer votre machine virtuelle


Pour démarrer une machine virtuelle, vous avez plusieurs choix :
 Cliquez deux fois sur son entrée dans la liste dans a fenêtre du gestionnaire ou
 sélectionnez son entrée dans la liste de la fenêtre du gestionnaire et appuyez sur
le bouton “Démarrer” en bas ou
 pour les machines virtuelles créées avec VirtualBox 4.0 ou supérieur, allez au
dossier “VirtualBox VMs” dans le dossier personnel de votre système, cherchez
le sous-répertoire de la machine que vous voulez démarrer et cliquez deux fois
sur le fichier de paramètres de la machine (ayant une extension de fichier.vbox).
Ceci ouvre une nouvelle fenêtre et la machine virtuelle que vous avez sélectionnée va
démarrer.
Une fois ce processus fini, il restera qu’à lancer la machine virtuelle crée contenant un
disque dur vierge c.à.d. sans système d’exploitation.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 20


21

1.5. Démarrage d’une nouvelle VM pour la première fois


Quand on démarre une VM pour la première fois, un autre assistant “Assistant
premier démarrage” apparaîtra pour vous aider à sélectionner un média
d’installation. Comme la VM est créée vierge, agissant exactement comme un vrai
ordinateur sans système d’exploitation installé, elle ne fera rien et affichera un
message d’erreur selon lequel aucun système d’exploitation n’a été trouvé. C’est
pourquoi l’assistant vous aide à sélectionner un média à partir duquel vous pouvez
installer un système d’exploitation.

 Si vous avez un CD ou un DVD physique à partir duquel vous voulez installer


votre système d’exploitation invité (par exemple un CD ou un DVD
d’installation de Windows), mettez-le dans le lecteur CD ou DVD de votre
hôte. Puis dans la liste déroulante des médias d’installation de l’assistant,
sélectionnez “Lecteur hôte” avec la bonne lettre de lecteur (ou, en cas d’hôte
Linux, le fichier de périphérique). Ceci permettra à votre VM d’accéder au
média dans votre lecteur hôte et vous pouvez poursuivre l’installation à partir
de là.
 Si vous avez téléchargé un média d’installation sur Internet sous forme d’un
fichier image ISO (en général pour une distribution Linux), vous pourriez
graver ce fichier sur un CD ou un DVD vierge et poursuivre comme on vient de
décrire. Mais avec VirtualBox, vous pouvez passer cette étape et monter le
fichier ISO directement. VirtualBox présentera ce fichier comme un lecteur de
CD ou de DVD-ROM à la machine virtuelle, comme il le fait avec une image

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 21


22

de disque dur virtuel. Dans ce cas, la liste déroulante de l’assistant contient la


liste des médias d’installation qui ont été précédemment utilisés avec
VirtualBox. Si votre média n’est pas dans la liste (surtout si vous utilisez
VirtualBox pour la première fois), sélectionnez la petite icône de dossier à côté
de la liste déroulante pour afficher une boîte de dialogue de fichiers standard
dans laquelle vous pouvez choisir le fichier image sur vos disques hôtes. Dans
les deux cas, après avoir
Pour notre cas nous avons installé le type de système d’exploitation Linux avec sa
version Ubuntu 10.10 qui nous servira à la longue avec son terminal au chapitre3.

Introduisez votre mot de passe dans cette fenêtre d’authentification d’UBUNTU et


vous aurez une interface tel que :

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 22


23

Chapitre iv : Système d’Exploitation DOS, Windows &


Linux
1.1. Historique du DOS
Avant l’avènement des ordinateurs 16bits, le standard en vigueur en matière
de système d’exploitation sur les ordinateurs professionnels 8bits était (il était
toujours) CP/M-80 de Digital Research. Au début de 1980, après l’apparition des
premiers microprocesseurs 16bits d’Itel (8086) la firme américain Seattle Computer
Product, envisage l’une de ses applications, de ne pas attendre plus longtemps d’écrire
son propre système d’exploitation : scp 86-Dos.
Quelques semaines plus tard, l’ordinateur pc/IBM était en passe d’être
annoncé le contacte entre IBM et Digital Research ne s’étant pas établi par diverses
raisons obscures, IBM se retournant vers la société Microsoft qui avait conçu le basic
de son pc pour cette dernière. Suite à un accord avec Seattle Computer, elle décida,
alors d’acheter les droits du seul système d’exploitation présent sur le marché mis à
part CPM-86, après quelques aménagements, scp-Dos devint donc MS-DOS version1.
Le DOS (Disk Operating System) est le système d’exploitation utilisé avec les
PC. Il a été développé par Microsoft pour la firme IBM et l’ordinateur de type XT. Il a
été développé en parallèle sous 3 appellations suivant le vendeur : PC-DOS pour IBM,
DR-DOS pour Novell et MS-DOS pour toutes les autres firmes (commercialisé par
Microsoft). Ils sont équivalents, seules quelques petites différences dans les options de
commandes sont présentes. Comme tous les systèmes d’exploitation, DOS est
développé pour servir d’interface entre l’électronique d’une part et l’utilisateur d’autre
part. Il n’inclut pas d’interface graphique, c’est un système d’exploitation en mode
texte. Microsoft a contourné le problème en développant les Windows 2.0, 3.0, 3.1 et
3.11, une sorte de rajoute.

1.2. Composantes du DOS


Le système d’exploitation est formé de 6 modules, ce qui lui confère une
importance flexibilité et une grande souplesse d’utilisation.
a) La BIOS : est un élément qui exécute entre autres la première instruction
dès la mise en tensions du micro-ordinateur. Il contient aussi les routines de
gestion des organes de la machine.
b) Le programme d’amorçage (BOOT SECTOR) : se trouve sur le premier
secteur de chaque disquette ou disque dur et initialise le processus de
chargement en mémoire de deux fichiers situés sur le disque :
 BIOS=IO.SYS
 DOS=MSDOS.SYS
Il ne sert qu’à l’initialisation du système lors de la mise en marche, d’un
reset ou d’un CTRL+ALT+SUP.
c) Le Module BIOS : fournit une interface de bas niveau avec la ROM-BIOS
et gère les entrées sorties des différents périphériques (clavier, écran…).
d) Le Module DOS : fournit une interface de haut niveau avec les programmes
d’application, il gère le répertoire des fichiers ainsi que le blocage des

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 23


24

enregistrements sur le disque, c’est lui qui prend en charge les appels des
fonctions DOS.
e) Le Module de traitement COMMAND.COM : traite les différentes
commandes que l’utilisateur soumet au système d’exploitation (DIR, DEL,
COPY…).
f) Commandes externes : ce sont les autres commandes de MS-DOS qui ne
sont pas dans l’interpréteur de commande COMMAND.COM, soit parce
qu’ils sont rarement utilisées. On appelle commande externes tous fichiers
exécutable du disque (COM et EXE).
 Le Module BIOS et interface de Bas niveau doit donc être pour
chaque machine.
 Le Module DOS interface de haut niveau, sera le même pour toutes
les machines. Donc les interfaces étant les mêmes (DOS identiques) ;
les applications pourront alors être d’une machine sur une autre.

1.3. Commandes DOS


Les commandes sont également en deux types :
1. Les commandes internes : directement exécutables, font du noyau du
système d’exploitation.
2. Les commandes externes : séparées du programme original, sont des
programmes supplémentaires. Pour exécuter une commande externe, il
faudra également signaler son emplacement sur le disque dur ou la disquette
(éventuellement via la commande PATH).
1.3.1. Commandes des bases
Commande Fonction
CD Permet de se déplacer d’un répertoire à un autre. (ex : c>cd dossier)
CD\ Permet d’accéder à la racine d’un lecteur (ex : c>cd@\
DIR Lister contenu du répertoire courant (ex c>dir)
MKDIR Création d’un dossier (ex : c>mkdir dossier)
RMDIR Effacer un dossier (ex : c>rmdir dossier)
COPY Copie du fichier. (ex : c>copy toto.txt c : \toto.txt)
XCOPY Copie des fichiers et des répertoires. (ex : c> xcopy toto.txt)
DEL Effacer un fichier (ex : c>del c : \temp.txt)
REN Renommer des fichiers (ex : c>ren toto.txt tata.txt)
MOVE Déplacer un fichier (ex : c>move c : \temp.txt d :\)
EDIT Lance un éditeur de texte sous MS-DOS. (Exemple : c> edit tuto.txt)
MORE Visualiser le contenu d’un fichier texte (exemple : c> more tuto.txt)
FORMAT Permet d’effacer le contenu d’un fichier texte (exemple : c> format
tuto.txt)
FIND Recherche dans un fichier la ligne contenant une valeur
CMD Ouvre la fenêtre de commande DOS
ECHO Affiche un message (exemple : c> echo bonjour)
ECHO Permet de sauter une ligne
SORT Permet de trier une liste en fonction d’un critère. (exemple : c>dir\sort

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 24


25

reverse)
PRINT Imprime le fichier spécifié (exemple : c>print tuto.txt)
EXIT Ferme la fenêtre MS-DOS (exemple : c>exit)
FC Comparaison de fichier
ATTRIB Modifie les attributs d’un fichier. (exemple : c> attrib c:\test +a)
CALCLS Modifier les droits utilisateurs sur un fichier
CHDIR Affiche l’arborescence actuelle. (exemple : c:\temp >chdir)

1.3.2. Commandes utilitaires Windows


Commande Fonctions
DEFRAG Permet de défragmenter un lecteur (exemple : c> defrag c :)
CHKDSK Permet de lancer un scan sur un disque dur
Net star Démarre un service Windows (exemple : c> net star sharedaccess)
CLEANMGR Permet de faire un nettoyage des disques durs
CONVERT Convertir des volumes FAT en volumes NTFS
SCHTASKS Permet sous Windows XP à un administrateur de créer, supprimer,
effectuer des requêtes, modifier, exécuter et mettre fin à des taches
planifiées sur un système local ou distant
TASKKILL Permet sous Windows XP de mettre fin à une ou plusieurs taches
ou processus. Voir TASKLIST
TASKLIST Affiche la liste des applications et taches ou processus associées
actuellement activés sur un système à distance sous Windows XP
SHUTDOWN Arrêt ou redémarre un ordinateur local ou distant
BOOTCFG Configure, interroge ou modifie les paramètres du fichier boot.init
DISKPART Gere des disques, des partitions ou des volumes
SYSTEMINFO Permet d’obtenir une foule d’informations sur votre équipement
DRIVERQUERY Recherche une liste de pilotes et de propriété de pilotes
MEM Affiche les informations concernant les zones de mémoires
allouées, les zones de mémoires libre et les programmes
actuellement chargés en mémoire dans le sous-système MS-DOS
HOSTNAME Affiche le nom de l’ordinateur
TITLE Permet de renommer la fenêtre MS-DOS (exemple : c> title
batcher !)
TREE Represente graphiquement une arborescence de répertoires
(exemple c>tree
BREAK Active ou désactive le contrôle étendu de CTRL+C
PROMPT Modifie l’invite de commande (exemple c>prompt batcher !)
COMPACT Compresse et decompresse un fichier (exemple c>compact
temp.txt/c)
PING Effectue un test de connectivité sur une machine distance à utiliser
avec une adrese IP (exemple c>ping google.fr)
IPCONFIG Permet de voir votre configuration réseau, adresse IP, DNS,
serveur DHCP… (exemple c>ipconfig
NESTAT Affiche leurs connexions actives sur votre machine, port et
protocole. (exemple c>Netstat

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 25


26

1.4. Système d’exploitation Linux


Linux est un système d’exploitation, tout comme Windows ou MacOs X. il
permet de travailler comme on le ferait sous Windows. Mais il fonctionne
différemment. Certains voient encore Linux comme un horrible système plein de
commandes compliquées. Ce n’est plus vrai. Linux possède désormais un système
graphique agréable, confortable et simple à utiliser.
1.4.1. Linux un système d’exploitation ou Noyau
Nous avons l’habitude de dire que Linux est un système d’exploitation. En
réalité, Linux, est uniquement le cœur (Noyau) du système d’exploitation GNU/Linux.
(Les systèmes d’exploitation Microsoft Windows NT, 2000 et XP ont également un
noyau, mais différent : le noyau NT).
Le Noyau fait la gestion de la mémoire, l’accès aux périphériques (disque dur,
lecteur de CD-Rom, clavier, souris, carte graphique…), la gestion du réseau, le partage
du temps microprocessus entre les programmes (multitâche), etc.
Contrairement à Windows dont l’interface graphique nous est imposé, il existe
différentes interfaces graphiques sous Linux, les principales étant Gnome, KDE et
XFCE. Il est même possible de faire fonctionner Linux sans interface graphique, ou
même de ne lancer l’interface graphique que quand nous le souhaitons.
GNU est un projet qui a apporté de tas d’utilitaires au noyau Linux, tel que le
compilateur gcc, et les milliers d’utilitaires (tar, tail, man, bash…). Ces utilitaires
GNU ; associés au noyau Linux, constituent le système d’exploitation GNU/Linux.
- Linux est donc un noyau ;
- GNU est un ensemble de programmes utilitaires ;
- GNU/Linux est le système d’exploitation.
1.4.2. Les Distributions
GNU/Linux étant gratuit, différentes sociétés l’on reprit et complété afin de
distribuer un système d’exploitation à leur gout. C’est ce qu’on appelle les
distributions. Parmi les plus connues, citons Red Hat, Fedora, Mandriva,
Debian, Suse, Slackware, Gentoo, Xandros, Lycoris, TurboLinux, Ubuntu…
GNU Linux
Utilitaire Noyau

GNU/Linux
Système d’exploitation

Gentoo Ubuntu TurboLinux Mandriva

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 26


27

1.4.3. Quelques commandes Linux


1) More
- Equivalent MS-DOS/MS Windows :more
- Signification: more
- Affiche un fichier page par page
- Options les fréquentes :
 s : regroupe les lignes vides consécutives en une seule
 f : Ne coupe pas les lignes longues
2) Less
- Equivalent MS-DOS/MS Windows :more
- Signification: less
- Affiche un fichier en permettant la navigation, ainsi que certaines
possibilités (ex : la recherche).
3) chmod
- Equivalent MS-DOS/MS Windows :cacls
- Signification: change mode
- Modifie les permissions d’accès à un fichier ou à un répertoire.
Type d’autorisations (une autorisation d’exécution sur un répertoire
autorise son ouverture) :
 + : Ajoute une permission
 - : Enlève une permission
 = : Autorise uniquement l’autorisation indiqué
 r : Lecture ; Valeur octale 4
 w : Ecriture ; valeur octale 2
 x : Exécution ; valeur octale 1
 s : Utilise les droits du propriétaire ou du groupe lors de
l’exécution
 u : Propriétaire du fichier
 g : Groupe propriétaire du fichier
 o : Tous les autres utilisateurs

Options les plus fréquentes :

- -r : Récursif, modifie les autorisations d’un répertoire et


tout ce qu’il contient
- -c : Ne montrer que les fichiers ayant été réellement
modifiés
- -f : Ne pas afficher les messages d’erreur

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 27


28

Exemple d’utilisation :

 chmod ugo+x monRep


Ajouter l’exécution (ouverture) du répertoire monRep à tous (propriétaire,
groupe, autres)
 chmod go-wx monRep
Supprime l’autorisation d’écriture et l’exécution de monRep au groupe et aux
autres.
 chmod u=rw,go=r MonFichier
Fixe l’autorisation de lecture et d’écriture au propriétaire de MonFichier et
autorisation de lecture au groupe et aux autres.
 chmod 644 MonFichier
Exactement la même chose que ci-dessus mais en utilisant les valeurs octales
(Nota : 6=4+2= lecture + écriture)
4) chown
- Equivalent MS-DOS/MS Windows :cacls
- Signification: change owner
- Change le propriétaire et le groupe propriétaire d’un fichier
- Options le plus fréquentes :
 -R : Modifie récursivement un répertoire et tout ce qu’il
contient
Exemple :
- chown autreUtilisateur MonFichier
Change le propriétaire de MonFichier en
autreUtilisateur
- chown –r lui :nous monRep
Change le propriétaire en lui et le groupe propriétaire
en nous du répertoire monRep ainsi que tout ce qu’il
contient
5) chgrp
- Signification : change groupe
- Change le groupe propriétaire d’un fichier
- Option les plus fréquentes :
 -r : change récursivement un répertoire et tout ce qu’il
contient
 -h : change le groupe propriétaire d’un lien symbolique et
seulement lui (ne touche pas à la destination du lien)
 -l : si fournie avec R, change le groupe propriétaire d’un
répertoire et des fichiers qu’il contient s’il est pointé par un
lien symbolique rencontré lors de l’exécution.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 28


29

Exemples :
- chgrp unGroupe MonFichier
Change le groupe propriétaire du fichier MonFichier
en unGroupe
- chgrp -r unGroupe monrep
Change le groupe propriétaire du repertoire monRep
ainsi que tout ce qu’il contient en unGroupe
6) Free
- Signification : mémoire libre
- Affiche la mémoire disponible/ utilisée du système
- Options les plus fréquentes :
 -b : affiche la mémoire en octets (bytes)
 -k : affiche la mémoire en kilooctets
 -m : affiche la mémoire en méga octets
 -g : affiche la mémoire en giga octets
 -h : affiche la mémoire en unités pertinentes pour l’humain
 -s : spécifie le délai de réaffichage de la mémoire
 -t : affiche en plus la ligne des totaux (RAM +swap)
Exemples :
- Free –m –s 5
Affiche la mémoire du système en méga octets toutes
les 5 secondes
7) Sudo
- Signification : substitute user-do
- Equivalent MS-DOS/MS Windows : runas
- Permet d’exécuter des commandes en tant qu’un autre utilisateur,
donc avec d’autres privilèges que les siens
- Options les plus fréquentes :
 -s : Importe les variables d’environnement du shell
 -k : lorsque l’on utilise sudo, il garde en mémoire le mot de
passe ; cette option déconnecte l’utilisateur et forcera à
redemander un mot de passe si sudo est exécuté avant le
timeout défini
Exemples :
 Sudo reboot
Lance la commande reboot avec les droits de l’utilisateur
root.
8) Ps
- Equivalent MS-DOS/MS Windows : tastlist
- Signification: processes snapshot

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 29


30

-
Affiche les processus en cours
-
Options les plus frequentes:
 -u: affiche les processus de l’utilisateur qui exécute la
commande
 -au : affiche les processus de tous les utilisateurs
 aux : affiche l’intégralité des processus du système.
Equivalent à ps –A
 -faux : affiche tous les processus du système en le
regroupant par enchainement d’exécution.
Exemples :
- Ps –u
Tous les processus des utilisateurs courant
- Ps –aux
Tous les processus en cours
9) Shutdown
- Equivalent MS-DOS/MS Windows : shutdown
- Signification: shutdown
- Permet d’éteindre ou relancer la machine au bout d’un temps
détermine (on peut mettre now pour éteindre immédiatement). Les
nouvelles connexions seront bloquées quelques minutes avant
l’extinction et les utilisateurs connectés sont prévenus à l’avance.
- Options les plus fréquentes :
 -r : pour relancer (reboot)
 -p : pour éteindre
 -t : pour programmer le temps (en secondes
 -c : pour annuler
Exemples :
- Shutdown-r now : reboot immédiat
- Shutdown-P now : extinction immédiate
- Shutdown-r-t 600 : reboot dans 600 secondes (10
minutes)
- Shutdown-c : annule toutes programmations
d’extinction

Il semblerait que shutdown now ne fonctionne plus, ni sur Ubuntu, ni sur OpenBSD
(du moins sur les miens). Cependant, la commande Shutdown-P now fonctionne.

En effet, il suffit de remplacer ‘’now’’ par ‘’0’’ soit 0 minutes et le tour est joué

10) Passwd
- Signification : Password
- Permet de modifier le mot de passe d’un utilisateur

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 30


31

- Options les plus fréquentes :


 -S : Affiche l’état d’un compte ( nom du compte, bloqué(L),
si l’utilisateur n’a pas de mot de passe(NP) ou à un mot de
passe utilisable (P), date de dernière modification du mot de
passe, durée minimum avant modification, durée maximum
de validité, durée d’avertissement, durée d’inactivité
autorisée)
Exemple d’utilisation
- Passwd « Nom_compte_a_modifier»
Demande à changer le mot de passe
11) Groups
- Signification : groups
- Affiche les groupes auxquels appartient un utilisateur
Exemples :
 Groups
Affiche les groupes auxquels appartient un utilisateur ayant
tapé la commande
 Groups monUtilisateur
Affiche tous les groupes auquel appartient l’utilisateur
MonUtilisateur.
12) Adduser
- Signification : ajouter un utilisateur
- Ajoute un utilisateur, ou un groupe, au système
- Options les plus fréquentes :
 -desabled-login : crée un nouvel utilisateur qui ne pourra se
connecter jusqu’à ce qu’un mot de passe lui soit attribué
 -disabled-password : comme –disabled-login sauf que le
nouvel utilisateur pourra se connecter en SSH avec des
RSA : pratique pour créer un utilisateur qui ne se connectera
que via SSH
 -system : crée un utilisateur système
13) Deluser
- Signification : delete user
- Supprime un utilisateur du système
- Option la plus fréquentes
 -system : Ne supprime l’utilisateur que si c’est un utilisateur
système.
 -remove-home : supprime l’utilisateur ainsi que son
répertoire dans le home.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 31


32

Exemples :
- Deluser UtilisateurSSH
Supprime l’utilisateur UtilisateurSSH
- Deluser –remove-home NouvelUtilisateur
Supprime l’utilisateur NouvelUtilisateur ainsi que le
répertoire /home/NouvelUtilisateur
- Deluser NouvelUtilisateur users
Supprime l’utilisateur NouvelUtilisateur du groupe
«users»
14) Uptime
- Signification : uptime
- Indique depuis quand le système fonctionne
Exemples :
 Uptime
Affiche l’heure actuelle, la durée depuis laquelle le système
fonctionne, le nombre d’utilisateurs actuellement connectés,
et la charge système moyenne ; commande de geek par
excellence à qui ne sert pas à grand-chose pour un utilisateur
lambda, mais utile pour un administrateur.
15) lsusb
- signification : list usb
- liste tous les périphériques USB
- option les plus fréquentes :
 -v : affiche des informations plus détaillées
Exemple :
- Lsusb
16) Uname
- Signification : unix name
- Affiche les informations sur le système
- Options les plus fréquentes :
 -s : affiche le nom du noyau
 -n : affiche le nom de la machine Host
 -r : affiche la révision du noyau
 -m : affiche le type de processeur de la machine (i386, i686,
etc).
 -o : affiche le nom du système d’exploitation
 -a : afficher les informations en utilisant les options –snrvmo
Exemple :
- Uname –a

Affiche tout

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 32


33

17) Apt-get

- Signification : avanced package tool-get


- Permet d’installer et la désinstallation de paquets en tenant compte
des dépendances ainsi que le téléchargement des paquets s’ils sont
sur une source réseau
- commande les plus fréquentes :
 Update : met à jour la liste des paquets disponible en
fonction des sources fournies
 Upgrade : met à jour tous les paquets déjà installé
 Dist-upgrade : pareil à upgrade mais permet en plus de
passer à une version supérieure du noyau et de certains
paquets, sans changer de version d’UBUNTU.
 Install : installe un ou plusieurs paquets
 Remove : supprime un ou plusieurs paquets
 Clean : efface du système les installeurs, sans désinstaller de
paquets
- Options les plus fréquentes :
 -f : Utilisé avec Install ou remove cette option permet de
réparer un système dont les dépendances sont défectueuses
 -m : Ignore les paquets manquants (à éviter si on ne sait pas
exactement ce que l’on fait.
 -s : fait une simulation des actions à mener sans rien au
système
 -y : Répond automatiquement oui à toutes les questions
 -u : affiches les paquets mis à jour
 -purge : A utiliser conjointement avec remove pour
supprimer tout ce qui peut l’être (fichier de configuration par
exemple, sauf ceux éventuellement présents dans /home).
 Reintall : Réinstaller les paquets avec leur version plus
récente
Exemples :
- Sudo apt-get update
Met à jour la liste des paquets disponible
- Sudo apt-upgrade
Met à jour tous les paquets installés
- Sudo apt-get install paquet1 paquet2
Install paquets1 paquets2
- Sudo apt-get-purge remove paquet3

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 33


34

Supprime paquet3 ainsi que tous ses fichiers de


configuration sauf ceux éventuellement présents dans
/home.

Exercice pratique via le Terminal Linux avec la variante UBUNTU

Gestion des droits d’accès commande chmod

Chmod : modifier le droit d’accès

Remarque : contrairement aux commandes précèdent, vous n’avez pas besoin d’être
root pour utiliser cette commande. Vous devez juste être propriétaire du fichier dont
vous voulez modifier les droits d’accès.

Méthodes d’utilisation de chmod

Octal

Absolue

Symbolique

2 Méthodes pour
utiliser chmod

Relative
Symbolique

1. Méthodes octale
Droit Binaire Octale Signification
--- 000 0 Aucune permission
--x 001 1 Exécution
-w- 010 2 Ecriture
-wx 011 3 Ecriture + exécution
r-- 100 4 Lecture
r-x 101 5 Lecture + exécution
rw- 110 6 Lecture + écriture
rwx 111 7 Tous les droits

Méthode absolue
1. Méthode Octale
Lecture=r=4
Ecriture=w=2
Exécution=x=1

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 34


35

Exemple :
7=4+2+1=rwx
5=4+0+1=r-x
6=4+2+0=rw-
0=0+0+0=---

Exercice1 : Interpréter

Chmod 754 list.txt

7 : User aura les permissions rwx

5 : group aura les permissions r-x

4 : other aura les permissions r—

NB : pour afficher le droit d’accès du fichier list.text faites : ls –l list.txt

Exercice2 : soit le fichier ci-après « toto.txt »

Questions :

1. Ajouter l’exécution (ouverture) du répertoire toto.txt à tous (propriétaire,


groupe, autres)
2. Supprime l’autorisation d’écriture et l’exécution de toto.txt au groupe et aux
autres.
3. Fixe l’autorisation de lecture et d’écriture au propriétaire de toto.txt et
autorisation de lecture au groupe et aux autres.
4. Exactement la même chose que ci-dessus mais en utilisant les valeurs octales

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 35


36

1.4.4. Comparatif des systèmes d’exploitation informatiques


Un système d’exploitation ou Operating System en anglais (souvent abrégé
par OS) est composé de l’ensemble des programmes permettant de faire fonctionner un
ordinateur. Il permet de faire fonctionner les différents composantes de la machine
grâce aux programmes associés que l’on appelle pilotes (ou drivers en anglais).
Quelques exemples de composantes : la carte son permettant d’avoir du son, la
carte graphique pour les images, le disque dur ou sont stockées toutes les données…
Ce système permet de faire l’intermédiaire entre l’utilisateur et son matériel
informatique. Sans ce système, l’utilisateur ne pourrait pas allumer son ordinateur et
utiliser ses applications les plus courants (Microsoft Office, le navigateur internet, des
jeux vidéo…)
On retrouve des systèmes d’exploitation préinstallés dans divers appareils
informatiques : ordinateurs de bureau et portables, tablettes tactiles, smartphones,
console de jeu…
3 géants contrôlent le marché de l’informatique : Microsoft avec Windows,
Apple avec son Mac OS et GNU/Linux avec les différentes distributions commerciales
et non commerciales.

WINDOWS

Avantages Inconvénients
- Système prêt à l’emploi - Trop d’application en arrière-plan
- Supporte correctement les - Mis à jour forcée
programmes permettant de faire - Beaucoup d’application préinstallée
fonctionner le matériel inutiles
- Sécurité non optimale : risque de
virus trop important
- Système lent
- Contrôle trop de la part de Microsoft
MAC OS

Avantages Inconvénients
- Rapide - Confidentialité des informations
- Fiable personnelles
- Sécurisé

LINUX

Avantages Inconvénients
- Distribution légère sur le disque dur - Mis à jour à effectuer à la main
- Fonctionnement simple et rapide - Si une mise à jour est mal
- Mode d’emploi bien guidé.( bien effectuée, le système peut
documenté) crasher
- Contenu entièrement - Les paquets codés et compilés

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 36


37

personnalisable par la communauté ne sont pas


- Pratique pour apprendre la logique toujours vérifiés. Un risque de
du système GNU/Linux crash ou un virus peut vite
- Gratuit arriver.
- ArchLinux nécessite d’avoir un
matériel compatible avec son
système.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 37


38

Chapitre V : Programmation Système


V.1. Introduction
V.2. Variable
V.2.1. Définition
Une variable est un espace réservé dans la zone mémoire permettant de stocker une donnée.
Toute variable dans un programme écrit en C doit être déclarée. A toute variable sont associés
un nom et un type.

Syntaxe : type_Variable Nom_Variable ;


Exemple :
main(){
char nom ;
long nombre ;
double n=3.5 ;
int n1,n2, n3=6 ;
}
TYPE SIGNIFICATION
int entier
short entier
long entier en double longueur
char caractère
float réel
double réel double précision

C ne connait pas le type BOOLEAN, néanmoins, vous simulez aisément ce type en donnant
les valeurs 0 et 1 à une variable entière.

Vous pouvez indiquer que vous ne vous intéressez qu’aux valeurs positives d’une variable
entière, ce que vous faites en la déclarant simplement :

Unsigned int

Ce qui signifie entier non signé. Vous considérez alors qu’il peut contenir toutes les valeurs
entières entre 0 et 65535.

V.3. Ecriture et saisi de données


Des fonctions d’affichage et de saisi de données à partir du clavier sont évidemment
indispensables pour vérifier qu’un programme donne les résultats attendus. Les
fonction printf() et scanf () sont élémentaires. Printf() permet un affichage et scanf() à
son tour permet l’entrée.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 38


39

Exemple :
main(){
double nb ;
printf(‘’saisir un nombre réel’’) ;
scanf(‘’%d’’, &nb) ;
}

V.4. Operateurs
V.4.1. Opérateurs arithmétique
Symbole Signification
+ Addition
- Soustraction
* Multiplication
/ Division
% Modulo

V.4.2. Combinaison d’opérandes de type différents


+= -= *= /=
Au lieu d’écrire i=i+20 ; on peut écrire i+=20 ;

V.4.3. Opérateurs logiques et de comparaisons


Symbole Signification
< Inferieur
<= Inferieur ou égale
> Supérieur
>= Supérieur ou égale
! Non
== Egalité
!= Inégalité
&& Et
:: Ou logique

L’operateur ! inverse une condition :


Si i>j est vrai alors !(i>j) est faux
Si i>j est faux alors !(i>j) est vrai
Si i est diffèrent de 0 alors !i est égale à 0

V.4.4. Operateurs d’incrémentation et de décrémentation


i=i+1 ; peut s’ecrire i++ (post-incrementation)

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 39


40

ou
++i (pré-incrémentation)

Dans une pré-incrémentation, la variable est d’abord incrémentée de 1.


L’opération d’affectation est ensuite effectuée. Dans une post-incrémentation,
l’opération d’affectation (sans les ++) ou (les --) est d’abord effectuée et ensuite
l’incrémentation.

Exemples :
Avant chaque opération, i=3 et j=15
Opération Équivalent Résultat
I=++j J=j+1 ; i=j ; I=16 et j=16
I=j++ ; I=j ; j=j+1 ; I=15 et j=16
I++ I=i+1 ; I=4
J=++i + 5 ; I+=1 ; j=i+5 ; I=4 et j=9
J=i++ + 5 ; J=i+5 ; i+=1 ; J=8 et i=4

V.5. Structures conditionnelles


V.5.1. Condition SI(if)
a) syntaxe 1
if(condition) instruction-1 ;

ex : if (i>0) printf(‘’positif’’);
b) Syntaxe 2
if(condition){ instruction -1;

instruction -n;
}
ex: if (i>0){ printf(‘’positif’’);
j=1;
}
c) syntaxe 3
if(condition) instruction -1;
else instruction -2;

ex: if(i>0) printf(‘’positif’’);


else printf(‘’i<=0’’);
d) syntaxe 4
if(condition){
instruction -1;
instruction-2
}else{
instruction -3;

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 40


41

instruction -4;
}
exemple: if(i>0){printf(‘’ positif’’);
j=1;
}else{
printf(‘’i<=0’’);
j=0;
}

V.5.2. Sélection (switch)


L’instruction switch réalise un aiguillage vers différentes instructions en fonction
de la valeurs d’une variable de contrôle.
Syntaxe :
switch(i){
case 1 : instruction ;
break ;
case 2 : instruction ;
break ;
default : instruction ;
}
NB : seule l’instruction break fait sortie du switch

V.6. Boucles
V.6.1. Boucles tant que (while)
Syntaxe :
a) while(condition) instruction ;
b) while(condition){
Instruction-1 ;

Instruction-n ;
}

V.6.2. Boucles faire… tant que (do while)


Syntaxe :
do{
instruction -1 ;
….
instruction-n ;
} while(condition) ;

NB : dans un DO….while, la condition spécifiée entre parenthèses est évaluée en


fin de boucle. Les instructions sont donc toujours exécutées au moins une fois.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 41


42

V.6.3. Boucles pour (for)


Syntaxe : for(expr-1 ; expr-2 ;expr-3) instruction;

Ex: Quel sera le résultat après exécution de ce code ?


a) main(){
int i;
for(i=2;i<5;i++) printf(‘’%d\n’’,i);
}
b) main(){
int i,j;
for(i=2,j=4;i<5 && j>2; i++,j--)
printf(‘’i: %d et j : %d\n’’,i,j);
}

V.7. Les tableaux


V.7.1. Déclaration de tableau
Soit à déclarer un tableau pouvant contenir 7 entier :
int ta[7] ;

V.7.3. Accès aux éléments d’un tableau


Soit un tableau MonTableau à deux dimensions :

1 2
3 4
5 6
Travail demandé :
a) Déclarer le tableau MonTableau
b) Insérer les valeurs avec la boucle for
c) Afficher les éléments du tableau

V.8. Fonctions
Les fonctions permettent de decomposer un programme en entités plus petites et donc
de simplifier un programme.
Une fonction peut :
- Se trouver dans le meme module de texte (toutes les declarations et instructions
qui la composent s’y trouvent).

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 42


43

- Etre appelée à partir du programme principal, d’une aotre fonction ou d’elle-meme


(recurcivité).
- Admettre ou non des arguments
- Retourner ou non une valeur
NB : C ne fait aucune distinction entre procedure et fonction.

Et C ne permet pas l’imprication de fonction : une fonction ne peut pas etre


declarée à l’interieur d’une autre fonction (mais une fonction paut appeler une autre
fonction).

Exemple : fonction retournant un nombre reel

float moitie(int) ;
int triple(int) ;
main(){
int i,j ;
float x ;
i=3 ;
x=moitie(i) ;
x=moitie(i*7) ;
x=moitie(triple(i-1)) ;
}
float moitie(int nb){
return (nb/2.0) ;
}
int triple(int nb){
return (nb*3) ;
}

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 43


44

EXERCICES D’APPLICATION
1. Calculer le périmètre d’un cercle, avec le rayon saisi par l’utilisateur. Sachant que p=
pi*2*rayon
2. Ecrire un programme C qui demande un nombre à l’utilisateur, puis calcule son carré.
3. Ecrire un programme qui permet à l’utilisateur de saisir un nombre et de dire si ce
nombre est positif ou négatif.
4. Ecrire un programme qui lit les n nombre saisie par l’utilisation en suite fait sa
somme.
5. Ecrire un programme qui calcule le factoriel d’un nombre saisie par l’utilisateur.
6. Ecrire un programme C qui lit un nombre et indique s’il est pair ou impair.
7. Ecrire un programme C permettant d’afficher 5 fois le message « Je veux que becky
devienne mon amie »
8. Soit un algorithme
Debut
Lire a
Lire b
X a
Y b
Tant que y<> 0 faire
Xx+1
Yy-1
Fin tant que
Ecrire X
Fin

Questions :
a) Tester à la main pour a=3 etb=2
b) Tester à la main pour a=4 et b=3
c) Que calcul cet algorithme ?
d) Traduire l’algorithme en C

9. Ecrire un programme C permettant d’accorder la prime aux agents selon le sexe et


selon le nombre d’heures prestées. Pour les hommes ayant prestés plus de 20h, on
accorde 5000fc et 4000fc le cas contraire. Pour les femmes ayant prestées plus de
18h, on accorde 6000fc et 4500fc le cas contraire.

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 44


45

BIBLIOGRAPHIE
Ouvrage

- REMI BONIDAL, Système d’exploitation, ed.continue, paris 2010


- Andrew TANENBAUM, système d’exploitation, 3ème édition pearson, paris 2008
- Abraham Silberschatz, Peter Baer Galvin et Greg Gagne, Operating System
Concepts, 7ème édition, John Wiley and Sons Inc, 2004

Notes de cours

- AMISI, C. Introduction au système GNU/Linux, Cours inédit, Troisieme graduat


Math-info, unikin, 2015-2016
- KASENGEDIA MUTOMBO, P. cours de système d’exploitation Cours inédit,
Troisieme graduat Informatique, unikin, 2016
- Pr. Omar Megzari, Notes de cours systèmes d’exploitation, Cours inédit, Faculté des
Sciences de Rabat, Rabat, 2004-2005

Webographie

- http://www.virtualbox.org
- https://www.dreamlive.fr
- https://www.Developpez.com
- https://www.helpclic.fr.st
- https://www.siteduzero.com/tuto-apprenez-le système d’exploitaion.html
- www.commentçamarche.net

Support de Système d’Exploitation/G2 IG/L1 M.I/ L2 P.I /0891841649 Page 45

Vous aimerez peut-être aussi