仮想記憶
[Wikipedia|▼Menu]
プログラマは主記憶と補助記憶の間でデータをやりとりするのを気にしなくてもよい。もちろん、プログラマが大量のデータを扱う際の性能を考慮しなければならない場合、アクセスするデータがなるべく近いアドレスに配置されるよう注意して、ある時点で必要なメモリ量を減らし不要なスワッピングを回避しなければならない。

仮想記憶はコンピュータ・アーキテクチャの重要な部分であり、その実装にはハードウェア的サポートがほぼ[注釈 3]必須である。メモリ管理ユニット (MMU) と呼ばれる部分であり、性能の都合もありCPUに組込まれることも多い。1960年代までのメインフレームの大部分は、基本的には仮想記憶をサポートしていなかった。1960年代のメインフレームで例外といえるものを以下に挙げる。

Atlas Supervisor(Atlas

MCP(バロース B5000

MTS、TSS/360、CP/CMS(IBM System/360 Model 67)

MulticsGE 645

TSOS(RCA Spectra 70/46)

1980年代のパーソナルコンピュータで仮想記憶をサポートした例として Apple Lisa がある。
歴史

仮想記憶技術が開発される以前、1940年代から1950年代のプログラマは2レベルの記憶装置(主記憶あるいはRAMと、磁気ディスク装置あるいは磁気ドラムメモリといった二次記憶)を直接管理する必要があり、大規模プログラムではオーバーレイなどの技法が使われていた。従って仮想記憶は、主記憶を拡張するためだけでなく、そのような拡張をプログラマが可能な限り容易に扱えるように導入された[5]。マルチプログラミングやマルチタスクを実装した初期のシステムは、メモリを複数のプログラムに分割するのに仮想記憶を使っていない。例えば初期のPDP-10レジスタを使ってマルチタスクを実現していた。

ページング方式マンチェスター大学Atlas上で開発された。1万6千ワードの磁気コアメモリの一次記憶と9万6千ワードの磁気ドラムメモリによる二次記憶を制御するものである。最初のAtlasは1962年に稼働開始したが、ページングのプロトタイプは1959年に開発されている[5](p2)[6][7]。なお、ドイツの初期の情報工学者 Fritz-Rudolf Guntsch (後に Telefunken TR 440 というメインフレームを開発)は 1957年の博士論文 Logischer Entwurf eines digitalen Rechengerates mit mehreren asynchron laufenden Trommeln und automatischem Schnellspeicherbetrieb(複数非同期ドラム装置と自動高速メモリモードを持つデジタル計算機の論理概念)で仮想記憶のコンセプトを発明していたと言われている。

1961年バロースセグメント方式で仮想記憶をサポートした世界初の商用コンピュータ B5000 をリリースした[8]

1965年MITが開発したMultics以降、仮想記憶は本格的に採用され始めた。

コンピュータ史上の多くの技術と同様、仮想記憶にも様々な曲折があった。安定した技術と見なされるまで、仮想記憶の様々な問題点を解決しようとするモデルや理論が開発され実験がなされた。仮想アドレスを物理アドレスに変換するハードウェア機構の開発も必然的だったが、初期の実装ではそれによってメモリアクセスが若干遅くなった[5]。システム全体を対象とするアルゴリズム(仮想記憶)は従来のアプリケーション単位のアルゴリズム(オーバーレイ)よりも非効率ではないかという懸念もあった。1969年、商用コンピュータでの仮想記憶に関する論争は事実上終結した[5]。David Sayre 率いるIBMの研究チームが仮想記憶システムが手動制御システムよりも優位にあることを示したのである。

1970年、IBMはSystem/370シリーズのOSであるDOS/VS、OS/VS1、OS/VS2(後のMVS)で仮想記憶をサポートした。OS/VS1はシングルタスクの仮想記憶で、マルチタスクには従来通りユーザーによるマルチプログラミングが必要であったが、OS/VS2はマルチタスクの仮想記憶(複数の仮想アドレススペース)をオペレーティングシステムの機能としてサポートした。以後の各社メインフレームでは仮想記憶が一般的となる。

ミニコンピュータで初めて仮想記憶を導入したのは、ノルウェーのNORD-1である(1969年)。1976年DECミニコンピュータ VAXシリーズのOSであるVMSで仮想記憶をサポートした。

しかし、1980年代の初期のパーソナルコンピュータでは仮想記憶は採用されていない。これは当時のマイクロプロセッサの性能や機能の問題もあるし、個人用のコンピュータに仮想記憶が必要になると見なされていなかったという面もある。当時の主流はバンク切り換えによるメモリ増設だった。x86アーキテクチャで仮想記憶が導入されたのは、Intel 80286 によるプロテクトモードが最初だが、セグメント単位のスワッピングはセグメントが大きくなると性能が悪くなるという問題があった。Intel 80386 では既存のセグメント方式の下層にページング方式を実装し、ページフォールトによるページングが可能となった。しかしセグメントディスクリプタのロードは時間のかかる処理だったため、OS設計者はセグメントを使わずページングだけを使うようになっていった。仮想記憶が導入されたのは、OS/2(1987年)、Microsoft Windows 3.0 (1990年)、MacintoshSystem 7(1991年)、Linuxカーネル 0.11+VM(1991年)などが最初である。
ページング方式


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:78 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef