Chapitre 6

Chapitre 6

Systèmes d'exploitation multiprogrammés (1960-1970)

À mesure que le matériel informatique augmentait en puissance et en complexité dans les années 1960, le besoin de logiciels système plus sophistiqués pour gérer les ressources de la machine et simplifier l'exécution des programmes est devenu de plus en plus évident. Les systèmes simples de traitement par lots, bien qu'ayant représenté un premier pas vers l'automatisation, ont montré leurs limites en termes d'efficacité et d'interactivité. Cette période a vu l'émergence de systèmes d'exploitation multiprogrammés et à temps partagé , qui révolutionneraient la façon dont les utilisateurs interagissaient avec les ordinateurs et poseraient les bases des systèmes d'exploitation modernes.

6.1 Les limites du traitement par lots :
Exécution séquentielle et inefficace

Comme indiqué au chapitre 3, le traitement par lots impliquait l'exécution séquentielle d'un ensemble de tâches, avec une intervention limitée de l'opérateur. Bien que cette approche ait amélioré l'utilisation de l'ordinateur par rapport à l'exécution manuelle de chaque instruction individuelle, elle présentait plusieurs limites importantes :

  • Faible utilisation du processeur : Lors des opérations d'entrée/sortie (E/S), le processeur restait souvent inactif en attendant que le périphérique externe termine sa tâche. Cela a conduit à une sous-utilisation des ressources CPU coûteuses.
  • Longue attente des résultats : Les utilisateurs ont dû attendre la fin du lot complet pour obtenir les résultats de leur travail, même si cela n'a pris qu'une fraction du temps d'exécution total.
  • Manque d'interactivité : Il n'était pas possible d'interagir avec le programme pendant son exécution, ce qui rendait difficile le débogage et l'exécution d'applications nécessitant un retour immédiat.
  • Priorités limitées : Tous les travaux du lot étaient généralement exécutés avec la même priorité, sans possibilité de privilégier des travaux plus urgents ou plus importants.

Ces limitations ont poussé les chercheurs et les développeurs à explorer de nouvelles façons de gérer les ressources informatiques qui pourraient surmonter les inefficacités du traitement par lots.

6.2 L'émergence de la multiprogrammation :
Partager le processeur pour maximiser l'utilisation

la multiprogrammation est une technique qui permet à plusieurs programmes (ou processus) de résider simultanément dans la mémoire principale et de partager le CPU. L'idée fondamentale est que lorsqu'un programme doit attendre la fin d'une opération lente (telle qu'une opération d'E/S), le processeur peut passer à l'exécution d'un autre programme prêt à être exécuté. De cette façon, nous essayons de garder le processeur aussi occupé que possible, améliorant ainsi l'efficacité globale du système.

Pour mettre en œuvre la multiprogrammation, plusieurs mécanismes étaient nécessaires :

  • Gestion de la mémoire : Le système d'exploitation devait être capable d'allouer et de gérer l'espace mémoire pour accueillir plusieurs programmes en même temps, en garantissant qu'un programme n'interfère pas avec la mémoire d'un autre.
  • Planification du processeur : Le système d'exploitation a dû implémenter des algorithmes pour décider lequel des programmes prêts à être exécutés devait accéder au processeur et pendant combien de temps.
  • Protection : Il était essentiel que le système d'exploitation fournisse des mécanismes de protection pour empêcher un programme d'accéder ou de modifier la mémoire ou les ressources d'un autre programme de manière non autorisée.

La multiprogrammation a permis d'augmenter considérablement la productivité des systèmes informatiques, car plusieurs tâches pouvaient être accomplies dans le même laps de temps.

6.3 Les premiers systèmes d'exploitation multiprogrammés :
Pionniers de la gestion des ressources

Certains des premiers systèmes d'exploitation à implémenter la multiprogrammation comprennent : 

  • Atlas Supervisor : Développé pour l'ordinateur Atlas de l'Université de Manchester au début des années 1960, ce système d'exploitation a été l'un des premiers à introduire des concepts tels que la mémoire virtuelle et la multiprogrammation, démontrant la faisabilité de ces techniques.
  • IBM OS/360 : Introduit en 1964, OS/360 a été l'un des premiers systèmes d'exploitation à grande échelle conçu pour prendre en charge la multiprogrammation sur une famille d'ordinateurs IBM System/360 avec des capacités matérielles variables.
  • OS/360 était un système d'exploitation extrêmement complexe pour l'époque et représentait une étape importante dans le développement des systèmes d'exploitation, introduisant des concepts tels que les langages de contrôle des tâches (JCL) pour la gestion des tâches et des mécanismes sophistiqués de gestion de la mémoire. Cependant, sa complexité rendait également sa mise en œuvre et sa gestion difficiles.
  • D'autres systèmes d'exploitation tels que le Master Control Program (MCP) développé pour les ordinateurs Burroughs ont également mis en œuvre des formes de multiprogrammation.

6.4 L'introduction du temps partagé :
L'illusion d'un ordinateur personnel pour de nombreux utilisateurs

le temps partagé est une extension de la multiprogrammation qui permet à plusieurs utilisateurs d'interagir avec l'ordinateur en même temps. L'idée est de diviser le temps CPU en petits intervalles (tranches de temps ou quanta de temps) et d'attribuer chaque intervalle à un utilisateur différent. Le processeur passe rapidement d'un utilisateur à l'autre, créant l'illusion que chaque utilisateur dispose d'un ordinateur personnel dédié.

Le partage du temps était motivé par le désir de fournir une expérience informatique interactive à plusieurs utilisateurs simultanément, surmontant les limites du traitement par lots. Cela était particulièrement important dans des contextes tels que la recherche scientifique et l'éducation, où de nombreux utilisateurs peuvent avoir besoin d'accéder à l'ordinateur pour exécuter de petits programmes, modifier des fichiers ou interagir avec le système en temps réel.

Pour mettre en œuvre le partage du temps, des techniques telles que : 

étaient nécessaires
  • Découpage temporel : Le processeur est alloué à chaque processus pour une courte période de temps.
  • Échange : Si un processus n'utilise pas le processeur pendant une période prolongée (par exemple, en attente d'une entrée de l'utilisateur), son espace mémoire peut être temporairement déplacé vers le disque (échangé) pour faire de la place à d'autres processus actifs. Lorsque le processus est à nouveau prêt à être exécuté, il est renvoyé en mémoire (échangé).
  • Gestion des utilisateurs et des terminaux : Le système d'exploitation devait être capable de gérer l'accès de plusieurs utilisateurs via des terminaux distants.

6.5 Systèmes d'exploitation pionniers en temps partagé :
Vers l'interactivité

Certains des systèmes d'exploitation à temps partagé les plus anciens et les plus influents comprennent : 

  • CTSS (Compatible Time-Sharing System) : Développé au MIT (Massachusetts Institute of Technology) au début des années 1960, CTSS fut l'un des premiers systèmes de partage de temps réussi. Il permettait à plusieurs utilisateurs d'accéder de manière interactive à un ordinateur central via des terminaux, ouvrant ainsi de nouvelles possibilités pour la recherche et l'éducation. CTSS a profondément influencé le développement des systèmes d’exploitation ultérieurs.
  • Multics (Multiplexed Information and Computing Service) : Un projet ambitieux qui a débuté en 1965 dans le cadre d'une collaboration entre le MIT, General Electric et Bell Labs. L'objectif était de créer un système d'exploitation à temps partagé puissant, fiable et sécurisé, doté de fonctionnalités avancées telles qu'un système de fichiers hiérarchique. Bien que le projet Multics n'ait pas connu de succès commercial immédiat, bon nombre de ses idées et concepts ont profondément influencé le développement des futurs systèmes d'exploitation.
  • Unix : Né comme un projet "faux" au sein des Bell Labs dans les années 1960, principalement par Ken Thompson et Dennis Ritchie, Unix a été initialement inspiré par certaines des idées de Multics mais avec une approche plus simple et plus modulaire. L'une des particularités d'Unix était sa portabilité, rendue possible par son implémentation en langage C (également développé aux Bell Labs par Ritchie). Les premières versions d'Unix prenaient en charge le partage du temps et introduisaient des concepts fondamentaux tels que le système de fichiers hiérarchique et l'interface de ligne de commande (shell), qui auraient un impact durable sur le monde informatique.

6.6 Concepts fondamentaux des systèmes d'exploitation modernes introduits au cours de cette période

La décennie 1960-1970 a été cruciale pour la définition de nombreux concepts fondamentaux qui constituent encore aujourd'hui la base des systèmes d'exploitation modernes :

    ​​​​​​
  • Gestion de la mémoire : Les premières techniques d'allocation de mémoire (par exemple, partitions fixes et variables) et de protection de la mémoire entre différents processus ont été développées. L'introduction de la mémoire virtuelle dans des systèmes comme Atlas et OS/360 a représenté une avancée significative, permettant aux programmes d'utiliser plus de mémoire que ce qui était physiquement disponible.
  • Planification du processeur : Les premiers algorithmes de planification ont été introduits pour décider quel processus doit être exécuté par le processeur dans un environnement multiprogrammé en temps partagé. Des algorithmes tels que le round-robin (utilisé dans de nombreux systèmes à temps partagé) et les algorithmes basés sur les priorités ont commencé à être étudiés et mis en œuvre.
  • Gestion des périphériques : Les systèmes d'exploitation ont commencé à inclure des mécanismes pour gérer et contrôler les différents périphériques d'entrée/sortie connectés à l'ordinateur, fournissant une interface uniforme aux programmes d'application.
  • Systèmes de fichiers : Les systèmes d'exploitation tels que Multics et Unix ont introduit le concept d'un système de fichiers hiérarchique, qui permettait d'organiser les données en répertoires et sous-répertoires, simplifiant la gestion et l'accès aux fichiers.
  • Interface utilisateur : Alors que le traitement par lots n'impliquait souvent pas d'interaction directe de l'utilisateur pendant l'exécution, les systèmes à temps partagé ont introduit l'interface de ligne de commande (CLI) comme principal moyen d'interagir avec le système d'exploitation.

6.7 Défis et innovations dans le développement de systèmes d'exploitation

Le développement de systèmes d'exploitation multiprogrammés et à temps partagé dans les années 1960 était une entreprise extrêmement complexe. Les programmeurs de systèmes d'exploitation étaient confrontés à des défis tels que la gestion simultanée de plusieurs processus, la synchronisation et la communication entre les processus, la protection des ressources système et la gestion des erreurs.

Cette période a également vu l'émergence d'innovations majeures dans les techniques de développement de logiciels et la conception de systèmes. La modularité, la structuration du code et l'introduction de langages de programmation de haut niveau tels que C pour le développement de systèmes d'exploitation (comme dans le cas d'Unix) ont permis de gérer la complexité croissante des logiciels système.

L'évolution des systèmes d'exploitation dans les années 1960, avec le passage du traitement par lots à la multiprogrammation et au temps partagé, a représenté un changement fondamental dans la manière dont les utilisateurs interagissaient avec les ordinateurs et dans l'efficacité avec laquelle les ressources matérielles étaient utilisées. L'introduction de concepts clés tels que la gestion de la mémoire, la planification du processeur, la gestion des périphériques et les systèmes de fichiers ont jeté les bases des systèmes d'exploitation modernes que nous utilisons aujourd'hui. Des systèmes pionniers tels que OS/360, CTSS, Multics et Unix ont eu un impact durable sur le domaine informatique, influençant profondément le développement de logiciels système pour les décennies à venir.