# Multiple Virtual Storage

MVS (Multiple Virtual Storage) was het meest gebruikte besturingssysteem voor de IBM System/370 en System/390 mainframecomputers. Het heeft geen relatie met IBM's andere besturingssystemen voor mainframes, VM/CMS en DOS/VSE (later VSE/SP genoemd).

## Essentie

Het MVS besturingssysteem dankt zijn naam aan het gebruik van meerdere virtuele adresruimtes. Dat betekent dat elk programma door het besturingssysteem in de illusie wordt gebracht dat het zijn eigen geheugen kan adresseren. Het besturingssysteem zorgt ervoor dat dit virtuele geheugen wordt 'afgebeeld' op het fysieke werkgeheugen van de computer, of tijdelijk op een bestand op een schijfgeheugen als het fysieke geheugen niet volstaat. Het voordeel van het gebruik van meerdere adresruimtes is behalve grotere flexibiliteit dat er minder gevaar bestaat dat ondeugdelijke programma's andere programma's in gevaar brengen. Destijds was dat revolutionair, tegenwoordig werkt elke PC zo (denk aan het bekende SWAPPER.DAT bestand).

## Geschiedenis

MVS werd in 1974 uitgebracht als OS/VS2 MVS. Sindsdien is de naam van MVS een aantal malen gewijzigd: MVS/SP (System Product), MVS/XA (eXtended Architecture), MVS/ESA (Enterprise System Architecture), OS/390 (na toevoeging van UNIX-services) en ten slotte z/OS (nadat de zSeries ondersteuning voor 64-bit processoren kreeg. Ondanks al deze wijzigingen is het nog steeds mogelijk om een MVS-programma zonder aanpassingen op z/OS uit te voeren.
MVS stamt af van SVS (Single Virtual Storage), dat weer afstamt van MVT, een van de varianten van OS/360. De eerste versie van OS/360 (PCP) kende geen mogelijkheden voor het parallel uitvoeren van meerdere programma's. De opvolger was MFT (Multitasking with a Fixed number of Tasks). Hierdoor kon een vast aantal programma's parallel uitgevoerd worden in een vast aantal partities. De uitbreiding MVT (Multitasking with a Variable number of Tasks) maakte een variabel aantal partities mogelijk. SVS voegde hieraan virtual storage (virtuele opslag) toe (buiten IBM beter bekend als virtual memory), waarbij één adresruimte werd gedeeld door de verschillende taken. MVS voegde hieraan het gebruik van gescheiden adresruimtes voor verschillende taken toe. MFT werd opgevolgd door OS/VS1, een besturingssysteem met één enkele virtuele adresruimte. Voor veel gebruikers was dit de eerste stap naar virtueel geheugen, aangezien OS/VS2 MVS aanvankelijk alleen geschikt was voor de grootste machines.
MVS kende oorspronkelijk 24-bits adressering, zowel voor reëel als virtueel geheugen. Daardoor werden slechts machines met ten hoogste 16MB werkgeheugen ondersteund, en waren de adressen in een virtuele adresruimte ook tot 16MB beperkt. In een tijd dat een computer met 1MB geheugen al bijna als een supercomputer werd beschouwd, was dit ruim voldoende. Toen de gebruikte hardware meer mogelijkheden kreeg, werd dit 31-bits (XA, ESA) en 64-bits (z/OS). Met 31-bits adressering kunnen 2GB geheugen worden geadresseerd, met 64-bits adressering nog veel meer.

## Interfaces

De belangrijkste gebruikersinterfaces met MVS zijn JCL (Job Control Language) voor batchverwerking en TSO (Time Sharing Option) voor interactief gebruik. TSO was optioneel onder SVS maar is een standaardonderdeel van MVS. TSO is oorspronkelijk voor line-mode terminals geschreven (zoals schrijfmachineterminas). ISPF/PDF voegt ondersteuning voor (niet-grafische) beeldschermen aan TSO toe, zoals een full-screen editor. Binnen ISPF zijn ook menu's beschikbaar om de gebruiker te begeleiden bij het gebruik van het besturingssysteem.

## Gebruik

Het besturingssysteem wordt over het algemeen gebruikt door grote bedrijven zoals telecombedrijven en financiële instellingen. Veel programma's zijn geschreven in COBOL. Deze programma's maken van gebruik van transactiemonitors als IMS en CICS. Een COBOL-programma dat onder CICS moet draaien wordt over het algemeen geschreven met EXEC CICS-statements. Een pre-compiler vertaalt dit naar de benodigde COBOL-code. Programma's kunnen ook worden geschreven in talen als PL/1, C, C++, Java, Fortran, RPG. z/OS kan ook POSIX-programma's uitvoeren.
MVS programma's worden traditioneel gestart met ponskaarten. Later werd meer en meer gebruikgemaakt van IBM 3270 beeldschermterminals (nog weer later PC's met 3270-emulators). Veel mainframeprogramma's hebben tegenwoordig web- of Windows-interfaces. z/OS heeft ingebouwde TCP/IP-ondersteuning. Systeemonderhoud werd in het verleden uitgevoerd met een 3270-terminal, tegenwoordig is hiervoor de Hardware Management Console (HMC) beschikbaar.
Bestanden heten 'data sets' in MVS. Deze bestanden kunnen worden opgenomen? Van huis uit is het bestandssysteem van MVS niet hiërarchisch: bestanden hadden namen van maximaal 44 tekens die per (reële) disk drive uniek moesten zijn. De gebruiker had de keus om een bestand in een zogenoemde 'catalog' op te nemen, of expliciet aan te geven op welke fysieke drive het te vinden was. Toen Unix-services aan MVS werden toegevoegd veranderde dit uiteraard.
Databestanden worden opgeslagen in Big Endian-codering EBCDIC. MVS biedt services voor het vertalen van en naar ASCII, Little Endian EBCDIC en Unicode.
Op één computersysteem kunnen tegenwoordig meerdere instanties van MVS worden opgestart. Een instantie van een MVS-besturingssysteem wordt een logische partitie of LPAR genoemd, eigenlijk een virtuele machine. Meerdere LPAR's kunnen worden ingedeeld en beheerd in een 'Systems Complex' of SysPlex. De LPAR's werken samen via een softwarecomponent (Cross-system Coupling Facility of XCF) en een hardwarecomponent (Hardware Coupling Facility of CF). SysPlexen kunnen worden gekoppeld via standaardnetwerkprotocollen als TCP/IP of via IBM's eigen protocol SNA. Een LPAR kan ook worden geïnitialiseerd met andere besturingssystemen zoals Linux, VSE, TPF of VM.