Web教材一覧ハードウェアとソフトウェア

入出力制御

キーワード

入出力制御方式、バス、チャネル、デバイスドライバ、プログラム制御方式、DMA制御方式、チャネル制御方式、CCW、マルチプレクサチャネル


入出力管理

入出力管理(I/O管理)とは、コンピュータ本体と入出力装置との間の入出力を管理するOSの機能です。CPUの処理速度に比べて入出力装置の動作は非常に遅いので、入出力命令が発生すると、その情報を入出力コントローラに渡し、入出力コントローラが入出力を実行している間にCPUは他の処理をさせれば、全体としての効率が向上します。
 タスク管理がCPUを対象にしているのに対して、入出力管理は入出力に着眼しています。

入出力制御
入出力管理で、入出力コントローラにより入出力を制御をする機能を入出力制御(input-output control)といいます。 入出力装置は多様でそれぞれ特徴があります。磁気ディスクでは大量データの転送が必要ですし、キーボードはデータ量が小さく転送速度も比較的低速でよいでしょう。マウスでは画面での位置の表示が必要になります。それぞれの特徴にあわせてた制御方式(後述)があります。
入出力バッファ領域
入力したデータ、出力するデータは、メモリもしくはディスク装置上の特別な領域におかれます。これを入出力バッファ領域といいます。
入出力バッファ領域のデータは、CPUから見れば、機器の種類に関係なくメモリにあるデータのように扱うことができます。
スプーリング(スプール)
CPUと入出力の並行処理をスプーリングといいます。入出力バッファ領域に出力内容を置き、出力装置が処理を受け付けできる状態になった時に、その領域から装置へと出力を行なう仕組みです。
その典型的な適用例が印刷スプーリングです。印刷文書は、バッファに格納され、プリンタは処理できる速度でバッファから印刷文書を引き出して印刷します。利用者は、プリンタが印刷している間でも、次の印刷指示を、印刷バッファにキューを登録することができます。これを円滑に行うサーバをプリントサーバといいます。
複数の周辺装置を、稼働中に同時に動作させることもできます。
デバイスドライバ
入出力装置は製品ごとに特徴があります。OSは標準的な入出力の制御方式を提供しますが、製品ごとの機能をOSに持たせることはできません。それで、OSと入出力機器の間に、それぞれの機器専用のソフトウェアが必要になります。それをデバイスドライバといいます。
デバイスドライバは機器メーカーが作成提供しています。広く流布している機器はOSが事前にインストールされていますが、そうでない場合は、機器に付属しているCD-ROMやインターネットからインストールする必要があります。
デバイスドライバは、OSが提供する標準的方式のAPIを用いて連携します。そのため、OSが異なればそれに合わせたデバイスドライバが必要になります。OSに大きなバージョンアップが行われた場合も同様です。デバイスドライバがバージョンアップしてもOSを修正する必要はありません。
バス、チャネル
CPU、メモリ、入出力装置(内蔵機器もある)の間を結ぶ伝送路のことをバス(システムバス)あるいはチャネル(入出力チャネル)といいます。一般的には、バスは物理的、チャネルは論理的な表現ですが、とはメモリと入出力との間の伝送路、そこに設置される入出力専用のコンピュータ(回路)やそのソフトウェアをチャネルということもあります。

入出力制御方式

入出力制御方式とは、各種の入出力装置を効率よく動作させるための標準的な制御の方法です。

プログラム制御方式

PIO(Programmed I/O)方式、直接制御方式ともいいます。プログラムで制御命令をCPUの制御用レジスタへ書き込みます。
 入出力のたびにレジスタを介して主記憶装置と入出力装置の間のデータ転送を直接制御するため、CPUの動作が中断するので効率が悪い方式です。
 初期のコンピュータで用いられていた方式ですが、現在でもキーボードやプリンタなど低速な入出力装置に使われています。

DMA(Direct Memory Access)制御方式

CPUと入出力装置の間に、DMA(Direct Memory Access)コントローラとよばれる入出力制御専用の装置を設置して、CPUを介さずに入出力装置とメモリ間の転送を行う方式です。
 入出力命令があるとCPUはDMAコントローラに情報を送り、それ以降はDMAコントローラが入出力を行ないます。専用なので入出力速度が向上します。入出力が行われている間、CPUは他の処理ができるので、CPUの利用効率が向上します。
 HDDのように大量のデータをブロック単位で転送するのに適しているます。現在のパソコンの多くは、この方式を採用しています。
 反面、この方式はメモリと入出力装置間のバスを占有するので、入出力実行中に他の入出力装置へのアクセスができない欠点があります。

チャネル制御方式

DMA制御方式を発展させた方式です。DMAコントローラと同様なチャネル装置を設置します。チャネルはCPUから入出力命令を受けると、メモリに置かれた専用プログラム(CCW:Channel Command Word)を自律的に読出して実行します。
 チャネルでの伝送路には、接続装置別の専用チャネルと、複数種類別の汎用チャネルがありますが、いづれも通常のバスとは競合しないので、DMA制御方式が回避されます。
 汎用コンピュータでは、かなり以前から採用されていました。

チャネルの種類

チャネルには、大きく次の種類(モード)があります。
   チャネル
    ├セレクタチャネル(バーストモード)
    │   一つの入出力装置が開始から終了までチャネルを占有する
    │   (磁気テープ:連続して入出力するので中断の機会がない)
    └マルチプレクサチャネル
      │  複数の入出力装置が時分割でチャネルを共有する
      ├バイトマルチプレクサチャネル
      │  転送がバイト単位(キーボードやプリンタなど)
      └ブロックマルチプレクサチャネル
         転送がブロック単位
         (HDDのシーク時間にチャネルを他の機器に渡す)