Chapitre 1 - SE-Introduction et concepts - 2023 - CS - Adapté PDF

Summary

This document presents an introduction to operating systems, covering their definition, history, types, and general structure. It lays the foundation for understanding how operating systems interact between users and the underlying hardware.

Full Transcript

Cours Systèmes d’exploitation Chapitre 1 : Présentation générale Charles Santoni Chapitre 1 : Introduction et Concepts Introduction et Présentation du cours Définition d’un Système d’exploitation Historique des Systè...

Cours Systèmes d’exploitation Chapitre 1 : Présentation générale Charles Santoni Chapitre 1 : Introduction et Concepts Introduction et Présentation du cours Définition d’un Système d’exploitation Historique des Systèmes d’exploitation Les divers types de système d’exploitation Structure générale d’un système d’exploitation Introduction et Présentation du cours ¤ Un ordinateur est un ensemble complexe de calcul et de traitement de données, caractérisé par une structure matérielle qui définit ses possibilités et ses limites physiques ¤ Il est composé d’un ou plusieurs processeurs centraux, capables de traiter des millions d’opérations par seconde et qui exécutent des instructions qu’ils trouvent dans les puces de mémoire dont ils disposent, ou qu’ils lisent depuis des disques ou des CD-ROM, ou encore qu’un utilisateur tape au clavier ¤ Il interagit également avec le monde qui l’entoure à travers divers périphériques ¤ L'exploitation plus ou moins heureuse des potentialités offertes par l'architecture matérielle de l’ordinateur, en vue d'effectuer un travail donné, dépend des programmes (logiciels) mis en œuvre ¤ Sans programme, un ordinateur n’est qu’un ensemble d’équipements matériels inutilisables ¤ L'efficacité globale d'un système dépend donc tout autant du matériel que du logiciel Introduction et Présentation du cours ¤ Le logiciel (software) peut être sommairement décomposé en deux classes : ¤ Les programmes d'application : écrits par le ou les utilisateurs pour apporter une solution à un problème donné (contrôle-commande de procédés industriels, gestion de systèmes bancaires, réservations de places dans un avion ou un train, jeux...) ¤ Les programmes systèmes : développés par le constructeur de l'ordinateur ou le concepteur du système pour d’une part aider l’utilisateur dans sa démarche de programmation et lui apporter les outils de développement dont il a besoin et d’autre part, tirer le maximum de bénéfices des possibilités de l’ordinateur ¤ Le système d’exploitation (O.S. : Operating System) est le plus important de tous ces programmes systèmes ¤ C’est l’élément essentiel qui relie la machine, composée d’éléments physiques comme le microprocesseur, la mémoire ou les périphériques et l’utilisateur qui souhaite utiliser la machine Introduction et Présentation du cours ¤ Sans système d’exploitation, chaque utilisateur serait obligé de connaître le fonctionnement exact de la machine sur laquelle il travaille ¤ Par exemple, Il serait amené à programmer directement un contrôleur de périphérique USB pour pouvoir enregistrer ses données sur une clé USB… ou encore à programmer le pilotage d’une imprimante et à recommencer à chaque fois qu’il serait amener à en changer ¤ Sans le contrôle du système d’exploitation, les utilisateurs pourraient aussi détruire irrémédiablement certaines données stockées sur un ordinateur, voire détruire certains périphériques (comme le disque dur…) en programmant des opérations illicites ¤ Faire fonctionner l’ensemble des composants d’un ordinateur et en exploiter le maximum de leurs capacités demande une très grande technicité ¤ Le système d’exploitation est un ensemble de programmes, exécutés par l’ordinateur, qui permet de s’affranchir de cette technicité, et qui donne la possibilité à l’utilisateur de se concentrer essentiellement sur les données qu’il souhaite traiter et la façon dont il souhaite s’y prendre sans considération liée au matériel ¤ C’est-à-dire sans nécessairement disposer des connaissances pour y parvenir… s’il ne disposait que des composants matériels de l’ordinateur Introduction et Présentation du cours ¤ Les systèmes d’exploitation jouent donc un rôle majeur dans l’utilisation d’un ordinateur ¤ Si l’outil informatique s’est répandu dans le monde entier, c’est certes grâce à l’abaissement des prix d’achat et grâce à l’augmentation de la puissance des ordinateurs, mais c’est surtout grâce aux progrès réalisés lors des cinquante dernières années dans la programmation des systèmes d’exploitation ¤ Avec une machine de puissance équivalente, la moindre opération sur un ordinateur qui aujourd’hui nous paraît triviale était alors proprement impossible à réaliser ! ¤ Du point de vue de l'utilisateur : L’OS fournit l'environnement destiné à faciliter le développement des programmes et leur exécution ¤ Il met à la disposition des usagers toute une série de logiciels (éditeurs, compilateurs, assembleurs, etc.) qui permettent d'assembler, de charger et d'exécuter les programmes d'application ¤ Il fournit à l'utilisateur toute une série de commandes simples qui lui permettent de traiter les opérations d'entrée-sortie et la gestion de l'information d'une façon logique, sans entrer au niveau du détail de l'implantation Introduction et Présentation du cours ¤ Du point de vue du concepteur, le système d'exploitation contrôle et alloue les ressources matérielles et logicielles de l'ordinateur, telles que : ¤ Le (ou les) processeur(s) ¤ La mémoire centrale ¤ Les périphériques ¤ ou encore les programmes systèmes ¤ Le but de ce cours est d'abord de donner les principes sur lesquels sont fondés tous les systèmes d'exploitation et de montrer très vite à l'utilisateur que le système d'exploitation travaille pour lui ¤ En effet, les programmes réalisés s'exécutent sur une sorte de machine virtuelle et toutes les caractéristiques de son matériel sont cachées ¤ Il en résulte un plus grand confort de programmation, une plus grande rapidité de mise au point et une plus grande transportabilité des logiciels devenant alors indépendants des machines réelles Introduction et Présentation du cours ¤ Les systèmes d'exploitation possèdent chacun une spécificité qui les rende plus ou moins faciles à utiliser, plus ou moins efficaces aussi ¤ Cependant, ils sont tous basés sur des concepts et des techniques communs ¤ Ce cours aborde les systèmes d’exploitation du point de vue de leur architecture, et de leurs fonctionnalités ¤ Le but est de présenter leurs rôles, leurs différentes fonctions, ainsi que leurs composants principaux et leurs structures ¤ Nous aborderons ainsi toutes les notions essentielles à la compréhension du fonctionnement d’un ordinateur avec son système d’exploitation quel qu’il soit ¤ Les systèmes d’exploitation étant basés sur les mêmes principes, nous n’étudierons pas un système en particulier (UNIX, Microsoft Windows, Linux, etc.) mais nous les verrons dans leur globalité ¤ …même si parfois nous illustrerons leurs fonctionnalités avancées par des exemples provenant essentiellement des systèmes d’exploitation de type Unix Introduction et Présentation du cours ¤ Afin de ne pas se disperser dans des explications annexes et de se concentrer sur les points essentiels, nous considérons qu’un certain nombre de connaissances sont déjà acquises par l’auditeur : ¤ En particulier, il devra avoir une connaissance de base en algorithmique ¤ Il n’est pas nécessaire de maîtriser la programmation au delà d’un niveau élémentaire, ni un quelconque langage de programmation ¤ Les algorithmes qui serons présentés, les exemples et les exercices, seront écrits en pseudo- langage… ¤ Vous pourrez alors choisir le langage de programmation de type procédural qui vous convient pour traduire ces algorithmes si vous souhaitez les expérimenter ¤ Aucune connaissance préalable concernant les systèmes d’exploitation, autre qu’une utilisation élémentaire d’un système grand public (Microsoft Windows ou Mac OS, par exemple) n’est requise ¤ Nous illustrerons les propos par des exemples et des exercices qui seront tous corrigés Chapitre 1 : Introduction et Concepts Introduction et Présentation du cours Définition d’un Système d’exploitation Le rôle d’un Système d’exploitation Les fonctions d’un système d’exploitation Historique des Systèmes d’exploitation Les divers types de système d’exploitation Structure générale d’un système d’exploitation Définition d’un Système d’exploitation ¤ Le système d'exploitation (SE, en anglais « Operating System » ou OS) est un ensemble de programmes responsables de la liaison entre les ressources matérielles d'un ordinateur et les applications de l'utilisateur (traitement de texte, messagerie, tableur, jeu vidéo, navigateur Internet, etc.) ¤ Il assure le démarrage de l'ordinateur ¤ Il fournit aux programmes applicatifs des points d'entrée génériques pour les périphériques ¤ Il prend en charge, gère, et partage les ressources de l’ordinateur ¤ Le partage des ressources va principalement concerner : ¤ Le partage du processeur : selon différents algorithmes fonction du type de système d’exploitation (par exemple : par priorité avec un système temps réel, ou de manière équitable avec un système temps partagé) ¤ Le partage de la mémoire centrale entre les différents programmes et l’OS ¤ Le partage des périphériques d’entrée-sortie (clavier, écran, imprimante, disques, webcam, etc.) Définition d’un Système d’exploitation ¤ Les questions auxquelles le système d’exploitation doit répondre sont les suivantes : ¤ Dans le cadre du partage du processeur : ¤ Parmi tous les programmes chargés en mémoire centrale et pouvant être exécutés, lequel doit être exécuter à l’instant « t » ? ¤ Dans le cadre du partage de la mémoire centrale : ¤ Comment allouer la mémoire centrale aux différents programmes ? ¤ Comment disposer d’une quantité suffisante de mémoire pour y placer tous les programmes nécessaires à un bon taux d’utilisation du processeur ? ¤ Comment peut-on charger en mémoire un programme à exécuter, alors qu’il n’y a pas assez de place en mémoire ? ¤ Comment assurer la protection entre ces différents programmes utilisateurs (c’est-à-dire veiller à ce qu’un programme donné n’accède pas à une plage mémoire allouée à un autre programme) ? ¤ Dans le cadre du partage des périphériques : ¤ Dans quel ordre traiter les requêtes d’entrées-sorties pour optimiser les transferts ? Chapitre 1 : Introduction et Concepts Introduction et Présentation du cours Définition d’un Système d’exploitation Le rôle d’un Système d’exploitation Les fonctions d’un système d’exploitation Historique des Systèmes d’exploitation Les divers types de système d’exploitation Structure générale d’un système d’exploitation Rôle d’un Système d’exploitation ¤ La place du système d'exploitation dans un système informatique est dans la plupart des cas présentée par référence à un ensemble de niveaux ou de couches, tel que : Utilisateur(s) Programmes Machine d’application virtuelle Programmes systèmes Matériels Machine(s) ¤ Aux extrémités hautes et basses de cette figure sont situés respectivement l'utilisateur (ou les utilisateurs) et la machine (ou les machines) Rôle d’un Système d’exploitation ¤ Le système d'exploitation apparaît alors comme constituant la charnière entre le logiciel et le matériel ¤ Son rôle consiste à gérer au mieux l'utilisation des ressources matérielles dont le logiciel va disposer : processeur(s), mémoire(s), entrées-sorties, etc. ¤ Pour cela il doit constituer une interface entre les ressources physiques et l'utilisateur en fournissant à ce dernier un langage de commande (avec interpréteur associé) plus ou moins complexe (graphique ou textuel) et des programmes utilitaires ¤ Ainsi, l'utilisateur voit une machine virtuelle standard plus facile à utiliser que la machine réelle ¤ Cette machine virtuelle le décharge : ¤ De la connaissance des caractéristiques exactes de l'architecture matérielle sur lequel ses programmes d'application vont fonctionner ¤ Ou encore des caractéristiques physiques des périphériques annexes (disques, bandes magnétiques, imprimantes, scanners, etc.) Rôle d’un Système d’exploitation ¤ Cette notion de machine virtuelle évite que les opérations imposées par la machine accaparent l'utilisateur au détriment du vrai problème et de sa solution ¤ Le rôle principal du système d’exploitation est d’isoler les programmes des utilisateurs des détails du matériel ¤ Un programme désirant afficher un rectangle ne va pas envoyer des instructions à la carte graphique de l’ordinateur, mais plutôt demander au système d’exploitation de le faire ¤ C’est le système d’exploitation qui doit connaître les détails du matériel (dans ce cas le type de carte graphique et les instructions qu’elle comprend). Cette répartition des rôles simplifie grandement l’écriture des programmes applicatifs ¤ Les systèmes d'exploitation ont donc plusieurs motivations et objectifs : ¤ Réduire et dominer la complexité des machines ¤ Faire en sorte que les possibilités de la machine soient utilisées au mieux ¤ Préserver les investissements ¤ Faciliter le travail des utilisateurs en leur permettant, par exemple, de spécifier et d'obtenir des solutions sans référence à des considérations reliées à la machine Chapitre 1 : Introduction et Concepts Introduction et Présentation du cours Définition d’un Système d’exploitation Le rôle d’un Système d’exploitation Les fonctions d’un système d’exploitation Historique des Systèmes d’exploitation Les divers types de système d’exploitation Structure générale d’un système d’exploitation Les fonctions d’un Système d’exploitation ¤ Les fonctions couvertes par un système d'exploitation peuvent varier considérablement selon les objectifs visés par le constructeur et la puissance de l'ordinateur, mais d'une manière générale, les principales d'entre elles sont les suivantes : ¤ Gestion et ordonnancement des processus : ¤ le système doit gérer l’allocation du processeur aux différents programmes pouvant s’exécuter ¤ Cette allocation se fait par le biais d’un algorithme d’ordonnancement qui planifie l’exécution des programmes : ¤ Dans ce cadre, une exécution de programme est appelée processus ¤ La gestion des objets externes : ¤ La mémoire centrale étant une mémoire volatile, toutes les données devant être conservées au-delà de l’arrêt de la machine doivent être stockées sur une mémoire de masse non volatile (disque dur, clé USB, CD-Rom...) ¤ La gestion de l’allocation des mémoires de masse ainsi que l’accès aux données qui y sont stockées s’appuient sur la notion de fichiers et de système de gestion de fichiers Les fonctions d’un Système d’exploitation ¤ La gestion des entrées-sorties : ¤ Le système doit gérer l’accès aux périphériques ¤ Il doit faire la liaison entre les appels de haut niveau des programmes utilisateurs (exemple : fgetc()) et les opérations de bas niveau de l’unité d’échange responsable du périphérique (unité d’échange clavier) : ¤ C’est le pilote d’entrées-sorties (driver) qui assure ce travail ¤ La gestion de la mémoire : ¤ Le système doit gérer l’allocation de la mémoire centrale entre les différents programmes pouvant s’exécuter, c’est-à-dire qu’il doit trouver une place libre suffisante en mémoire centrale pour que le chargeur puisse y placer un programme à exécuter ¤ Comme la mémoire physique est souvent trop petite pour contenir la totalité des programmes, la gestion de la mémoire se fait selon le principe de la mémoire virtuelle : ¤ A un instant donné, seules sont chargées en mémoire centrale les parties de code et données utiles à l’exécution, les autres étant temporairement stockées sur disque ¤ Ces opérations sont réalisées en s’appuyant sur les mécanismes sous-jacents : ¤ Segmentation, Pagination ¤ Segmentation paginée Les fonctions d’un Système d’exploitation ¤ La gestion de la concurrence : ¤ Comme plusieurs programmes coexistent en mémoire centrale, ceux-ci peuvent vouloir communiquer pour échanger des données. Par ailleurs, il faut synchroniser l’accès aux données partagées afin de maintenir leur cohérence ¤ Le système d’exploitation offre des outils de communication et de synchronisation entre processus ¤ La gestion de la protection : ¤ Le système doit fournir des mécanismes garantissant que ses propres ressources (processeur, mémoire, fichiers, etc.) ne peuvent être utilisées que par les programmes auxquels les droits nécessaires ont été accordés ¤ Il faut notamment protéger le système et la machine des programmes utilisateurs (mode « exécution utilisateur » et mode « superviseur ») ¤ La fonction d’accès au réseau : ¤ Des exécutions de programmes placées sur des machines physiques distinctes doivent pouvoir échanger des données ¤ Le système d’exploitation fournit des outils permettant aux applications distantes de dialoguer au travers une couche de protocoles réseau telle que TCP/IP Les fonctions d’un Système d’exploitation ¤ La gestion du temps : ¤ Quels que soient le type et la nature d'un système d'exploitation, un système d’exploitation nécessite toujours une connaissance précise du temps, afin par exemple : ¤ De rythmer le travail du ou des processeurs du système ¤ De mettre en œuvre des mécanismes de partage du processeur par tranches de temps ¤ D'activer périodiquement des tâches ¤ D'enregistrer l'heure exacte à laquelle certains événements se sont produits, etc. ¤ La mesure du temps est basée sur la génération de signaux électroniques déclenchés par les circuits d'horlogerie du système informatique ¤ Traitement des erreurs et reprise : ¤ Le système d’exploitation doit être capable de : ¤ Traiter les erreurs, c’est-à-dire de détecter l’existence d’un état incorrect (erreur) ¤ Reprendre un fonctionnement normal sans qu’il y ait de conséquence sur les autres utilisateurs (ou les autres programmes), par exemple : ¤ En remplaçant l’état incorrect par un état correct ¤ Ou encore en reprenant à partir d’un état ancien correct enregistré Les fonctions d’un Système d’exploitation ¤ Les fonctions du système d’exploitation utilisent les mécanismes offerts par le matériel de la machine physique pour réaliser leurs opérations ¤ Le système d’exploitation s’interface notamment, avec la couche matérielle, par le biais du mécanisme des interruptions, qui lui permet de prendre connaissance des événements survenant au niveau matériel ¤ Par ailleurs, le système d’exploitation s’interface aussi avec les applications du niveau utilisateur par le biais des fonctions prédéfinies que chacune de ses fonctionnalités offre ¤ Ces fonctions que l’on qualifie de routines systèmes constituent les points d’entrées des fonctionnalités du système d’exploitation ¤ Il est possible de les appeler depuis les applications de niveau utilisateur ¤ Ces appels peuvent se faire à différents niveaux : ¤ Dans le code d’un programme utilisateur à l’aide d’un appel système, qui n’est autre qu’une forme d’appel de procédure amenant à l’exécution d’une routine système Les fonctions d’un Système d’exploitation ¤ Les fonctions du système d’exploitation utilisent les mécanismes offerts par le matériel de la machine physique pour réaliser leurs opérations ¤ Le système d’exploitation s’interface notamment, avec la couche matérielle, par le biais du mécanisme des interruptions, qui lui permet de prendre connaissance des événements survenant au niveau matériel ¤ Par ailleurs, le système d’exploitation s’interface aussi avec les applications du niveau utilisateur par le biais des fonctions prédéfinies que chacune de ses fonctionnalités offre ¤ Ces fonctions que l’on qualifie de routines systèmes constituent les points d’entrées des fonctionnalités du système d’exploitation ¤ Il est possible de les appeler depuis les applications de niveau utilisateur ¤ Ces appels peuvent se faire à différents niveaux : ¤ Depuis le « prompt » de l’interpréteur de commandes, à l’aide d’une commande. L’interpréteur de commandes est un outil de niveau utilisateur qui accepte les commandes de l’utilisateur, les analyse et lance l’exécution de la routine système associée Les fonctions d’un Système d’exploitation ¤ Les fonctions du système d’exploitation utilisent les mécanismes offerts par le matériel de la machine physique pour réaliser leurs opérations ¤ Le système d’exploitation s’interface notamment, avec la couche matérielle, par le biais du mécanisme des interruptions, qui lui permet de prendre connaissance des événements survenant au niveau matériel ¤ Par ailleurs, le système d’exploitation s’interface aussi avec les applications du niveau utilisateur par le biais des fonctions prédéfinies que chacune de ses fonctionnalités offre ¤ Ces fonctions que l’on qualifie de routines systèmes constituent les points d’entrées des fonctionnalités du système d’exploitation ¤ Il est possible de les appeler depuis les applications de niveau utilisateur ¤ Ces appels peuvent se faire à différents niveaux : ¤ Plus récemment, dans les systèmes d’exploitations graphiques, en utilisant les mécanismes d’icônes : ¤ Double clic, Menu contextuel, Glisser/Déposer, etc. Chapitre 1 : Introduction et Concepts Introduction et Présentation du cours Définition d’un Système d’exploitation Historique des machines et des systèmes d’exploitation Les divers types de système d’exploitation Structure générale d’un système d’exploitation Historique des machines et des systèmes d’exploitation ¤ L'informatique moderne n’existe que depuis la deuxième guerre mondiale ¤ On peut rappeler que les machines à calculer ont leurs origines dans des travaux tels que ceux de Schickard en 1623, Blaise Pascal en 1643, Leibniz en 1673 et plus récemment ceux de Babbage en 1833 ¤ Les premiers ordinateurs ne possédaient pas vraiment de système d'exploitation ¤ La machine était chargé avec l'unique programme à exécuter qui se greffait sur ce système rudimentaire tout comme une fonction ou un sous-programme se greffe aujourd'hui sur le programme principal ¤ Les entrées-sorties étaient rudimentaires, réduites à un ruban perforé, les programmes écrits en langage machine, c'est à dire directement codés en suite de chiffres, exécutés pas à pas et modifiés directement en mémoire ¤ Les systèmes d’exploitation étant très liés aux machines qu’ils exploitent, nous pouvons les classer par génération de la même manière que le sont les ordinateurs : Chapitre 1 : Introduction et Concepts Historique des machines et des systèmes d’exploitation 1ère Génération (1945 - 1955) : Tubes à vides et panneaux de raccordement 2ème Génération (1955 – 1963) : Transistors et traitement par lots 3ème Génération (1963 – 1971) : Circuits intégrés et multiprogrammation 4ème Génération (1980 – 1990) : L’avènement des micro-ordinateurs 5ème Génération (1990 à nos jours) : Multimédia et Internet 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Première génération (1945-1955) : tubes à vides et panneaux de raccordement ¤ Au milieu des années 1940, un groupe de personnes composé entre autres de : ¤ John von Neumann à l’Université de Princeton ¤ J. Presper Eckert et William Mauchley de l’Université de Pennsylvanie ¤ Konrad Zuse en Allemagne a réussit à construire le premier calculateur électronique, appelé ENIAC (Electronic Numerical Integrator And Computer) ¤ L’ENIAC a été mis au point durant la seconde guerre mondiale à l’Université de Pennsylvanie ¤ C’était avant tout un amas de machines arithmétiques électroniques capables d’effectuer des fonctions mathématiques très diverses ¤ Inauguré en 1946 et utilisé jusqu’en 1955, il sert d’abord à l’armée américaine pour ses calculs balistiques, puis il aide à résoudre des problèmes de physique nucléaire et de météorologie à l’initiative du mathématicien John Von Neumann 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ L’ENIAC pouvait effectuer 5000 additions ou 350 multiplications par seconde ¤ Cette machine, bien que beaucoup moins puissante que la plupart des calculettes programmables de poche d’aujourd’hui : ¤ Pesait près de 30 tonnes ¤ Occupait une surface au sol de 167 m2 (2,4 x 0,9 x 30,5 mètres) ¤ Consommait 175 kw/h ¤ Comprenait près de 18 000 tubes à vide, 7200 diodes à cristal, 1500 relais, 10 000 condensateurs et 70 000 résistances ¤ 5 millions de joints soudés à la main ¤ Sa mémoire était de 20 mots de 10 chiffres décimaux ¤ Il est cent à mille fois plus rapide que les appareils électromécaniques de l’époque (tel que le BDA (Bush Differential Analyzer) du MIT (Massachusetts Institute of Technology) en 1925 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements Les tubes à vide et câblage interne de l’ENIAC 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements Les tubes à vide et câblage interne de l’ENIAC 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements Les tubes à vide et câblage interne de l’ENIAC 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Les systèmes d’exploitation et les langages de programmation n’existaient pas encore (pas même les langages assembleurs) ¤ Les unités de l’ENIAC était contrôlées par un faisceau de câbles électriques et programmées par une combinaison de fiches et de trois tables de fonction disposant chacune de 1200 commutateurs (switchs) à dix voies servant à entrer des tables de nombres et les instructions Tables de fonctions 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Les systèmes d’exploitation et les langages de programmation n’existaient pas encore (pas même les langages assembleurs) ¤ Les unités de l’ENIAC était contrôlées par un faisceau de câbles électriques et programmées par une combinaison de fiches et de trois tables de fonction disposant chacune de 1200 commutateurs (switchs) à dix voies servant à entrer des tables de nombres et les instructions Tables de fonctions 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Les systèmes d’exploitation et les langages de programmation n’existaient pas encore (pas même les langages assembleurs) ¤ Toute programmation était faite en langage machine par le câblage, en enfichant des prises du type « jack », d’un tableau de connexion (plug-board) qui commandait directement les fonctions de base de la machine ¤ En manipulant les câbles et les commutateurs, les programmeurs de l’ENIAC (essentiellement des femmes…) pouvaient donner des instructions précises à l’ordinateur, étape par étape, pour résoudre des équations différentielles 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Le mode d’utilisation de la machine consistait alors pour un programmeur : ¤ A venir s’inscrire sur une feuille de réservation de la machine pour une heure donnée et pour un temps limité ¤ Puis, à venir à l’heure prévue dans la salle machine insérer son tableau de connexion dans le calculateur ¤ Et enfin à attendre, quelques heures, les résultats du calcul en espérant qu’aucune des 20000 tubes à vide ne grillerait pendant l’exécution du travail ! ¤ Au début des années 1950, les cartes perforées (punched cards) pour l’introduction des programmes ont remplacé les tableaux de connexion Lecteur de cartes perforées 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Le mode d’utilisation de la machine consistait alors pour un programmeur : ¤ A venir s’inscrire sur une feuille de réservation de la machine pour une heure donnée et pour un temps limité ¤ Puis, à venir à l’heure prévue dans la salle machine insérer son tableau de connexion dans le calculateur ¤ Et enfin à attendre, quelques heures, les résultats du calcul en espérant qu’aucune des 20000 tubes à vide ne grillerait pendant l’exécution du travail ! ¤ Au début des années 1950, les cartes perforées (punched cards) pour l’introduction des programmes ont remplacé les tableaux de connexion Connecteur du lecteur de carte À l’ENIAC 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Le mode d’utilisation de la machine consistait alors pour un programmeur : ¤ A venir s’inscrire sur une feuille de réservation de la machine pour une heure donnée et pour un temps limité ¤ Puis, à venir à l’heure prévue dans la salle machine insérer son tableau de connexion dans le calculateur ¤ Et enfin à attendre, quelques heures, les résultats du calcul en espérant qu’aucune des 20000 tubes à vide ne grillerait pendant l’exécution du travail ! ¤ Au début des années 1950, les cartes perforées (punched cards) pour l’introduction des programmes ont remplacé les tableaux de connexion Cartes perforées et leur pochette de transport 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ C'est durant les travaux de mise au point de l'ENIAC que John Tuckey créa le terme BIT ou binary digit, unité binaire d'information, soit 0 ou 1 ¤ Un jour, en 1947, l’ENIAC tomba en panne sans que ses constructeurs ne sussent pourquoi. Après exploration, on constata qu’un insecte s’était logé dans un relais. Le technicien qui a fait la découverte s’est écrié : « There is a bug in the machine ! » ¤ Le nom bug est resté pour désigner une erreur de matériel ou de programmation ¤ Comprenant que, pour améliorer le rendement de cet appareil, il faut remplacer la programmation externe par des programmes enregistrés dans une mémoire interne de la machine, John Von Neumann publie, en 1946, un rapport décrivant précisément cette future machine, que nous appelons aujourd’hui ordinateur : Tout ordinateur d’aujourd’hui est fondé sur les spécifications décrites alors par Von Neumann 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ En 1948, L’EDVAC (Electronic Discrete Variable Automatic Computer) est le premier ordinateur à architecture de Von Neumann ¤ Contrairement à l’ENIAC, qui opère en décimal, l’EDVAC opère en mode binaire ¤ Mémoire de 1000 mots de 44 bits ¤ 6 000 tubes à vides ¤ 12 000 diodes ¤ 56 kW de consommation ¤ 45,5 m2 ¤ 7 850 kg ¤ C’était la première machine à programme enregistré ¤ Il fallait, pour le faire fonctionner trois équipes de trente personnes qui se succédaient en continu 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ A partir de l’EDVAC et de la théorie de l'information (Shannon en 1948) qui mesure d'une quantité d'informations en chiffres binaires (bits), un certain nombre d’ordinateurs a été créé sur le même principe : ¤ L’EDSAC (Electronic Delay Storage Automatic Calculator) a été conçu par Bill Renwick and Maurice Wilkes à l’Université de Cambridge (UK) et mis en service en1949 ¤ C’était une machine universelle, électronique, programmable par instructions, employant encore la technologie des tubes à vide ¤ Il pouvait effectuer en une minute 15 000 opérations mathématiques dont 4 000 multiplications 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements IBM SSEC (Selective Sequence Electronic Calculator) : Manchester Mark I, premier ordinateur à 20 000 relais, 12 500 tubes (1948) programme enregistré (1949) Univac, premier ordinateur commercialisé(par Remington IBM 650, Premier ordinateur construit en série par Rand (15 exemplaires vendus) et premier ordinateur IBM : 900kg, vendu $500 000 à plus de 1000 français pour l'armée (1951) exemplaires (1953) 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Le premier ordinateur Français, le CUBA fut livré en 1952 à l’armée par le SEA ¤ La société des machines BULL travailla aussi sur la conception de machine informatique dès 1950 et sortit en 1958 le BULL GAMMA ET qui avait une mémoire principale de 96 lignes à retard, de 12 chiffres décimaux chacune et d’un tambour de 8 Kmots 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Cependant, la transition entre cette génération de prototypes et celle des premières machines commercialisées a été vraiment réalisée par deux grands projets américains : le WHIRLWIND et le IAS : ¤ Le WHIRLWIND, machine très innovatrice mise au point en 1950, fut à l’origine de 11 grandes « premières » dont les mémoires à tores de 2048 mots de 16 bits, une ébauche de langage de programmation, des utilitaires… ¤ Très rapide pour l’époque (elle exécutait jusqu’à 20 000 instructions par secondes), elle fit partie du système de défense de l’armée américaine dès 1951 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Cependant, la transition entre cette génération de prototypes et celle des premières machines commercialisées a été vraiment réalisée par deux grands projets américains : le WHIRLWIND et le IAS : ¤ Le WHIRLWIND, machine très innovatrice mise au point en 1950, fut à l’origine de 11 grandes « premières » dont les mémoires à tores de 2048 mots de 16 bits, une ébauche de langage de programmation, des utilitaires… ¤ L’IAS, mis au point en 1951, elle ne fut exploitée qu’en 1952 avec une mémoire, considérée à l’époque comme considérable, de 4096 mots de 40 bits 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Par la suite, le premier ordinateur, le FERRANTI MARK 1, successeur de la machine de Manchester, fut commercialisé, dès 1951 ¤ Puis en 1952, J.P. Eckert et W. Mauchley sortirent l‘UNIVAC-1, le successeur de l’ENIAC ¤ Un an plus tard IBM sortit l’IBM 650 qui fut le premier ordinateur vendu en plus de 1000 exemplaires, et la série IBM 701, 702, 709... 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Par la suite, le premier ordinateur, le FERRANTI MARK 1, successeur de la machine de Manchester, fut commercialisé, dès 1951 ¤ Puis en 1952, J.P. Eckert et W. Mauchley sortirent l‘UNIVAC-1, le successeur de l’ENIAC ¤ Un an plus tard IBM sortit l’IBM 650 qui fut le premier ordinateur vendu en plus de 1000 exemplaires, et la série IBM 701, 702, 709... 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ Par la suite, le premier ordinateur, le FERRANTI MARK 1, successeur de la machine de Manchester, fut commercialisé, dès 1951 ¤ Puis en 1952, J.P. Eckert et W. Mauchley sortirent l‘UNIVAC-1, le successeur de l’ENIAC ¤ Un an plus tard IBM sortit l’IBM 650 qui fut le premier ordinateur vendu en plus de 1000 exemplaires, et la série IBM 701, 702, 709... 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ A partir de 1948, avec le Mark-1, les calculateurs étaient dotés d’une logique programmable, ce qui veut dire qu’une machine était alors capable d’exécuter différents programmes sans intervention sur le matériel ¤ L’arrivée de la logique programmable provoqua une cascade d’invention en terme de langage de programmation ¤ Le premier pas vers un langage de programmation fut fait dès1948 avec la création du langage assembleur dont l’idée consistait remplacer des codes binaires (séquence de chiffres du langage machine) par des codes mnémoniques alphanumériques : ¤ Le principe du langage assembleur est d’associer un nom symbolique au code binaire de l’opération à effectuer (opcode), ce qui rend nettement plus facile de se rappeler de l’opcode mais nécessite une traduction de ces noms en code machine : ¤ Exemple : LDA Accu, A // Chargement de A dans le registre Accumulateur ADD Accu, B // Addition dans un registre Accumulateur de B 1ère génération (1945-1955) : Tubes à vides et panneaux de raccordements ¤ A partir de 1948, avec le Mark-1, les calculateurs étaient dotés d’une logique programmable, ce qui veut dire qu’une machine était alors capable d’exécuter différents programmes sans intervention sur le matériel ¤ L’arrivée de la logique programmable provoqua une cascade d’invention en terme de langage de programmation ¤ Le premier pas vers un langage de programmation fut fait dès1948 avec la création du langage assembleur dont l’idée consistait remplacer des codes binaires (séquence de chiffres du langage machine) par des codes mnémoniques alphanumériques : ¤ Le principe du langage assembleur est d’associer un nom symbolique au code binaire de l’opération à effectuer (opcode), ce qui rend nettement plus facile de se rappeler de l’opcode mais nécessite une traduction de ces noms en code machine : ¤ D’autres langages suivirent alors rapidement : ¤ L’A-0 (1951), le FORTRAN (1956), le Cobol (1959), le LISP (1959), l’Algol (1959),le Basic (1965), le Pascal (1960), le C et le Prolog (1972)… bien avant les premiers langages de programmation orientes objet : C++ (1983), Perl (1986), Python (1991), Java (1995), etc. Chapitre 1 : Introduction et Concepts Historique des machines et des systèmes d’exploitation 1ère Génération (1945 - 1955) : Tubes à vides et panneaux de raccordement 2ème Génération (1955 – 1963) : Transistors et traitement par lots 3ème Génération (1963 – 1971) : Circuits intégrés et multiprogrammation 4ème Génération (1980 – 1990) : L’avènement des micro-ordinateurs 5ème Génération (1990 à nos jours) : Multimédia et Internet 2ème génération (1955-1963) : Transistors et traitement par lots ¤ La 2ème génération (1955-1965) d’ordinateurs est basée sur l’invention du transistor en 1947 qui a succédé aux tubes à vide ¤ Le passage aux petits transistors électroniques a révolutionné le monde de l'informatique ¤ Cela permit de remplacer le fragile et encombrant tube électronique par un composant plus petit et fiable ¤ Les machines sont alors devenues plus compactes, plus rapides et moins sujettes au « bug » ¤ Elles devinrent suffisamment fiables et sûres pour être fabriquées et vendues en grande quantité ¤ Pour la première fois, il y eut une séparation nette entre concepteurs, fabricants, programmeurs, opérateurs et mainteneurs ¤ Seules des grandes compagnies d’état ou de grandes universités pouvaient s’offrir ces ordinateurs qui coûtaient plusieurs millions de dollars 2ème génération (1955-1963) : Transistors et traitement par lots ¤ En 1956, IBM sortit le premier ordinateur à base de disques durs, le RAMAC (Random Access Method of Accounding and Control) ¤ Puis l’IBM 350 disposant de 350 disques de 24 pouces en métal et qui pouvait stocker 5 Mo et coûtait $10 000 par Mo et pesait 1 tonne ! 2ème génération (1955-1963) : Transistors et traitement par lots ¤ En 1958, la Compagnie des Machines Bull (France) annonce Le Gamma 60, livré en une quinzaine d'exemplaires à partir de 1960 ¤ Premier ordinateur multitâches dans le monde et l'un des premiers à comporter plusieurs processeurs ¤ Il comportait plusieurs unités d'entrée et de sortie : tambours magnétiques, bandes magnétiques, lecteurs de cartes et perforateurs de cartes, lecteurs de bande papier, perforateurs de bande papier, imprimantes et un terminal 2ème génération (1955-1963) : Transistors et traitement par lots ¤ En 1959, IBM lança l’IBM 1401 ¤ Il utilisait des cartes perforées ¤ Il fut le premier ordinateur vendu à plus de 10 000 exemplaires ¤ Il réalisait 193 000 additions de 8 chiffres par ¤ seconde et lisait 800 cartes à la minute ¤ En 1960, DEC (Digital Equipment Corporation) lança le PDP-1 (Programmed Data Processor) ¤ C’était le premier ordinateur interactif ¤ Il a lancé le concept de mini-ordinateur ¤ Il avait une vitesse d’horloge de 0,2 MHz (0,5 millionièmes) et pouvait stocker 4096 mots de 18 bits ¤ Il effectuait 100 000 opérations par seconde ¤ Il fut vendu pour « seulement » 120 000 $ 2ème génération (1955-1963) : Transistors et traitement par lots ¤ En 1956, le premier langage de programmation de haut niveau à être implémenté fut le FORTRAN (Formula Translator), développé par John Backus ¤ Le FORTRAN est un langage de programmation impératif destiné au départ à la traduction de formules mathématiques ¤ Il est devenu un langage à usage général particulièrement bien adapté au calcul numérique et au calcul scientifique ! Calcul de la somme des 1/k2 pour k de 1 à n program Exemple ! Declarations de variables integer :: n,k real :: s ! Lecture d’une donnée write(*,*) ’Entrez un entier n :’ read(*,*) n ! Algorithme s=0 do k=1,n s=s+1./k**2 end do ! Affichage du résultat write(*,*) ’s= ’,s end program Exemple 2ème génération (1955-1963) : Transistors et traitement par lots ¤ En 1956, le premier langage de programmation de haut niveau à être implémenté fut le FORTRAN (Formula Translator), développé par John Backus ¤ Le FORTRAN est un langage de programmation impératif destiné au départ à la traduction de formules mathématiques ¤ Il est devenu un langage à usage général particulièrement bien adapté au calcul numérique et au calcul scientifique ¤ En 1957, le compilateur FORTRAN développé chez IBM par l’équipe de John Backus est considéré comme le premier compilateur de l’histoire de l’informatique ¤ Le nombre de bibliothèques scientifiques écrites en Fortran et les efforts continus consacrés aux compilateurs pour exploiter au fil des décennies les nouvelles possibilités des calculateurs (vectorisation, coprocesseurs, parallélisme) ont maintenu l'usage de ce langage ¤ Sa position historique fait qu’il demeure encore aujourd’hui un des langages prisé par les scientifiques : ¤ De part la valeur et la complétude de ses bibliothèques et sa fiabilité grandement éprouvée aux cours des années d’utilisation par de nombreuses corrections 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ L’interprétation : Repose sur l'exécution dynamique du programme par un autre programme (Interpréteur) ¤ Un Interpréteur est un programme ayant pour tâche d'analyser un programme source écrit dans un langage source compréhensible par l’homme, de le traduire en langage machine et de l’exécuter ¤ Il se distingue d’un compilateur par le fait qu’il ne fournit pas de programme exécutable : ¤ Les opérations d’analyse, de traduction et d’exécution sont réalisées à chaque instruction au fur et à mesure du déroulement du programme ¤ L’interprétation s’arrête quand une erreur est détectée (ou quand le programme est terminé) : Cette exécution ligne à ligne facilite le « débugage » des programmes : l’erreur se trouve sur la dernière instruction analysée 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ L’interprétation : Repose sur l'exécution dynamique du programme par un autre programme (Interpréteur) ¤ Un Interpréteur est un programme ayant pour tâche d'analyser un programme source écrit dans un langage source compréhensible par l’homme, de le traduire en langage machine et de l’exécuter ¤ L’interprétation d’un programme évite la séparation du temps de transformation et du temps d'exécution, qui sont simultanés ¤ Cette technique tend à disparaître pour les langages d’usage général, mais elle survit bien dans des contextes plus spécialisés ¤ Par exemple : La grande majorité des imprimantes fabriquent les pages qu’elles impriment en interprétant un langage (le langage Postscript) 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ L’interprétation : Repose sur l'exécution dynamique du programme par un autre programme (Interpréteur) ¤ Un Interpréteur est un programme ayant pour tâche d'analyser un programme source écrit dans un langage source compréhensible par l’homme, de le traduire en langage machine et de l’exécuter ¤ L’interprétation d’un programme évite la séparation du temps de transformation et du temps d'exécution, qui sont simultanés ¤ Cette technique tend à disparaître pour les langages d’usage général, mais elle survit bien dans des contextes plus spécialisés ¤ Par exemple : Les commandes tapée en Unix sont interprétées et exécutées par le shell qui n’est rien d’autre qu’un interpréteur 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ L’interprétation : Repose sur l'exécution dynamique du programme par un autre programme (Interpréteur) ¤ Un Interpréteur est un programme ayant pour tâche d'analyser un programme source écrit dans un langage source compréhensible par l’homme, de le traduire en langage machine et de l’exécuter ¤ L’interprétation d’un programme évite la séparation du temps de transformation et du temps d'exécution, qui sont simultanés ¤ Cette technique tend à disparaître pour les langages d’usage général, mais elle survit bien dans des contextes plus spécialisés ¤ Par exemple : Les programmes en JavaScript qui sont reçus en code source et interprétés par les navigateurs web (browsers), etc. 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ La compilation : Repose sur l’analyse complète du programme source par un autre programme (Compilateur) ¤ Un compilateur est un programme qui analyse le programme source écrit en langage évolué (Fortran, Pascal, C, etc.) et le transforme en un exécutable en langage cible (langage machine binaire) ¤ La compilation s’effectue en quatre phases : ¤ Phase 1 : Analyse Lexicale ¤ Phase 2 : Analyse syntaxique ¤ Phase 3 : Analyse sémantique ¤ Phase 4 : Génération de code intermédiaire 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ La compilation : Repose sur l’analyse complète du programme source par un autre programme (Compilateur) ¤ Un compilateur est un programme qui analyse le programme source écrit en langage évolué (Fortran, Pascal, C, etc.) et le transforme en un exécutable en langage cible (langage machine binaire) ¤ La compilation s’effectue en quatre phases : ¤ Phase 1 - L’analyse lexicale : Au départ, le programme en langage source se présente comme une suite de caractères ¤ Le rôle de l’analyseur lexical est de découper cette séquence de caractères en mots constitutifs du langage : Il groupe les lettres pour former des mots ¤ Il reconnaît et signale les mots mal orthographiés et supprime les commentaires 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ La compilation : Repose sur l’analyse complète du programme source par un autre programme (Compilateur) ¤ Un compilateur est un programme qui analyse le programme source écrit en langage évolué (Fortran, Pascal, C, etc.) et le transforme en un exécutable en langage cible (langage machine binaire) ¤ La compilation s’effectue en quatre phases : ¤ Phase 2 - L’analyse syntaxique : Regroupe les mots produits par l'analyseur lexical en phrases, en identifiant le rôle de chacun des mots. Le rôle de l’analyseur syntaxique est de présenter en sortie les phrases sous la forme d'un arbre syntaxique ¤ Les feuilles contiennent les mots, leurs valeurs et leurs rôles ¤ Les nœuds internes la manière dont il sont regroupés 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ La compilation : Repose sur l’analyse complète du programme source par un autre programme (Compilateur) ¤ Un compilateur est un programme qui analyse le programme source écrit en langage évolué (Fortran, Pascal, C, etc.) et le transforme en un exécutable en langage cible (langage machine binaire) ¤ La compilation s’effectue en quatre phases : ¤ Phase 3 - Analyse sémantique : Vérifie que les variables ont un type correct ¤ Par exemple : Il faut vérifier que la variable « i » possède bien le type « entier », et que la variable « a » est bien un nombre ¤ Cette opération s'effectue en parcourant l'arbre syntaxique et en vérifiant à chaque niveau que les opérations sont correctes 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Un programme écrit en langage évolué (langage source) n’est pas compréhensible par une machine qui ne manipule que des « 0 » et des « 1 » ¤ Pour être exécutable sur une machine, il doit subir une transformation du code source vers le langage de la machine (langage cible) ¤ Il y a deux modes de transformation : l’Interprétation et la Compilation ¤ La compilation : Repose sur l’analyse complète du programme source par un autre programme (Compilateur) ¤ Un compilateur est un programme qui analyse le programme source écrit en langage évolué (Fortran, Pascal, C, etc.) et le transforme en un exécutable en langage cible (langage machine binaire) ¤ La compilation s’effectue en quatre phases : ¤ Phase 4 – Génération de code : Permet à partir de la syntaxe abstraite, de générer un code intermédiaire (code assembleur) ¤ Ce code est ensuite traiter par un « assembleur » dont le rôle est de produire un code en langage machine ¤ Ce code machine devient alors exécutable après édition de liens 2ème génération (1955-1963) : Transistors et traitement par lots X 1 = 0 7 + 3 1 X1 = 7 + 31 = + X1 7 31 2ème génération (1955-1963) : Transistors et traitement par lots ¤ La compilation proprement dite s’arrête à la production du code assembleur ¤ Ce code assembleur n’est pas un code exécutable ¤ Il nécessite encore quelques transformation pour fournir un code exécutable : ¤ Un assemblage : Dont le rôle est de produire un code machine (code binaire) ¤ Une édition de liens : Qui est la dernière phase de la transformation et dont le rôle consiste à intégrer dans le code machine les appels à fonction du langage qui se trouvent dans les bibliothèques du langage source : ¤ Par exemple : stdio.h en langage c pour les fonctions d’entrée-sortie (printf, scanf, putchar, gets, etc.) ¤ Ou encore d’autres modules de programme déjà compilés et assemblés 2ème génération (1955-1963) : Transistors et traitement par lots AAAAAAAAAA (en (enbinaire) hexa) 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Les programmes sont écrits à l’aide d’un télétype qui transforme les caractères tapés sur des cartes perforées Télétype permettant de taper le programme en langage « évolué » (type Fortran) et de le translater sur cartes perforées Structure d’un « job » 2ème génération (1955-1963) : Transistors et traitement par lots ¤ En 1960, les premiers systèmes d’exploitation font leur apparition FMS (Fortran Monitor System) et IBSYS (sur IBM 7094) ¤ Ils permettent le traitement de programmes par lots de programmes inscrits sur bandes magnétiques : ¤ Une machine lecteur de cartes lisait les cartes (a) pour en recopier le code sur une bande magnétique (b) ¤ Le calculateur lisait cette bande (c), exécutait les jobs (d) puis transcrivait les résultats sur une autre bande (e) ¤ L'impression des résultats pouvait être réalisée « off-line » par un ordinateur plus léger (f) 2ème génération (1955-1963) : Transistors et traitement par lots 2ème génération (1955-1963) : Transistors et traitement par lots ¤ L’idée de départ du traitement par lots consistait à collecter un maximum de travaux sur cartes perforées dans la salle des entrées de la machine et à les transférer sur une bande magnétique Exécution des Processus Processus Chargement Processus programme 4 5 des Processus 3 Processus dans l’ordre du programmes sur 1 chargement sur 2 la bande la bande ¤ Après avoir collecté un lot suffisant de travaux, la bande était rembobinée et amenée sur l’ordinateur central où elle était montée sur un lecteur de bandes ¤ Un opérateur chargeait alors un programme spécial, ancêtre des systèmes d’exploitation actuels, qui lisait le premier travail enregistré sur la bande et l’exécutait ¤ Après chaque fin de travail, le système lisait automatiquement le travail suivant stocké sur la bande d’entrée et commençait son exécution 2ème génération (1955-1963) : Transistors et traitement par lots ¤ L’idée de départ du traitement par lots consistait à collecter un maximum de travaux sur cartes perforées dans la salle des entrées de la machine et à les transférer sur une bande magnétique Exécution des Processus Processus Chargement Processus programme 4 5 des Processus 3 Processus dans l’ordre du programmes sur 1 chargement sur 2 la bande la bande ¤ En sortie les résultats étaient stockés sur une autre bande magnétique ¤ Quand le lot complet avait été traité, l’opérateur enlevait les bandes d’entrée et de sortie pour charger les bandes du lot suivant ¤ La bande de sortie était alors amenée sur une machine imprimante qui se chargeait de l’impression des résultats hors-ligne (sans aucune connexion au calculateur central) 2ème génération (1955-1963) : Transistors et traitement par lots ¤ Par conséquent, un système de traitement par lots (batch system) était un système monotâche (single task system) qui ne pouvait exécuter qu’un seul programme quels que soient sa taille et son temps d'exécution ¤ Le programme en cours de traitement accaparait complètement la machine pendant toute la durée de son exécution ¤ Les programmes étaient traités en séquence dans l’ordre de leur enregistrement sur la bande magnétique d’entrée (ordonnancement des processus à exécuter de type FIFO : First In First Out) ¤ Ils se déroulaient de manière autonome : ¤ Les utilisateurs travaillant avec ces systèmes n'avaient aucune possibilité d'interaction avec leur programme : ¤ Les temps de réponse étaient imprévisibles puisqu'ils dépendaient du nombre de travaux soumis ¤ Si un programme sur la bande était « bogué » c’était l’ensemble des programmes stockés à la suite qui était retardé ¤ Les utilisateurs devaient se contenter de récupérer leur résultats sur les listings produits par l’imprimante Chapitre 1 : Introduction et Concepts Historique des machines et des systèmes d’exploitation 1ère Génération (1945 - 1955) : Tubes à vides et panneaux de raccordement 2ème Génération (1955 – 1963) : Transistors et traitement par lots 3ème Génération (1963 – 1971) : Circuits intégrés et multiprogrammation 4ème Génération (1980 – 1990) : L’avènement des micro-ordinateurs 5ème Génération (1990 à nos jours) : Multimédia et Internet 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Bien que les transistors représentent une nette amélioration par rapport aux tubes à vide, ils généraient encore beaucoup de chaleur en consommant beaucoup d'énergie, et donc endommageaient les parties internes sensibles de l'ordinateur ¤ Dès 1958, Jack Kilby, ingénieur de Texas Instrument créait le tout premier circuit intégré, jetant ainsi les bases du matériel informatique moderne ¤ Il avait tout simplement relié entre eux différents transistors en les câblant à la main ¤ Il ne faudra attendre plusieurs mois pour passer du stade de prototype à la production de masse de puces en silicium contenant plusieurs transistors ¤ Ce concept révolutionnaire concentrait dans un volume incroyablement réduit, un maximum de fonctions logiques, auxquelles l'extérieur accédait 1er circuit intégré à travers des connexions réparties à la périphérie avec 4 transistors (1961) du circuit 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Ces ensembles de transistors interconnectés en circuits microscopiques dans un même bloc, permettaient la réalisation de mémoires, ainsi que d’unités de traitement logiques et arithmétiques ¤ Le premier ordinateur a avoir recours aux circuits intégrés dès 1963, était l’AGC (Apollo Guidance Computer) qui était l'ordinateur embarqué pour la navigation et de pilotage des vaisseaux spatiaux des missions Apollo de la NASA ¤ Il a été conçu au MIT Instrumentation Laboratory ¤ Il était utilisé en temps réel par les astronautes pilote Circuits intégrés utilisé dans les engins spatiaux 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ En 1964, IBM sortit la série 360 qui comportait de nombreuses innovations, dont la compatibilité entre machines grâce à la microprogrammation ¤ Technique permettant d’intégrer des programmes (microcode), tel que le séquenceur, directement dans le matériel ¤ Les machines de cette gamme étaient toutes construites suivant la même architecture et disposaient toutes du même jeu d’instructions ce qui permettait à un programme d’être exécuté sur n’importe laquelle d’entre elles ¤ Elles étaient les premières commercialisées à utiliser des circuits imprimés, offrant ainsi un grand avantage prix/performance par rapport aux machines de deuxième génération ¤ La série « 360 » était une série de machines composées d’un ensemble compatible logiciel-matériel pouvant intégrer les possibilités des IBM 1401 et IBM 7094 d’alors ¤ Ce fut un succès commercial et immédiat (14 000 ordinateurs vendus jusqu’en 1970) ¤ Depuis, IBM a développé de nombreux successeurs au système « 360 » tels que les systèmes « 370 », « 4300 », « 3080 » et « 3090 » dont certains sont encore en service dans de grands centres de calcul ¤ Elle a massivement contribué à imposer les ordinateurs dans le monde tant scientifique que des affaires 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ En 1964, IBM sortit la série 360 qui comportait de nombreuses innovations, dont la compatibilité entre machines grâce à la microprogrammation 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ En 1964, IBM sortit la série 360 qui comportait de nombreuses innovations, dont la compatibilité entre machines grâce à la microprogrammation ¤ Technique permettant d’intégrer des programmes (microcode), tel que le séquenceur, directement dans le matériel ¤ Les machines de cette gamme étaient toutes construites suivant la même architecture et disposaient toutes du même jeu d’instructions ce qui permettait à un programme d’être exécuté sur n’importe laquelle d’entre elles ¤ Elles étaient les premières commercialisées à utiliser des circuits imprimés, offrant ainsi un grand avantage prix/performance par rapport aux machines de deuxième génération ¤ La série « 360 » était une série de machines composées d’un ensemble compatible logiciel-matériel pouvant intégrer les possibilités des IBM 1401 et IBM 7094 d’alors ¤ Ce fut un succès commercial et immédiat (14 000 ordinateurs vendus jusqu’en 1970) ¤ Depuis, IBM a développé de nombreux successeurs au système « 360 » tels que les systèmes « 370 », « 4300 », « 3080 » et « 3090 » dont certains sont encore en service dans de grands centres de calcul ¤ Elle a massivement contribué à imposer les ordinateurs dans le monde tant scientifique que des affaires 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Le circuit intégré autorisa le développement d’ordinateurs plus compacts que l’on appela les mini-ordinateurs (Minicomputers) ¤ Toujours en 1964, DEC lança le PDP-8, machine bien moins encombrante destinée aux laboratoires et à la recherche ¤ Elle pouvait effectuer 100 000 opérations/seconde 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Le circuit intégré autorisa le développement d’ordinateurs plus compacts que l’on appela les mini-ordinateurs (Minicomputers) ¤ Toujours en 1964, DEC lança le PDP-8, machine bien moins encombrante destinée aux laboratoires et à la recherche ¤ Elle pouvait effectuer 100 000 opérations/seconde ¤ En 1966, Hewlett-Packard entra dans le domaine des ordinateurs universels (par opposition aux ordinateurs spécifiques) avec son HP-2115 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Le circuit intégré autorisa le développement d’ordinateurs plus compacts que l’on appela les mini-ordinateurs (Minicomputers) ¤ Toujours en 1964, DEC lança le PDP-8, machine bien moins encombrante destinée aux laboratoires et à la recherche ¤ Elle pouvait effectuer 100 000 opérations/seconde ¤ En 1966, Hewlett-Packard entra dans le domaine des ordinateurs universels (par opposition aux ordinateurs spécifiques) avec son HP-2115 ¤ En 1969, Data General vendit un total de 50 000 ordinateurs Nova à $8 000 l’unité ¤ Le Nova était l’un des premiers mini-ordinateurs 16 bits ¤ La version Supernova qui lui succédera en 1971 effectuait une multiplication en une microseconde, performance spectaculaire à l’époque ¤ Le processeur principal était contenu sur un circuit imprimé de 15 pouces 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ La troisième génération constitue l'apothéose d'une informatique où les ordinateurs sont énormes, surpuissants et centralisent les traitements ¤ Les circuits intégrés permettent aussi de réduire considérablement le coût du matériel ¤ La troisième génération est particulièrement marquée par la vulgarisation de l'ordinateur, créant un nouveau marché, celui du grand public ¤ Elle est marquée aussi par l’utilisation d'un système d'exploitation qui permettait de faire tourner plusieurs programmes différents sur une même machine avec un programme central contrôlant et coordonnant la mémoire centrale de l'ordinateur et les différents organes de la machine ¤ Tous les logiciels, y compris le système d’exploitation, devaient alors répondre à un grand nombre de contraintes, à savoir : ¤ Etre capables de tourner sur de petits calculateurs ou sur de gros calculateurs, sur des machines utilisant peu de périphériques ou sur d’autres en utilisant beaucoup, pour des environnements scientifiques ou simplement commerciaux, et bien entendu être performants dans tous les cas 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Ceci a conduit au développement d’un énorme et très complexe système d’exploitation composé de plusieurs millions de lignes en langage assembleur écrits par des milliers de programmeurs et contenant… des milliers de bogs (bugs) ¤ Chaque correction en engendrait d’autres ! ¤ Beaucoup de temps et de patience furent nécessaires pour aboutir à un système d’exploitation satisfaisant pour la plupart des utilisateurs des séries « 360 » et des autres machines de troisième génération développées par d’autres constructeurs ¤ Bien que ces systèmes d’exploitation étaient toujours à la base des systèmes de traitement par lots, ils ont contribué au développement de grands concepts tels que : ¤ La multiprogrammation : Capacité d'un système à exécuter à la suite plusieurs activités sans l'intervention de l'utilisateur ¤ Le spooling : Technique qui consiste à mettre des informations dans une file d'attente (spool) avant de les envoyer à un périphérique 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Le concept de la multiprogrammation (multiprogramming) consiste à utiliser les temps morts de calcul du processeur pour exécuter d’autres travaux ¤ Ainsi, lorsqu’un travail était en attente d’une opération d’entrée-sortie (chargement d’une bande, positionnement d’une bande pour une lecture ou une écriture, etc.) le processeur était bloqué jusqu’à la fin de l’opération d’entrée- sortie : ¤ Lors du traitement de calcul scientifique, les opérations d’entrée-sortie sont peu fréquentes et ce temps perdu à attendre n’est pas significatif ¤ Par contre, lors du traitement de données commerciales sur supports externes, tel qu’une bande magnétique, les temps d’attente atteignent régulièrement 80% à 90% du temps de traitement total ¤ La solution a consisté à partitionner la mémoire de travail en segments pouvant chacun recevoir un travail donné ¤ Quand un des travaux chargés en mémoire était en attente de la réalisation d’une opération d’entrée-sortie, un autre travail pouvait alors utiliser le processeur ¤ Si suffisamment de travaux étaient présents en mémoire centrale, le processeur pouvait être ainsi rentabilisé à 100% 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Le concept du spooling (Simultaneous Peripherical Operation On Line) est né du besoin de supprimer toutes les manipulations de bandes magnétiques en entrée comme en sortie des calculateurs ¤ Pour cela, tout nouveau travail soumis à la machine était retranscrit en entrée à partir des cartes perforées sur disques durs (disk) ¤ Les ordinateurs étant beaucoup plus rapides que les périphériques tels que les imprimantes, le fait que les fichiers soient enregistrés temporairement sur le disque dur évite que le processus qui crée les fichiers connaisse de longues périodes d'inactivité durant lesquelles il attend sur le périphérique ¤ Les documents, en entrée comme en sortie, sont pris en charge, dans l'ordre de leur arrivée (FIFO : premier entré - premier sorti) ¤ Cet ordre peut être modifié si nécessaire, par exemple un document peut être retenu en vue d'être imprimé en dehors des heures de travail ¤ Ainsi, dès qu’un travail sur la machine se terminait, le système d’exploitation pouvait immédiatement aller chercher sur le disque un nouveau travail et le charger en mémoire dans la partition qui venait de se libérer 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Au début des années 1960, IBM mit au point le système d’exploitation VM/CMS écrit pour ses propres équipes de développement ¤ Les chercheurs du Centre Scientifique d’IBM à Cambridge (Etats-Unis) en collaboration avec l’université de Grenoble éprouvaient une gêne pour utiliser l’ordinateur puissant dont il disposait car pour mettre au point leur travaux sur les systèmes d’exploitation, ils passaient à tour de rôle, en monoprogrammation, sur l’ordinateur ¤ Comme leurs expériences avaient lieu en « mode système », ils risquaient toujours de perturber les travaux en cours ¤ C’est donc pour des raisons de sécurité qu’il a fallu trouver le moyen de donner à chaque utilisateur la possibilité de travailler en « mode système » sans perturber les autres ¤ Le concept de machine virtuelle répond à cette nécessité et représente une avancée considérable dans les recherches sur les systèmes d’exploitation ¤ Une machine virtuelle est un environnement d'application ou de système d'exploitation qui simule le comportement d’un matériel donné ¤ Côté utilisateur final, l'interaction avec une machine virtuelle est la même qu'avec un matériel dédié 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ VM permet à plusieurs utilisateurs d'un même ordinateur de travailler comme s'ils disposaient chacun de leur propre machine, appelée machine virtuelle (VM = Virtual Machine) ¤ Un programme de contrôle, appelé hyperviseur, gère l'ordinateur réel et effectue toutes les simulations et opérations nécessaires de telle manière que chaque machine virtuelle réagisse et travaille comme le ferait une machine réelle ¤ L’hyperviseur émule intégralement les différentes ressources matérielles de l’ordinateur, telles que l'unité centrale, la mémoire, le disque dur, etc., et permet à des machines virtuelles de les partager ¤ Il simule ainsi un ordinateur complet pour chaque utilisateur ¤ Il permet à chaque machine virtuelle d'exécuter un OS différent ¤ Chaque propriétaire d'une machine virtuelle doit donc donner à l’hyperviseur les caractéristiques du hardware virtuel pour configurer sa machine et peut charger ensuite sa machine virtuelle avec le software (OS, DOS, CMS, un autre VM, etc.) sous lequel il désire travailler 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ CMS (Conversation Monitor System) est un système d’exploitation mono- utilisateur, mono-tâche et conversationnel ¤ Conçu pour fonctionner sous l'hyperviseur des machines virtuelles VM, c’est un système d’exploitation simplifié mono-utilisateur permettant le développement de programmes dans une machine virtuelle ¤ Il est chargé en « segment partagé », afin de n'avoir pas à être dupliqué en mémoire autant de fois qu'il y avait de machines virtuelles ¤ Ainsi, VM/CMS est un système d’exploitation multiutilisateur mono-tâche : ¤ L'hyperviseur VM simule sur une machine réelle un nombre quelconque de machines virtuelles (« n » machine virtuelles) ¤ Les machines virtuelles sont attribuées chacune à un utilisateur (mono-tâche) qui a alors l'impression d’être le seul à utiliser la machine réelle ¤ Il voit cependant les autres (« q users ») et peut communiquer facilement avec eux par les partages de disque et les unités de transfert virtuelles (« virtual reader », « virtual punch ») ¤ Cependant un seul programme peut être exécuté à la fois sur une machine virtuelle 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Ainsi, l’utilisateur de VM/CMS passe toujours par les deux systèmes : ¤ Pour se connecter la première fois : Il doit créer une machine virtuelle sous VM en définissant ses limites (mémoire, périphériques, etc.), puis y générer le système CMS ¤ Par la suite, au moment de la connexion, il faut passer par deux étapes : Se connecter sous VM, puis charger CMS dans la machine virtuelle ¤ VM/CMS a été au départ dans un but universitaire, mais fut rapidement réclamé par les clients qui utilisaient VM pour des migrations d'un système à un autre plus puissant ¤ Les codes source de CMS étant distribués gratuitement à tout client le demandant, les universités commencèrent à créer leurs propres versions améliorées de CMS, les présentant et se les échangeant lors de réunions ¤ La multiplicité d'appels à l'assistance téléphonique (alors gratuite) d'IBM pour des défauts n'existant que dans les versions modifiées conduisit cette société à adopter une stratégie consistant à ne plus fournir que le code machine et non le code source ¤ Cette décision sonna la mort de CMS dans les universités au profit d'un autre système dont le code restait pour sa part accessible et modifiable : UNIX 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Avec ces systèmes de troisième génération, il fallait souvent plusieurs heures pour récupérer des résultats d’un travail ¤ Cela pouvait être encore plus long lorsqu’un « ; » mal placé dans un programme entraînait une erreur de compilation ! ¤ Le désir des utilisateurs d’avoir des résultats plus rapidement, amena les concepteurs à se pencher sur la notion de temps partagé (time-sharing) ¤ Cette notion est une variante du concept de la multiprogrammation. Ainsi, avec un système en temps partagé : ¤ Plusieurs programmes sont chargés en mémoire ¤ Chaque programme est exécuté pendant une durée de quelques millisecondes, appelée « Quantum de temps » ¤ A la fin du quantum de temps, le système passe au programme suivant ¤ Ce quantum de temps, très court, donne l'illusion que les programmes s'exécutent simultanément… une illusion qui existe encore avec les systèmes d'exploitation contemporains 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Cette notion vit le jour dès 1963 au M.I.T. (Massachusetts Institut of Technology) sur un « IBM 7094 » modifié, grâce à une collaboration entre « Bell Labs » et « General Electric » ¤ Néanmoins, pour la mettre en œuvre, il était absolument nécessaire que la machine qui devait supporter un tel système puisse matériellement assurer à tous les travaux chargés en même temps en mémoire, une protection des zones mémoire utilisées ¤ Ce qui fut fait seulement avec l’avènement de nouvelles technologies sur les machines de troisième génération ¤ Le premier système temps partagé fut le système MULTICS (MULTIplexed Information and Computing Service) qui tournait sur les machines du type GE-645 développé conjointement par Bell Labs et General Electric ¤ Ce sont ses travaux qui furent à la base du développement du système UNIX qui est depuis devenu le standard des systèmes d’exploitation sur les mini-ordinateurs et les stations de travail 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ Cette notion vit le jour dès 1963 au M.I.T. (Massachusetts Institut of Technology) sur un « IBM 7094 » modifié, grâce à une collaboration entre « Bell Labs » et « General Electric » ¤ Néanmoins, pour la mettre en œuvre, il était absolument nécessaire que la machine qui devait supporter un tel système puisse matériellement assurer à tous les travaux chargés en même temps en mémoire, une protection des zones mémoire utilisées ¤ Ce qui fut fait seulement avec l’avènement de nouvelles technologies sur les machines de troisième génération ¤ Le premier système temps partagé fut le système MULTICS (MULTIplexed Information and Computing Service) qui tournait sur les machines du type GE-645 développé conjointement par Bell Labs et General Electric ¤ Ce sont ses travaux qui furent à la base du développement du système UNIX qui est depuis devenu le standard des systèmes d’exploitation sur les mini-ordinateurs et les stations de travail 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ En 1969, les ingénieurs Ken Thompson et Dennis Ritchie des laboratoires Bell rêvent d'utiliser le système d'exploitation Multics, mais le matériel pour le faire fonctionner est tout simplement hors de prix ¤ Thompson se lance dans l'écriture d'une version allégée de Multics pour un PDP-7 inutilisé. Le système, fonctionnel, est surnommé UNICS (UNiplexed Information and Computing Service) : ¤ Par plaisanterie de la part d’un autre chercheur de Bell Labs, Brian Kernighan, : « Eunuchs » voulant dire eunuque en anglais ce qui correspondait bien à l’utilisation « castrée » faite alors de MULTICS pour créer ce nouveau système temps partagé ¤ En 1970, Dennis Ritchie créera le Langage C pour réécrire le système UNICS qui devient alors le système UNIX qui se révèle particulièrement simple à porter sur de nouvelles plateformes, ce qui assura son succès ¤ Ce langage a conservé de cela une très grande efficacité pour tout développement système ¤ Ainsi, le noyau de grands systèmes d'exploitation d’aujourd’hui, comme Windows, Linux, Mac OS, sont développés en grande partie en langage C 3ème génération (1963-1971) : Circuits intégrés et multiprogrammation ¤ On s'oriente alors vers l'élaboration de langages de programmation de plus en plus proches des langues naturelles : ¤ Le BASIC (Beginner's All-purpose Symbolic Instruction Code), basé sur le Fortran, fut conçu en 1964 par Thomas Kurtz et John Kemeny (mathématiciens au Dartmouth College), pour permettre à des étudiants non scientifiques d’utiliser des ordinateurs (le Fortran était réservé aux « spécialistes ») ¤ Le PL/1 (Programming Language number 1), conçu par IBM en 1965 ¤ Le Pascal a été inventé par Niklaus Wirth (informaticien Suisse) dans les années 1970 ¤ Ce langage est l'un de ceux qui ont servi à enseigner la programmation structurée : ¤ Le programme est un assemblage de procédures et de fonctions ¤ Les compilateurs Pascal permettent des mises au point rapides et sûres ¤ En 1969, né le premier réseau d’ordinateur : ¤ ARPANET (Advanced Research Projects Agency NETwork) reliant 4 ordinateurs de 4 universités différentes Chapitre 1 : Introduction et Concepts Historique des machines et des systèmes d’exploitation 1ère Génération (1945 - 1955) : Tubes à vides et panneaux de raccordement 2ème Génération (1955 – 1963) : Transistors et traitement par lots 3ème Génération (1963 – 1971) : Circuits intégrés et multiprogrammation 4ème Génération (1980 – 1990) : L’avènement des micro-ordinateurs 5ème Génération (1990 à nos jours) : Multimédia et Internet 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ La 4ème génération est marquée par l’invention du micro-processeur (chip) en 1971 par Marcian Hoff, alors ingénieur chez Intel (créée en 1968) ¤ Le premier modèle appelé Intel 4004 était le premier circuit intégré incorporant tous les éléments d'un ordinateur dans un seul boîtier (unité de calcul, mémoire, contrôle des E/S) : ¤ Il avait une taille de 3,2 mm ¤ Il pouvait effectuer jusqu'à 60 000 opérations par seconde, ce qui constituait une véritable révolution pour l’époque 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ Le développement de la technologie électronique permit l’augmentation de la densité du nombre de composants dans les circuits intégrés, ainsi que la miniaturisation des systèmes et l’augmentation de leur performance ¤ L’échelle d’intégration se fit à grande vitesse : ¤ SSI (Small Scale integration) : 10 transistors en 1964 ¤ MSI (Medium Scale integration) : 500 transistors en 1968 ¤ LSI (Large Scale Integration) : 10 000 transistors en1971 ¤ VLSI (Very Large Scale Integration ) : 100 000 transistors en 1980 ¤ ULSI (Ultra Large Scale Integration) : 1 000 000 de transistors en 1984 à plusieurs milliards aujourd'hui sur quelques mm2 ¤ La possibilité de placer autant de composants sur un support de la taille d'une pièce de 50 centimes permit de réduire la taille et le prix des ordinateurs et d’améliorer leur fiabilité ¤ L’ordinateur peut alors être utilisé par Monsieur « tout le monde »… c’est de début de l’informatique familiale 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ La miniaturisation du processeur est l’invention qui a révolutionné le monde de l’informatique : elle a en effet permis de fabriquer des ordinateurs bien moins encombrants appelés micro-ordinateurs ¤ Une telle généralisation des ordinateurs amena des constructeurs à lancer sur le marché des micro-ordinateurs prévus pour pouvoir être utilisés par tout un chacun ¤ En 1973, le premier micro-ordinateur vendu (8 500 Fr) tout assemblé près à l’usage est le MICRAL conçu par le Français, François Gernelle de la société R2E (Réalisations Études électroniques) ¤ Il était à base du microprocesseur Intel 8008 ¤ Il ne possédait à l’origine ni écran, ni clavier mais avait pour périphériques un télétype et un magnétophone à cassette ¤ Les entrées étaient assurées à l'aide de commutateurs tandis que l'affichage s'effectuait sur des voyants 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ L’Alto de Xerox fut conçu en 1973 au Xerox Parc par Charles P. Thacker qui a contribué le domaine des interfaces graphiques homme-machine 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ L’Alto de Xerox fut conçu en 1973 au Xerox Parc par Charles P. Thacker qui a contribué le domaine des interfaces graphiques homme-machine ¤ C’était un outil destiné à la recherche et à rester à Xerox Parc, et non un produit commercial ¤ Il était le premier à utiliser la métaphore du bureau et une interface graphique qui a inspiré APPLE par la suite ¤ Il fut le prototype de ce qui deviendra plus tard Xerox Star ¤ En 1975, apparaît l'Altair 8800 du constructeur américain MITS (Micro Instrumentation and Telemetry Systems) basé sur le microprocesseur Intel 8080 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ L’Alto de Xerox fut conçu en 1973 au Xerox Parc par Charles P. Thacker qui a contribué le domaine des interfaces graphiques homme-machine ¤ C’était un outil destiné à la recherche et à rester à Xerox Parc, et non un produit commercial ¤ Il était le premier à utiliser la métaphore du bureau et une interface graphique qui a inspiré APPLE par la suite ¤ Il fut le prototype de ce qui deviendra plus tard Xerox Star ¤ En 1975, apparaît l'Altair 8800 du constructeur américain MITS (Micro Instrumentation and Telemetry Systems) basé sur le microprocesseur Intel 8080 ¤ Il était vendu en kit électronique à quelques milliers d'exemplaires ¤ Chaque commande ou valeur était programmée par le déplacement des interrupteurs et l'affichage apparaissait sous la forme d'une combinaison de leds allumées ou éteintes ¤ On pouvait lui adjoindre un lecteur de disquettes 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ Dans la foulée, le PET (Personal Electronic Transactor) de Commodore fut commercialisé en 1977, au prix de 7000 $ ¤ Il est monobloc avec une unité centrale basée sur un processeur 6502 cadencé à 1 MHz, et une RAM de 4 ou 8 Ko ¤ Il dispose d’un écran monochrome vert, d’une unité de stockage sur cassette audio et un clavier QWERTY de 73 touches dont un pavé numérique ¤ Le TRS-80 de Tandy Radio Shack a été Introduit en 1977 au prix de 6 000$. Il était doté : ¤ D'un microprocesseur Zilog Z80, cadencé à 1,77 MHz ¤ D’une RAM et d’une ROM de 4 ko chacune (dans une deuxième version la RAM était de 16 ko et la ROM de 12 ko) ¤ D’un interpréteur BASIC nativement en ROM 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ En 1975, l'Altair fit la une du magazine électronique américain Popular electronics ¤ Deux pionniers de la micro-informatique, Bill Gates et son ami d'école Paul Allen le découvrent alors dans le magazine et proposent par courrier à la société MITS de développer le langage informatique Altair BASIC et son interpréteur pour cette machine ¤ MITS accepta leur proposition et ils développèrent leur BASIC en trente jours en travaillant à Boston sur un simulateur PDP-10 ¤ Une fois la version au point en octobre 1975, Paul Allen s'envole pour Albuquerque pour y rencontrer son client et lui faire une démonstration de leur Altair BASIC avec succès ¤ Le langage fonctionne du premier coup alors qu'il n'a jamais été testé sur un vrai Altair 8800 et qu'il est sauvegardé sur ruban perforé ¤ Paul Allen et Bill Gates fondent alors la société Microsoft et passent un accord de commercialisation avec MITS pour toucher 35 dollars par copie de leur logiciel vendu avec un Altair 8800 ¤ L'Altair 8800 ne survit pas longtemps à la formidable évolution de la micro-informatique, mais demeure l'un des premiers ordinateurs personnels vendu aux particuliers 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ En 1977, Steve Jobs et Steve Wozniak créent, ce qui allait devenir un géant de l’informatique personnel, APPLE, pour pour commercialiser l’APPLE II ¤ Ils avaient créé leur premier ordinateur, l’APPLE I, dans leur garage un an plus tôt APPLE I, créée dans le garage APPLE II est équipé d'un processeur Motorola 6502 de Steve Jobs en 1976 tournant à 1 MHz et possède 4 ko de mémoire Il est commercialisé en 1977 au prix de $1300 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ Dès 1982, un groupe d’informaticiens du centre de recherche de la société XEROX à Palo Alto en Californie, avait mis au point un ordinateur révolutionnaire baptisé STAR ¤ Celui-ci était doté d’une mémoire peu commune pour l’époque (plusieurs centaines de Ko), d’un écran à haute résolution graphique et d’un nouveau type de périphérique curieusement appelé souris (mouse) ¤ Cette machine intégrait le concept de menus déroulants et celui de multifenêtrage (multi-windowing) ¤ Tout ce qui suscite l’engouement des utilisateurs d’aujourd’hui et qui a contribué au développement et à la vulgarisation de l’informatique se trouvait déjà dans la machine STAR ¤ Cependant, cette machine ne connut aucun succès commercial, à cause de la politique de XEROX mais valut un prestige considérable à l’équipe « PARC » (Palo Alto Research Center) ¤ C’est ce concept qui fut repris ensuite par les gens de chez APPLE lors des développements du Lisa et du Macintosh 4ème génération (1971-1990) : L’avènement des micro-ordinateurs ¤ Le concept d’interaction homme-machine (Human-Computer Interaction) développé alors est la métaphore du bureau (desktop) ¤ Sur ces machines, l’interface s’efforce d’être la reproduct

Use Quizgecko on...
Browser
Browser