5週目#
4週目と5週目の間には1週間の休暇がありました。なので先週は投稿しませんでした。
C12#
同期化とは、特定のリソースにアクセスする際に1つのプロセスだけがアクセスできるようにしたり、プロセスを正しい順序で実行させることを意味します。
共有リソースは共同で使用するリソースで、グローバル変数、ファイル、入出力デバイス、補助記憶装置などがあり得ます。
クリティカルセクションは共有リソースにアクセスするコードのうち、同時に実行すると問題が発生するコード領域を意味します。クリティカルセクションにプロセスがいる場合、他のプロセスはクリティカルセクションの外で待たなければなりません。
相互排他とは、1つのプロセスがクリティカルセクションで作業中の場合、他のプロセスがクリティカルセクションに入れないよう制御することです。
ミューテックスロックはクリティカルセクションをロックすることでプロセス間の相互排他を実現します。
セマフォは共有リソースが複数あるクリティカルセクション問題も解決できる同期化ツールです。
モニターはセマフォに比べてユーザーが使いやすい同期化ツールで、条件変数を使用します。
C13#
デッドロックは起こりえない事象を待ちながら無限に待機する現象を意味します。
食事する哲学者問題はデッドロックの発生を示す例です。
リソース割り当てグラフを用いてデッドロックを表現できます。
デッドロック発生条件は相互排他、保持と待機、非プリエンプション、循環待機です。
デッドロック防止はデッドロックの発生条件の1つを満たさないようにする方法です。
デッドロック回避は安全状態を維持できる場合にのみリソースを割り当てる方法です。
デッドロック検出後回復はデッドロックの発生有無を定期的に検査し、デッドロックが発生したらその都度回復する方式です。
宿題#
p. 363の確認問題1番(必須)#

正解:4番
クリティカルセクション、相互排他の概念整理(選択)#
Ch.12(12-1) クリティカルセクション、相互排他の概念を整理する
クリティカルセクション(critical section)は共有リソースのうち、2つ以上のプロセスを同時に実行すると問題が発生するリソースにアクセスするコード領域を意味します。
相互排他(mutual exclusion)は共有不可能なリソースの同時使用を避けるために使用するアルゴリズムです。1つのプロセスがクリティカルセクションに入った場合、他のプロセスはクリティカルセクションに入れません。
Experience is simply the name we give our mistakes.
— Oscar Wilde