になるが、プログラムの中の入出力以外の部分と全ての入出力を並行して(非同期に)動 作させることが出来る。
'
&
$
% 補足:
入出力完了を確認する前に入出力を呼んだ側に制御を戻すことによって、(同期 の要求があるまで)入出力をプログラム本体と非同期に(並行に)動作させる。
OS プロセス(非特権状態)
(5)
(6) (1)
磁気ディスク
(特権状態)
入出力コントローラ
割込みハンドラ デバイスドライバ
ファイル システム
(8) (3)
(7)
(4) (9)
入出力制御 割込みハンドラ
(2)
Yes/No I/O完了?
同期入出力vs.非同期入出力(まとめ):
同期入出力 非同期入出力
簡単な説明
入出力が完了するまで入出力を呼 んだ側に制御を戻さないことによ って、入出力をプログラム本体の
動作と同期させる。
入出力完了を確認する前に入出力 を呼んだ側に制御を戻すことによ って、入出力をプログラム本体と
非同期に動作させる。
代表的なシステム UNIX IBM社MVS 利点 プログラマにとって分かり易い。
同期を明示的に取る面倒がない。
複数のファイル入出力を並行して 行うことが出来る。
欠点
複数のファイル入出力を並行して 行えない。
=⇒ ユーザプロセスのレベルで はバッファリングは実現でき ない。
プログラマは入出力とプログラム 本体との同期を明示的に取る必要 がある。
7.6. 同期入出力vs.非同期入出力 65
(表の続き)
同期入出力 非同期入出力
2つのファイルを 並行して処理し たい場合の例
プログラム例:
while(1) {
...
read(rfd, rbuf, rlen);
/* 読込みデータの更新 */
...
write(wfd, wbuf, wlen);
...
}
=⇒2つのファイルを交互に処理 (下図参照)
プログラム例:
while(1) {
...
read(rfd, rbuf, rlen);
/* 読込みデータの更新 */
...
rwait(rfd);
/* 読込み完了を待つ */
... (読込みデータの処理) ...
...
wwait(wfd);
/*前回の書込み完了を待つ*/
write(wfd, wbuf, wlen);
...
}
=⇒ 2 つのファイルを並行処理 (下図参照)
(同期入出力の場合)
プロセス
ファイルから 入力
プロセスの処理にかかった時間 CPU
DMAコントローラ ファイルへ 出力
待ち 待ち
待ち 待ち
(非同期入出力の場合)
プロセス
ファイルから 入力
プロセスの処理にかかった時間 CPU
DMAコントローラ ファイルへ 出力
待ち 待
ち 待 ち
演習問題
□演習 7.6 ファイルシステムの目的を2種以上挙げ、簡単に説明せよ。
□演習 7.7 ファイル入出力の高速化方式を3種類挙げ、簡単に説明せよ。
□演習 7.8 ファイルシステムの管理の仕方が悪いとファイルシステムの中に矛盾が発 生することがあることを例示せよ。
□演習 7.9 (ファイル管理情報更新の順序) ファイルを削除する場合は、
• 記憶媒体中の不使用領域を登録した管理テーブル,
• 各々のファイルやディレクトリの所在場所を記録した管理テーブル,
• ファイルやディレクトリの実体 の更新をどういう順序で行えば良いか?
□演習 7.10 ファイルシステムの信頼性を保つためにどのようのことが行われているか 例示せよ。
67
8 プロセス管理
• プロセス管理で何が行われるか(吉沢4.1.1-2節, 谷口4.1節),• プロセス,タスク,スレッド,多重タスキング(吉 沢4.1.3節),
• 多重タスキングの利点(吉沢4.1.4-6節),
• プロセス生成のシステムコール(吉沢 4.2.1-5 節),
• UNIX起動時に生成されるプロセス群(吉沢 4.2.6-8節),
• プロセスの状態と状態遷移(吉沢4.3.1節, 谷 口p.65図3.1.4),プロセス管理テーブル(吉沢 4.4.1節),
• プロセススケジューリングの目標(吉沢4.3.2 節),
• プロセススケジューリングの方法(吉沢4.3.2-7 節),