1.オペレーティング・システム



総目次に戻る

オペレーティング・システム
(operating systems)



Keywords:IPL,ROMローダ・ルーチン,オペレーティング・システム・ローダ,BIOS,カーネル,プロセス管理,メモリ管理,システム・コール,シェル



オペレーティング・システム(以後OSと略す)とは,コンピュータの性能を十分に引き出すため,運用に必要な各種のプログラムを体系的に統合したものです.

OSは汎用コンピュータ(メイン・フレーム)でもパソコンでも,一般的には次の五つの構成要素をもっています(図1参照).
? オペレーティング・システム・ローダ(IPL)
? 物理的ドライバ(BIOS)
? 論理的ドライバ(カーネル)
? ユーザ・インターフェース(シェル&内部コマンド)
? サポート・プログラム(外部コマンド)
また,図2に代表的なパソコン用のOSの発展の歴史を示します.
なお,広い意味でOSを捉えると,ROMモニタや操作環境であるMS-WindowsなどもOSの仲間に入ります.
< copyright 1994 互野恭治 > 





トップに戻る


BIOS
(basic input/output system)

キーボードやCRTなどの周辺機器(デバイス)を駆動するためのプログラムを集めたものです.機器固有のROM BIOSとOSによって提供されるものとがあります.

8086系CPUマシンのROM BIOSは,図のようにIPLとの関係でFFFF:0000付近にあります.また,ソフトウェア割り込みを使って呼び出せるようにしてあるため,アクセス手順を統一的に扱うことができます.

OSのBIOSは,カーネルから受けた指示を実行するもので,各マシンごとにカスタマイズされて提供されます.また,格納位置もOSによって異なります.

なお,MS-DOSではIO.SYSファイルで提供されます.



トップに戻るORオペレーティング・システムトップに戻る


カーネル
(Kernel)

OSのもっとも基本的な機能を実行するプログラムです.システム全体を把握し,適切な処置を行います.また,
システム・コールによってアプリケーション・プログラムにデバイス操作などの機能を提供します.

基本的な機能はOSによって異なっていますが,主にプロセス管理メモリ管理,I/O装置の制御,セキュリティなどの機能をもっています.

最近は,OSの肥大化の反省から,カーネルをコンパクトにするマイクロ・カーネルが増えています.

トップに戻るORオペレーティング・システムトップに戻る


プロセス管理

ロードされたプログラムに対して,プロセスの実行,プロセスの終了などのスケジューリングをするものです.マルチタスクでは,プロセスの切り替えおよびプロセス間通信も行います.

トップに戻るORオペレーティング・システムトップに戻る


シェル

ユーザとOSとのやり取りの仲立ちをするものです.コマンド・プロセッサとも呼ばれています.

とくに重要な機能は,ユーザの要求に応じてアプリケーション・プログラムをメモリにロードし,そのプログラムに制御を渡し,実行することです.プログラムが終了すると制御はシェルに戻ってきます.

また,シェルはユーザにとって便利な機能を提供してくれます.MS-DOSではCOMMAND.COMがシェル・プログラムですが,UnixではB-shell,C-shellなどが使われています.

トップに戻るORオペレーティング・システムトップに戻る


IPL(initial program loader)

コンピュータの電源を入れたとき,OSなどのプログラムをメモリに読み込んで始動しますが,そのOSなどを読み込むために必要なプログラムをIPLといいます.

ROMローダ・ルーチンを指す場合とオペレーティング・システム・ローダを指す場合があります.

トップに戻るORオペレーティング・システムトップに戻る


システム・コール

アプリケーション・プログラムがディスプレイやディスクなどのデバイスを直接操作するのではなく,OSを通じて行うのがシステム・コールです.

これによって,アプリケーション・プログラムの作成が容易になり,さらに機種に対して汎用的なソフトを作ることができます.

図は,MS-DOSの場合のシステム・コールの概略です.アプリケーション・プログラムでは,ソフトウェア割り込みを利用してMSDOS.SYSを通じてデバイスにアクセスするようになっています.また,割り込みベクタのINT 21hにほとんどの機能が集約しています.

しかし,日本語の漢字処理のための機能,マウス,グラフィック関係などマシン固有な処理に対して,国産のパソコンではシステム・コールを独自に拡張しています.



トップに戻るORオペレーティング・システムトップに戻る


メモリ管理

プログラムにメモリを割り当てたり,メモリを開放したり,サイズの変更を行います.また,通常メモリのほかに,拡張メモリや増設メモリの管理も行います.

トップに戻るORオペレーティング・システムトップに戻る


オペレーティング・システム・ローダ

CP/M,MS-DOS,OS/2などのOSでは,ディスクを媒体としてOSが供給されています.したがって,ディスクの先頭セクタにOSを読み込むためのプログラムを書き込んでおきます.これを,オペレーティング・システム・ローダと呼びます.

オペレーティング・システム・ローダは,ROMローダ・ルーチンによって呼び出された後,OSを読み込んでOSに制御を移します.

トップに戻るORオペレーティング・システムトップに戻る


ROMローダ・ルーチン

8086系CPUは,電源投下時にアドレスFFFF : 0000よりスタートするように設計されています.したがって,この付近にROMを設定し,周辺装置やメモリおよび割り込みベクタ・テーブルなどを初期化したり,ディスクの先頭セクタをロードするプログラムなどを組み込んでおきます.

この先頭セクタを読み込んで実行させるのがROMローダ・ルーチンです.

トップに戻るORオペレーティング・システムトップに戻る










マルチタスク
(multi task)




Keywords:タイム・スライス,タイム・シェアリング・システム,プライオリティ



マルチタスクとは,もともとは一つのジョブが複数のプログラム(タスク)からなっているマルチタスク・ソフトウェアのことでした.しかし,現在では,マルチタスク・オペレーティング・システムのことを指します.

これは,一つ(または多数)のCPU上で複数のプログラム(タスク,プロセス)を同時に実行させるものです.実際には,CPUは一つの仕事しかできませんので,各プロセスを分割して順次実行し,見かけ上同時に動いているようにします.いろいろな方法がありますが,
タイム・スライス方式のものが多いようです.

また,コンピュータを操作する人の人数に応じて,一人の場合はシングル・ユーザ/マルチタスク,複数の場合はマルチユーザ/マルチタスクとなります.

したがって,汎用機で用いられるTSS(タイム・シェアリング・システム)は,タイム・スライス方式のマルチユーザ/マルチタスク・システムということになります.

なお,余談ですがTSSはタイム・シェアリング・システムの略称のほかに,80386などのCPUでタスクの状態を保持するTask State Segmentの略称としても使われますので注意してください.

パソコン用のマルチタスクOSとしては,シングル・ユーザ用としてはOS/2,マルチユーザ用としてはOS-9,UNIX(XENIX)などがあります.

MS-Windows 3.1の場合はタイム・スライス方式ではなく,実行中のプロセスから送られるメッセージによってプロセスが切り替わるようになっています.

Windows 95 や Windows NTは、PCの能力が上がったために完全なマルチタスクOSとして設計されています。
< copyright 1994 互野恭治 > 

トップに戻るORマルチタスク トップに戻る


タイム・スライス
(time slice)

マルチタスクを実現する方法にはいろいろありますが,CPUによる処理を一定時間ごとに分割して,各タスク(プロセス)に分配する方法をタイム・スライス方式といいます.

図は,その様子を模式的に表したものです.プロセスは一定の時間で分割され,さらに
プライオリティの高い順に実行されます.

タスクの切り替えを行うものを一般的にはディスパッチャといいますが,タイム・スライスの場合は,タイム・スライシング・スケジューラと呼ばれています.

また,一定の時間で区切るといっても,CPUが処理するのに都合のよい基本単位に分割する必要があります.これをスレッドといいます.

OS/2ではスレッドの実行時間がおよそ50ms程度です.



トップに戻るORマルチタスク トップに戻る


タイム・シェアリング・システム
(TSS time sharing system)

マサチューセッツ工科大で開発された,複数のユーザが1台のコンピュータで同時に処理を行うシステムです.時分割処理ともいわれています.

分割の時間が非常に短いため,ユーザはあたかも自分一人でコンピュータを専有しているように使用することができます.しかし,処理内容によってはかなり時間を要するものもありますし,プライオリティの低いものは後回しにされるので,いつでも待たずに使用できるわけではありません.

トップに戻るORマルチタスク トップに戻る


プライオリティ

プライオリティを直訳すれば「優先度」となり,各所で使われます.

マルチタスクで使用する場合は,タスク(プロセス)の実行優先度を意味しています.タスクには緊急度が高く速く処理しなければいけないものもあれば,そうでないものもあります.そこで,緊急度の高いタスクには高いプライオリティを,そうでないタスクには低いプライオリティを設定してやることにより,効率よく処理をすることができます.

OS/2では,高いほうからタイム・クリチカル,レギュラ,アイドルの三つの優先順位があります.

また,プライオリティには,プログラムに設定するものと,OSが状況によりプロセスのプライオリティを判断する場合とがあります.

トップに戻るORマルチタスク トップに戻る










OS/2 Warp
(Operating System/2)




 IBM社がMS−DOSの後継OSと位置づけている次世代OS.95年にマイクロソフト社から発売されたWindows95に対抗して米国で94年末,国内でも95年3月に
Warpの名で発売されました.

 完全な32ビットOS化,プリエンプティブなマルチタスク,GUI(グラフィカル・ユーザー・インタフェース)の採用,MS−DOS,Windows,OS/2が同じOS/2の環境で共に稼働するシームレスのOSです.

 OS/2はマイクロソフトとIBMの両社からシングルユーザ・シングルタスクであるMS−DOSの後継OSとして,87年4月にVer1.0が発売されました.シングルユーザ・マルチタスクのOSとして開発され,その安定性から企業のユーザ中心に利用されていました.その後マイクロソフトのウィンドウズ3.0の成功により,マイクロソフト社はOS/2の開発から撤退しWindowsNT,Windows95,と独自のOSの戦略を展開しています.

 これに対抗しIBM社はメモリの保護を徹底し,個々のアプリケーションに資源が占有されることのないプリエンプティブなマルチタスクによるスムースで効率の良いマルチタスクの実現,GUIによるPresentation Managerとしてユーザーフレンドリーなワークプレース・シェルを提供しました.また従来のDOS,ウィンドウズのアプリケーションをOS/2上で実行できる仮想DOSマシンによる[互換DOSボックス],二重ブートによるDOSの起動などを用意し,過去の資産運用にも対応しています.
< copyright 1995 相沢一石 > 

 米国では本格的な32ビット次世代OSとしてウィンドウズに対抗して健闘しています.

トップに戻るOROS/2Warp トップに戻る


Warp

OS/2Ver3.0をIBMでは新しい時代へのワープととらえてこの名前で発売しています.従来の,多くのメモリを必要とし重いと言われていたOS/2を日本語版では最低5Mバイト以上 英語版では4Mバイト以上のメモリで,CPUも386でも軽快に稼働するようになっています.
LaunchPadの導入などで常時使うアプリケーションの立ち上げの簡略化,ドラッグ&ドロップによる操作環境の充実など,オブジェクト指向の流れに対応し,次のタリジェントが気になります.当初発売されたものはWIN-OS/2は含まれないバージョンでWindows3.1のライセンスがない分安価になっています.従来のWindows3.1がそのまま動きます.

 OS/2はVer2.1からCD−ROMでも供給されています.WarpのCD-ROM版にはインターネットの接続のためのツール一式が添付されると共に,IBMはWarpの利用者専用のIP接続サービスを行うなど,OS/2の拡販に躍起になっています.

トップに戻るOROS/2Warp トップに戻る


WIN/OS2

 OS/2上でWindows3.1のアプリケーションプログラムを実行するための機能,OS/2のVer2.1まではOS/2上でWindows3.1のプログラムアプリケーションを稼働するためには必須でした.Ver2.11以後はWIN−OS/2がなくてもネイティブのWindows3.1をOS/2で稼働できるようになっています.

トップに戻るOROS/2Warp トップに戻る


二重ブート

 DOSのユーザーがOS/2を導入した後もコマンドの指示でOS/2からDOSへ,DOSからOS/2へ切り替え再起動を行うために,O/S2が用意したものです.

AT互換機のベースとなるOSのMS-DOS(PC-DOS)では起動時に導入するOSを選択する機能を持っていません.そのためDOSを使用していたシステムにOS/2を導入すると以後原則としてOS/2しか起動できなくなります.

そこでOS/2は導入時にDOSの環境がシステム上にあるときはこの二重ブートシステムを導入します.OS/2の互換DOSボックス以外にピュアなDOSも利用環境が確保されています.OS/2にはこの他に起動時にOSの選択ができるブートマネージャも用意されています.

トップに戻るOROS/2Warp トップに戻る


LaunchPad

 OS/2WarpVer3.0から利用できるようになった機能で,頻繁に利用するアプリケーションプログラム(オブジェクト)をLaunchPadに登録しておき直接ランチパッドのオブジェクトの絵をクリックすることでオブジェクトをアクセスできるようになりました.
Launchは港などでの水先案内を行うランチに由来するのでないかと思っています.

トップに戻るOROS/2Warp トップに戻る


ワークプレース・シェル

 ユーザーから見えるOS/2の仕組みをワークプレース・シェルと呼んでいます.OS/2の中身の詳細をユーザーが知らなくてもコンピュータを容易に利用できるようにグラフィカルに表示されたデスクトップで,オブジェクトをマウスで選択し,必要な指示を与えることで処理ができるような仕組みです.

トップに戻るOROS/2Warp トップに戻る


仮想DOSマシン

 インテル386以上のCPUが持っている仮想86モードを利用し,CPU上に複数の8086の実行環境を作成しその実行環境でDOSのアプリケーションを実行します.この場合は各DOSの環境は独立に設定することができます.そのため,コンベンショナルメモリもそれぞれの実行環境に合わせた適切な設定が可能ですので,コンベンショナルメモリの確保というDOSの悩みは大いに解消されます.

トップに戻るOROS/2Warp トップに戻る


ブートマネージャ

 OS/2に標準で添付されているブート制御プログラムで,任意のOSを選択して起動することができます.二重ブートではOS/2とDOSの切り替えはできますがそれ以外のOSの切り替えはできません.ブートマネージャを利用するとそれ以外のOSについても選択起動ができます.

ディスクの区画設定時にOS/2に添付されたFDISKコマンドで区画の設定,ブートマネージャの設定を行います.

トップに戻るOROS/2Warp トップに戻る


プリエンプティブなマルチタスク

 マルチタスクでは,複数のタスクを順次切り替えて実行することができます.これによって,処理が同時に進行しているかのように見えます.しかし,Windows3.1では,各タスクがCPUを占有する時間をシステムによって管理しないノンプリエンプティブなマルチタスクであるために,プリント作業時などにおいては,プリントのタスクが必要以上にCPUを占有し,全体の作業効率を落としています.プリエンプティブなマルチタスクではそのようなことはありません.

トップに戻るOROS/2Warp トップに戻る


タリジェント

 IBM社とアップル社の合弁でOS開発のために設立されたタリジェント社で,オブジェクト指向による次世代OSを開発する予定になっていた.

トップに戻るOROS/2Warp トップに戻る










MS-DOS
(Microsoft Disk Operating System)




Keywords:TSR,パイプ,リダイレクト,フィルタ,FIFO



マイクロソフト社が開発した8086系CPU用のシングル・ユーザ/シングル・タスクのOSです.

歴史的には,1970年代後半に8ビット用パソコンのOSとして主流となったデジタル・リサーチ(Digital Research)社のCP/Mをモデルに,SCR社(シアトル・コンピュータ・プロダクツ)が16ビット用OSとして86-DOSを作ります.それをマイクロソフト社が買い取り,改造を加えて1981年8月にIBMパーソナル・コンピュータのOSとしてリリースされたのが始まりです.IBM用パソコンのOSでしたのでPC-DOSとも呼ばれていました.

その後,UNIXの影響を受けて階層ファイル構造を取り入れたり,日本語処理などの国際化サポート,ネットワーク対応など数回のバージョンアップを重ね,今では16ビット機の世界的な標準OSになっています.

MS-DOSそのものは,シングル・タスクのOSですが,マルチタスクを実現するための準備がなされており,
TSRやMS-Windowsのように複数のプログラムを常駐させて実行させることができます.

MS-DOSは次の五つの部品から構成されています.
? オペレーティング・システム・ローダ
? MS-DOS BIOS(IO.SYS)
? MS-DOSカーネル(MSDOS.SYS)
? シェル(COMMAND.COM)
? サポート・プログラム(外部コマンド)

また,シェルではパイプ,I/Oリダイレクトなどの便利な機能をサポートし,外部コマンドとしてフィルタなどのユーティリティ・プログラムを多数提供しています.

現在,IBMが販売するPC DOSは7.0,マイクロソフトが販売するMS-DOSは6.2が最新バージョンです.
< copyright 1994 互野恭治 > 

トップに戻るORMS-DOS トップに戻る


TSR
(Terminate Stay Routine)

一度メモリ内にロードして実行すると,メモリ内に常駐してほかのプロセスから何度でも呼び出して利用できるプログラムのことです.

とくに画面のハード・コピーを取るなど,OSの機能拡張に用いられる場合が多いようです.

MS-DOSでは,パッシブTSRとアクティブTRSがあります.パッシブTSRはほかのプログラムから呼び出されて利用されるものですが,アクティブTRSはキー打鍵などの外部で起こるイベントによって起動されるようになっています.

トップに戻るORMS-DOS トップに戻る


パイプ

マルチタスク・システムにおいて,タスク(プロセス)間のデータ通信に用いられる手法の一つです.パイプはあるプロセスによって書かれ,別なプロセスによって読まれます.

パイプの格納場所は,メモリもしくはディスク・ファイルで典型的なFIFOの形式となります.

MS-DOSの場合は,マルチタスクではありませんがパイプをサポートしており,ディスクにテンポラリ・ファイルを作って,プロセスからプロセスに情報を引き渡すことができます.例えば,
DIR|SORT
はディレクトリ一覧をテンポラリ・ファイルとして保存し,その結果をもとにコード順に並べ替えて出力するものです.

トップに戻るORMS-DOS トップに戻る


リダイレクト

リダイレクトとは標準入出力の切り換えをいいます.UNIXの影響を強く受けたMS-DOSなどでは,入出力の対象がすべてファイルとして同格に扱われます.

そのため,入出力の機器やファイルを簡単に切り換えることができます.例えば,
DIR 〉TEXT.TXT
は,ディレクトリの内容を画面ではなくファイル(TEXT.TXT)として出力します.

トップに戻るORMS-DOS トップに戻る


フィルタ

フィルタとは,標準入力からデータを読み取り,それに対して所定の変換を行って結果を出力するコマンドのことをいいます.

MS-DOSには次の3種類のフィルタが用意されていますが,UNIXなどでは,このほかにもスペル・チェックやワード・カウントといったフィルタを数多く備えています.

FIND…検索
MORE…1画面ごとのスクリーン出力
SORT…並べ替え
各種フィルタは,標準入力からデータを読み込み,標準出力へ出力するようになっていますから,I/Oリダイレクトによってファイルの入出力を制御することができます.

下記に,6月に作られたファイルを取り出して,ソートするという例を示します.
dir|find "-06-"|sort 〉temp

トップに戻るORMS-DOS トップに戻る










CONFIG.SYS




Keywords:COMMAND.COM,AUTOEXEC.BAT,デバイス・ドライバ,Multi-Config



CONFIG.SYSは,MS-DOSが起動するときにシステム環境を設定するためのファイルです.CONFIG.SYSを利用することによって,
デバイス・ドライバや必要な機能だけをシステムに組み込むことができます.そのためのコマンドとして,BUFFERS,FILES,DEVICE,SHELLなどが用意されています.

CONFIG.SYSで設定した環境を変更する場合には,マシンの電源をOFFにするか,リセットするかします.

MS-DOS 6.X以降には,複数のCONFIG.SYSを管理するMulti-Config機能が追加されています.

CONFIG.SYSが読み込まれた後は,COMMAND.COMというシェル・プログラムが動き,AUTOEXEC.BATを読みにいきます.
< copyright 1994 諏訪寿行 > 

トップに戻るORCONFIG.SYS トップに戻る


デバイス・ドライバ

デバイス・ドライバは,名前のとおりデバイス(装置)を駆動させるためのソフトウェアですが,CONFIG.SYSの支配下で使用させるために,その構造には図に示すような一定の規則があります.



トップに戻るORCONFIG.SYS トップに戻る


COMMAND.COM

COMMAND.COMは,キーボードからのコマンドを受け付けてアプリケーションを起動したり,COMMAND.COM自身がもつ内部コマンド,例えばDIRなどを実行したりします.このようなソフトウェアをコマンド・プロセッサと呼びます.

トップに戻るORCONFIG.SYS トップに戻る


AUTOEXEC.BAT(バッチ処理)

一連のコマンドを同じ順序で入力する場合,いちいちDOSのコマンド・プロンプトから入力するのは大変です.そこで,こうした煩雑さを回避するために,これらの一連のコマンドを .BATという拡張子のファイルに記述しておきます.

こうしておけば,DOSのプロンプトからファイル名を入力するだけで,一連のコマンドが実行されます.これをバッチ処理と呼び,拡張子 .BATの付いたファイルをバッチ・ファイルと呼びます.

このようなバッチ・ファイルの中で,MS-DOS起動時に自動的に実行される特別なファイルが,AUTOEXEC.BATです.

トップに戻るORCONFIG.SYS トップに戻る


Multi-Config

今まで,ワープロを使うときとLAN環境などでCONFIG.SYSの内容を書き換えてリブートするようなことが頻繁にあり,たいへん不便でした.このマルチ-コンフィグレーション・コマンドを使えば,目的に応じて最適化できます.

〈使用例〉

3個のメニュ項目で,タイムアウト10秒後
[other]メニュが自動的に選択される.
カラー指定なし
[menu]
menuitem=taro, Boot for Taro
menuitem=hanako, Boot for Hanako
menuitem=other, Boot for everybody
menudefault=other, 10
共通部分
[common]
dos=high
buffers=5
device=c:\dos\himem.sys
一太郎専用コンフィギュレーション
EMSを使う
[taro]
files=30
device=c:\dos\emm386.exe
花子専用コンフィギュレーション
EMSを使わない
[hanako]
files=20
device=c:\dos\emm386.exe noems
その他のコンフィギュレーション
[other]
files=10
トップに戻るORCONFIG.SYS トップに戻る










システム・コール




Keywords:PSP,FCB,DTA,ファイル・ハンドル,INT 21h



システム・コールは,AHレジスタあるいはAXレジスタにDOSファンクションと呼ばれる機能コードを設定して
INT 21h命令を実行します.

ユーザに公開されているシステム・コール以外にもユーザが利用できる未公開システム・コールと呼ばれるものがあります.マイクロソフト社はこれらを保証していませんが,利用価値の高いものです.

例えば,アプリケーションがシステム・コールを利用しているかどうかを示すフラグ(InDOSフラグ)のアドレスを取得するもの,PSPのアドレス,カレント装置のDPBアドレス,内部変数領域のアドレスを取得するものなどがよく使われます.
< copyright 1994 諏訪寿行 > 

トップに戻る


FCB,DTA

FCB(File Control Block)とDTA(Disk Transfer Address)は,ディスクとのリード/ライトを行うときに利用される領域です.FCBとDTAのデフォルト領域は,PSP内に確保されています.

これらの領域は,ユーザが独自に設定することも可能になっています.DTAの変更はDOSファンクションの1AH,FCBはファイル・オープン時にFCBの先頭アドレスを渡すことによって行われます.

FCBとDTAを利用したファイルへのアクセスは,CP/Mとの互換性のために設けられているものです.この方式では階層ディレクトリを扱うことができません.

しかし,MS-DOSではVer2.0から階層ディレクトリをサポートするUNIXのようなシステム・コールが追加されているので,ファイル・アクセスには
ファイル・ハンドルと呼ばれる,システムが管理するファイル記述子を利用して行います.

トップに戻るORシステム・コール トップに戻る


PSP,システム領域

.COMや .EXEなどの実行可能なファイルは,メイン・メモリの空き領域にロードされ,その領域はプログラム・セグメントと呼ばれます.

MS-DOSでは,このプログラム・セグメントの前に100Hバイトの作業領域を確保します.ここには,コマンド・ラインからのパラメータや各種エントリ・ポイントなどが格納され,ファイルをアクセスするための
FCBやDTA,その他の作業領域としてMS-DOSシステムが利用します.

この領域は,PSP(Program Segment Prefix)と呼ばれています.コマンド・ラインからパラメータを入力した場合,第1パラメータは第1FCB,第2パラメータは第2FCBにそれぞれ格納され,ファイル名はFCB形式のファイル名に変換されます.

コマンド・ラインの全文字列は,そのままのイメージでDTAに格納されます.

トップに戻るORシステム・コール トップに戻る


ファイル・ハンドル

MS-DOSの標準ファイル・ハンドルは,表のようになっています.

MS-DOSでは,0〜4のファイル・ハンドルをあらかじめオープンしてあるため,これらのハンドルで割り当てられたファイルもしくはデバイスにすぐアクセスすることができます.


ハンドル番号 機能
0 標準入力(キーボード) デバイス名CON
1 標準出力(スクリーン) デバイス名CON
2 標準エラー出力(スクリーン) デバイス名CON
3 標準補助装置(RS-232Cなど) デバイス名AUX
4 標準プリンタ デバイス名PRN

トップに戻るORシステム・コール トップに戻る


INT 21h命令

MS-DOSのバージョンによって異なりますが約70個〜115個のファンクションが公開されています.プログラミング上必要なのに公開されていないUNDOCUMENTEDなファンクションも多く存在します.

下の図はINT 21hファンクション06hの直接コンソール入出力の呼び出し方です.



トップに戻るORシステム・コール トップに戻る










メイン・メモリ,主記憶装置




Keywords:プロテクト・メモリ,EMSメモリ,XMS メモリ,VCPI,DPMI,EMM386.EXE,DOS Extender



MS-DOSから利用できるメモリをハードウェア的に区分するとメイン・メモリ,
プロテクト・メモリ,EMSメモリの3種類に分けられます.

メイン・メモリは,コンベンショナル・メモリとも呼ばれ,ユーザが直接利用できるメモリです.直接利用できないところをXMSメモリといいます.16ビットCPUが直接管理できるメモリは1Mバイトですが,PC98シリーズやIBM PCなどでは,上位384Kバイト(A000h〜FFFFFh)を予約領域(システム領域)として,グラフィックVRAM,テキストVRAM,システムROM領域などに割り当てています.

そのため,ユーザが実際に利用できるメモリは640Kバイト(00000h〜9FFFFh)になっています.
< copyright 1994 諏訪寿行 > 

トップに戻る


プロテクト・メモリ

プロテクト・メモリは,アドレスが1Mバイト(100000h)以上に割り当てられているメモリ領域です.80286/i386以上のCPUで利用できる領域です.

ただし,この領域をMS-DOSで利用するためには,EMM386.EXEなどのメモリ管理用のデバイス・ドライバを利用しなくてはなりません.

この広いメモリを複数のプログラムから有効に使えるようにするために,
VCPI,DPMIという規約が作られました.



トップに戻るORメイン・メモリ,主記憶装置 トップに戻る


VCPI,DPMI

VCPIは,Virtual Control Program Interface,DPMIは,Dos Protected Mode Interfaceの略です.80286以上のCPUのプロテクト・モードでプロテクト・メモリを利用する場合,EMS,XMS,
DOS Extenderなどの方式があります.しかし,それらは独自に考案された方式であるため,統一的な管理がなされていません.

VCPIは,1989年6月に,Phar Lap Software社とQuarterdeck Office Systems社の2社を中心に策定された規格です.これに対してDPMIは,Microsoft社を中心とする11社のソフト・ベンダが参加して作成した規約です.この11社の中には,先にVCPIを規定した2社も含まれています.

DPMIは,MS-Windows3.0がこの規約に対応したことによって業界の標準になりました.MS-Windowsでは,プロテクト・モードで動作しているアプリケーションが,リアル・モードに存在するBIOSにアクセスするとき,DPMIを利用します.

また,MS-Windows上で複数のMS-DOSアプリケーションを切り替えて使用するときにも,DPMIが利用されています.

トップに戻るORメイン・メモリ,主記憶装置 トップに戻る


XMSメモリ

MS-DOSの管理下に入ったプロテクト・メモリをXMSメモリと呼んでいます.現在では,プロテクト・メモリを複数のアプリケーションに解放する規格であるVCPIやDPMIが策定されています.これらのためにMS-DOSに用意されたドライバがHIMEM.SYSです.

XMSメモリは,HMA(High Memory Area)とEMB(Extend Memory Block)という二つの領域に大きく分かれます.HMAは,メイン・メモリのすぐ上のアドレス(100000h〜10FFEFh)を占める約64Kバイトの領域です.

80286以上のCPUのリアル・モードでは,この領域をメイン・メモリの延長として確保することができ,メイン・メモリと同様高速にアクセスすることが可能です.

トップに戻るORメイン・メモリ,主記憶装置 トップに戻る


DOS Extender

DOS Extenderは,プロテクト・モード用に作られたプログラムをMS-DOS上で利用できるようにするためのプログラムです.

プロテクト・モードでは,1Mバイトを超えるメモリを扱えますから,大容量のメモリを必要とするアプリケーションがDOS Extender用に作成されています.

日本では,DOS Extenderを採用している例はあまり多くありませんが,富士通のパソコンFM-TOWNSのOSでは,このDOS Extenderを標準的に採用しています.

DOS Extenderによる拡張は,EMSなどと違ってMS-DOSにデバイス・ドライバを組み込む必要がない,ソフトウェアの移植が比較的容易に行えるなどの利点がありますが,DOS Extender自体の規格の統一がなされなかったこともあり,今ひとつ普及するにはいたっていません.

また,仮想EMSドライバのように,ほかにもプロテクト・モードを利用したプログラムがあると,メモリなどの競合がおきてしまい,共存することは難しくなっています.それを回避するための規格がVCPIとDPMIです.

トップに戻るORメイン・メモリ,主記憶装置 トップに戻る










フロッピ・ディスク,ハード・ディスク




Keywords:IBMフォーマット,フォーマット,SASI,SCSI,ブート・セクタ,セクタ,物理フォーマット,IPL,FAT



フロッピ・ディスクもハード・ディスクも外部記憶装置として分類されます.MS-DOSでは,ハード・ディスクも容量の大きなフロッピ・ディスクとして扱います.

それに対し,CPUが直接アプリケーションを動かすために必要とする記憶領域のことを主記憶装置といい,パソコンではメイン・メモリあるいはコンベンショナル・メモリと呼ばれ半導体メモリが使用されます.

ハード・ディスク(HD)にしてもフロッピ・ディスク(FD)にしても,一番初めに行わなくてはならないのは,フォーマット(初期化)です.

MS-DOSでは
IBMフォーマットと呼ばれる形式にフォーマットされます.フォーマットにはFORMATコマンドが利用されます。NEC98シリーズの場合はフロッピ・ディスクのフォーマットを行うためにはFORMAT.EXE,ハード・ディスクのフォーマットを行うためにはFORMAT /Hを利用します.

PC98シリーズでは,最初ハード・ディスクのインターフェースとしてSASIを採用しましたが,最近では内蔵ドライブはIDE,外付けドライブはSCSIインターフェースのドライブを使用するようになり、AT互換機との違いが少なくなっています。
< copyright 1994 諏訪寿行 > 

トップに戻る


フォーマット,トラック

フォーマットとは,磁気コーティングされたディスクにトラックやセクタを割り振ることです.トラックは同心円状に構成され,リード/ライト・ヘッドはこのトラック(同心円)に沿ってデータのリード/ライトを行います.

レコードの溝に近い構造をしていますが,渦巻き状ではありません.磁気リングの幅は,リード/ライト・ヘッドの幅よりも若干広くなっています.各トラックは,ディスクの中心から放射線状にいくつかの区画に区切られます.この区切られた1区画を
セクタと呼びます.

トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


セクタ

セクタは,ディスク上の物理的記憶域の最小単位で,サイズが一定しています.

セクタによって構成されているトラックは,ディスク・フォーマット,オペレーティング・システムによってディスクに記録されています.

1Mバイトのフロッピ・ディスクでは,5.25インチ2HDと3.5インチ2HDが一般的ですが,これらのフロッピ・ディスクでは,トラック本数が77本(0〜76),1論理トラック(サーフェス0,サーフェス1を合わせたもの)あたりのセクタ数が16セクタ,1セクタのサイズは1024バイトとなっています.

MS-DOSでディスク上のデータにアクセスする場合は,相対セクタ番号を利用します.相対セクタ番号は,トラック0,サーフェス0,セクタ1の位置を0にし,以下最後のセクタまで通し番号を付けたものです.

2DDや2HDのフロッピ・ディスクでは,ディスクの両面を利用してデータを記録することができます.ディスクの表面がサーフェス0もしくはサイド0,裏面がサーフェス1もしくはサイド1となっています.

MS-DOSのフォーマット・コマンドでは,トラック,セクタの区画(
物理フォーマット)を行った後に,0番目のトラックにIPL,FAT,ディレクトリなどの領域を確保(初期化)します(論理フォーマット).

トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


SASI,SCSI

PC98用のハード・ディスクでは,インターフェースにSASI,SCSIとIDEの3種類がありますが,現在はIDEが多くなっています.

ハード・ディスクのフォーマットには標準フォーマットと拡張フォーマットの2種類があります.標準フォーマットでは,ハード・ディスク1台あたりの容量が最大20Mバイトまで,1クラスタ・サイズは常に8Kバイトを必要とします.

クラスタは,ディスク・ファイルを管理するうえでの最小単位ですが,標準フォーマットでは例えば1バイトのデータのようなどんなに小さなファイルでも,1クラスタは8Kバイトのファイル・サイズを必要とすることになります.

これに対して,MS-DOS 3.1以降にサポートされている拡張フォーマットでは,SASIの場合,1パーティションあたり最大40Mバイト,SCSIの場合で最大2Gバイト(ただし,MS-DOS3.3では最大128Mバイト)の容量が確保できます.

1クラスタのサイズは,確保する領域のサイズにより2Kバイト,4Kバイト,8Kバイト,16Kバイト,32Kバイトとなっています.

トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


IPL

IPL(Initial Program Loader)は,ディスクのシステムをメモリ上に読み込むためのプログラムで,MS-DOSがメイン・メモリにロードされるために必要なプログラムです.IPLは,ディスクのトラック0のセクタ1,つまり一番外周に格納されています.

トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


IBMフォーマット

IBMフォーマットは,図のような構成になっています.この中のセクタを特定するために,すべてのセクタにLSN(Logical Sector Number)と呼ばれる連番をつけ,さらにいくつかのLSNをまとめてクラスタという名にして番号をつけます.

LSN0はMS-DOSの予約領域で,
ブート・セクタと呼ばれます.LSN1からは,FATとそのコピーおよびルート・ディレクトリ領域などが割り当てられます.



トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


ブート・セクタ

ブート・セクタは表のような構成になっていて,ディスクの構成を示している情報を示すBPB(BIOS Parameter Block)などを含んでいます.このBPBの内容はIO.SYSが管理していますが,MSDOS.SYS側でもBPBの内容を把握している必要があるので,BPBに論理ドライブ名などを加えてDPB(Drive Parameter Block)として管理しています.



トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


物理フォーマット,論理フォーマット

ハード・ディスクのフォーマットは,物理フォーマットと論理フォーマットの2段階に分かれています.物理フォーマットでは,ディスク・ドライブ全体に対して,トラックおよびセクタを設定します.物理セクタ長の設定では,256バイトと512バイトのいずれかを選択することができます.

物理セクタ長を256バイトで設定してフォーマットしたディスクでは,分割できる最大パーティションは8となり,512バイトで設定した場合は最大16となります.

論理フォーマットは,ディレクトリ・エントリ,FATの初期化などを行い,MS-DOSで使用する領域をディスク・ドライブから確保します.

ディスクの物理的なリード/ライトの単位はセクタですが,ファイルを管理する最小論理単位は,クラスタとなります.

クラスタには0番からの通し番号が割り振られていて,どのファイルがどのクラスタを利用しているかは,FATに記録されています.FATテーブルのクラスタ管理用フィールドには12ビットと16ビットの二通りのものがあります.

トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る


FAT

FAT(File Allocation Table)は,ファイルを管理するために記憶開始クラスタ番号および使用したクラスタ番号などを記録している領域のことで,ファイル・アクセスで重要な役割をします.

MS-DOSでファイルをアクセスするにはいくつかの方法があり,ハードウェアを直接制御することも可能ですが,普通はソフトウェアからクラスタを指定してファイルをアクセスします.

MS-DOSでは,ファイル・アクセスの基本単位をクラスタによって管理しています.1クラスタは,物理セクタの2のべき乗となるように確保されます.一般的に,1クラスタは,1もしくは2セクタとなっていることが多いようです.

このファイル・アクセスを行うにあたって必要となる情報は,どのファイルがどのクラスタを指しているか,ということです.

大容量のハード・ディスクに対応するため,16ビットFATが採用されました.16ビットFATの場合,65536(2の16乗)個のクラスタを扱うことができるため,40Mバイトのハード・ディスクでも1クラスタ・サイズは2Kバイトですみます.

トップに戻るORフロッピ・ディスク,ハード・ディスク トップに戻る










EMSメモリ




Keywords:ページ・フレーム,論理ページ,仮想EMS,HMA,EMB,XMM,HIMEM.SYS,UMB,EMM386,DEVICEHIGH,LOADHIGH



EMSメモリは640Kバイト以上のメモリを利用するために,A0000h〜FFFFFhのシステム領域の空き領域に
ページ・フレーム(窓)を作成し,この領域に増設RAMの任意の64Kバイトをバンク切り替えを行って投影(利用)できるようにしたメモリです.LIM-EMS(Lotus-Intel-Microsoft Expanded Memory Specification)ともいいます.

プロテクト・メモリとEMSメモリの違いは,前者がアドレスの実空間にマップされているのに対して,後者はメイン・メモリの一部とバンク切り替えによってマップされている,ということです.

プロテクト・メモリやEMSメモリは,メイン・メモリに対して拡張メモリと呼ばれています.拡張メモリは,それを管理するメモリ管理デバイス・ドライバによって,EMSメモリ,XMS(HMAとEMBからなる)メモリなどにソフト的に区分されます.

これらのメモリ管理デバイス・ドライバは,通常CONFIG.SYSの中でデバイス登録を行います.

EMSメモリには,プログラムを転送することができます.そのためにメイン・メモリを節約することができます.例えば,一太郎Ver5では,プログラムの一部と日本語FEPであるATOK8をEMSに転送することによって,メイン・メモリを節約しています.

EMSでは,拡張メモリ(最大32Mバイト)をページ単位(16Kバイト)で管理します.EMS上に設定されたこれらのページは,論理ページと呼ばれています.

メイン・メモリ上には,この論理ページにアクセスするための窓が設けられています.この窓をページ・フレームと呼んでいます.
< copyright 1994 諏訪寿行 > 

トップに戻るOREMSメモリトップに戻る




ページ・フレーム,論理ページ,仮想EMS

ページ・フレームの大きさは,16Kバイト×4ページ=64Kバイトとなります.ページ・フレームを構成する16Kバイトごとの各ページは物理ページと呼ばれ,論理ページと1対1に対応しています.

ソフト的なEMSメモリの設定は,仮想EMSと呼ばれます.仮想EMSは,32ビット・マシンのプロテクト・メモリをEMSメモリとして使用します.この方法を利用する場合は,当然マシンがプロテクト・メモリを搭載した32ビット機という条件がつきます.

仮想EMSを設定するためにMS-DOS5.0からは,
EMM386.EXEドライバが提供されています.

EMM386.EXEは,80386以上のCPUを搭載したマシンでプロテクト・メモリをEMSメモリとして使用するためのドライバです.80386以上のマシンを使用している場合は,EMM386.EXEを使用したほうがより高速にEMSメモリにアクセスすることができます.

トップに戻るOREMSメモリ トップに戻る


HMAとEMB

HMAは,FFFFFHの上約64Kバイトのリアル・モードからアクセスできる特別なメモリ領域です.

MS-DOS5.0からは,MS-DOSシステムの一部がHMAに対応しています.EMBは,HMAを越える領域です.EMBを利用する場合は,XMM(eXtend Memory Manager)を呼び出して,ユーザ固有のハンドル番号を受け取ります.

その後,XMMに対して拡張メモリの転送要求をすると,拡張メモリからメイン・メモリにデータが転送されてきます.論理的に,EMBは80286CPUを搭載したマシンでは16Mバイトまで,80386以上のCPUを搭載したマシンでは最大4Gバイトまで確保できることになっていますが,実際には32ビット・マシンで確保できる領域は,最大15Mバイト程度となっています.

XMSを設定するためにMS-DOS5.0では,
HIMEM.SYSドライバが提供されています.

トップに戻るOREMSメモリ トップに戻る


HIMEM.SYS

XMSを設定するためには,このドライバを組み込みます.CONFIG.SYSに次のようにデバイスを登録します.

DEVICE = HIMEM.SYS

さらに,MS-DOSシステムの一部(約60Kバイト)をHMA領域にロードさせたい場合は,CONFIG.SYSに次の行を加えます.

DEVICE = HIMEM.SYS
DOS = HIGH
UMBは,メイン・メモリの拡張ROM領域(C0000〜DFFFFの約128Kバイト)の空き領域に設定する領域です.拡張ROM領域は,周辺装置のBIOSやEMSのページ・フレーム領域として利用されています.

しかし,機器の構成によっては,かなりの領域が未使用になっている場合があります.この未使用の領域をUMBとして確保します.

トップに戻るOREMSメモリ トップに戻る


EMM386.EXEの設定

EMM386.EXEでは,80386以上のCPUを搭載した32ビット機で,XMSメモリをEMSメモリとして利用します.また,EMSだけではなく,
UMBを有効にする機能もあります.

このドライバを組み込む前には,必ずHIMEM.SYSを組み込んでください.設定およびスイッチは,次のとおりです.

DEVICE = EMM386.EXE /M
/P
/F

/M(メモリ・サイズ,Kバイト単位)もしくは/P(ページ単位,1ページは16Kバイト)で確保したいEMSのメモリ・サイズを指定します.残りがXMSのEMB領域となります.

/Mあるいは /Pを省略するとプロテクト・メモリは,すべてEMSメモリとして確保されます./Fは,ページ・フレーム・アドレスの設定でデフォルト値は、C0000h〜CFFFFhとなります.

EMSに代わる拡張メモリとして,MS-WindowsやMS-DOS5.0で積極的に推奨されているのが,XMSメモリです.

XMSメモリもEMSメモリ同様プログラムを転送することができますので,メイン・メモリの節約を行うことができます.

ただし,XMSではEMSと異なりハードウェア的な制約があります.条件としては,80286以上のCPUを搭載したマシンでプロテクト・メモリがサポートされていることです. したがって,PC9801VMなどのV30/8086CPUを搭載した古いPC98マシンでは,XMSメモリを利用することができません.

トップに戻るOREMSメモリ トップに戻る


UMB

UMBには,仮想UMBとUMBの2種類があります.仮想UMBは,32ビット・マシンのページング機能を利用してプロテクト・メモリを拡張ROM領域に割り当てます.したがって,この機能を利用するためには,プロテクト・メモリを装備した32ビット・マシンが必要という条件がつきます.

UMBは,拡張ROM領域にUMBを割り当てるだけですから,どのCPUでも実現できます.UMBに転送することのできるプログラムには,特に制約はありません.ただし,UMBとして確保できる領域は,システムの構成によっても異なりますが,EMSを設定している場合で約48〜64Kバイト程度とされています.そのため,あまり大きなプログラムは転送することはできません.

MS-DOS5.0で設定することのできるUMBは,基本的に仮想UMBです.UMB領域を確保するためには,仮想EMSドライバEMM386.EXEを組み込んで,/UMBまたは/NOEMSスイッチを指定します.

DEVICE = HIMEM.SYS
DEVICE = EMM386.EXE /UMB

または,

DEVICE = HIMEM.SYS
DEVICE = EMM386.EXE /NOEMS

EMM386.EXEでは,XMSメモリの中にEMSメモリを確保します.しかし,/NOEMSスイッチを指定すると,EMSメモリを設定せずにUMB領域のみを確保します.

これによって拡張ROM領域にページ・フレームが設定されないことになりますので,それだけUMBとして確保できる領域が多くなります.UMBを有効にするためには,CONFIG.SYSに次の行を付け加えてください.

DEVICE = HIMEM.SYS
DEVICE = EMM386.EXE /UMB
DOS = UMB

UMB領域に空きがあれば,このメモリ領域にドライバを上げることができる
DEVICEHIGHLOADHIGHコマンドが,MS-DOS5.0から追加されました. また,次のように設定すると,HMAにMS-DOSのシステムの一部を転送し,UMBを設定することが可能になります.

DEVICE = HIMEM.SYS
DEVICE = EMM386.EXE /UMB
DOS = HIGH,UMB

トップに戻るOREMSメモリ トップに戻る


DEVICEHIGH

DEVICEHIGHコマンドは,MS-DOS5.0からサポートされているデバイス・ドライバをUMB領域に転送するコマンドです.ほとんどのデバイス・ドライバは,UMB領域に転送することができますが,次のものは対象外です.

GRAPH.SYS,HIMEM.SYS,EMM386.EXE,
SMARTDRV.SYS

この他,PRINT.SYSで/Uスイッチが付いている場合と,RAMDISK.SYSで/Mスイッチが付いている場合は,UMB領域に転送することができませんので,通常のDEVICEコマンドを利用します.

トップに戻るOREMSメモリ トップに戻る


LOADHIGH

LOADHIGHコマンドは,MS-DOS5.0からサポートされている常駐プログラムをUMB領域に転送する場合に利用するコマンドです.コマンド・ラインもしくはAUTOEXEC.BATの中から実行します.

次のように指定すると,MS-DOSの常駐プログラムであるMIRRORをUMBに転送します.

A : \〉LH MIRROR /TA

MS-DOSの常駐プログラムには次のようなものがあります.

DOSKEY.EXE,MIRROR.EXE,APPEND.EXE,
MOUSE.COM

トップに戻るOREMSメモリ トップに戻る