# Multiple Virtual Storage

Multiple Virtual Storage (MVS) est le système d'exploitation des gros ordinateurs (« mainframes ») d'IBM.
MVS a été lancé en 1974 par IBM. Le but était de fournir un système très fiable pour supporter de gros environnements de production. Il est destiné aux grosses machines du constructeur IBM (machines à technologie CMOS de la série 360 / 370 de nos jours appelée zSeries).
Comme son nom veut le faire comprendre (« Multiple Virtual Storage »), il applique le principe de la mémoire virtuelle pour traiter différents travaux simultanément sur une machine comprenant un ou plusieurs processeurs (jusqu'à 54, sans doute davantage dans les années qui viennent).
MVS se veut universel, et gère des sous-systèmes aptes à répondre à des requêtes en mode interactif (appelé aussi « dialogué »), qu'il s'agisse aussi bien de « temps partagé » (TSO : l'ordinateur sert plusieurs utilisateurs – informaticiens le plus souvent – en même temps) que de « transactionnel », où l'utilisateur final, non forcément informaticien, dialogue avec des applications en rapport avec sa fonction dans l'entreprise (moniteurs transactionnels CICS, IMS). MVS reste cependant bien adapté au traitement par lots (batch), pris en charge par le langage JCL.

## Caractéristiques

Les caractéristiques du système MVS sont les suivantes :
* Multiprogrammation : plusieurs utilisateurs ou travaux peuvent être servis simultanément par la machine. « Simultanément » signifie que, bien qu'à un instant donné un seul travail puisse être traité par un processeur, dans les conditions habituelles tous les utilisateurs sont servis à tour de rôle si rapidement qu'à l'échelle humaine ils paraissent utiliser tous en même temps la machine.
* MVS réalise aussi une fonction de multi-tâche, plus fine que celle de multiprogrammation : un travail peut être constitué de différentes tâches fonctionnant les unes après les autres ou simultanément : dans ce dernier cas elles entrent ainsi en compétition pour l'usage du ou des processeurs.
* La multiprogrammation et le multi-tâche offrent une « simultanéité » et une multiplicité d'accès au processeur satisfaisantes pour tous les utilisateurs. Ils optimisent aussi l'emploi du processeur en réduisant au maximum ses « temps morts » : quand le travail en cours attend un événement quelconque (notamment la fin d'une entrée-sortie, opération « longue » - c'est le cas d'une attente de page), le processeur peut l'abandonner pour un autre processus prêt à être activé.
* Multitraitement : plusieurs processeurs peuvent être gérés par le système (jusqu'à 2 en MVS-SP, 16 à partir de MVS-XA). Ainsi, à un instant donné, sont traités par la machine autant de processus que de processeurs. Ceci améliore le rendement global du système à condition que l'algorithme d'ordonnancement soit efficace.
* La mémoire virtuelle : chaque travail se voit offrir une taille de mémoire possible pouvant être bien supérieure à la mémoire réellement disponible. Ceci est rendu possible par le fait qu'à un instant donné un travail n'a pas besoin de toutes les données ni de toutes les sections de code qui le composent. Le système lui laisse les portions de mémoire qui lui sont nécessaires à cet instant (Working Set), le reste pourra être appelé du disque à tout moment, ou transféré sur disque s'il s'agit de données modifiées entre-temps, récupérable à tout moment à la demande du travail. Le reste de la mémoire est utilement occupé par les routines et données du système ou par d'autres travaux prêts à être traités par le ou les processeurs.
* Forte dépendance vis-à-vis de l'architecture matérielle : certaines fonctionnalités de base du système sont partiellement implémentées au niveau du micro-code, (par exemple les techniques de sérialisation qui dépendent de l'instruction Compare-and-swap), ou reposent sur des particularités de l'architecture (comme les mécanismes de protection mémoire, qui reposent sur la présence de bits supplémentaires non adressables associés à chaque bloc de RAM).

## Chronologie

* années 1960 : OS/360 version OS/VS2 (MVT) est le grand ancêtre de MVS ; apparition de CICS et IMS
* années 1970 : architecture S/370 et mémoire virtuelle ; 16 canaux d'E/S ; adressage 24 bits ("ligne" des 16 MB)
* années 1980 : MVS/XA et l'adressage 31 bits ; 256 canaux d'E/S ; apparition de DB2 (SGBD relationnel)
* années 1990 : canaux en fibre optique ; Sysplex (clustering de machines) ; abandon de la technologie ECL et passage au CMOS ; MVS devient OS/390, avec un UNIX intégré ("USS", UNIX System Services : il s'agit en fait des services POSIX normalisés)
* années 2000 : la dénomination OS/390 disparaît au profit de z/OS. Mode 64 bits ; ouverture à Internet (Websphere), TCP/IP.