Pour qu'un ordinateur soit capable de faire fonctionner un programme, il faut que
la machine puisse effectuer un certain nombre d'opérations préparatoires
afin d'assurer les échanges entre l'unité centrale, la mémoire, et
les périphériques.
Or, les périphériques varient
d'un ordinateur à un autre, en particulier sur un PC.
Il faut donc des pilotes de périphériques
(instructions servant à piloter un périphérique, en anglais drivers)
différents selon les types d'ordinateurs et les types de périphériques.
C'est le système d'exploitation (en anglais operating system, souvent abrégé
en OS) qui assure ces tâches de liaison entre
le matériel, l'utilisateur et les applications (traitement de texte, jeu, ...).
Il permet de "dissocier" les programmes et le matériel, ce qui simplifie grandement la
tâche des développeurs de logiciels.
D'autre part, le système d'exploitation fournit un certain nombre d'outils
pour gérer la machine. Il assure l'initialisation du système après
une mise sous tension. Grâce à des routines (drivers ou
gestionnaires de périphériques) il peut gérer les périphériques,
en assurant des opérations aussi simple que l'affichage des caractères à l'écran
ou bien la lecture du clavier, mais aussi le pilotage d'une imprimante ou d'un scanner...
En effet, les périphériques d'entrée-sortie (par exemple les cartes d'extension)
varient d'un modèle d'ordinateur à un autre, il faut donc un système qui puisse unifier
l'écriture des instructions gérant le matériel. Ainsi lorsqu'un programme désire
afficher des informations à l'écran, il n'a pas besoin d'envoyer des informations spécifiques
à la carte graphique (il faudrait que chaque programme prenne en compte la programmation de chaque carte...),
il envoie les informations au système d'exploitation, qui se charge de les transmettre au périphérique
concerné...
La communication avec le système d'exploitation s'établit par l'intermédiaire
d'un langage de commandes et un interpréteur de commandes, cela permet à 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...
Les systèmes d'exploitation multitâches permettent de partager le temps
du processeur entre plusieurs programmes, ainsi ceux-ci sembleront s'exécuter
simultanément.
Pour réaliser ce processus, les applications sont découpées en
séquence d'instructions que l'on appelle tâches ou processus. Ces tâches
seront tour à tour actives,
en attente, suspendues ou détruites, suivant la priorité qui leur est associée ou bien 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érentes tâches 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.
Ces systèmes sont nécessairement multitâches puisqu'on
leur demande d'une part de pouvoir exécuter simultanément plusieurs
applications, mais surtout d'organiser leur exécution sur les différents
processeurs (qui peuvent être identiques ou non). Ces systèmes peuvent être
soit architecturés autour d'un processeur central qui coordonne les autres processeurs,
soit avec des processeurs indépendants qui possèdent chacun leur système
d'exploitation, ce qui leur vaut de communiquer entre eux par l'intermédiaire de
protocoles.
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 |
Unix |
32 bits |
|
X |
|
préemptif |
MAC/OS X |
32 bits |
|
X |
|
préemptif |
VMS |
32 bits |
|
X |
|
préemptif |
|