Université Pierre et Marie Curie

Systèmes d'exploitation des ordinateurs

Chapitre 1. Les systèmes d'exploitation
1.1. Définition du système d'exploitation
1.1.1. Rappels sur l'architecture des ordinateurs
1.1.2. Définition du système d'exploitation
1.2. Quelques exemples de systèmes d'exploitation
1.3. Evolution des systèmes d'exploitation
1.4. Unix
1.5. Windows
Chapitre 2. Mécanismes d'exécution et de communication
Chapitre 3. Gestion des activités parallèles
Chapitre 4. Gestion des fichiers
Chapitre 5. Partage des ressources
Chapitre 6. Au-dessus du système d'exploitation
Chapitre 7. Notions sur les communications
Chapitre 8. Notions sur la sécurité
Bibliographie
Chapitre 9. Exercices et TPs
Examens
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

1.1.1. Rappels sur l'architecture des ordinateurs

Les trois éléments essentiels d'un ordinateur sont, du moins pour ce qui nous concerne, le processeur, la mémoire et le dispositif de gestion des entrées-sorties. Ils communiquent entre eux par l'intermédiaire du bus. Schématiquement un ordinateur peut être symbolisé comme suit :


schéma d'un ordinateur

    figure 1.1: schéma de principe d'un ordinateur    


Le bus est le circuit d'échange des informations. Son débit ou bande passante est un paramètre important pour définir la rapidité d'une machine. Souvent, dans les micro-ordinateurs, elle est trop faible par rapport à la rapidité du processeur. Celui-ci attend fréquemment les informations en provenance de la mémoire ou des contrôleurs d'entrées-sorties. Dans le schéma ci-dessus on ne les a pas distingués mais un écran et un disque ne sont pas branchés sur le même contrôleur. Par exemple on trouve les mêmes processeurs PowerPC dans les MacIntoshs et certaines machines SP d'IBM.  La rapidité du bus et sa bande passante ne sont pourtant pas les mêmes, ce qui est une explique des différences de performances comme de prix. Les ordinateurs les plus performants possèdent un bus qui permet de transférer en parallèle 256 bits ou plus, les moins performants 32 bits seulement.  Il faut donc  plus de cycles pour transférer une information de même longueur (c'est à dire contenant le même nombre de bits) de la mémoire vers le processeur et  la rapidité effective de la machine n'a rien à voir avec celle du processeur.Un processeur moderne peut contenir plusieurs unités de calcul, additionneur, multiplicateur entier ou flottant. Certains peuvent effectuer des opérations plus complexes comme plusieurs additions et  multiplications flottantes simultanément. Le processeur peut donc réaliser plusieurs instructions élémentaires parallèlement. Les plus puissants possèdent une structure, appelée pipe-line qui permet d'enchaîner, dans certains cas, une opération à chaque cycle d'horloge alors que la précédente n'est pas terminée. Ceci accélère considérablement le débit de calcul. Cette complexité explique que la cadence de l'horloge ne permette pas de comparer des processeurs d'architecture différente. Deux directions se font jour pour augmenter les performances: compliquer l'architecture interne du processeur mais conserver un cycle relativement lent (IBM Power par exemple) ou diminuer le temps de cycle ( Intel par exemple) mais avec une architecture plus simple. Il n'existe pas de meilleur choix: suivant les programmes l'une ou l'autre architecture se révèle la meilleure. Les unités de commande travaillent selon les processeurs sur des mots de   32 bits (Intel Pentium IV) ou, de plus en plus aujourd'hui, sur 64 bits (AMD Athlon, IBM Power...). Lle jeu d'instructions varie fortement d'une réalisation à l'autre : instructions courtes RISC (Power IBM, Sparc Sun, Intel Itanium par exemple) ou longues (Intel Pentium, AMD Athlon). Le code d'un langage évolué correspond donc à un nombre plus ou moins grand d'instructions machine et la comparaison des performances est beaucoup plus compliquée que la simple mesure des cycles d'horloge.

Les processeurs modernes intégrent dans leur puce une mémoire cache accessible très rapidement pour accélérer les opérations. On ajoute également un deuxième niveau de mémoire, placée juste à coté du processeur sur la carte mère, connue sous le nom de cache cd niveau 2 ou L2. Les communications avec le processeur sont plus rapides que celles avec la mémoire car elles ne passent pas par le bus dont la bande passante est bien inférieure au débit que peut accepter le processeur. Lorsqu'une instruction ou une donnée est contenue dans un cache son fonctionnement est accéléré car il n'attend plus un transfert. Le processeur demande simultanément l'information voulue à la mémoire et aux caches. Lorsqu'elle est disponible dans celles-ci la réponse arrive très rapidement et la requête est abandonnée. On a donc intérêt à posséder des caches de grande dimension car, statistiquement, la chance d'y retrouver une information est plus grande. Idéalement toute la mémoire devrait être un immense cache accessible très rapidement mais cela exploserait le prix des machines. C'est la cas des superordinateurs comme les Cray qui ne possèdent pas de caches. La mémoire est construite avec les dispositifs les plus rapides, identiques à ceux utilisés dans les caches des machines ordinaires. Les performances sont optimales mais le coût est absolument prohibitif!

La mémoire est organisée, dans tous les ordinateurs, en groupes de 8 bits appelés octets ou bytes en anglais. Chaque octet possède une adresse numérique. Cependant le quantum manipulé par le processeur est le mot qui regroupe de quatre à huit octets selon le processeur. Le mot est de deux octets dans les micro-ordinateurs anciens. Les ordinateurs personnels et les stations de travail utilisent des mots de quatre ou huit octets. Les superordinateurs CRAY possèdent des mots de huit octets. L'accès à la mémoire se fait de façon matricielle, selon des lignes et des colonnes. Comme une ligne ou une colonne qui vient d'être lue ou écrite est inhibée pendant un certain temps appelé temps de latence, la mémoire est divisée en bancs. Deux octets dont les adresses sont consécutives sont placés dans des bancs différents ainsi plusieurs bancs peuvent être accédé simultanément, ce qui améliore les échanges avec le processeur. Il ne faut pas oublier que le temps d'accès à la mémoire est bien plus long que le temps de cycle du processeur, de l'ordre de quatre fois au minimum. Multiplier les bancs permet d'échanger plus rapidement plusieurs informations entre le processeur et la mémoire. Un PC comporte habituellement quatre bancs, une grosse machine seize ou plus. Chaque octet est accompagné d'un certain nombre de bits qui servent au contrôle d'erreurs et à leur correction lors des échanges. Ce nombre peut atteindre 8 sur les gros ordinateurs, il est limité à un seul sur les micro-ordinateurs. La fiabilité, les capacités de fonctionner en environnement dégradé, sont liées à ce nombre. On comprend donc pourquoi, indépendamment de sa rapidité, le prix de la mémoire varie avec les modèles de machines.

Il faut distinguer le rôle des différentes mémoires qui existent dans la machine. Les disques servent à stocker l'information de façon permanente. Leur contenu se conserve même lorsque l'ordinateur n'est plus sous tension. Cependant comme les transferts entre ces périphériques et le processeur sont lents, celui-ci ne travaille jamais directement avec ces supports. Le processeur échange ses informations avec la mémoire et la mémoire dialogue avec les disques. Pour exécuter un programme il faut donc d'abord le déplacer du support permanent (le disque) vers la mémoire. Puis, au cours de l'exécution les données lues dans les fichiers sont déplacées par morceaux des disques vers la mémoire pour être employées par le processeur. Il en est de même, en sens inverse, pour les écritures. Nous le verrons plus en détails au chapitre II. Il existe un mécanisme caché en deux étapes qui fait obligatoirement transiter les échanges par la mémoire. Cette hiérarchie se retrouve également dans les échanges entre la mémoire et le processeur avec les caches. Le processeur recherche ses informations d'abord dans ceux-ci. Ceci met en œuvre des algorithmes complexes car il faut savoir gérer les cas où les données recherchées ne s'y trouvent pas. Enfin il faut également considérer le rôle des registres, véritable mémoire interne du processeur. L'utilisateur n'y accède pas directement mais un compilateur bien écrit sait en tenir compte.

Il convient de ne pas confondre la taille de la mémoire qui définit les possibilités logicielles de la machine et la taille des disques qui indique sa capacité à stocker des informations permanentes.Le couple longueur du mot, longueur du registre d'adresse (ou compteur ordinal) est la première notion de l'architecture physique visible de l'extérieur. En particulier il permet de définir les tailles maximum des programmes et des tableaux : tous les adressages nécessaires pour accéder aux informations que ce soit dans la mémoire ou sur disque se font au moyen de nombres entiers. Une architecture à mot de 32 bits permet donc d'adresser un peu plus de quatre Gigaoctets et il devient impossible d'adresser directement un système de fichiers ou une mémoire plus grands. Il faut se déplacer par indirection au moyen d'informations relais jamais séparées par une distance supérieure à cette valeur fatidique, ce qui diminue fortement l'efficacité de l'ordinateur. On comprend donc pourquoi aujourd'hui on dévelope des processeurs à mot de 64 bits : l'ordre de grandeur du plus grand entier est 1,8 1019, ce qui laisse une marge certaine pour les disques et les mémoires que l'on sait fabriquer aujourd'hui !

Le troisième paramètre important pour l'utilisateur est la largeur du bus qui définit combien de bits peuvent être transférés en parallèle. La rapidité de travail effectif d'une machine y est très sensible.Les contrôleurs sont construits pour assurer les communications avec les périphériques. Ils sont spécialisés dans leur usage et possèdent leur propre mémoire. Un contrôleur d'écran stocke ainsi une partie des informations qu'il présente à l'utilisateur. Un ou des processeurs auxiliaires présents sur la carte assurent le fonctionnement de base.Le problème fondamental est de réussir à faire fonctionner cet ensemble, à assurer les échanges d'information entre les différents éléments qui constituent la machine et surtout, du point de vue de l'utilisateur, à dialoguer avec lui. C'est le rôle du système d'exploitation. A titre d'exemple, voici quelques performances mesurées entre deux machines qui diffèrent essentiellement par leur processeur. La première est équipée d'un Pentium MMX, la seconde d'un Pentium II, tous les deux à 233 MHz. Les disques sont les mêmes ainsi que la mémoire. Le programme de mesure est Wintune 95 et le système d'exploitation Windows 95. Certes ces données sont anciennes mais elles permettent de comprendre l'influence de l'architecture et le peu d'intérêt qu'il faut porter à la vitesse d'horloge, sauf lorsqu'il s'agit de processeurs de la même famille qui ne différent que par leur cadence d'horloge. Le résultat est intéressant quoiqu'il faille toujours considérer des tests avec la plus extrême prudence.

Test Pentium MMX Pentium II Commentaires
lecture d'un bloc de 32 Koctets 225 Mb/s 419 Mb/s  
Ecriture d'un bloc de 32 Koctets 85 Mb/s 209 Mb/s  
lecture d'un bloc de 4kB 1173 Mb/s 873 Mb/s caches probablement inhibés
Ecriture d'un bloc de 4 kB 85 MB/s 1107 kB/s idem

Que signifie ce test ? Comme l'architecture interne des deux processeurs n'est pas la même ces différences peuvent provenir de la taille des caches (plus grands pour le PII) comme de l'efficacité des instructions. On a cependant le sentiment que le PII ne prend toute son efficacité que lorsque la taille des blocs échangés est suffisamment grande. Et ceci dépend beaucoup des codes des programmes mais aussi de celui du système d'exploitation. Les gains peuvent donc être fort décevants lorsqu'on change de processeur sans se préoccuper des programmes.

Le lecteur intéressé par cette discussion pourra consulter le cours de calcul intensif.


Copyright Y. Epelboin, 1994, université P.M. Curie, MAJ 4 avril, 2005

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante