2025/08/10 13:15 OS/2

ロボ子、今日のニュースはOS/2についてじゃ。知っておるか?

OS/2ですか?名前は聞いたことがありますが、詳しくは…。Microsoftが開発したオペレーティングシステムなのですね。

そうじゃ!Intel 286/386マイクロコンピュータ向けで、マルチタスク機能やAPIを持っておる。オフィス自動化プラットフォームとして、個人の生産性向上とグループでのリソース共有を目指したらしいぞ。

なるほど。アーキテクチャは3層構造で、カーネル、WPM、LAN Managerで構成されているのですね。APIはC言語に適した関数呼び出しインターフェースとのことですが、具体的にはどのようなものがあるのですか?

ふむ、OS/2 SDKにはCコンパイラ、マクロアセンブラ、リンカなどが含まれておるからの。APIはダイナミックリンクライブラリとして実装されていて、プログラムのファイルサイズを削減し、ディスクスペースを節約できるのが特徴じゃ。

ダイナミックリンクライブラリですか。実行時にルーチンアドレスが解決されることで、メモリも節約できるのですね。それは効率的です。

その通り!しかも、APIを置き換えることで、アプリケーションを変更せずに将来のハードウェアをサポートできるという利点もあるぞ。

OS/2のスケジューラはプリエンプティブスケジューラに基づいているのですね。タイムスライスを使用し、タスクの優先度に基づいて実行時間を与えるとのことですが、優先度の設定はどのように行うのですか?

`DosSetPrty`関数でスレッドの優先度を設定できるぞ。優先度には、アイドル時、通常、時間 критический の3つのクラスがあって、それぞれに優先度レベルがあるんじゃ。

なるほど。プロセスとスレッドの終了には`DosExit`関数を使うのですね。アクションコードで終了方法を制御できるのは便利です。

そうじゃな。メモリ管理も重要じゃ。OS/2は仮想メモリをサポートしていて、物理メモリよりも多くのメモリをプロセスに提供できるんじゃ。

`DosAllocHuge`関数で大きなメモリ割り当てを要求し、`DosAllocSeg`関数で64K未満のメモリを割り当てるのですね。共有メモリの作成と取得には、`DosAllocShrSeg`関数と`DosGetShrSeg`関数を使うと。

その通り!デバイスサービスも充実しておるぞ。ビデオディスプレイ、キーボード、マウスなどをサポートしておる。

`VioWrtCharStrAtt`、`VioSetCursorPos`、`VioScrollxx`などの関数でビデオインターフェースを操作し、`KbdCharIn`、`KbdGetStatus`、`KbdStringIn`などの関数でキーボードを操作するのですね。

ファイル管理も見てみよう。`DosOpen`関数でファイルを開き、`DosClose`関数でファイルを閉じる。`DosRead`関数と`DosWrite`関数でファイルを読み書きするんじゃ。

非同期読み書きには`DosReadAsync`関数と`DosWriteAsync`関数を使うのですね。ディレクトリクエリには`DosFindFirst`、`DosFindNext`、`DosFindClose`関数を使うと。

プロセス間通信 (IPC) も重要じゃ。パイプ、キュー、セマフォなどのメカニズムが提供されておる。

`DosMakePipe`関数と`DosDupHandle`関数でパイプを設定し、`DosCreateQueue`関数でメッセージキューを作成するのですね。セマフォはRAMセマフォとシステムセマフォの2種類があると。

最後に、その他のOS/2サービスじゃ。タスクタイミング、プロセスシグナリング、サウンドなどのサービスがあるぞ。

`DosTimerStart`関数と`DosTimerStop`関数でインターバルタイマーを開始および停止し、`DosSleep`関数でスレッドがタイムスライスを放棄するのですね。

OS/2は将来、286/386マイクロコンピュータのオペレーティングシステムになる可能性があったんじゃ。ファイルシステムのインストール可能化やセキュリティメカニズムの追加などの機能強化が予定されていたらしい。

なるほど。OS/2は当時としては先進的な機能を備えていたのですね。勉強になりました。

ところでロボ子、OS/2って「オーエスツー」って読むけど、ロボ子の「ロ」と「ツー」を合わせると…?

…博士、それはちょっと無理があります。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。