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, ...).
Ainsi lorsqu'un programme désire accéder à une ressource matérielle,
il ne lui est pas nécessaire d'envoyer des informations spécifiques au périphérique
il lui suffit d'envoyer les informations au système d'exploitation, qui se charge de les transmettre au périphérique
concerné via son pilote.
En l'absence de pilotes il faudrait que chaque programme reconnaisse et prenne en compte la communication
avec chaque type de périphérique !
Le système d'exploitation permet ainsi de "dissocier" les programmes et le matériel,
afin notamment de simplifier la gestion des ressources et offrir à l'utilisateur une interface homme-machine
(notée «IHM») simplifiée afin de lui permettre de s'affranchir de la complexité
de la machine physique.
Les rôles du système d'exploitation sont divers :
- Gestion du processeur : le système d'exploitation est chargé
de gérer l'allocation du processeur entre les différents programme grâce à
un algorithme d'ordonnancement. Le type d'ordonnanceur est totalement dépendant du système d'exploitation,
en fonction de l'objectif visé.
- Gestion de la mémoire vive : le système d'exploitation est chargé
de gérer l'espace mémoire alloué à chaque application et, le cas
échéant, à chaque usager. En cas d'insuffisance de mémoire physique,
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. En contrepartie cette mémoire est beaucoup plus lente.
- Gestion des entrées/sorties : le système d'exploitation permet d'unifier et de
contrôler l'accès des programmes aux ressources matérielles par l'intermédiaire des pilotes (appelés également gestionnaires
de périphériques ou gestionnaires d'entrée/sortie).
- Gestion de l'exécution des applications : le système d'exploitation est chargé de la bonne
exécution des applications en leur affectant les ressources nécessaires
à leur bon fonctionnement.
Il permet à ce titre de «tuer» une application ne répondant plus correctement.
- Gestion des droits : 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.
- Gestion des 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.
- Gestion des informations : le système d'exploitation fournit un certain nombre d'indicateurs
permettant de diagnostiquer le bon fonctionnement de la machine.
Le système d'exploitation est composé d'un ensemble de logiciels permettant de gérer
les interactions avec le matériel. Parmi cet ensemble de logiciels on distingue généralement
les éléments suivants :
- Le noyau (en anglais kernel) représentant les fonctions fondamentales du système
d'exploitation telles que la gestion de la mémoire, des processus,
des fichiers, des entrées-sorties principales, et des fonctionnalités de communication.
- L'interpréteur de commande (en anglais shell, traduisez «coquille» par opposition
au noyau) permettant la communication avec le système d'exploitation par l'intermédiaire
d'un langage de commandes, afin de permettre à l'utilisateur
de piloter les périphériques en ignorant tout des caractéristiques du matériel qu'il utilise, de la gestion des adresses physiques, etc.
- Le système de fichiers (en anglais «file system», noté FS), permettant d'enregistrer les fichiers dans une arborescence.
Un systèmes d'exploitation est dit «multi-tâche» (en anglais multithreaded)
lorsque plusieurs «tâches» (également appelées processus)
peuvent être exécutées simultanément.
Les applications sont composées en séquence d'instructions que l'on appelle «processus légers» (en anglais «threads»).
Ces threads seront tour à tour actifs, en attente, suspendus ou détruits, suivant la priorité qui leur est associée ou bien
exécutés séquentiellement.
Un système est dit préemptif lorsqu'il possède un ordonnanceur (aussi appelé planificateur), qui répartit,
selon des critères de priorité, le temps machine entre les différents processus qui en font la demande.
Le système est dit à temps partagé lorsqu'un quota de temps est alloué à chaque processus par l'ordonnanceur.
C'est notamment le cas des systèmes multi-utilisateurs qui permettent à plusieurs utilisateurs d'utiliser simultanément sur une même machine
des applications différentes ou bien similaires : le système est alors dit "système transactionnel".
Pour ce faire, le système alloue à chaque utilisateur une tranche de temps.
Le multiprocessing est une technique consistant
à faire fonctionner plusieurs processeurs en parallèle afin d'obtenir une puissance
de calcul plus importante que celle que obtenue avec un processeur haut de gamme
ou bien afin d'augmenter la disponibilité du système (en cas de panne d'un
processeur).
On appelle SMP (Symmetric Multiprocessing
ou Symmetric Multiprocessor)
une architecture dans laquelle tous les processeurs accède à
un espace mémoire partagé.
Un système multiprocesseur doit donc être capable
de gérer le partage de la mémoire entre plusieurs processeurs mais
également de distribuer la charge de travail.
On distingue plusieurs types de systèmes d'exploitation, selon qu'ils sont capables
de gérer simultanément des informations d'une longueur de 16 bits, 32 bits, 64 bits ou plus.
Système |
Codage |
Mono-utilisateur |
Multi-utilisateur |
Mono-tâche |
Multitâche |
DOS |
16 bits |
X |
|
X |
|
Windows3.1 |
16/32 bits |
X |
|
|
non préemptif |
Windows95/98/Me |
32 bits |
X |
|
|
coopératif |
WindowsNT/2000 |
32 bits |
|
X |
|
préemptif |
WindowsXP |
32/64 bits |
|
X |
|
préemptif |
Unix / Linux |
32/64 bits |
|
X |
|
préemptif |
MAC/OS X |
32 bits |
|
X |
|
préemptif |
VMS |
32 bits |
|
X |
|
préemptif |
|