ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2008-5-23 9:48
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3068
RSX-11Mの思い出
といっても知ってる人は数少ないだろう。

今は無きDigital Equipment社のミニコンピューターPDP-11シリーズ用のオペレーティングシステム製品のひとつ。Resouce Sharering eXecutiveからRSXと名付けられたファミリーOSの中位にあたる。

それ以前にRSX-11Dというのがあり、更に最下位にはRSX-11Sというのがあった。DはDady,MはMom,そしてSはSonから名付けられたと言い伝えられている。Dの方は一度だけ違う部署の人がマシンを借り手立ち上げてビルドをしていたのを見たことがあるだけ。そのマンマシンインターフェースとかを継承し、少ないメモリや任意の機器構成でも利用可能にしたのがRSX-11Mで、そこまでが自分で自分をビルドできる開発用OSとしての機能を備えていた。RSX-11SはExecute Onlyとサブタイトルが付いていて、アプリケーションと一緒にメモリにロードするいわゆるスタンドアロンの組み込み用OSでDやMとは実はまったく異なるが、RSX-11M上でビルドすることが出来るので、まさに母と息子の関係である。RSX-11MカーネルやVAX/VMSカーネルのソースコードを読んだ人なら知っているがそれらのIOシステム部分を書いたのが、後にMicrosoftでWindows NTカーネルの開発をリードしたD.N.Cutlerで、すべての知り尽くした者だけが作り上げることが出来る一切の無駄の無い最も効率的なコードは神がかってさえ見えた。

仕事で実用化していたのはRSX-11Mのみで、組み込み用の自社開発OSをビルドしたりする開発環境としても活躍していた。当時のミニコンピューターは全盛期とは言え、メモリーは高価でかつPDP-11が16bitアーキテクチャのため拡張メモリマネージメントを備えていても数十MBのメモリを積めば大規模のほうだった。メモリマネージメントといってもアドレスを拡張するセグメントレジスタとカーネルとユーザーの実行モードによるプロテクションといった原始的なものだった(末期にはデータとインストラクション空間を分離するハードウェア機能もオプションでサポートされた)。32bitのVAX-11シリーズが登場するまで仮想記憶使えず、ディスクスワッピング(チェックポインティングと呼んでいた)しかなかった。

そうしたメモリの少ないシステム構成で多用な周辺機器に合わせて自在にOSをビルドするのが大変で、予め必要な周辺機器用のデバイスドライバをビルド時に一緒にリンクするというのが一般的だった。しかしそれだと再構成の自由度が乏しく、再構成に多大な時間を要することになる。RSX-11Dではそうだった。

しかしRSX-11Mではビルド時にカーネルに含めるべき機能と周辺機器に合わせて柔軟に選択するドライバオプションとをビルド工程が分離された。カーネルにはフローティングポイント機構をサポートするか否かとかプロセッサーに関するサポートのオプションのみに限定し周辺デバイスはブートディスク用のドライバ以外は後の再構成時オプションとした。カーネル(Executive)イメージが出来上がるとそれ自身単独でディスクからブートすることが出来る。そこでMCRプロンプトというキャラクターベースのマンマシンインタフェースを介して任意の必要なデバイスドライバや常駐プログラムをマニュアルでメモリにプリロードし、最後にsaveというコマンドを実行する。これによってメモリに追加ロードされた部分がディスク上のカーネルイメージファイルの後ろにあるセーブエリアに追記される。次ぎにカーネルがブートされるとカーネルの後ろにあるドライバや常駐プログラムに一緒にメモリにロードされ初期化されるという仕組みである。これは当時の低速なハードディスクとかを使用しながら起動から立ち上がりの早いシステムを実現するのに絶大な効果があった。ほとんど使用に際してブート過程の待ち時間というのを感じさせなかった。

今日WindowsやLinuxもほとんどブート時に周辺装置を自動検出して必要なドライバをダイナミックにロードするようなオートコンフィグレーション機能が備わっているため、立ち上がるまでに不確定の時間を要するようになっている。CPUはミニコンピューター時代の何百倍も早いのに立ち上がるまでにミニコンピューターよりも何百倍もの時間がかかるというのは当時を知っている人なら誰でも感じるところである。

RSX-11Mの再構成は当初は実機を使用してマニュアルで行われていたが、すぐに必要な操作はファイルシステム上で仮想的に行うことが可能になった。MCRというのに対応してVMCR(Virtual Monitor Console Routine)というが用意されて、従来通りマニュアル入力でもバッチファイル入力でも必要なドライバや常駐プログラムのロードとセーブ操作を開発システム上で自動実行することが可能になった。あとは実機のハードディスクにセーブされたカーネルイメージをコピーしてブートするだけとなった。

WindowsやLinuxでは最初からVAX-11のように仮想記憶がサポートされていたので、ほぼ制約の無いアドレス空間を利用してブート時にオートコンフィグレーションを行うようになってしまったが、これは立ち上がり時間が長くなるという副作用をもたらした。

昔からRSX-11Mのようにコンフィグレーションが終わった状態のメモリイメージをセーブして以降はそれをブートすればコンフィグレーション過程をスキップして瞬時にシステムを立ち上げることができるのにとは思っていた。

WindowsやLinuxでもパワーマネージメント関連で実行中のシステムのメモリイメージをハードディスク上にセーブして次回起動時にそれをリストアして中断していた状態から再開するという機能がサポートされているのでそれを利用する手もあるが、USBとか立ち上がり時に構成が変化しているものをサポートするにはやはりオートコンフィグレーションはどこかで再実行してやらないといけないのはわかる。

ハードウェア構成がシステム立ち上げの度に変化しないことが想定できる組み込み機器の場合には、RSX-11Mにあったようなプリコンフィグレーション済みのメモリイメージをロードして立ち上がり時間を短縮する機能は需用があると思われる。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » RSX-11Mの思い出 webadm 2008-5-23 9:48

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索