MVS (えむぶいえす、英語: Multiple Virtual Storage、多重仮想記憶)は、1974年に発表されたIBMのメインフレーム用オペレーティングシステムの1つ。前身はOS/360のMVTやOS/VS。当初の名称は「OS/VS2 R2」であったが、後に「OS/VS2 MVS」、更に「MVS」と呼ばれた。後継はOS/390とz/OSである。

## 概要

MVS は、System/360 用のオペレーティングシステム OS/360 のバリエーションのひとつで1964年に発表された MVT(Multiprogramming with a Variable number of Tasks)の後継の SVS (Single Virtual Storage)の後継として誕生した。

MVT は、OS/360 の最初の バリエーションである PCP (Primary Control Program) にマルチタスク機能を加えたものである。SVS はこれに、1つのアドレス空間を複数のタスクで共有する仮想記憶(virtual storage、IBM汎用コンピュータ以外の表現ではvirtual memory)機能を追加したものである。MVS ではさらに、異なるタスクは異なるアドレス空間で動くことを許容する仮想記憶機能を持つことになった。

MVS はもともと、24ビットシステムをサポートした。ハードウェアの進歩に従って、XAとESAでは31ビットシステムを、z/OSでは64ビットシステムをサポートする。

オペレーティングシステム MVS のインターフェースは主に、バッチ処理のインターフェースである JCL (Job Control Language)と、対話式のコマンド・ライン・インタープリタでタイムシェアリングシステムである TSO (Time Sharing Option)である。TSO は最初はオプションであったが、現在では標準の機能として装備されている。ISPF (Interactive System Productivity Facility)は、ユーザーに TSO 機能を提供する、しかしメニューのある、形式志向の態様を持つインターフェースである。

MVSシステムは伝統的に、IBM 3270端末(※ダム端末も参照)または、PCで動く 3270端末エミュレータ によりアクセスされる。しかしながら、今日では、メインフレームで動く多くのアプリケーションはWorld Wide WebやGUIをインターフェースに持つ。z/OSは、TCP/IPをビルトインでサポートする。システムのマネジメントは、かつては3270端末を通して行われたが、今日では、ハードウェア・マネジメント・コンソール(HMC)や、さらにウェブ/インターネットで使用されるインターフェースを介して行われることも増えている。オペレーター・コンソールは 2074エミュレータ で提供(供給)されるので、3270接続を介して OS/390 や z/OS のプロセッサにアクセスすることはありそうにない。z/OS はまた、POSIXアプリケーションの実行をネイティブ・サポートする。

1つの MVS は1つの物理システムを占有する。その論理的な単位を1つの「論理区画」(Logical Partition, LPAR)という。z/VM 下では、それを1つのヴァーチャル・マシン(a virtual machine)と呼んだ。複数の MVS が組織化・編成され、「Systems Complex」(Sysplex)と呼ぶ1つの構造体に共同で管理されることが可能になったのは、1990年9月のことである。複数の LPAR 間のオペレートは、「Cross-system Coupling Facility」または「XCF」と呼ばれるソフトウェア・コンポーネントと、「Hardware Coupling Facility」または「CF」あるいは「ICF」と呼ばれるハードウェア・コンポーネントを通して行われる。複数のSysplexは、TCP/IP や IBM の製品である「Systems Network Architecture」(SNA)といった標準的なネットワークプロトコルによって結びつけることが出来る。複数のLPAR は、Linux on IBM System z、z/VSE、z/TPF、z/VM といった異なるオペレーティングシステムで稼動させることができる。

MVS は主にビジネスや銀行のシステムに使われ、MVS 上で動く業務アプリケーション・プログラムは主にコボル(COBOL)で記述される。COBOLのプログラムは、伝統的に、IMS (Information Management System) や CICS (Customer Information Control System) のようなトランザクション処理システムで使われる。CICS で動くプログラムには、COBOL プログラムのソースコードに特別な EXEC CICS ステートメントが挿入される。プリプロセッサは、プログラムのコンパイルの前に、これらの EXEC CICS ステートメントを、CICS をコールする COBOL のコードに変換する。DB2をコールする SQL の場合と似ている。業務アプリケーションはもちろん、C言語、C++、Java、アセンブリ言語、FORTRAN、BASIC、RPG、REXXなど他のプログラミング言語で書くことも出来る。これらの言語のサポートは「Language Environment」「LE」と呼ばれる共通コンポーネントにパッケージされていて、デバッグ、トレース、プロファイリングや、その他の各言語独自の機能を提供する。

## MVSファイルシステム

ファイルは、MVS では「データ・セット」と呼ばれる。これらのファイルは「カタログ」によって組織・系統が立てられる。MVS の本来の文字コードはビッグ・エンディアン EBCDICだが、ASCIIやリトル・エンディアン、Unicodeのトランスフォームのソフトウェアサポートのためのhardware-specific serviceを持つ。

MVS の伝統的なファイルシステムは、レコード・オリエンテッド・ファイルシステム(レコード志向ファイルシステム)である。ファイル名は階層的に組織・編成され、ドットによって分けられる。それぞれの階層の名前は、8文字まで認められる。ファイル名の全体の長さは、44文字までである。

大体、ドットによって分けられたコンポーネントは、他のオペレーティングシステムのディレクトリのように使われる。たとえば、最上階のコンポーネントは、通常プロジェクト名やサブシステム名や機能名やユーザーの名前を表現する。しかしながら、これは他のシステムのものとは違って、本当のディレクトリではない。ネーミング上の慣例にすぎない。

区分データセットは、ある意味で1階層のディレクトリに似ている。MVS は幅広いファイルアクセス方式をサポートする。これは主として、レガシーニーズ(これまでに蓄えた多くのソフトウェア資産を無視できない)によるものである。これらにはVSAM、BSAM、QSAM、その他が含まれる。MVS のファイルシステムは、IBM が何年にも渡って使用し続けた ディスクストラクチャ VTOC (Volume Table Of Contents) に基づいている。

MVS の2006年現在のバージョンである i.e. z/OS は、POSIXコンパチブルである「slash」ファイルシステムをサポートする。これは2つのファイルシステムの長所を一緒に統合するものである。すなわち、POSIX は MVS のデータセットを POSIX 下で稼動するプログラムで取り扱うことができ、POSIX 下で稼動するサブシステムで使用することができる、というものである。このような新しいファイルシステムとしては、「Hierarchical File System」(HFS)、「zFS」(SunのZFSとは違うもの)がある。

## 歴史

MVS が最初に発表されたのは1974年。改訂されて次に出された同オペレーティングシステムの名前は MVS/XA (eXtended Architecture)、次が MVS/ESA (Enterprise Systems Architecture)、UNIX System Services (USS)機能が追加された次の版はOS/390、64ビットシステムをサポートすることになったz/OS(zSeries、System z)と続く。このオペレーティングシステムの中核(コア)の部分は、根本的にはシリーズを通して変わっていない。設計上、MVSのために書かれたプログラムはz/OSにいたるまで、モディファイを受けずに動いている。

MVS は2006年現在ではサポートが終了している。IBM は、31ビットコンバチブルの z/OS のサポートも2007年までに終了することを公表しており、以後は、64ビットの z/OS のみ公式なサポートが受けられることになる。MVS はこれからも、エンタープライズオペレーティングシステムのフラッグシップとして、最先端の改良を受け、その先端性を拡張し続ける。その機能強化は上記で述べられているものに加えて、下記のものを含む。

- XML (Xerces-based toolkits for C/C++ and Java)
- network file systems
  - NFS Version 4
  - Common Internet Filing System(CIFS)/SMB
- Transport Layer Security(TLS/SSL)support throughout (TCP/IP stack levelを含む)
- removal of previous architectural limits
- encrypting file systems
- Workload Manager (WLM)
- special Java acceleration (zAAP support)
- Hipersockets

z/OS の下では古い24ビットの MVS アプリケーションが稼動し続けている一方、たとえば、64ビットのハードウェアで動く Java プログラム、フレキシブルなマウントと長いファイル名をサポートする堅牢なファイルシステム上の Unicode XML フォーマットのデータが今まさに書き続けられ、IPv6 と速い CFs で、最新のパフォーマンス拡張SQLを使用した地理学的にひしめいた関係データベースとコミュニケーションをとり続けている。