Présentation du système MVS

( Multiple Virtual Storage )

Bertrand GUILLAUME // Filiere Informatique et réseaux

1. Présentation du système MVS

1.1. Historique
1.2. Les caractéristiques

2. La ressource processeur

2.1. Rappel sur les notions de base
2.2. Gestion des interruptions
2.3. Le distributeur (Dispatcher)
2.4. Les multi-processeurs

3. La ressource mémoire

3.1. Présentation
3.2. Fonctionnement de la mémoire virtuelle

4. Les fichiers

4.1. Généralités
4.2. Les fichiers VSAM
Les transparents de l'exposé.

1. Présentation du système

1.1. Historique


Retour au sommaire

MVS a été lancé en 1974 pour prendre la relève des sytèmes MVT et SVS qui étaient déjà dépassés. Le but était de fournir un système très fiable pour supporter de gros environnements de production.
Le système MVS est certainement le plus élaboré et le plus fouillé des sytèmes d'exploitation IBM, certains disent le plus complexe et le plus lourd.
MVS applique le principe de la mémoire virtuelle pour traiter différent travaux simultanément sur une machine comprenant un ou plusieurs processeurs. Dommage votre navigateur n'affiche pas les images!!

1.2. Les caractèristiques du système

Retour au sommaire

Les caractéristiques du système MVS sont les suivantes :

2. La ressource processeur

2.1. Rappel sur les notions de base

Retour au sommaire

Les différentes interruptions sur le système MVS sont les suivantes :

On retrouve deux modes d'adressage distincts :

Le DAT ("Dynamic Address Translation") est le mécanisme qui permet de convertir les adresses virtuelles en adresses réelles.
Un programme peut fonctionner dans deux modes différents :

Le TCB ("Task Control Block") représente une tâche liée à un espace-adresse (mode habituel d'exploitation du processeur)

Le SRB ("Service Request Block")C’est une demande de service système de haute priorité dont le système peut demander l’exécution dans un espace-adresse donné.

Le PSW ("Program Status Word") est le registre du processeur qui caractérise l'état de la routine qui est cours d'execution sur le processeur. Il contient les informations capitales qu'il faut sauvegarder lors d'une interruption. C'est mot de 64 bits.

2.2. La gestion des interruptions

Retour au sommaire

Cette partie présente le mécanisme de gestion d'une interruptions. Une interruption n'est prise en compte que si le processus, en cours d'execution sur le processeur, est interruptible par ce type d'interruption.
Le programme A est en cours d'éxecution lorsque l'interruption SVC Call survient.

1) On sauvegarde le PSW courant dans une zone fixe de la mémoire (fonction du type d'interruption) : on parle d'ancien PSW (oldPSW).
2) On charge le PSW qui traite ce type d'interruption (newPSW). Dans notre cas il s'agit de SVC Call.
Il y a donc 6 couples possibles oldPSW/newPSW correspondant aux 6 types d'interruptions. Les 6 newPSW sont invariants et crées au démarrage du système.
3) Le nouveau PSW branche le processeur vers la routine de traitement d'interruption de premier niveau particulière au type d'interruption (on parle de FLIH : first Level Interrupt Handler). Les registres sont sauvegardés en mémoire centrale par cette routine de façon a pouvoir reprendre le processus interrompu exactement au point où il a été interrompu. La sauvegarde des registres s'effectue dans les 4 premiers K-octets : la PSA (Prefixed Storage Area). Chaque processeur a sa propre PSA, nous verrons qu'en mode multi-processeur cette zone pose problème.
Jusque là le processeur fonctionne en mode ininterruptible; il ne pourrait prendre en compte une nouvelle interruption sans risque pour le processus dont il traite l'interruption. Une fois la sauvegarde effectuée, il peut éventuellement revenir en mode interruptible et après analyse de l'interruption passer le contrôle à une routine spécifique.
4) Une routine de traitement de second niveau (SLIH : Second Level Handler Interrupt) s'éxecute pour répondre exactement à l'interruption. Dans notre cas il s'agira d'une routine SVC.
5) Après le traitement de l'interruption, le contrôle n'est pas forcément rendu à la routine interrompue. Le contrôle est le plus souvent rendu au distributeur.

Plusieurs interruptions peuvent survenir simultanément. Cependant, compte tenu du mécanisme simple d'échange de oldPSW/newPSW (sans gestion de pile d'interruptions), ne peuvent être prise en compte simultanément par le système que des interruptions de type différent : le système ne peut donc avoir à traiter simultanément que 6 interruptions au maximum.
Les 6 types d'interruprions sont traitées dans l'ordre suivant : Si par exemple surviennent en même temps 6 interruptions de type différent (le maximum que puisse traiter le système), surviendront alors 6 échanges successifs oldPSW/newPSW dans l'ordre inverse des priorités, en commençant par le restart et en terminant par le SVC. Le newPSW d'un type devient l'oldPSW d'une autre interruption. Ainsi par branchement au dernier newPSW, sera traitée l'interruption la plus prioritaire, puis celles de priorités inférieures.

2.3. Le dispatcher

Retour au sommaire

Le dispatcher ou distributeur recherche le travail le plus prioritaire pour lui fournir la ressource processeur dont il a besoin. Il est appelé en particulier après le traitement d'une interruption : on voit que son intervention est le plus part du temps aléatoire.


Les Address-Space présents en machine sont représentés vis-a-vis du dispatcher par un ASCB (Address Space Control Block). Chaque Address-Space a une priorité de dispatching (DPRTY) déterminé par les paramètres du système mais modifiable dynamiquement par le système.
Un certain nombre de TCB et SRB sont liés à un Address-Space et peuvent requérir la ressource processeur. Voici l'ordre d'attribution du processeur :

Privilégier la plus haute priorité laisse peu de ressource processeur aux processus de faible priorité, qui ne seront guère actifs qu'une fois tous les processus de priorité supérieure seront inactifs (en attente de résultat d'entrée-sortie...).
En pratique, en mettant de coté les Address-Space que l'on estime très importants et auxquels on effectera une forte priorité, on équilibrera l'utilisation du processeur en accordant le meilleure priorité aux travaux effectuant beaucoup d'entrees-sorties et la plus basse aux travaux très "gourmands" en ressource processeur (grands calculs par exemple).

2.4. Les multi-processeurs

Retour au sommaire

L'environnement multi-processeur implique le partage d'une même mémoire réelle : s'y trouvent les programmes et les données de processus susceptibles de s'executer sur l'un ou sur l'autre des processeurs.
Mais il y a un cas bien précis ou le partage de la mémoire pose un problème : le partage de la PSA (4 premier K-octets de la mémoire pour la sauvegarde des registres lors d'interruptions). Chaque processeur doit donc avoir sa propre PSA pour traiter les interruptions qui lui sont adressées. Chaque PSA est vue à l'adresse 0. Pour cela on utilise un artifice qui permet de maintenir en mémoire réelle plusieurs PSA.
Chaque processeur est pourvu d'un registre prefixe (Prefix Storage Register) contenant l'adresse en mémoire réelle de sa PSA. Cette adresse est établie une fois pour toutes au démarrage et obtenue dans une autre zone système, la SQA. A toute adresse réelle comprise entre 0 et 4095 est ajouté le contenu du registre préfixe, ce qui permet l'accès à la PSA du processeur.

La mise en commun de la mémoire entre plusieurs processeurs rend accessible a tout processeur les programmes et les données des processus actifs. Il faut donc veiller à ce que les processeurs ne fassent pas la même chose en même temps ou pire encore qu'il fasse des opérations contradictoires. Il faut donc sérialisé l'accès aux ressources. Pour cela on utilise le système de verrou ou sémaphore.
On associe à chaque ressource un verrou.
Tout processeur (donc processus) voulant accéder à une ressource représentée par un verrou doit lire l’état du verrou :

Le problème existe toujours pour l'accès aux mots mémoires verrous.En fait,on va lire et modifier en même temps le verrou par l’instruction CS (Compare & Swap)

Les processeurs peuvent communiquer entre eux grâce à l'instruction SIGP. Ils peuvent demander à un autre processeur de faire une fonction particulière comme stop, restart ou lui demander son état.

3. La ressource mémoire

3.1. Présentation


Retour au sommaire

La mémoire centrale est directement adressable par le CPU.
On peut charger des données et des programmes en mémoire centrale.
La mémoire d’arrière plan est utilisée lorsque la mémoire centrale est surchargée : on déplace les données et le programmes de la mémoire centrale vers la mémoire d’arrière plan.
La mémoire d’arrière plan permet de charger préalablement des données pour fournir de plus grande vitesse d’E/S.
La mémoire est organisées en block de 4K-octets.
Une adresse mémoire peut être représentés soit sur 24 bits (16Mo adressable) ou 31 bits (2Go adressable).

3.2. Fonctionnement de la mémoire virtuelle


Retour au sommaire

La mémoire virtuelle est divisée en 2048 segements de 1 Mo chacun (soit 2Go adressable).
Chaque segment est divisé en 256 pages.
Pour se localiser dans une page, on utilise un octet de déplacement qui correspond à la différence entre le début de la page et la position exacte.

Pour transformer une adresse virtuelle en une adresse réelle, on utilise le DAT. Une adresse virtuelle est composée de la façon suivante :

4. Les fichiers

4.1. Généralités


Retour au sommaire

Un fichier est constitué d'un certain nombre d'enregistrements et de blocs regroupant plusieurs enregistrements contigus; le bloc est l'unité de transfert entre le support et la mémoire, tandis que l'enregistrement est vis-à-vis du programmeur une unité logique de traitement. L'enregistrement est un découpage logique respecté par le système quand il restitue les données.
Un fichier peut être décrit par une étiquette (label) placée sur le volume qui le contient. Le label fournit les renseignements nécessaires au système pour accéder au fichier : taille d'enregistrement et de bloc, organisation, nom, espace alloué. Dans le cas de fichier VSAM, le label est insufisant et les informations sont prises dans un catalogue, qui repertorie ainsi tous les fichiers qu'on veut bien lui faire connaitre.
Le stockage des fichiers est donc orientés enregistrement. Il y a deux types de fichiers VSAM (dont on parlera plus loin) et les fichiers Non-VSAM.

Dans les nouvelles versions de MVS on retrouve des UNIX services. Le stockage des fichiers est alors orientés octets. On retrouve une structure hierarchique de fichiers sous la forme dir/subdir/fichier. En réalité ces fichiers sont stockés dans un container DataSets (enregistrement).

4.2. Les fichiers VSAM (Virtual Storage Access Method)


Retour au sommaire

Voici de quelle façon les données sont organisées en VSAM :

Il existe 4 types de fichiers VSAM :