Vous êtes sur la page 1sur 11

1) Pour faire simple

1.1) Définition générale


Un concept souvent utilisé et que peu de monde peut expliquer est la notion de système. Il
faut savoir que tous les systèmes répondent à une définition commune (système digestif,
système nerveux, système d'information, système d'exploitation,...).
Un système est un ensemble d'éléments qui interagissent les uns avec les autres. Chacun à
un rôle précis et le résultat qu'il produit va servir à un autre élément et réciproquement.
L'objectif d'un système étant de produire un résultat qui est la raison de son existence.
(digérer des aliments, contrôler le corps, traiter des informations, gérer des ressources,...)

Etudier le système d'exploitation revient alors à étudier les différents éléments qui le
compose, leur rôle et leur objectif pour déterminer l'objectif du système dans sa totalité.

Pour qu'un ordinateur soit capable de faire fonctionner un programme informatique (appelé
parfois application ou logiciel), la machine doit être en mesure d'effectuer un certain nombre
d'opérations préparatoires afin d'assurer les échanges entre le processeur, la mémoire, et les
ressources physiques (périphériques).
Le système d'exploitation (noté SE ou OS, abréviation du terme anglais Operating System),
est chargé d'assurer la liaison entre les ressources matérielles, l'utilisateur et les applications
(traitement de texte, jeu vidéo, ...).

Haut de

page
1.2) Fonctionnement (très) général et (très) simplifié
Sans système d'exploitation, chaque application (logiciel) "communique" directement avec le
matériel :

Mais pour un même type de matériel (ex : une imprimante), il existe différents modèles. Une
application devrait être en mesure de "communiquer" avec n'importe quelle imprimante. Il
n'est pas possible pour les développeurs de prévoir toutes les imprimantes et encore moins
celles à venir ! Une solution consisterait à acquérir l'imprimante qui est prévue par
l'application, cela pour chaque application et chaque matériel ! Une autre solution consisterait
pour l'utilisateur à exprimer ses besoins en fonction de la ressource matérielle utilisée mais
cela nécessiterait des connaissances informatiques conséquentes.

Le système d'exploitation s'interpose entre l'application et le matériel afin de faire le lien entre
les deux :
Ainsi l'application peut envoyer une demande d'impression au système d'exploitation qui se
chargera lui même de faire cette demande auprès de l'imprimante. Les développeurs peuvent
par conséquent développer leurs applications sans prendre en compte le matériel
d'impression qui sera utilisé.

Le système d'exploitation permet ainsi de "dissocier" les programmes et le matériel, afin


notamment de simplifier la gestion des ressources (matérielles) et offrir à l'utilisateur une
interface homme-machine simplifiée afin de lui permettre de s'affranchir de la complexité de
la machine physique (l'ordinateur et ses périphériques).

Haut de

page
2) Présentation plus détaillée
2.1) Les rôles essentiels du système d'exploitation
2.1.1) La gestion des entrées/sorties (périphériques)

Le système d'exploitation permet de faire le lien entre les applications et les différentes
ressources matérielles. Les développeurs d'application se consacrent ainsi au seul
développement des fonctionnalités du logiciel. Par exemple, la gestion de l'horloge, la
configuration des ports d'entrée/sortie, le déplacement des têtes de lecture des disques durs
et des disquettes, la configuration des modes graphiques, etc... sont pris en charge par le
système.
La gestion des entrées sorties nécessite l'utilisation de pilotes. Un pilote permet à un
système d'exploitation de reconnaître un certain matériel et de l'utiliser (selon les besoins des
applications).
Les systèmes d'exploitation intègrent généralement des pilotes génériques qui leur permet de
reconnaître de nombreux périphériques (clavier, souris, clé USB,...). Lorsqu'un périphérique
n'est pas reconnu, le pilote correspondant doit être installé. Le système pourra ainsi faire la
liaison entre l'application qui mobilise la ressource matérielle (le périphérique) et cette
ressource. De plus, l'utilisation d'un pilote spécifique à un matériel permet d'utiliser toutes les
fonctionnalités offertes par lui (un 4ème et 5ème bouton sur la souris, des touches
supplémentaires sur un clavier,...).

Haut de

page
2.1.2) La gestion de la mémoire
La mémoire désigne un dispositif physique permettant la conservation et la restitution
d'information ou de données. Or les données à conserver et à restituer sont extrêmement
nombreuses. La conservation pose le problème du volume de données qui peut être stocké
(temporairement ou non) et la restitution pose le problème du délai d'accès à celles-ci.
Tous les programmes nécessitent de la mémoire pour y déposer des informations afin des les
utiliser ultérieurement.
Le système d'exploitation est chargé de gérer l'espace mémoire alloué à chaque application
(cas des systèmes multitâche) et, le cas échéant, à chaque usager (cas des systèmes
multiutilisateurs). En cas d'insuffisance de mémoire physique (barette de mémoire vive), le
système d'exploitation peut créer une zone mémoire sur le disque dur, appelée «mémoire
virtuelle».
La mémoire virtuelle permet de faire fonctionner des applications nécessitant plus de
mémoire qu'il n'y a de mémoire vive disponible sur le système. Un fichier est créé sur le
disque dur (ou sur un autre support physique, l'ensemble de ces support constituant
la mémoire secondaire). Ce fichier devient un fichier d'échange nommé swap. Lorsqu'un
processus a besoin de laisser des informations en mémoire et qu'il n'y a plus de place sur
la mémoire vive (les barettes mémoire), les données concernant un autre processus moins
prioritaire vont être transférées dans le fichier swap. Ensuite le programme prioritaire utilise la
place libérée sur la mémoire vive. En contrepartie la mémoire secondaire est beaucoup plus
lente puisque les accès se font sur le disque dur (ou sur tout autre support sur lequel le fichier
de swap a été créé), donc mécaniquement.
Un programme est en réalité decoupé en bouts que l'on nomme pages, de taille fixe. La
mémoire physique est elle aussi découpée en pages, de même taille, ainsi que la partie de la
mémoire secondaire consacrée au swap. Le programme peut avoir des pages qui se trouvent
sur la mémoire vive et sur la mémoire secondaire.

La mémoire virtuelle est par conséquent composée de la mémoire vive ainsi que du fichier
d'échange (swap) créé sur la mémoire secondaire (disque dur, clé USB,...). La taille de la
mémoire virtuelle peut être réglée manuellement. (exemple sous XP familial : clic droit sur
Poste de Travail -> Propriétés -> Avancé -> dans la cadre Performance cliquer sur
Paramètres -> onglet Avancé -> dans le cadre Mémoire virtuelle cliquer sur Modifier.) Cette
zone (swap) peut également être prévue lors de l'installation du système (ex : Linux).

La mémoire virtuelle se justifie par le fait que :


• les applications sont de plus en plus gourmandes malgré la croissance de la capacité
des mémoires physiques ;
• la mémoire physique est coûteuse ;
• la mémoire secondaire (disques, bande magnétique, ...) est peu coûteuse en
comparaison de la précédente.

Haut de

page
2.1.3) La gestion des systèmes de fichiers
Le système d'exploitation gère la lecture et l'écriture dans le système de fichiers et les droits
d'accès aux fichiers par les utilisateurs et les applications.

Un système de fichiers désigne la façon d'organiser le stockage des données dans la


mémoire secondaire. Si l'utilisateur voit une arborescence à l'écran, cette représentation ne
reflète pas le stockage physique des données.
Représentation d'un système de fichiers
sous MS-DOS sous Windows XP

Le principe consiste à stocker les données sous forme de fichiers, c'est-à-dire des suites de
blocs qui sont en réalité des suites de chiffres binaires. Sur le support de stockage, il n'existe
à proprement parlé aucun fichier. Lorsque des blocs de données sont enregistrés, des
données supplémentaires doivent être également enregistrées afin de reconstituer le fichier,
de pouvoir l'attribuer à un répertoire et de définir un chemin d'accès pour l'utilisateur.
La gestion du système de fichiers diffère selon le système de fichiers intégré au système
d'exploitation.
Ainsi pour le système FAT (système de fichiers des clés USB), une zone du disque indique
pour chaque bloc de données l'index du bloc suivant du même fichier. Il est ainsi possible de
reconstituer le fichier en mettant les blocs bout à bout en respectant l'ordre d'indexage. Dans
le système NTFS, la gestion des fichiers repose sur le même principe qu'une base de
données.
Les fichiers reconstitués peuvent être interprétés selon leur format de fichier comme des
caractères, des nombres entiers ou flottants, des codes d'opérations machines, des adresses
mémoires, etc...

L'objectif du système de fichiers est donc de permettre l'accès au contenu du fichier


(l'ouverture du fichier, sa recopie à un second emplacement ou sa suppression) à partir de
son chemin d'accès, formé d'un nom précédé d'une liste de répertoires imbriqués.

Les systèmes d'exploitation peuvent gérer plusieurs types de systèmes de fichiers différents
(windows XP peut supporter le FAT et le NTFS). Mais il faut en principe séparer les systèmes
de fichiers sur des partitions différentes (découpage physique du support de stockage) car
vous courrez le risque que le système de fichiers ne soit pas compris par le système
d'exploitation. C'est pour la même raison que l'installation de plusieurs systèmes
d'exploitation sur un même poste doit se faire sur des partitions différentes afin que chaque
OS comprennent le système de fichiers qui figure sur la ou les partitions qu'il gère.

Haut de

page
2.1.4) La gestion des processus

La plupart des systèmes modernes sont capables de gérer l'exécution «


simultanée » de plusieurs programmes. Ces programmes sont constitués de
flux d'instructions, qui se partagent le processeur de l'ordinateur. Le système
passe sans cesse de l'un à l'autre de manière équitable ou selon des règles
de priorité bien définies. Ces flux d'instructions sont communément appelés
des « threads ».

En réalité, il n'y a jamais qu'un thread qui s'exécute à chaque instant sur un processeur. Cela
signifie que deux flux d'instructions ne peuvent être exécutés simultanément. Mais, les
processeurs monocoeur calculent si rapidement que vous avez l'impression de pouvoir
exécuter en même temps plusieurs programmes. Cela dit, plus le nombre d'applications
lancées est important, et plus le système sera lent.

Cependant les progrès technologiques ont permi l'utilisation de processeurs multi-coeurs


(multicor en anglais), c'est-à-dire à plusieurs coeurs physiques. Un coeur est une unité de
calcul (composée de millions de transistors) gravés sur une puce. Ces processeurs ont donc
plusieurs coeurs gravés sur une seule puce. Leur nombre varie entre deux et quatres
actuellement sur le marché (début 2008), et passera à plusieurs dizaines dans quelques
années !

Puisqu'un seul thread est traité par coeur, deux threads peuvent être traités simultanément ce
qui accroît les performances du système (rapidité accrue notamment pour les programmes
nécessitant beaucoup de calculs : photo, dessin 3D, jeux récents,...) à la condition que le
programme soit développé de façon à exploiter cette technologie.
Le rôle du système d'exploitation dans la gestion des processus est alors de gérer l'ordre
d'éxécution des flux d'instructions (threads) selon des priorités définies. Il affecte le
processeur aux différents programmes lancés selon un ordonnancement déterminé par un
algorithme. Ainsi, un système multitâches (multithreads) permet de partager les ressources
de la machine entre plusieurs programmes, et donc d'exécuter plusieurs programmes « en
même temps ». Ceci conduit à un confort d'utilisation supplémentaire, car si votre système
était monotâche (monothreading), chaque programme devrait être entièrement exécuté afin
de pouvoir passer au suivant, et si un thread était bloqué ou très lent, alors vous ne pourriez
plus rien faire ou attendre longtemps la fin de son exécution.

S'il ordonnance les différents threads générés par les applications lancées, il peut libérer des
ressources lorsqu'un programme ne répond pas correctement en le "tuant". Les ressources
mobilisées par le programme posant problème sont alors libérées (mémoire vive, mobilisation
du processeur,...)
Exemple avec Windows Vista :

Haut de

page
2.1.5) La gestion de la sécurité

Le système d'exploitation est chargé de la sécurité liée à l'exécution des programmes en


garantissant que les ressources ne sont utilisées que par les programmes et utilisateurs
possédant les droits adéquats. Cela signifie qu'il demande l'authentification de l'utilisateur,
qu'il assure sa propre sécurité en le protégeant des applications mal écrites ou
volontairement trafiquées ou encore qu'il contrôle l'accès aux différents objets (dossiers,
fichiers,...)

La gestion des droits sur les objets est plus ou moins fine selon les systèmes. Linux offre par
exemple une gestion des droits sur trois niveaux pour un objet donné (un dossier, un fichier,
une application...) :
• tous les utilisateurs.
• un groupe d'utilisateurs. Des droits portant sur des objets sont fixés pour un groupe et
tout utilisateur appartenant à celui-ci aura de fait les droits fixés.
• le propriétaire. Seul le propriétaire de l'objet à des droits sur celui-ci.
Windows Vista offre également une gestion affinée des droits comme le fait Linux mais en
proposant des configurations toutes faites (clic droit sur l'objet, propriétés) :

Haut de

page
2.1.6) La gestion des informations concernant son propre
fonctionnement

Les systèmes d'exploitation proposent des indicateurs permettant de vérifier leur bon
fonctionnement (utilisation du processeur, de la mémoire vive, ressources mobilisées par
chaque processus, température, réseau...).

Haut de

page
2.2) L'architecture des systèmes d'exploitation.
Je rappelle qu'une architecture désigne l'organisation et la structure générales que cela soit
au niveau matériel ou logiciel.

Chaque système d'exploitation a une architecture qui lui est propre. Par conséquent l'objectif
de cette partie est de présenter une architecture générale (très) simplifiée afin de percevoir la
composition d'un OS.

Vous pouvez observez sur le schéma ci-dessous les différentes couches verticales et
horizontales qui constituent un système d'exploitation :
Haut de

page
2.2.1) Les applications
Les applications représentent les différents programmes lancés.

Haut de

page
2.2.2) Les bibliothèques
Les bibliothèques mettent à disposition du système d'exploitation et des programmes
applicatifs des morceaux de programmes tout prêts, dont le but est de faciliter l'accès à
certaines fonctions. Grâce aux bibliothèques (.dll, .OCX, ...), les développeurs peuvent
facilement et rapidement réutiliser des fonctions utiles, sans avoir à les reprogrammer eux-
mêmes.

Haut de

page
2.2.3) L'interface homme machine
L'interface homme machine (IHM) permet de faire communiquer l'utilisateur et le système.
C'est d'ailleurs le shell ou DOSqui est un logiciel fournissant une interface pour un utilisateur
qui se charge de cela. Elle peut être graphique (GUI, pour Graphical User Interface), dans ce
cas les parties les plus typiques de ce type d’environnement sont le pointeur de la souris, les
fenêtres, le bureau, les icônes. De plus, des contrôles graphiques sont utilisés pour interagir
avec l’utilisateur : les boutons, les menus, les barres de défilement.
Voici quelques exemples d'IHM graphiques :
Windows Vista Windows XP
Ubuntu Mac

Compiz fusion (3D) sous Ubuntu Aero (3D) sous Windows Vista

Si l'interface de type graphique est la plus répendue, l'interface en ligne de commande (en
anglais CLI pour Command Line Interface) reste très utilisée, notamment sur les machines
ayant une configuration matérielle qui nécessite de faire des économies sur la mémoire
utilisée (qui est très sollicitée par une interface graphique) ou bien souvent sur les serveurs.
Les avantages sont nombreux mais ne feront pas l'objet d'un développement.

Une interface en ligne de commande propose une invite de commande qui à pour rôle le
traitement des commandes tapées au clavier par l'utilisateur. Ces commandes, une fois
interprétées, auront pour effet de réaliser telle ou telle tâche d'administration, ou bien de
lancer l'exécution d'un logiciel.

L'invite de commande sous MS-DOS (DOS de microsoft) débute par une lettre et par
le nom de l'utilisateur authentifié sur les systèmes Linux

Haut de

page
2.2.4) L'API (interface de programmation)
L'API est une interface de programmation (Application Programming Interface) qui permet
de définir la manière dont un composant informatique peut communiquer avec un autre. Une
API a pour objet de faciliter le travail d'un programmeur en lui fournissant les outils de base
nécessaires à tout travail à l'aide d'un langage donné. Elle constitue une interface servant de
fondement à un travail de programmation plus poussé.
Une API pour la programmation dans un langage x est ainsi composée d'un ensemble de
fonctions, routines et méthodes, écrites dans ce langage. Ces fonctions de bas niveau (ouvrir
un fichier, le parser, le fermer, ...) ont la propriété d'être d'un usage courant dans toutes les
applications dérivées de x. D'où l'idée de les programmer une fois pour toutes puis de les
mettre à disposition de la communauté des programmeurs. Ces derniers n'ont plus alors qu'à
choisir et appeler les fonctions pertinentes selon les objectifs de leur code. Les API
permettent d'assurer une certaine interopérabilité entre les applications et le système
d'exploitation.

Pour exemple, l'API de windows XP est l'API System32.

Haut de

page
2.2.5) Le noyau
Un noyau de système d'exploitation (abrégé noyau, ou kernel en anglais), est la partie
fondamentale des systèmes d'exploitation (en général). Elle gère les ressources de
l'ordinateur et permet aux différents composants — matériels et logiciels — de communiquer
entre eux.

Le noyau d'un système d'exploitation est le logiciel qui assure :


• la communication entre les logiciels et le matériel ;
• la gestion des divers logiciels (tâches) d'une machine (lancement des programmes,
ordonnancement,...) ;
• la gestion du matériel (mémoire, processeur, périphérique, stockage,...).

La majorité des systèmes d'exploitation sont construits autour de la notion de noyau.

Il existe différents types de noyau dont :


• le noyaux monolithique : l'ensemble des fonctions du système et des pilotes sont
regroupés dans un seul bloc de code. Le fait que tout soit regroupé et compilé en binaire
rend le système très rapide à l'éxécution. Cependant, au fur et à mesure de leurs
développements, les codes des noyaux monolithiques ont augmenté en taille et il s'est
avéré difficile de les maintenir.
• le micro-noyau : Les systèmes à micro-noyaux cherchent à minimiser les
fonctionnalités dépendantes du noyau en plaçant la plus grande partie des services du
système d'exploitation à l’extérieur de ce noyau et en n'intégrant que les fonctionnalités
de base. Ces fonctionnalités sont alors fournies par de petits serveurs indépendants.
Elles s'apparentent à des extensions.
• le noyau hybride :La dénomination de « noyaux hybrides » désigne principalement
des noyaux qui reprennent des concepts à la fois des noyaux monolithiques et des micro-
noyaux, pour combiner les avantages des deux. Au micro noyau sont intégrées quelques
fonctionnalités supplémentaires.
• Pour les plus motivés, sachez qu'il existe d'autres types de noyaux,
consultez wikipedia qui présente avec pertinence les notions correspondantes.

Haut de

page
2.2.6) Le système de fichiers, les pilotes, le matériel
Les notions de système de fichiers, de pilote, et de matériel ont déjà été soulevés
précédemment dans ce cours.

Haut de

page
3)Webographie et bibliographie
3.1)Webographie
• http://cuiwww.unige.ch/~billard/systemeII/cours6.html
• http://fr.wikipedia.org/wiki/Syst%C3%A8me_d'exploitation#L.27interface_graphique
• http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_fichiers
• http://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d'exploitation
• http://www.commentcamarche.net/systemes/sysintro.php3
• http://www.operating-system.org/betriebssystem/_french/w-wissen.htm
• http://casteyde.christian.free.fr
• http://www.dicodunet.com
• http://jfenal.free.fr/Traduc/FSHOWTO/filesystems-howto.fr.html