CP/CMS - CP/CMS

CP/CMS
IBM logo.svg
Développeur Centre scientifique IBM Cambridge
Écrit en Assembleur (F)
Famille d'OS MV
État de fonctionnement Historique
Modèle source Code source (voir le texte pour plus de détails)
Première version mai 1968 ; il y a 53 ans ( 1968-05 )
Dernière version 3.2 / 1972 ; il y a 49 ans ( 1972 )
Disponible en Anglais
Plateformes Système IBM/360-67 ; également System/370 avec matériel de mémoire virtuelle (non présent dans les modèles S/370 d'origine) ; également utilisé sur du matériel expérimental
Interface utilisateur par défaut Interface de ligne de commande
Licence Bibliothèque IBM Type-III (gratuite sous forme de code source, sans frais pour les clients IBM, sans support)

CP/CMS ( Control Program/Cambridge Monitor System ) est un système d'exploitation à temps partagé abandonné de la fin des années 60 et du début des années 70, connu pour ses excellentes performances et ses fonctionnalités avancées. Il a eu trois versions distinctes :

  • CP-40 /CMS, un important système de recherche « unique » qui a établi l' architecture de la machine virtuelle CP/CMS
  • CP-67 /CMS, une réimplémentation de CP-40/CMS pour IBM System/360-67 , et l'objectif principal de cet article
  • CP-370 /CMS, une réimplémentation de CP-67/CMS pour le System/370 - jamais publié en tant que tel, mais est devenu la base du système d'exploitation VM/370 d'IBM , annoncé en 1972.

Chaque implémentation était une refonte substantielle de son prédécesseur et un pas en avant évolutif. CP-67/CMS a été la première architecture de machine virtuelle largement disponible. IBM a lancé cette idée avec ses systèmes de recherche M44/44X (qui utilisaient la virtualisation partielle ) et CP-40 (qui utilisait la virtualisation complète ).

En plus de son rôle de prédécesseur de la famille VM, CP/CMS a joué un rôle important dans le développement de la théorie du système d'exploitation (OS), la conception du System/370 d'IBM, l' industrie du temps partagé et la création d'un communauté d'utilisateurs autonome qui anticipait le mouvement du logiciel libre d'aujourd'hui .

Histoire

Les paramètres architecturaux et stratégiques fondamentaux de CP/CMS ont été établis dans CP-40, qui a commencé à être utilisé en production au Cambridge Scientific Center d'IBM au début de 1967. Cet effort s'est produit dans un milieu politique et technique complexe , discuté assez longuement et soutenu par des citations de première main. dans l'article Wikipedia History of CP/CMS .

En un mot:

  • Au début des années 1960, IBM a cherché à maintenir sa domination sur le calcul scientifique, où les efforts de partage du temps tels que CTSS et le projet MAC du MIT se sont concentrés. Mais IBM s'était engagé dans un énorme projet, le System/360 , qui a amené l'entreprise dans une direction différente.
  • La communauté du temps partagé a été déçue par le manque de capacités de partage du temps du S/360. Cela a conduit à des pertes de ventes clés d'IBM chez Project MAC et Bell Laboratories . Le Cambridge Scientific Center (CSC) d'IBM, créé à l'origine pour soutenir le projet MAC, a entrepris un effort pour regagner la crédibilité d'IBM en matière de temps partagé, en créant un système d'exploitation à temps partagé pour le S/360. Ce système deviendra éventuellement CP/CMS. Dans le même esprit, IBM a conçu et publié un modèle S/360 avec des fonctionnalités de temps partagé, le IBM System/360-67, et un système d'exploitation à temps partagé, TSS/360 . TSS a échoué ; mais le 360-67 et le CP/CMS ont réussi, malgré les batailles politiques internes sur le partage du temps et les efforts concertés d'IBM pour abandonner l'effort du CP/CMS.
  • En 1967, l'utilisation de la production CP/CMS a commencé, d'abord sur le CP-40 de CSC, puis plus tard sur le CP-67 aux laboratoires Lincoln et sur d'autres sites. Il a été rendu disponible via la bibliothèque IBM Type-III en 1968. En 1972, CP/CMS avait connu plusieurs versions ; c'était un système robuste et stable fonctionnant sur 44 systèmes ; il pourrait prendre en charge 60 utilisateurs en temps partagé sur un S/360-67 ; et au moins deux fournisseurs commerciaux de temps partagé ( National CSS et IDC ) revendaient du temps S/360-67 à l'aide de la technologie CP/CMS.
  • En 1972, IBM a annoncé l'ajout de la mémoire virtuelle à la série S/370, ainsi que le système d'exploitation VM/370, une réimplémentation de CP/CMS pour le S/370. Cela a marqué la fin des versions CP/CMS, bien que le système ait continué son existence indépendante pendant un certain temps. Les versions de VM ont continué à inclure le code source pendant un certain temps et les membres de la communauté des VM sont restés longtemps des contributeurs actifs.

Aperçu

 CTSS 
> IBM M44/44X
>> CP-40/CMSCP[-67]/CMS  VM/370 → Versions VM/SE → Versions VM/SP → Versions VM/XA → VM/ESAz/VM
VP/CSS
> TSS/360
> TSO pour MVT → pour OS/VS2 → pour MVS → ... → pour z/OS
>> MULTICS et la plupart des autres plateformes de temps partagé

CP/CMS a été construit par le Cambridge Scientific Center (CSC) d' IBM , un laboratoire de recherche et développement lié au MIT , sous la direction de Robert Creasy . Les objectifs du système, le processus de développement, la version et l'héritage de la technologie de pointe, distinguent ce système des autres systèmes d'exploitation de son époque et des autres grands projets IBM. Il s'agissait d'un système open source , mis gratuitement à la disposition de tous les clients IBM sous forme de code source, dans le cadre de la bibliothèque IBM Type-III non prise en charge . Les utilisateurs de CP/CMS se soutenaient eux-mêmes et les uns les autres. Des circonstances inhabituelles, décrites dans la section Historique ci-dessous, ont conduit à cette situation.

CP/CMS se composait de deux éléments principaux :

  • CP , le programme de contrôle , a créé l'environnement de la machine virtuelle. La version largement utilisée était le CP-67, fonctionnant sur le S/360-67. (Le système de recherche CP-40 a établi l'architecture. Une troisième version, CP-370, est devenue VM/370.) Au lieu de diviser explicitement la mémoire et les autres ressources entre les utilisateurs, ce qui était l'approche traditionnelle, CP a fourni à chaque utilisateur un ordinateur System/360 autonome simulé . Chaque système était capable d'exécuter n'importe quel logiciel S/360 qui s'exécutait sur la machine nue et donnait en fait à chaque utilisateur un système informatique privé.
  • CMS , le Cambridge Monitor System (et aussi le Console Monitor System - mais renommé Conversational Monitor System dans VM) était un système d'exploitation léger à utilisateur unique, pour une utilisation interactive en temps partagé. En exécutant de nombreuses copies du CMS dans les machines virtuelles du CP, au lieu de plusieurs copies d'un grand système d'exploitation multitâche traditionnel, la surcharge par utilisateur était moindre. Cela a permis à un grand nombre d'utilisateurs simultanés de partager un seul S/360.

Le concept de machine virtuelle CP/CMS a constitué une avancée importante dans la conception du système d'exploitation.

  • En isolant les utilisateurs les uns des autres, CP/CMS a considérablement amélioré la fiabilité et la sécurité du système.
  • En simulant un ordinateur complet et autonome pour chaque utilisateur, CP/CMS pourrait exécuter n'importe quel logiciel S/360 dans un environnement de temps partagé, et pas seulement des applications spécifiquement conçues pour le partage de temps.
  • En utilisant un CMS léger comme interface utilisateur principale, CP/CMS a atteint des performances de partage de temps sans précédent. De plus, la simplicité du CMS a rendu plus facile la mise en œuvre des améliorations de l'interface utilisateur que dans le système d'exploitation traditionnel.

IBM a réimplémenté CP/CMS en tant que gamme de produits VM/370, lancée en 1972 lorsque la mémoire virtuelle a été ajoutée à la série S/370 . Les successeurs de VM/370 (tels que z/VM ) restent largement utilisés aujourd'hui. (Il est important de noter qu'IBM a réimplémenté CP-67, comme il avait CP-40, et ne s'est pas contenté de le renommer et de le reconditionner. VM a coexisté avec CP/CMS et ses successeurs pendant de nombreuses années. Il convient donc de visualiser CP/ CMS en tant que système d'exploitation indépendant, distinct de la famille VM.)

CP/CMS en tant que logiciel libre

CP/CMS a été distribué sous forme de code source , et de nombreux utilisateurs de CP/CMS ont été activement impliqués dans l'étude et la modification de ce code source. Une telle implication directe de l'utilisateur avec un système d'exploitation fourni par un fournisseur était inhabituelle.

À l'ère CP/CMS, de nombreux fournisseurs distribuaient les systèmes d'exploitation dans un code source lisible par machine. IBM a fourni un code source facultatif pour, par exemple, OS/360 , DOS/360 , et pour plusieurs systèmes d'exploitation IBM plus récents. Avec tous ces systèmes, une certaine connaissance du code source du système était également impliquée dans le processus SYSGEN , comparable à une construction du noyau dans les systèmes modernes également lors de l'installation d'un Starter Set . (Quarante ans plus tard, l' émulateur Hercules peut être utilisé pour exécuter des versions fossilisées de ces systèmes, basées sur un code source désormais traité comme faisant partie du domaine public .)

L'importance du code source du système d'exploitation a changé au fil du temps. Avant qu'IBM ne sépare le logiciel du matériel en 1969, le système d'exploitation (et la plupart des autres logiciels) était inclus dans le coût du matériel. Chaque fournisseur avait l'entière responsabilité de l'ensemble du système, du matériel et des logiciels. Cela rendait le support de distribution relativement peu important. Après le dégroupage d'IBM, le logiciel du système d'exploitation a été livré en tant que logiciel IBM System Control Program (SCP) , éventuellement sous forme de code objet uniquement (OCO).

Pour des raisons compliquées, CP/CMS n'a pas été publié normalement. Il n'était pas pris en charge par IBM, mais faisait partie de la bibliothèque IBM Type-III non prise en charge , une collection de logiciels fournis par le personnel d'IBM (de même, les logiciels fournis par les clients formaient la bibliothèque Type-IV). IBM a distribué cette bibliothèque à ses clients pour une utilisation « telle quelle ». Le manque de support IBM direct pour ces produits a forcé les utilisateurs actifs à se prendre en charge et a encouragé les modifications et le support mutuel. CP/CMS et d'autres produits de type III étaient les premières formes de logiciels libres .

La distribution du code source d'autres systèmes d'exploitation IBM peut avoir continué pendant un certain temps (par exemple OS/360 , DOS/360 , DOS/VSE , MVS et même TSS/370 , qui sont tous aujourd'hui généralement considérés comme appartenant au domaine public ) depuis ils ont sans doute été publiés sans avis de droit d'auteur avant 1978. Cependant, le statut non pris en charge de CP/CMS a exercé des pressions différentes sur sa communauté d'utilisateurs et a créé le besoin de distribution du code source.

Curieusement, CP/CMS a été fourni à la bibliothèque de type III par le laboratoire Lincoln du MIT et non par IBM, malgré le fait que le système a été construit par le Cambridge Scientific Center d'IBM . Cette décision surprenante a été décrite comme une forme de collusion pour déjouer les forces politiques d'IBM opposées au temps partagé. Cela peut également refléter la quantité de contributions formelles et informelles du MIT et d' Union Carbide qui ont contribué à la conception et à la mise en œuvre du CP-40, du S/360-67, du CP-67 et du CMS. Voir Historique de CP/CMS (notes historiques) pour plus d'informations et de références sur ce sujet.

De nombreux utilisateurs de CP/CMS ont apporté des modifications importantes à leurs propres copies du code source. Une grande partie de ce travail a été partagée entre les sites et des changements importants ont été réintégrés dans le système central. D'autres utilisateurs, tels que National CSS et certains sites universitaires, ont poursuivi le développement indépendant de CP/CMS, plutôt que de passer à VM/370 lorsqu'il est devenu disponible. Ces efforts ont divergé de la communauté, dans ce que l'on appellerait aujourd'hui un fork logiciel .

Après qu'IBM a publié VM/370, la distribution du code source de VM s'est poursuivie pendant plusieurs versions. (Le projet VM n'a pas adopté l'utilisation de PL/S , un langage de programmation de systèmes internes mandaté pour une utilisation au sein d'IBM sur de nombreux projets comparables. L'utilisation de PL/S aurait rendu la distribution du code source impossible. IBM a tenté de se détourner de l'assemblage langage vers des langages de niveau supérieur dès 1965, et faisait un usage substantiel de PL/S en 1969, par exemple dans MVS. PL/S était considéré comme un secret commercial à l'époque et n'était pas disponible pour les clients. IBM a apparemment fait des exceptions à cette règle politique beaucoup plus tard.) La communauté des utilisateurs de VM a continué à apporter d'importantes contributions au logiciel, comme elle l'avait fait pendant la période CP/CMS Type-III. Peu de sites OS ou DOS présentaient une implication active des utilisateurs dans les composants internes du système d'exploitation, mais cela a été constaté sur de nombreux sites de VM. Cette prise en charge inversée a aidé les concepts CP/CMS à survivre et à évoluer, malgré le statut de citoyen de seconde classe de VM chez IBM.

Architecture

L'architecture CP/CMS était révolutionnaire pour l'époque. Le système consistait en un programme de contrôle de virtualisation (CP) qui créait plusieurs machines virtuelles indépendantes (VM). La virtualisation de la plate-forme a été possible grâce à deux éléments de l'IBM System/360-67 :

  • Ségrégation des instructions « état du superviseur » privilégiées des instructions « état du problème » normales
  • Matériel de traduction d'adresses

Lorsqu'un programme s'exécutait en « état de problème », l'utilisation d'une instruction privilégiée ou d'une adresse mémoire invalide amenait le matériel à déclencher une condition d'exception. En piégeant ces conditions, CP pourrait simuler le comportement approprié, par exemple effectuer des opérations d'E/S ou de pagination. Un système d'exploitation invité, qui fonctionnerait en « état de superviseur » sur une machine nue, a été exécuté en « état de problème » sous CP.

Le résultat a été un environnement entièrement virtualisé. Chaque machine virtuelle avait son propre ensemble de périphériques virtuels, mappés à partir de l'environnement matériel réel du système. Ainsi, un télétype commuté donné était présenté à son instance de VM comme sa console virtuelle .

A noter qu'en CP-67, certaines instructions dépendantes du modèle et de diagnostic n'étaient pas virtualisées, notamment l'instruction DIAG. En fin de compte, lors du développement ultérieur chez IBM et ailleurs, les instructions DIAG ont été utilisées pour créer une interface non virtualisée, vers ce qu'on a appelé un hyperviseur . Les systèmes d'exploitation clients pourraient utiliser ce mécanisme pour communiquer directement avec le programme de contrôle ; cela a offert des améliorations de performances spectaculaires.

N'importe quel système d'exploitation S/360 pouvait en fait être exécuté sous CP, mais les utilisateurs normaux exécutaient Cambridge Monitor System (CMS), un système d'exploitation simple à utilisateur unique. CMS a permis aux utilisateurs d'exécuter des programmes et de gérer leurs appareils virtuels. CP-67 versions 1 et 2 ne prenaient pas en charge la mémoire virtuelle à l'intérieur d'une machine virtuelle. Cela a été ajouté dans la version 3. À ce stade, les tests et le développement de CP lui-même pouvaient être effectués en exécutant une copie complète de CP/CMS dans une seule machine virtuelle. Certains travaux du système d'exploitation CP/CMS, tels que le développement du CP-370 et les tests MVS, ont exécuté des piles profondes à quatre ou cinq niveaux de simulations de matériel et de système d'exploitation.

La conception CP/CMS est différente des précédents systèmes d'exploitation monolithiques d' IBM , elle sépare le "grand système" complexe (dispatching, gestion du matériel, stockage de masse) du "petit système" (exécution de programme d'application, E/S de fichier, entrée/sortie de console) . La re-catégorisation des deux systèmes dans leurs propres entités empêche un bogue dans le système d'un utilisateur d'affecter les deux. Il s'agit d'une fonctionnalité modèle dans les systèmes d'exploitation à micro-noyau .

La décision d'IBM d'implémenter des fonctionnalités de virtualisation et de mémoire virtuelle dans la conception S/370 ultérieure (bien qu'elle soit absente de la série S/370 initiale) reflète, au moins en partie, le succès de l'approche CP/CMS. À leur tour, la survie et le succès de la famille de systèmes d'exploitation VM d'IBM, et de la technologie de virtualisation en général, doivent beaucoup au S/360-67.

À bien des égards, les produits CP-67 et CP/CMS d'IBM anticipaient (et fortement influencés) les logiciels de virtualisation contemporains , tels que VMware Workstation, Xen et Microsoft Virtual PC .

Terminologie associée

  • CP : Programme de contrôle . CP-40 et CP-67 étaient des implémentations pour le S/360-40 personnalisé de CSC et le S/360-67 standard, respectivement.
  • CMS : Cambridge Monitor System . Cette partie du système CP/CMS a été renommée Conversational Monitor System lorsqu'IBM a publié VM/370. Cependant, contrairement à la transition CP vers VM, qui était une réimplémentation, une grande partie de CMS a été déplacée sans modification de CP/CMS vers VM/370.
  • VM : Virtual Machine , initialement le terme pseudo-machine était utilisé, mais bientôt la machine virtuelle a été empruntée au projet IBM M44/44X . Il était bien établi dans CP/CMS au moment où IBM a introduit VM/370.
  • hyperviseur : un mécanisme de paravirtualisation . Ce terme a été inventé dans la réimplémentation par IBM du CP-67 sous le nom de VM/370.

Voir également

Notes de bas de page

Citations

Sources CP/CMS primaires

Sources CP/CMS supplémentaires

  • RJ Adair, RU Bayles, LW Comeau et RJ Creasy, A Virtual Machine System for the 360/40, IBM Corporation, Cambridge Scientific Center Report No. 320‐2007 (mai 1966)
    ― un article fondateur décrivant la mise en œuvre du concept de machine virtuelle, avec des descriptions du CSC S/360-40 personnalisé et de la conception CP-40
  • International Business Machines Corporation, CP-67/CMS , Programme 360D-05.2.005, IBM Program Information Department (juin 1969)
    ― Manuel de référence d'IBM
  • RA Meyer et LH Seawright, "Un système de partage de temps de machine virtuelle," IBM Systems Journal, Vol. 9, No. 3, pp. 199-218 (septembre 1970)
    décrit le système CP-67/CMS, décrivant les caractéristiques et les applications
  • RP Parmelee, TI Peterson, CC Tillman et DJ Hatfield, "Concepts de stockage virtuel et de machine virtuelle", IBM Systems Journal, vol. 11, n° 2 (juin 1972)

Sources CP/CMS de fond

  • FJ Corbato, et al., The Compatible Time-Sharing System, A Programmer's Guide, MIT Press, 1963
  • FJ Corbató, M. Merwin-Daggett et RC Daley, "Un système expérimental de temps partagé," Proc. Spring Joint Computer Conference (AFIPS) 21, pp. 335-44 (1962) - description de CTSS
  • FJ Corbató et VA Vyssotsky, "Introduction et aperçu du système MULTICS", Proc. Fall Joint Computer Conference (AFIPS) 27, pp. 185-96 (1965)
  • PJ Denning, "Mémoire virtuelle", Enquêtes informatiques Vol. 2, p. 153-89 (1970)
  • JB Dennis, "Segmentation et conception de systèmes informatiques multi-programmés," JACM Vol. 12, pp. 589–602 (1965)
    ― exigences de mémoire virtuelle pour le projet MAC, destiné au GE 645
  • CAR Hoare et RH Perrott, Eds., Operating Systems Techniques , Academic Press, Inc., New York (1972)
  • T. Kilburn, DBG Edwards, MJ Lanigan et FH Sumner, "Système de stockage à un niveau", IRE Trans. Électron. Ordinateurs EC-11, pp. 223-35 (1962)
    ― Manchester/Ferranti Atlas
  • RA Nelson, "Mapping Devices and the M44 Data Processing System" , rapport de recherche RC 1303 , IBM Thomas J. Watson Research Center (1964) à
    propos de l' IBM M44/44X
  • RP Parmelee, TI Peterson, CC Tillman et DJ Hatfield, "Concepts de stockage virtuel et de machine virtuelle", IBM Systems Journal , Vol. 11, p. 99-130 (1972)

Ressources CP/CMS supplémentaires en ligne

Des citations détaillées des points soulevés dans cet article peuvent être trouvées dans History of CP/CMS .

Liens externes