Login


A voir

Un problème avec un appareil électroménager ?
Vous cherchez un renseignement ?
Trouvez une réponse sur www.tout-electromenager.fr

Cours

Vous êtes ici : Matières (informatique) > Thèmes (systèmes d'exploitation) > Cours (Qu'est-ce qu'un système d'exploitation ?)

Cette création est mise à disposition sous un contrat Creative Commons Creative Commons License .

Auteur : E.RAVRAT

Dernière mise à jour : lundi 14 Janvier 2008 à 01:05:35

QU'EST-CE QU'UN SYSTEME D'EXPLOITATION ?

Ce chapitre est destiné à mieux comprendre ce qui se cache derrière la notion de système d'exploitation. Il ne présente pas une étude détaillée de tous les systèmes d'exploitation ni même d'un seul en particulier. Il se veut général et accessible à ceux qui ne peuvent pas expliquer même de façon simple ce qu'est un système d'exploitation.

Table des matières

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 :

schéma sans système d'exploitation

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 :

schéma avec OS faisant le lien entre l'application et le matériel

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.

schéma de la mémoire virtuelle

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
représentation du système de fichiers MS DOS représentation du système de fichiers 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 :
fenêtre de gestion des tâches sous 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) :
gestion des droits sur Vistafenêtre de gestion des droits sous Vista

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

moniteur de ressources sous Vista

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 :

schéma d'une architecture générale simplifiée d'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 DOS qui 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
interface graphique de Windows Vista interface graphique de Windows XP
Ubuntu Mac
interface graphique de Ubuntu sous Linux interface graphique de Mac OS
Compiz fusion (3D) sous Ubuntu Aero (3D) sous Windows Vista
interface graphique compiz fusion sous Ubuntu interface graphique de Windows Vista (Aero)

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 invite de commande MS-DOS et par le nom de l'utilisateur authentifié sur les systèmes Linux invite de commande sous 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

Haut de page

3.2) Bibliographie

  • Technologie des ordinateurs et des réseaux (7ème édition) de Pierre-Alain Goupille chez Dunod

Haut de page