Vous êtes sur la page 1sur 17

ENSEIGNEMENT DE PROMOTION SOCIALE

——————————————————————
Cours de

SYSTEMES D'EXPLOITATION
- Introduction -
——————————————————————

UF 75 52 03 U32 D2

H. Schyns

Septembre 2012

Version provisoire
Systèmes d'eploitation Sommaire

Sommaire

1. INTRODUCTION

1.1. Le concept d'ordinateur


1.2. Les couches de fonctionnement
1.3. Les processus

2. DEFINITION ET ROLES D'UN SYSTEME D'EXPLOITATION

2.1. Definition
2.2. Rôles d'un système d'exploitation
2.2.1. Gérer les ressources
2.2.2. Créer des couches d'abstraction
2.2.3. Fournir une interface ergonomique
2.2.4. Autres fonctions

3. TYPES DE SYSTEME D'EXPLOITATION

3.1. Position du problème


3.2. Monotâche
3.3. Multitâche
3.3.1. Multitâche coopératif
3.3.2. Multitâche préemptif
3.3.3. Multiutilisateur
3.3.4. Multithreading
3.3.5. Synthèse
3.4. Multiprocesseur
3.5. Multiordinateur

4. HISTORIQUE

4.1. Premiers essais

5. SOURCES

5.1. Internet
5.2. Autres

H. Schyns S.1
Systèmes d'exploitation 1 - Introduction

1. Introduction

1.1. Le concept d'ordinateur

Nous avons vu dans le cours de structure des ordinateurs que, d'un point de vue
matériel, celui-ci s'organise autour d'une unité de traitement des données (fig. 1.1) :

Unité de
Traitement
UAL

fig. 1.1 Unité Arithmétique et Logique


Cette unité de traitement contient notamment l'unité arithmétique et logique (ang.:
Arithmetic and Logical Unit).

L'ALU regroupe un certain nombre de circuits électroniques de base, construits


en combinant des portes logiques élémentaires (AND, OR, NAND, NOR, XOR).

Ces circuits réalisent les opérations mathématiques élémentaires (addition et


soustraction, multiplication et division) ainsi que les opérations logiques
élémentaires (plus grand que, égal).

Ces opérations élémentaires sont ensuite combinées au sein du processeur dans


des micro-programmes pour accomplir des fonctions plus avancées (logarithmes
et exponentielles, fonctions trigonométriques,…).

L'unité de traitement doit échanger des informations avec son environnement grâce
à des périphériques d'entrée (clavier, scanner, souris, …) et des périphériques
de sortie (écran, imprimante, …)

Elle doit aussi conserver les données et les résultats pendant les traitements ce qui
implique l'existence d'une mémoire (fig. 1.2).

Périphérique Unité de Périphérique


d'entrée Traitement de sortie

Mémoire Mémoire
(données) (programmes)

fig. 1.2 Architecture d'un ordinateur élémentaire


Un "vrai" ordinateur est capable d'exécuter tout seul des procédures de
traitement, autrement dit, des programmes.
Tout cela est très joli, mais comment la machine sait-elle quand elle doit lire le
périphérique d'entrée ? Comme il existe différents types de périphériques d'entrée
(clavier, souris, CD, réseau, …), comment la machine sait-elle comment elle doit lire
l'information présentée sur tel ou tel périphérique ?

H. Schyns 1.1
Systèmes d'exploitation 1 - Introduction

D'un autre côté, en supposant qu'un programme soit en cours d'exécution comment
sait-il où se trouve tel ou tel fichier auquel il doit accéder ? Comment connaît-il les
emplacements de mémoire auxquels il peut accéder ?

Il est donc nécessaire d'ajouter un processus de gestion et de contrôle pour


gérer l'ensemble des ressources du système et les attribuer aux différents
programmes qui en ont besoin.

Ce processus, en réalité, un ensemble de processus, constitue le système


d'exploitation. (ang. Operating System)

Evidemment, ce processus de gestion est lui aussi un programme qui est aussi
exécuté par l'unité de traitement (processeur). Et ce programme doit aussi utiliser
certaines ressources. Mais comment sait-il… Nous tournons en rond (fig. 1.3).

fig. 1.3 Le problème du système d'exploitation

Le truc consiste à mettre "en dur" dans la machine un petit programme qui
s'exécutera automatiquement dès la mise sous tension : le programme
d'amorçage (ang.: boot process).

Le programme d'amorçage va à son tour lancer et laisser la main à des procédures


de plus en plus complexes jusqu'à ce que l'utilisateur puisse prendre la main et
effectuer le travail qu'il désire.

D'où vient ce premier programme ? Comment va-t-il permettre de lancer tous les
autres ? Quels sont ces autres programmes ? C'est ce que nous verrons dans le
cadre de ce cours.

1.2. Les couches de fonctionnement

Il est commode de présenter la réalisation d'une tâche à l'aide d'un ordinateur selon
un modèle en couches superposées.

Chaque couche possède son langage particulier, c'est à dire un jeu d'instructions
qui lui est propre. Chaque couche se fonctionne comme un traducteur placé entre
la couche qui lui est supérieure et la couche qui lui est inférieure.

On s'adresse à un traducteur ou à un interprète dans un langage qu'il comprend


(son jeu d'instructions). Le traducteur transforme ces informations (instructions) en
les traduisant dans le langage qui est compris par le traducteur suivant.

Ce modèle en couches est aussi appelé hiérarchie de machines virtuelles. Pour


résoudre un problème à l'aide d'un ordinateur, on empile généralement huit couches
(fig. 1.4) :

H. Schyns 1.2
Systèmes d'exploitation 1 - Introduction

Les programmes d'application sont tous les logiciels dont l'utilisateur se sert
couramment : tableur, traitement de texte, navigateur internet. Tous ces logiciels
ont leurs propres jeux de commandes et de fonction.

Pour développer ces logiciels, un programmeur a du imaginer les fonctions qu'il


mettrait à la disposition de l'utilisateur puis les traduire dans l'une des nombreux
langages de programmation tels que Java, C++, FORTRAN et des centaines
d'autres.

L'utilisateur doit résoudre un


Utilisateur 8
problème

Programme Il utilise un logiciel comme Excel


7
d'application et ses instructions

Langage
6 Excel est conçu en C ou C++
de programmation

Les lignes de code C ou C++ sont


Assembleur 5
compilées en Assembleur (ASM)

Noyau du système Le code ASM est combiné au SE


4
d'exploitation pour accéder aux ressources

Chaque famille de processeurs


Langage machine 3
a son langage numérique propre

Les instructions complexes sont


Langage de
2 micro-programmées dans le
microprogrammation
processeur

Les bits sont codés en tensions


Logique électronique
1 (volts) qui commandent les
et numérique
transistors
fig. 1.4 Modèle en couches de la réalisation d'une tâche sur un ordinateur

Tel quel, le langage de programmation n'est pas compréhensible par l'ordinateur.


Chaque instruction doit être décomposée et détaillée dans un langage beaucoup
plus universel mais aussi plus limité : l'assembleur. C'est la compilation. Chaque
instruction symbolique en Assembleur correspond à une instruction du langage
machine.

Le logiciel va utiliser des ressources système : il doit lire la souris, scruter le clavier,
afficher des informations à l'écran, utiliser de la mémoire. Toutes ces ressources
sont gérées de manière standard par le système d'exploitation. C'est lui par
exemple qui sait comment on ouvre un fichier sur le disque dur, comment on y
inscrit une information, comment on la relit. Le système d'exploitation a son propre
langage : on ne s'adresse pas à DOS comme à Windows ou à Linux.

H. Schyns 1.3
Systèmes d'exploitation 1 - Introduction
1
Chaque processeur a son propre langage machine ( ). C'est un langage natif,
codé en "dur" dans chaque processeur, le seul qu'il comprenne; ce qui rend
incompatibles des processeurs de familles différentes.

Les instructions complexes (logarithme, fonctions trigonométriques) sont


implémentées dans le processeur au moyen de microprogrammes gravés dans le
chip. Les microprogrammes traduisent ces fonctions évoluées en une suite
d'instructions logiques et arithmétiques élémentaires.

Les instructions simples sont implémentées au moyen de portes électroniques,


agencées selon des circuits qui produisent l'opération désirée. Nous sommes ici
au cœur du "hard", le lieu de rencontre de l'informatique et de l'électronique
numérique…

1.3. Les processus

La notion de processus est au centre du fonctionnement du système d'exploitation.


Plusieurs définitions qui se recouvrent largement ont été proposées mais la
définition idéale reste à formuler.

Une application n'est pas un processus. Plus exactement, pour qu'une application
fonctionne, il peut y avoir des dizaines de processus mis en œuvre en arrière plan.

Pour faire simple, nous dirons qu'un processus est un segment de programme en
cours d’exécution

- un programme est une suite d’instructions ; c’est du texte, un code statique.


- un processus est un concept dynamique, il représente le déroulement d’une
tâche faisant partie d’une application ou un programme système quelconque.

Un processeur n’est capable de traiter qu’un seul processus à la fois.

Le processus est donc la plus grosse séquence d'instruction que le processeur peut
traiter seul.

Une application peut être multitâches ou, plus simplement, multiprocessus. Ceci a
pour avantage

- de fractionner des applications afin d'en simplifier le développement,


- de permettre l'exacution apparemment simultanée de plusieurs applications
- d’optimaliser l’utilisation du (ou des) processeurs(s)

1
Plus exactement, ce langage est particulier à chaque famille de processeurs p.ex. la ligne des
processeurs Pentium de Intel.

H. Schyns 1.4
Systèmes d'exploitation 2 - Définition et rôles d'un système d'exploitation

2. Définition et rôles d'un système d'exploitation

2.1. Definition

A son origine, dans les années 1950, le système d'exploitation était simplement
définit comme le programme qui contrôle le matériel.

Aujourd'hui, le système d'exploitation est un ensemble de programmes qui permet -


entre autres - de gérer l'utilisation des ressources du système informatique afin de
les partager entre plusieurs processus.

Par ressources, on entend :

- le processeur (ang.: processor),


- la mémoire RAM (ang.: RAM memory),
- le disque dur (ang.: hard disk, disk drive, HDD),
- les périphériques d'entrée/sortie (ang.:. Input/output devices),
- les périphériques de communication (ang.: communication devices),
- etc.

2.2. Rôles d'un système d'exploitation

Au cours de l'histoire, le système d'exploitation a progressivement été amené à


remplir de plus en plus de rôles.

2.2.1. Gérer les ressources

Ainsi qu'il a été dit ci-dessus, le premier rôle du système d'exploitation a été de de
contrôler la manière dont les ressources (entités passives) sont allouées aux
processus (entités actives) : quantité de mémoire, temps de calcul autorisé, etc.

Aujourd'hui, la plupart des systèmes d'exploitation sont capables de gérer


dynamiquement cette répartition des ressources entre les divers processus. En
d'autres mots, la répartition des ressources varie au fil du temps sans que
l'utilisateur s'en aperçoive.

Ainsi, un système d'exploitation est capable de voir que le temps de calcul qu'il a
attribué à un processus est écoulé. Il peut alors l'interrompre tout en mémorisant
l'état dans lequel il a été interrompu. Ceci fait, il peut dégager les ressources qui lui
était attribuées et les donner à un nouveau processus qui veut lancer ou à un
processus qui avait été mis en attente précédemment et qu'il veut réactiver.

Si les tranches de temps de calcul sont suffisamment courtes (de l'ordre du


centième de seconde), plusieurs processus peuvent se succéder rapidement sans
que l'utilisateur en soit conscient.

On crée ainsi un système d'exploitation multi-tâches.

Il est important de noter que c'est le système d'exploitation et non le matériel qui
définit si un système informatique est mono- ou multi-tâches.

H. Schyns 1.1
Systèmes d'exploitation 2 - Définition et rôles d'un système d'exploitation

2.2.2. Créer des couches d'abstraction

- Les pilotes de périphériques

Une première couche d'abstraction (ang.: abstraction layer) permet de masquer les
détails du fonctionnement d'une ressource (mémoire, disque dur, clavier, écran, …)
tout en offrant un ensemble de fonctions standardisées à un utilisateur (lequel peut
être un être humain ou un logiciel).

Prenons une comparaison : le téléphone et le réseau téléphonique sont des


couches d'abstraction que nous utilisons tous les jours. Qu'il s'agisse de téléphoner
en Belgique ou à l'étranger, que ce soit depuis un poste fixe ou un appareil mobile,
la procédure suivie par l'utilisateur est toujours la même. Pourtant, les opérations
mises en œuvre par l'appel sont différentes dans chaque cas mais l'utilisateur n'a
pas à s'en préoccuper.

Il en va de même pour l'accès aux différentes ressources de l'ordinateur : les codes


ou instructions de contrôle de chaque périphérique sont propres à chaque fabricant
et ne sont pas normalisés (1). Par contre, de l'autre côté, les développeurs
d'applications souhaitent utiliser une seule instruction pour accéder au périphérique
quel que soit son fabricant.

Pour résoudre ce problème, le système d'exploitation fournit des sous-programmes


appelés pilotes de périphériques (and.: device drivers). Ces pilotes sont
généralement écrits par le fabricant du périphérique considéré.

- L'encapsulation et la virtualisation des périphériques

D'une manière similaire, le système d'exploitation met à la disposition du


développeur des fonctions simples qui, en réalité, exécutent un ensemble complexe
d'instructions pour accéder à tel ou tel périphérique et lui demander d'exécuter une
action donnée.

Ces fonctions masquent complètement le fonctionnement interne du périphérique


en question, lequel n'est plus accessible qu'au travers des fonctions standard
proposées par le système d'exploitation. On dit alors que le périphérique a été
encapsulé.

En poursuivant dans la même ligne d'idées, le même ensemble de fonctions peut


agir sur différents périphériques, à nouveau sans que le développeur ait à se
soucier de leur fonctionnement interne. Pour le développeur, ces périphériques
sont devenus des abstractions.

Un exemple est la notion de flux (ang.: stream) qui peut tout aussi bien représenter
l'envoi de données vers l'écran, vers un fichier sur disque dur ou vers la carte
réseau. Le développeur utilisera les mêmes instructions dans tous les cas.

- Le virtualisation de machines élémentaires

En poussant le raisonnement à l'extrême, ce n'est plus seulement un périphérique


qui devient une abstraction mais tout un ordinateur, avec ses ressources en
mémoire et ses périphériques.

1 Les fabricants veillent à rester cohérents dans leurs lignes de produits (p.ex. imprimantes) en utilisant les
mêmes codes pour produire les mêmes effets mais il n'y a généralement pas d'accord entre les fabricants
sur les codes à utiliser.

H. Schyns 1.2
Systèmes d'exploitation 2 - Définition et rôles d'un système d'exploitation

Ainsi, en fonction des besoins, le système d'exploitation découpe l'ordinateur


physique en un ensemble de mini-ordinateurs logiques (ou virtuels) (1), chacun
disposant en exclusivité d'un certain nombre de pages de mémoire, d'un certain
nombre de canaux de lecture et d'écriture vers les périphériques et d'un certain
temps de calcul. Chacune de ces machines se voit confier l'exécution d'un
processus donné. Lorsque le processus est terminé, le système d'exploitation
récupère les ressources pour les attribuer en tout ou en partie à une autre machine
virtuelle qui exécutera un autre processus.

- La sécurisation des applications

En faisant exécuter tous les processus sur des machines virtuelles indépendantes
qui disposent de leurs propres ressources, le système d'exploitation peut facilement
contrôler si l'une d'elle tente d'écrire dans la zone de mémoire attribuée à une autre.
Il peut aussi régler les conflits engendrés entre deux processus qui tenteraient
d'accéder simultanément à un même fichier du disque dur. Il réduit ainsi
considérablement les risques de plantage du système.

Evidemment, dans certains cas, des applications différentes doivent pouvoir


échanger des informations. Pensons simplement au copier/coller d'une image entre
un outil de dessin et un traitement de texte. Cette tâche sera réalisée en toute
sécurité par un processus tiers fourni par le système d'exploitation.

2.2.3. Fournir une interface ergonomique

L'interface est, par définition, l'élément du système d'exploitation que l'utilisateur


perçoit en premier lieu..

Bien souvent, l'utilisateur est plus intéressé par les caractéristiques de l'interface
que par les performances rélles du système d'exploitation. C'est notamment ce qui
explique la popularité de Windows comparée à celle de Linux.

L'interface utilisateur compte plusieurs composants, parmi lesquels :

- l'interpréteur de commande, qui permet de donner des ordres au système,


- l'explorateur du système de fichiers, qui permet de retrouver les documents
composés par l'utilisateur et d'organiser le contenu du disque dur,
- l'aide en ligne.

Aujourd'hui, l'utilisateur attend de l'interface qu'il soit graphique et ergonomique


(ang.: Graphical User Interface ou GUI) : il doit permettre de lancer les applications
en les pointant à l'aide d'une souris et non en tapant une ligne de commande.

De plus, l'interface doit lui permettre de gérer non seulement sa propre machine,
mais aussi de nombreux processus qui s'exécutent sur des ensembles d'ordinateurs
mis en réseaux.

2.2.4. Autres fonctions

A côté de ces fonctions de base, l'utilisateur attend aussi du système d'exploitation :

1 Il ne s'agit pas encore de machines virtuelles telles que celle crées à l'aide de logiciels de virtualisation tels
que VMware ou VirtualBox car celles dont on parle ici ne sont accessibles que par le SE.

H. Schyns 1.3
Systèmes d'exploitation 2 - Définition et rôles d'un système d'exploitation

- qu'il permette de partager les ressources matérielle entre plusieurs logiciels et


plusieurs utilisateurs
- qu'il permette de partager des données entre utilisateurs
- qu'il permette de planifier l'exécution de certaines tâches,
- qu'il assure la sécurité des informations et empêche les utilisateurs et les
logiciels d'interférer les une avec les autres,
- qu'il soit capable de résister aux erreurs de se remettre en état si une erreur
survient,
- qu'il permette de contrôler l'utilisation des ressources,

Et de plus, qu'il accomplisse discrètement ces diverses tâches en se faisant oublier.

H. Schyns 1.4
Systèmes d'exploitation 3 - Types de système d'exploitation

3. Types de système d'exploitation

3.1. Position du problème

La conception d'un système d'exploitation dépend :

- du type de tâche qu'on désire lui confier


- du processeur pour lequel il est créé
- du système de fichiers qu'il gère

Rien que dans le monde des PC, il en existe des dizaines, chacun ayant ses
avantages et ses inconvénients. Citons en vrac Linux, OS2, OS9, Paradox…

Les gros systèmes (ang.: mainframes) utilisés dans les grosses sociétés ont eux
aussi leurs systèmes d'exploitation : Unix, VMS (IBM), MVS (VAX), HP2000 (HP),
etc. Ils permettent notamment de faire du traitement par lots (ang.: batch) et de
gérer des files d'attente (ang.: queues) pour de multiples utilisateurs.

Citons aussi l'informatique industrielle qui utilise encore d'autres systèmes


d'exploitation optimisés pour le suivi des installations et la conduite de robots.

Enfin, les petits appareils "embarqués" tels que téléphones portables (GSM),
agendas électroniques (PDA), et autres systèmes d'aides à la navigation (GPS)
fonctionnent aussi grâce à un système d'exploitation très léger.

Par contre les petits ordinateurs qui équipent les ascenseurs, les fours à micro–
ondes, les machines à lessiver et autre electr-ménager "blanc", en sont parfois
encore dépourvus.

Commençons par classer tout ce petit monde.

3.2. Monotâche

Un système d'exploitation est monotâche lorsqu'il n'autorise qu'un seul utilisateur et


que celui-ci ne peut y exécuter qu'un seul programme à la fois.

Cette restriction n'est pas sans poser de problèmes puisque le système


d'exploitation doit aussi gérer les périphériques. Dès lors, un SE monotâche
travaille en mode réel (ang.: real mode) : il permet aux applications d'activer
librement n'importe quelle requête d'interruption matérielle ou logicielle (ang.:
interrupt request ou IRQ). Il leur permet également d'accéder librement - et sans
aucune protection - à n'importe quelle zone de mémoire.

Lorsqu'une application doit accéder à une ressource telle qu'imprimer un document


ou écrire sur le disque dur, elle s'arrête jusqu'à ce que cette tâche soit terminée.

Exemples : MS-DOS

3.3. Multitâche

Le système d'exploitation est multitâche (ang.: multitasking) s'il permet à l'ordinateur


d'exécuter simultanément plusieurs programmes.

En fait, la simultanéité n'est qu'apparente. Le système d'exploitation attribue à tour


de rôle à chaque processus un court laps de temps pour qu'il s'exécute
partiellement. Cette méthode, aussi appelée multiprogrammation ou temps
H. Schyns 3.1
Systèmes d'exploitation 3 - Types de système d'exploitation

partagé (ang.: time sharing) donne l'impression que tous ces programmes
s'exécutent simultanément.

L'vantage de cette technique est de maximiser l'occupation du processeur. Dès


qu'un programme s'interrompt pour attendre la réalisation d'une fonction plus lente,
telle qu'une opération d'entrées/sortie, le processeur passe la main à un autre
processus.

Le multitâche se décline en plusieurs variantes énumérées ci-dessous.

3.3.1. Multitâche coopératif

Chaque application dispose des ressources du système puis les libère pour
permettre à l'application qui la suit dans une file d'attente d'en disposer à son tour.

L'activation d'une tâche est confiée à la tâche qui prècède, un peu comme dans une
chaîne de montage automobile. Chaque tâche dépend des autres pour exécution :
si une des tâches est bloquée, c'est l'ensemble du système qui s'arrête.

Exemples : Windows 3.1, 95, 98, Millénium

3.3.2. Multitâche préemptif

Chaque application dispose du processeur et des ressources pendant un laps de


temps déterminé à l'avance ou jusqu'à ce qu'une autre application ait une priorité
supérieure à l'application en cours.

Un processus spécial, nommé ordonnanceur (ang.: scheduler), fixe l'ordre


d'éxécution des processus et le temps qui leur est attribué. C'est lui qui provoque le
basculement d'un processus à un autre. Les ta^ches ne dépendent donc plus les
unes des autres. Si l'une d'elles est bloquée ou provoque une erreur, elle est mise
de côté sans bloquer le système.

Exemples : Unix - Linux - Windows NT - 2000 – XP

3.3.3. Multiutilisateur

Naguère, seuls les gros systèmes nommés ordinateurs centraux (ang.: mainframes)
permettaient à plusieurs utilisateurs de travailler simultanément en se servant de
terminaux passifs.

Le temps processeur est non seulement réparti entre plusieurs tâches mais aussi
partagé entre plusieurs utilisateurs qui opèrent depuis les terminaux.

Aujourd'hui, ce mode de fonctionnement se retrouve dans les serveurs (ang.:


servers) notamment ceux gérés par les systèmes Unix et Windows Terminal Server.
Pour se connecter au Terminal Server, les postes clients, qui sont des PC de faible
puissance, utilisent une application appelée "Client Terminal Server"

3.3.4. Multithreading

Une application multithread est un logiciel qui dès sa conception a été partagé en
différentes sous-applications appelées fils d'exécution (ang.: threads). Leur
exécution est confiée au système d’exploitation.

A l'inverse de ce qui se passe dans le cadre du multitâche, où chaque processus


dispose d’une partie distincte de la mémoire pour s’exécuter indépendamment des

H. Schyns 3.2
Systèmes d'exploitation 3 - Types de système d'exploitation

autres, les threads issus d'une même application partagent un même espace
mémoire.

De nombreux jeux vidéo utilisent le multithreading.

3.3.5. Synthèse

OS Multitâche Multiutilisateur
DOS Non Non
Unix Oui Oui
Windows 95 - 98 - millénium Coopératif Non
Windows NT - 2000 - XP - etc Préemptif Non
idem + terminal server Préemptif Oui

3.4. Multiprocesseur

Comme le nom l'indique, un système multiprocesseur rassemble plusieurs CPU sur


un même ordinateur, voire sur une même carte mère, ou un même au sein du chip
du processeur (1). Ces différents processeurs ont accès à la même mémoire et aux
mêmes ressources.

Notons qu'un système d'entrée/sortie avancé, tel qu'une carte graphique pourvue
d'un processeur dédicacé (GPU), ne constitue pas un système mutli processeur car
ce n'est pas le processeur graphique qui exécute et contrôle l'application de
l'utilisateur.

Dès les années 1960, époque à laquelle les ordinateurs occupaient une salle
entière, il est apparu qu'ajouter un deuxième CPU au système revenait bien moins
cher que l'achat d'un deuxième ordinateur.

Il existe deux manières de gérer un système multiprocesseur :

- le multiprocessing asymétrique (AMP)


- le multiprocessing symétrique (SMP)

Dans le cas du multiprocessing asymétrique, l'un des processeurs est réservé au


système d'exploitation tandis que les autres exécutent les applications. C'est la
solution qui a été adoptée à l'époque des premiers systèmes bi-processeurs.

En effet, les systèmes d'exploitation de l'époque avaient été développés pour gérer
un seul processeur. En gérer deux de manière efficace allait demander une refonte
complète des systèmes d'exploitation. Une solution plus rapide était de créer un
lien maître-esclave entre les deux CPU : le système d'exploitation fonctionnant
uniquement sur le CPU primaire (ang.: foreground) tandis que le processeur
secondaire (ang.: background) exécutait les applications de l'utilisateur.

Ainsi, sur l'ordinateur Burroughs B5000, le processeur secondaire ne disposait


d'aucune connexion aux périphériques mais il partageait néanmoins la mémoire
avec le processeur primaire (fig. 3.1). Quand une application s'exécutant sur le
processeur secondaire devait accéder à un périphérique (disque, bande,
imprimante, etc), ce processeur envoyait une demande au processeur primaire puis
s'arretait en attendant que le système d'exploitation, focntionnant sur le processeur
primaire, exécute le service demandé.

1 Dans ce dernier cas, on parle plutôt de "multi-cœur" (ang.: multicore)

H. Schyns 3.3
Systèmes d'exploitation 3 - Types de système d'exploitation

CPU CPU Péri-


Secondaire Primaire phériques

Bus

RAM

fig. 3.1 Système multiprocesseur asymétrique


Dans le cas du multiprocessing symétrique, tous les processeurs sont identiques
et sont considérés sur le même pied. Le système d'exploitation et les applications
se partagent les processeurs, la mémoire et les périphériques (fig. 3.2). Les
processeurs sont contrôlés par un seul exemplaire du système d'exploitation.

CPU CPU Péri-


1 2 phériques

Bus
Arbitrage
BUS

CPU CPU
RAM
3 4

fig. 3.2 Système multiprocesseur symétrique

Les processeurs peuvent exécuter des programmes différents et travailler sur des
données différentes. Ils peuvent aussi partager les ressources comme des zones
de mémoires, le système d'interruptions, etc. Une des limitations du système est la
bande passante du bus et son usage doit faire l'objet d'un arbitrage, exactement
comme dans le cas d'un réseau.

3.5. Multiordinateur

Un système informatique distribué (ang.: clustering) est une collection


d'ordinateurs autonomes interconnectés en réseau qui coopèrent pour réaliser uen
tâche donnée. Ici, contrairement au système multiprocesseur, chaque ordinateur
possède sa propre mémoire et son propre système d'exploitation. La
caractéristique d'un tel système est d'être très hétérogène, tant sur le plan du
matériel que sur celui des sysèmes d'exploitation.(Windows, Linux, MacOS, etc)

Pour être exécutée sur un tel système, l'application doit être découpée en
séquences de calcul indépendantes. La coordination est assurée par un intergiciel
(ang.: middelware) qui assure le dialogue entre les machines.

H. Schyns 3.4
Systèmes d'exploitation 4 - Historique

4. Historique

4.1. Premiers essais

À l’époque des premiers ordinateurs, à la fin des années 1940, ceux-ci ne


possédaient de mémoire permanente (ROM, disque dur). Dès lors, leur procédure
de démarrage devait être exécutée manuellement.

Après la mise sous tension, le processeur se mettait en état d’attente. L'opérateur


positionnait un certain nombre d'interrupteurs ou clés pour écrire en binaire le
contenu de la première instruction (fig. 4.1). Puis, il l'envoyait dans la mémoire
RAM en activant un autre clé. Il repositionnait ensuite les clés pour encoder la
deuxième instruction qu'il expédiait dans la RAM de la même manière, et ainsi de
suite.

fig. 4.1 Vue du clavier de démarrage de l'ordinateur Data General Eclipse S/130 (1)

Une fois le programme de démarrage codé, un commutateur permettait de libérer le


processeur de son état d'attente. Il exécutait alors le code de démarrage, ce qui lui
permettait d’accéder aux périphériques.

L’invention des langages symboliques, puis d’autres niveaux de méta-langages tels


le FORTRAN, allait simplifier les opérations de rédaction proprement dite du
programme ; mais il fallait aussi faire des progrès sur la façon d’introduire
programmes et données dans la machine et d’en extraire les résultats.

L’introduction manuelle des adresses était une perte de temps : Nathaniel


Rochester, un collaborateur de Gene Amdahl qui fut l'un des plus fameux
architectes d’ordinateurs, imagina au début des années 1950 d'enregistrer les
adresses au préalable sur bande magnétique. Le premier ordinateur qui les utilisa
fut l’IBM 701 (1953) du Department of Defense (DoD) américain (2).

Ce système reste d'actualité puisque ce n'est rien d'autre que la séquence de boot
encodée aujourd'hui dans la ROM du BIOS.

L'utilisation des bandes magnétiques connut un nouveau développement avec l’IBM


704 (1955). Sur cette machine conçue par Gene Amdahl, l’ingénieur de General
Motors Bob Patrick écrivit un programme qui enchaînait automatiquement entrée

1 Source : http://www.chookfest.net/computers/s130.html
2 De nombreux progrès informatiques, dont l'émergence d'Internet, sont dûs à l'impulsion des militaires.
Aujourd'hui, il s'agit plutôt des financiers.

H. Schyns 4.1
Systèmes d'exploitation 4 - Historique

des données, calcul, impression des résultats, entrée des données, etc. L’IBM 704
fut d’ailleurs le support d’un nombre considérable d’innovations capitales.

Assez vite une constatation se fit jour : l’impression des résultats, à la cadence d’un
télétype capable d’imprimer dix caractères par seconde, voire même leur écriture
sur bande magnétique, pouvait prendre un temps aussi long que le calcul
proprement dit, ce qui immobilisait la coûteuse unité centrale pour une tâche somme
toute subalterne.

Il aurait été possible de réduire la perte de temps due à l’impression des résultats en
les écrivant provisoirement sur une mémoire auxiliaire électromagnétique (disque,
bande, tambour...) beaucoup plus rapide qu’une imprimante, puis en les imprimant
plus tard, pendant que l’unité centrale effectuerait d’autres calculs. Cela semblait
possible parce que la tâche d’impression, ralentie par les opérations mécaniques de
l’imprimante, n’utilisait les circuits de l’unité arithmétique et logique que fort peu,
voire pas du tout si l’on avait pris soin d’enregistrer avec les résultats proprement
dits des codes de commande destinés à l’électronique (rudimentaire) de
l’imprimante pour indiquer les sauts de ligne, de page, etc.

La réalisation de cet objectif apparemment modeste nécessitait encore un peu de


programmation : à la fin du programme de calcul il fallait qu’un programme
déclenche d’une part le démarrage du programme d’impression (destiné à vivre sa
vie indépendamment), d’autre part le démarrage du programme de calcul suivant.
Avant de lancer le programme d’impression il fallait aussi vérifier que l’impression
des résultats précédents était bien terminée.

Pendant qu’on y était, on procéderait à une optimisation analogue en autorisant le


recouvrement entre le temps de calcul et le temps de lecture des données
nécessaires au calcul suivant. Il apparut vite assez logique de confier cette mission,
organiser le recouvrement dans le temps de plusieurs activités, à un « méta-
programme », nommé moniteur, chargé de déclencher à l’instant convenable
l’exécution des programmes d’application, qui pourraient être considérés comme
ses sous-programmes.

Cet ancêtre des systèmes d’exploitation est né en 1955.

(à suivre…)

H. Schyns 4.2
Systèmes d'exploitation 5 - Sources

5. Sources

5.1. Internet

- Write Your Own Operating System Tutorial


J. Gompert
http://www.cse.unl.edu/~jgompert/OS/TableOfContents.htm

- Operating Systems Lecture Notes


R. Muhammad
http://www.personal.kent.edu/~rmuhamma/OpSystems/os.html

- How Operating Systems Work


Dave Coustan, Curt Franklin
http://www.howstuffworks.com/operating-system.htm

- How BIOS Works


Jeff Tyson
http://computer.howstuffworks.com/bios.htm

- Système et réseau : histoire et technique


Laurent Bloch
http://www.laurent-bloch.org/spip.php?article13

- Cours de Systèmes et de Réseaux


Sacha Krakowiak
http://krakowiak.developpez.com/cours/systeme-reseau/

- Les systèmes informatiques, Vision cohérente et utilisation


Christian Carrez
Professeur des Universités au CNAM
deptinfo.cnam.fr/Enseignement/CycleA/.../cours_systeme.pdf

5.2. Autres

- Cours de structure des ordinateurs


(et références y incluses)
H. Schyns
www.notesdecours.info

H. Schyns 5.1

Vous aimerez peut-être aussi