このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ
  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • 入出力制御 へ行く。

*目次 [#j28e415a]

#contents


*入出力制御 [#qd9cd941]

 ''入出力制御方式''とは、各種の入出力装置を効率よく動作させるように制御することである。例えば、プロセッサのレジスタを経由して、[[主記憶装置]]と[[入出力装置]]の間でデータ転送を行われる。


**入出力制御の方式 [#t59dbb83]

 入出力装置を制御するには、次の方式がある。

-プログラム制御方式(直接制御方式、バスアービタプログラム制御方式)
--プログラムで、制御コマンドを制御用レジスタへ書き込む。
-チャネル制御方式
--専用ハードウェア(チャネル装置)がデータ転送制御プログラムを主記憶から自律的に読み出して、入出力装置を制御する方式。
---チャネル装置は、チャネルプログラムの指令を解読しながら、主記憶装置と入出力装置の間のデータのやり取りを制御する。
-DMA方式
-[[DMA方式]]
--[[マザーボード]]上にある各種の装置やメモリがCPUを介することなく、DMAコントローラーという専用ハードウェアをシステムバス/コントローラバスに接続して、データ転送を行う方式。

 次の図のおいて、実線が「データの流れ」、破線が「制御の流れ」とする。

#img(http://security2600.sakura.ne.jp/main2/image3/dma.jpg)
DMA方式
#img(,clear)

#img(http://security2600.sakura.ne.jp/main2/image3/cha.jpg)
チャネル制御方式
#img(,clear)


**チャネル制御の原理 [#j0e2e1d0]

 チャネル制御の入出力では、[[CPU]]を介さずに[[主記憶装置]]と直接データ転送を行うチャネル装置は、主記憶と入出力装置とのデータ転送の制御を行う。チャネル装置は、チャネルプログラム(チャネルコマンドの集まり)の指示に基づいて動作する。CPUでのチャネルプログラム開始命令の実行により、チャネル装置でチャネルプログラムがスタートする。そして、チャネルの一連の制御が終了すると、チャネル割り込みによって動作終了をCPUへ通知する。

#img(http://security2600.sakura.ne.jp/main2/image2/ch1.jpg)
#img(,clear)

 入出力動作は次のようになる。

+CPU:入出力関係命令(start I/O命令)を、指定チャネルにSVC命令で割り込みを発生させて指示する。
+チャネル:主記憶上のチャネルプログラムをチャネルに読み込む。
+CPU:自タスク(Aプログラム)の処理を中断して、他のタスクを実行する。
+チャネル:チャネルプログラムを解読し、実行する。読み込みの場合は、入出力機器からのデータを主記憶に転送する。
+チャネル:入出力動作完了を、割り込みによってCPUに通知する。
+CPU:割り込みによる入出力の終了処理を行い、Aプログラムを入出力命令の次の命令から実行可能とする。


*チャネルの種類 [#v2699413]

 入出力装置には、データ転送の単位によって次のように分類できた。

-データ転送の単位がブロック
--例:[[FD]]、[[磁気テープ装置]]
-データ転送の単位がバイト
--例:[[プリンタ]]、[[キャラクタ装置]]

 このようなデータ転送や装置の動作の違いに応じて、チャネル装置の種類が異なる。

 チャネルには接続されている入出力装置との間でのデータ転送方式により、次の方法がある。

-バーストモード
--開始から終了までひとつの入出力装置がチャネルを占有して使用するモードのこと。
---例:セレクタチャネル
-マルチプレクサモード
--複数の入出力装置が、ひとつのチャネルを時分割により共有して使用するモードのこと。
---例:バイトマルチプレクサチャネル、ブロックマルチプレクサチャネル


**ブロックマルチプレクサチャネル [#v2e26626]

 磁気ディスク装置のようなブロックデバイスには、シークと呼ばれるデータ転送を伴なわない動作がある。シーク動作中は、他の装置の制御に時間を使うことができる。このことを利用して、複数の磁気ディスク装置を接続詞、それらの動作を多重化できるようにしたチャネル装置である。

#img(http://security2600.sakura.ne.jp/main2/image2/ch2.jpg)
#img(,clear)


**セレクタチャネル [#fb0f7975]

 磁気テープ装置の場合には、磁気ディスク装置でのシークに相当するような動作がない。このような装置では、動作の多重化ができないため、1台の装置に対するチャネルプログラムが終了するまでチャネルを占有し、チャネルプログラム終了後に、別の装置に切り替える。

#img(http://security2600.sakura.ne.jp/main2/image2/ch3.jpg)
#img(,clear)


**バイトマルチプレクサチャネル [#ed16d6a8]

 プリンタのように低速のキャラクタデバイスでは、データ転送はバイト単位で行われる。しかし、このような装置のチャネルプログラムは、入出力バッファ単位での転送が行うように設計されていることが多い。そこで、チャネルプログラムの進行を多重化することで複数のキャラクタデバイスを並列して制御し、スループットを高めることができる。

#img(http://security2600.sakura.ne.jp/main2/image2/ch4.jpg)
#img(,clear)


*入出力装置の接続方式 [#kd0698f7]

-スター型接続
--チャネル装置から各入出力装置へ個別に接続経路を設定する方式。
---例:[[USB]]
-デイジーチェーン接続
--チャネル装置から芋づる式に各装置へ接続経路を連結する方式。
---例:[[SCSI]]

#img(http://security2600.sakura.ne.jp/main2/image2/ch5.jpg)
#img(,clear)


*入出力制御の高速化 [#c29934bf]

 磁気ディスク装置へのアクセスを高速化するには、データ転送・回転待ち・シークの各動作を効率よく行うことがポイントである。この状況において、高速化をするには次のようなアプローチが考えられる。

-オフラインシーク
--シーク時間を他の装置の動作のために解放する。
-オフラインサーチ
--回転待ち時間を、他の装置の動作のために解放する。
-データ転送の高速化
--ディスクの回転数を高くする、あるいは磁気ディスクを多重化して実質的な転送速度を高める。
--データ転送ケーブルも高速化する。例えば、光ケーブルなど。
-ディスクアクセスを減らす
--ディスク装置に[[キャッシュメモリ]]を実装し、同一データへのアクセスを省略する。これをデバイス側で行う場合で、OSの機能としてソフトウェアで行うものがある。


*参考文献 [#j082b226]

-『平成12年度 【要点・重点】短期集中速攻対策 第1種』
-『2000年度版 よく出るよく分かる第1種【午前】問題集』
-『ソフトウェア開発技術者 午前対策(基礎編) テキスト』
-『ソフトウェア開発技術者 合格エッセンシャルハンドブック』