'
&
$
% DMAについて:
ハードディスクなどの場合、入出力コントローラが内部のバッファと入出力装置 の間のデータ転送を行い、CPUが主記憶と入出力コントローラ内のバッファの 間のデータ転送を行うというのでは、大容量のデータ転送を行う際には割込み が頻繁に起こってCPUへの負荷も大きい。 そこで、主記憶のOS領域内にバッ ファを設け、CPUを介さずに入出力コントローラが直接そのバッファと入出力 装置間でデータ転送を行なうという方式が考えられた。この機構を直接メモリア クセス(Direct Memory Access,DMA)と言い、DMA方式でデータ転送を行な う入出力コントローラをDMAコントローラと言う。 (=⇒p.54の図) 場合によっては、デバイスコントローラとDMAコントローラが別に設けられ、
2つのコントローラが協調して直接メモリアクセスの動作をすることもある。(清 水5.1節)
• 実行中のプロセスの次の動作が入出力なら、
1 その入出力動作を行うように入出力コントローラ(またはチャネル)に指 令を出す、そして、
2 そのプロセスは一時的に待ち状態にして、別の(実行可能状態になってい る)プロセスを(並行して)走らせる。
• 入出力コントローラ(またはチャネル)は入出力動作が完了した時点で割込み 信号を(CPUに対して)発生する。
• 入出力終了の割込み信号を受けたら、その入出力動作を行ったプロセスを待ち 状態から実行可能状態に変更する。
プロセスA
プロセスB
(5)切 替え (1)入 力指 令
(7)出 力指 令
(6)終 了報 告
(9)出 力指 令
(12)終 了報 告 (10)終 了報 告 (3)終
了報 告
(4)入 力指 令
(8)切 替え
(11)切 替え
(13)切 替え (2)切
替え
遊び
遊び
プロセスA, Bの処理にかかった時間 プロセッサ
割込 み 割込 み
割込 み 割込 み
入出力コントローラ 入出力コントローラ
入出力コントローラ 入出力コントローラ
5.5 OS の機能呼び出し
{吉沢2.1.5節}
'
&
$
% p.15からの引用:
入出力機器は機器毎に制御の仕方が違う。
=⇒入出力機器の細かな制御も個々のシステムプログラマに任せて しまうというのでは、プログラマの負担が大きくなる。
=⇒入出力などの共通機能を容易に実行できる環境をハードウェア に付随して提供すれば、プログラマの生産性向上につながる。
これが初期のOSの目的であった。
• キーボード、ディスプレイ、磁気ディスクを始めとした入出力機器の細かな制御を個々 のシステムプログラマに任せてしまうというのでは、プログラマの負担が大きくなる。
• 複数のユーザが共用する資源(e.g.磁気ディスク,タイマ,メモリ,...)を一般のユーザ プログラムが独立に操作しては、システムが混乱してしまう。
@@
• 共用資源に対する操作は、全てOSに依頼してOSに実行してもらう。
• 共用資源に対する操作は、CPUが特権状態にある場合にのみ実行できるよう
にする。 '
&
$
% 補足:
• 一般のプロセスは特権状態になれない。
• 共用資源の操作に関わる機械語命令は特権命令と呼ばれ、
特権状態でないと実行できない様になっている。
例 5.1 (共用資源に対する操作がどう実行されるか) 一般のプロセスからOSにファイ ル読み込み要求を出す場合は、次のように処理が進行する。
(1) プロセスはファイル読み込み操作をOSに行ってもらうために割込み(システムコー ルという)を発生させ、待ち状態に入る。
(2) 割込み信号を拾ったOSは磁気ディスクを制御している装置に「ファイル読み込み」
の指令を出す。
(3) 「ファイル読み込み」操作の終了。
(4) OSは「ファイル読み込み」の通知(割込み)を受け取ると、プロセスを実行可能状態
にする。
(5) CPUが空いていれば実行を再開する。
OS プロセス
(2)駆 動命 令
(4)終 了報 告
(5)切 替え 他プロセス
の実行 プロセッサ
割込 (1) み システムコール
割込 み
磁気ディスク (非特権状態)
(特権状態)
入出力コントローラ
5.5. OSの機能呼び出し 41
演習問題
□演習 5.2 ソフトウェア誤り検出,入出力処理終了の報告,システムコール,ページフォー ルトの各々の割込みについて、割込み要因と割込み処理の内容、およびなぜ割込みで対処 するかの理由を簡単に説明せよ。
割込みの名前 割込み要因 割込み処理の内容 必要な処理を割込みを通 してOSに行なってもらう 理由
ソ フ ト ウェ ア誤り検出
入出力処理 終了の報告
シ ス テ ム コール
ペ ー ジ フォールト
□演習 5.3 割込みの機構が無かったらプロセスからOSへの処理の切替えをどの様に 行えるだろうか? 考えてみよ。
□演習 5.4 割込みの具体例を挙げそれらの使用目的を述べよ。
□演習 5.5 割込みを用いて多重プログラミングがどのように実現されるか説明せよ。
6 入出力装置を OS がどう扱えば良いか
• 入出力装置を制御するためにOSが何を行うか (吉沢2.3.1-4節,谷口2.5節),
• 入出力待ち行列管理(吉沢2.3.5節),
• 磁気ディスクに関する基本的な用語の説明(吉 沢2.3.6-7節)
6.1 入出力機器を管理する上での課題
{吉沢2.3.1〜2.3.2節} 次の2つの課題がある。
( • 入出力機器の制御
• 論理的なインターフェースの提供
'
&
$
% p.15からの引用:
入出力機器は機器毎に制御の仕方が違う。
=⇒入出力機器の細かな制御も個々のシステムプログラマに任せ てしまうというのでは、プログラマの負担が大きくなる。
=⇒入出力などの共通機能を容易に実行できる環境をハードウェ アに付随して提供すれば、プログラマの生産性向上につなが る。 これが初期のOSの目的であった。
入出力機器の制御:
• 入出力機器は多種多様に存在し各々に制御の仕方が異なっているので、それらの制 御プログラムをサポートすることはOSの開発において最も多くの労力を取られる。
また、
• ハードウェアの詳細な知識も必要になるため、一般に繁雑で難易度も高い。
• OSはハードウェアの能力を最大限に引き出さなければならない。
例 6.1 (論理的なインターフェースの提供) UNIX等の標準的な環境の下でプログラムを 作る場合、OSは入出力機器を操作するための論理的なインターフェースをプログラマに 提供してくれている。 その際、
• プログラマは、各々の入出力機器をファイルの一種と見ることができる。
(操作する機器に依存しない統一的なインターフェースが与えられている。)
=⇒入出力機器が変わってもプログラムの変更はほとんど必要ない。(ファイル名だけ)
• 物理的なインターフェースの実装は全てOSが行う。