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 certains périphériques.
Or, les périphériques varient d'un ordinateur à un autre, particulièrement 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'ordinateur et les types de périphériques.
C'est le système d'exploitation (en anglais operating systèm, 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 le développement 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 multi-tâches permettent de partager le temps du processeur pour 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 similaires (le système est alors dit "système transactionnel") ou différentes. Le système alloue alors à chaque utilisateur une tranche de temps.
Ces systèmes sont nécessairement multi-tâ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éments des informations d'une longueur de 16 bits, 32 bits, 64 bits ou plus.
Système |
Codage |
Mono-utilisateur |
Multi-utilisateur |
Mono-tâche |
Multi-tâ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 |
|
coopératif |
Unix |
32 bits |
|
X |
|
préemptif |
MAC/OS X |
32 bits |
|
X |
|
coopératif |
VMS |
32 bits |
|
X |
|
préemptif |
Windows XP Pro |
Windows XP familial |
|
|
|
|
Mac OS |
Linux Mandrake |
|
|
|
|
|