SSブログ

OS/2がやってきた(その1)(月刊ASCII 1988年2月号6) [月刊アスキー廃棄(スクラップ)]

ASCII1988(02)c01OS/2_W520.jpg
消えてしまったOS/2。ASCIIはスクラップして資源ごみに出しているので、OS/2が当時どんな意味合いがあったのかを記録するためにも記事をスクラップする。

OS/2は前にも
1990年のコンピュータ環境 Windows OS/2(月刊ASCII 1987年7月号7)
でスクラップした。

また、OS/2は脇英世氏の「OS/2への招待」(ブルーバックス)がある。流石にブルーバックスはスクラップしないが、この本によれば(p.5-6)
「OS/2の基本部分は、マイクロソフト社が中心になって作られているようである。 OS/2はビル・ゲーツの誇りであるらしく、「私のオペレーティング・システム」と言っていると伝えられる。ビジュアルなマッキントッシュ的なオペレーティング・システムを作り出すことは1984年のマッキントッシュ登場以来のビル・ゲーツの夢だったらしい。長く予告されたOS/2は、やっと登場しようとしている。今後のOS/2は、おそらく1990年代へ向けて、UNIXより上位シフトして行くことだろう。」
とあった。

以下ASCIIの記事をスクラップする。
 IBMとMicrosoftの両社によって共同で開発された『Operating System/2』(以下OS/2と記す)は,複数のプログラムを,安全にそして高速に実行するための多重プログラミング(マルチタスク)機能を持った本格的なオペレーティングシステム(当連載では,OS/2と明確に区別するため、以下O.S.と記す)である.
 MS-DOSの延長線上で開発されたにもかかわらず,その内部はこれまでのMS-DOSに慣れ親しんできたパーソナルコンピュータのユーザーを戸惑わせて余りあるほど、劇的な変化を遂げている.それは,パーソナルコンピュータにとって,まさしく新世代の到来を意味しているに違いない。
 この連載では、新世代を担うべき,この新しいO.S.の全貌を,できる限り詳しく紹介することを目的としている.
今回は,OS/2の持つ,マルチタスクO.S.としての操作性を中心に,MS-DOSと比較しながら解説していくことにする.
今となっては、OS/2の解説よりもOS/2の機能が無かったMS-DOSを想像する方が難しい人が多いと思う。こんな機能がないのにOSを名乗るのはおこがましいと考える人も多いと思う。MS-DOSを弁護するとMS-DOSはOSと言ってないよね。Disk Operating SystemだからDiskに特化したというか、ほとんどそれしかないOperating Systemだった。ユーザーインターフェースなんて呪文のようなコマンドしかなく「コマンドまたはファイル名が見つかりません」というエラーメッセージを吐き出すOSだった。

O.S.の意味

 O.S.は,コンピュータシステム上において、実に様々な役割を担う.そのため,現代のようにシステムの巨大化が進むにつれ機能も増大し,その内部は複雑化している。
 しかし,その技術的要素は,マルチタスク機能を持った本格的なO.S.が登場した20年前からあまり変わっていない.すなわち,現在,コンピュータシステム上で稼働している数々のO.S.は,以下の基本的な概念に基づいて作成されている.
 『各資源を効率よく管理することにより,コンピュータシステムの性能を十分に引き出し,人間を含む資源を最大限に活用することで,その生産性を高める』
 以上のような概念をもとにして,O.S.に最低限必要な機能を定義すると以下のような全体像が浮かんでくる.
●コンピュータシステムと人間のインターフェイスをつかさどる
 オペレータとコンピュータの統一的な操作環境を実現する.また,実行中のアプリケーションプログラムに対して,オペレータが入力したデータを受け渡す.
 MS-DOSにおいては,COMMAND.COMがこの機能を実現していた.
●外部装置とのインターフェイスを簡素化する  ディスク装置などの入出力装置に対する複雑な操作を,アプリケーションプログラムに代わって代行し,その複雑な処理を簡素化する(計算機のハードウェアを,アプリケーションプログラムから隠ぺいする)。また,入出力装置に対するインターフェイスを統一化する.
 MS-DOSでは,装置との入出力機能を提供するファンクションコールや,デバイスドライバ(注1),ファイルシステムなどがこれにあたる。
注1:
 OS/2にも,MS-DOSと同様,独自のデバイスドライバを組み込むことができる。組み込み方法も同様で,"CONFIG.SYS"ファイルに,"DEVICE"文を登録して行う.
 デバイスドライバの構造も,ストラテジルーチンと、割り込みルーチンの2つの機能モジュールによって構成される.
 しかし,その処理の構造は,マルチタスク環境で動作するので,複数のアプリケーションから,同時に入出力要求を受け付ける必要があることを考慮に入れなければならないため,大きく変化せざるをえない。
 OS/2は,ユーザーが独自のデバイスドライバを書くためのAPI(アプリケーション・プログラミング・インターフェイスの項参照)を数多く提供している。
●高水準言語を提供する
 COBOL,FORTRAN,Cなどの高水準言語を提供し,最適なアプリケーションプログラムの開発環境を実現する.MS-DOSでは,Microsoft Cに代表されるC言語の処理系等がそうである.
●多重プログラミング
 ひとつのコンピュータ上で,複数のプログラムを同時に実行する機能のことを「多重プログラミング機能」という.
 また,この機能を実現する処理のことを「マルチタスク処理」という.そして,マルチタスク処理を実現するO.S.のことを,一般的に「マルチタスクO.S.」と呼び,OS/2は,このマルチタスク0.S.にあたる。
 一方,マルチタスク機能のないO.S.のことを,「シングルタスクO.S.」と呼ぶ.MS-DOSは、一度にひとつのアプリケーションプログラムしか実行できないことから,「シングルタスクO.S.」であると定義できる.
 マルチタスクO.S.のユーザーは,シングルタスクO.S.であるMS-DOSのように,起動したアプリケーションプログラムの終了を待つことなく、次々と,必要なアプリケーションプログラムを同時に起動できるようになる.
 しかし,そのアプリケーションプログラムの起動方法は,個々のマルチタスクO.S.によって様々であり、統一性はない.本連載では,OS/2におけるユーザーインターフェイスを取り上げる.
●システム資源の管理をする
 マルチタスクO.S.においては,CPU(注2),主記憶,あるいは,周辺装置などの計算機システムの持つ資源を,実行中の複数のプログラム(タスク)に均等に割り当てることが必要で,シングルタスクO.S.であるMS-DOSでは,この点は,それほど大きな意味を持たない.強いてあげれば,Memory Allocateなどのファンクションコールによる主記憶の管理がこれにあたる.
注2:
 マルチタスク環境では,複数のプログラムがタスクとして同時に並列動作する。
 しかし,実際に同時に実行されているわけではない。システムのある瞬間をとってみると,いつの時点でも実行されているタスクはひとつだけである。実行するタスクの切り替えが非常に高速に行われるため,見かけ上同時に実行されているように見えるだけである。
 このような,タスクの切り替え機能を実現するために,マルチタスク0.S.では、CPU自身も,プログラムを実行するためのシステム資源のひとつであるという考え方が取り入れられている.
 すなわち,複数タスクを同時に実行するということは,システム資源であるCPUを各タスクに均等に割り振ることにほかならない。
 このようにタスクにCPUを割り当てることを,「タスクにCPU使用権を与える」という.
 この「CPU使用権」をタスク間において,適当なタイミングで移行することで,マルチタスク機能が実現されることになる.
 なぜなら、本格的なシステムの資源を管理するための機能は,マルチタスクシステムのように,複数のプログラムがシステム資源を同時に使用しながら実行されるようになったときに、初めて必要となる機能だからである.
 すなわち,システムの資源を効率よく管理することが,マルチタスクO.S.の必須条件になる.MS-DOSからOS/2への進化の過程も,この資源管理の強化の流れをくんでいると言える.
 以降は,以上の定義に沿って、OS/2の全体像を解説する.
読んでいてかなり懐かしく思う。CONFIG.SYSとかAUTOEXEC.BATはMS-DOSマシンを使い物になるようにするには必須の知識だった。
 高水準言語は当時高級言語と言っていたかと思う。Cが高級言語かどうかでパソコン通信で言い争ったのが懐かしい。私は、どっちつかずで、アセンブラでINC Aとしていたものが++aとかADD A,Bとしていたものが a += b とかのアセンブラよりの表記ができるのが楽しかった。キータッチ回数をいかにして少なくするかという方向がハッカー的で楽しかった。また++,---,==とか同じキーを連続してうって違う機能を表示するという発想も好きだった。
 mallocよく使ったが、これを使うと深刻なバグに悩まされた。素人にはメモリ管理は難しかった。
OS/2を動かす

 OS/2を起動し,Ctrl-ESCキーを押すことで“Session Manager"が起動される.Session Managerが起動されると,その時点で同時に実行中のプログラム(タスク)のリストがスクリーンに表示される(写真1,2).

ASCII1988(02)c02OS/2_写真1-2_W337.jpg

 OS/2を起動した直後には,写真2のように,“COMMAND.COM”(リアルモード用)と“CMD.EXE"(プロテクトモード用)の,2つのコマンドプロセッサがタスクとして,起動されていることがわかる(コラム1).
 コマンドを入力するためには,どちらかのコマンドプロセッサを,スクリーン上に呼び出せばよい.
 Session Managerから,各コマンドプロセッサに制御を移すには、スクリーンに表示されたプログラムの名前を,カーソルキーで選択してリターンキーを押す.
 まず,CMD.EXEを選択してみる.すると,スクリーンには、MS-DOSと同様のプロンプトが表示される.
 普段,MS-DOSに慣れ親しんでいる筆者は,ごく当然のように起こるこの画面の変化に感嘆すら覚える.プロンプトの表示された画面を眺めていると,MS-DOSとはまったく異なるO.S.が動作しているという違和感をいっさい感じないのである.
 思わず,MS-DOSで使いなれたコマンドを打鍵してみる.期待どおりの反応が返ってくる(写真3).
 次に,exitコマンドを入力すると,これも予想どおりCMD.EXEは終了して,Session Managerの画面へスクリーンが切り替えられる。
 このとき,表示された実行中タスクのリストには,exitコマンドで終了したCMD.EXEの名前は、当然のように表示されていない.
 新しくタスクを作り起動するには,スクリーンに表示された“Starta Program"をカーソルで選択する.すると,新たにCMD.EXEが起動されて、画面には再びプロンプトが表示される.ここで再びSession Managerを呼び出し,上記の手順を繰り返すことで、別のCMD.EXEを起動することもできる.
 以上の操作では,違和感なくMS-DOSが自然にマルチタスクO.S.として成長したような印象を覚えた.

ASCII1988(02)c04OS/2_写真3_W341.jpg
command.comはWindows95のときよく使った。cmd.exe はWindowsXpからだったか。Windows 3.1 でもDOS窓を使った記憶があるけど勘違いか?Windosw 3.1 ではMS-DOSボックスといってたようだが真偽はスクラップを続けていけば分かるだろう。とにかく、Windows 3.1 ではマルチタスクを使うときは祈りをささげてから実行した。もちろん、実行する前には作業データを保存していた。DOS窓が使いものになったのはWindows95からだった。このDOS窓の安定性だけでも私はWindows95を使い物になるOSだと高く評価した。
コラム1

プロテクトモードとリアルモード

 OS/2が稼働するプロセッサは,Intel80286である。従来の8086と比べて,このマイクロプロセッサは,リアルモードとプロテクトモードの2つのアドレッシングモードを持っている.両モードとも,8086および8088マイクロプロセッサの命令をそのまま実行する.
 リアルモードでは、1Mbytesの実アドレス空間を持つ8086とまったく同等の環境が提供され,このときの80286は,高速版の8086として動作する.
 一方,プロテクトモードでは、リアルモードの実アドレスに対して,80286は仮想アドレスモードになる.このモードで実行される各プログラム(タスク)は,OS/2の仮想記憶(注8)によって,主記憶装置の大きさに関係なく,各タスクごとに独立した1Gbytes(10億bytes)の広大なメモリ空間が与えられる。つまり,アプリケーションプログラムは,仮想アドレス空間で実行されることになる.
注8:
 OS/2は,仮想記憶機能を装備したオペレーティングシステムである.
 仮想記憶機能とは,システムのもつ主記憶の容量の制限に関係なく,より多くのメモリにアクセス可能にするメモリ管理技術のことをいう.
 OS/2は,最大16Mbytesの主記憶を,各タスクには1Gbytesのメモリ空間が割り当てられているように見せかける.
 OS/2下で実行されるアプリケーションプログラムは、1Gbytesのメモリに自由にアクセスできることになる。
 仮想記憶機能のもとでは,実行中のプログラム本体すべてが主記憶に存在するわけではない。実行中のプログラムは,そのとき必要なプログラムセグメントだけが,主記憶に置かれるように管理される.実行中でないプログラムのセグメントはディスク上の「スワップ領域」に格納されている.また,不必要になったプログラムのセグメントは,主記憶からスワップファイルに書き出されて,別のタスクのために主記憶が解放される。
 この主記憶とスワップファイルの間のプログラムの転送を,「セグメントのスワッピング」という.このセグメントのスワップは,実行中のタスクからは完全に透過であり,ユーザーが意識することはない。
 また,このモードで実行されるタスクのプログラムやデータ領域は,OS/2の記憶管理機能(80286のアドレス変換機構)によって,同時に実行される他のタスクのアクセス(データの破壊など)から完全に保護され,独立して扱われる.
 OS/2は,80286の2つのモードをたくみに利用する。OS/2は,従来からのMS-DOSアプリケーションの実行をリアルモードで行い,プロテクトモードでは、OS/2用に開発された新しいアプリケーションプログラムを実行する.この2つのモードを,必要に応じてシステムの動作中に切り替える方法で,MS-DOSアプリケーションを,OS/2の専用アプリケーションタスクと同時に,ひとつのタスクとして実行する.
 仮想記憶があるから各タスクで1Gbytesのメモリが使えるだが、仮想記憶はダメダメだった。Windows98でも仮想記憶にアクセスすると途端に使い物にならなくなった。このメモリ不足で嫌な思いをしたトラウマのせいでメインマシン(Sandy bridge)にはRAMを32Gあてるようになった。Sandy bridge当時は粋がってメモリスロットは全部埋めるのだと無駄な金を散在していた。

アプリケーションプログラムを実行する

 再び,プロンプトが表示された状態から,実際にアプリケーションプログラムを起動してみる.OS/2のSDK(Software Development Kit)にサンプルアプリケーションとして添付されている“BIGBEN.EXE"を起動する.
 すると,スクリーンいっぱいに,現在の時刻が刻一刻と表示される(写真4).
 OS/2でのアプリケーションプログラムの起動は、MS-DOSと同様に,プログラムファイル名を入力する方式が採用されている.
 BIGBEN.EXEが実行されているあいだは,CMD.EXEのプロンプトは表示されない。
 この状態で、OS/2のマルチタスク機能を利用して、別のアプリケーションプログラムを起動するには,再び,Session Managerを呼び出せばよいことが直感的に思い浮かぶ.

ASCII1988(02)c04OS/2_写真4_W341.jpg
そうだったのか。OS/2はプログラムを名前で呼び出さねばならなかったのか。Visual Shellではなかったのか。そう考えるとWindows 3.1 はだいぶ進歩したものだ。

複数のアプリケーションを同時に起動

 CtrlキーとESCキーを同時に押下すると、いつでもSession Managerを呼び出すことができる.つまりBIGBENプログラムが時刻を表示するスクリーンをそのままにして,Ctrl-ESCキーを押すと,Session Managerの画面が再び表示される.
 表示された実行中タスクのリストには,新しく起動したBIGBEN.EXEが登録されている。
 このとき,スクリーンに表示されている“Start a Program"を,カーソルキーで選択して,リターンキーを押下すると新しいCMD.EXEが起動されて,スクリーンには再び,次のコマンド入力を促すプロンプトが表示される.
 この状態で,コマンドを入力すれば,別のアプリケーションプログラムを実行することができる.
 もちろん、先に実行したBIGBEN.EXEは,バックグラウンド(コラム2)で,同時に実行され続けている。もう一度,BIGBEN.EXEの画面が見たいときは,Session Managerを呼び出して,その名前をカーソルキーで選択すればよい.
 また,実行中のBIGBEN.EXEを中断するときは、MS-DOSと同様,Ctrl-Cを入力する.Ctrl-Cを入力すると,アプリケーションプログラムの実行が中断されて,CMD.EXEのプロンプトが返ってくる.
 このようにしてユーザーは,簡単に,OS/2のマルチタスク機能を利用して,複数のアプリケーションプログラムを同時に実行する作業環境が与えられる.

コラム2

バックグラウンドとフォアグラウンド

 OS/2のもとで同時に実行される複数のタスクの内,コンソール画面にデータを表示しユーザーからのキーボード入力を受け取ることができるのは,常にただひとつのタスクのみである.
 コンソールに対して、データを表示し,キーボードの入力を受け取ることができるタスク状態のことを「フォアグラウンド」という。
 一方,コンソールと会話を許されていない状態のタスクは、フォアグラウンドで実行されているタスクに隠れてユーザーには見えないことから,「バックグラウンド」という、バックグラウンドのタスクが出力するコンソール画面へのデータは、そのタスクがフォアグラウンドになるまで見ることはできない.
 また,バックグラウンドタスクが要求するキーボード入力は,そのタスクがフォアグラウンドになるまで保留される.すなわち,タスクの実行は中断(サスペンド)される。

ASCII1988(02)c05OS/2_図_W372.jpg
バッチファイルを実行

 OS/2でも,MS-DOSと同様,バッチファイルを実行することが可能である.
 プロテクトモードのコマンドプロセッサCMD.EXEが実行可能なバッチファイルは,“~.CMD"の拡張子を持つファイルで、MS-DOSの“~.BAT”とは区別されている.
 したがって,CMD.EXEでは,“~.BAT"の拡張子を持つバッチファイルを実行することはできない.
 “~.CMD"ファイルもMS-DOSの“~.BAT"ファイルと同様に,コマンドを実行順に記述したテキストファイルであるが,OS/2用に拡張された,バッチコマンドを記述することができる(表1,2 スクラップ略).
従来のアプリケーションを実行

 数あるマルチタスクOSの中で,OS/2をもっとも特徴づけるものが,従来からのMS-DOSアプリケーションをタスクとして実行することを可能にする「互換ボックス」(コンパチボックス)の提供である。
 この互換ボックスは,80286のリアルモードを利用して実現され,MS-DOSVer.3.xxの環境をほぼ完全な形で提供する(コラム1).
 この互換ボックスで実行されるMS-DOSの呼び出しは,Session Managerの実行中タスクのリストから、リアルモードのコマンドプロセッサであるCOMMAND.COMを選択すればよい.
 その次の瞬間には,見慣れたMS-DOSのプロンプトが表示されて,MS-DOSアプリケーションの実行が可能になる.-この互換ボックスで実行されるMS-DOSアプリケーションは,必ずフォアグラウンドとなる.3.もし,SessionManagerからの切り替えによって,MS-DOSアプリケーションがバックグラウンドになると,その実行は停止される(コラム2).
 これは,ビデオRAMなどのハードウェアを直接アクセスするようなMS-DOSのアプリケーションをバックグラウンドで実行すると,フォアグラウンドで実行されているOS/2のアプリケーションが出力する表示画面を破壊する危険性があるための処置である.
今回のスクラップはここまで。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。