読書感想文え~と、タネンバウム本分厚いです。立ち読みには向きません。買った理由がちょっぴり解りました。設計と理論およびMINIXによる実装【第二版】の第2章前半です。2章全部じゃないです。2章のテーマはプロセスです。2章ではプロセスの概念に始まって、複数のプログラムを制御する為の理論とMINIXでの設計、MINIXを例にした実装を解説しています。今回はMINIXでの設計の概要までを読んで思いつくまま書き殴ってみます。最初はプロセスと言う概念についての解説です。本書ではプロセスモデルの解説を通して概念の説明をしています。プロセスに求められる物、必要な機能の実現等の理論の解説が続きます。プロセスと言うのは実行中のプログラムを指す言葉です。実際には千差万別であるプログラムを、統一的な方法で管理できるように抽象化した概念をプロセスと言います。この項で解説されている基本的な概念をしっかりと理解しておかないと後に混乱する事になります。プログラムとプロセスを混同するとスケジューリング辺りでパニックに陥るでしょう。第二項はプロセス間通信の解説です。マルチプログラミング環境に於いては、複数のプロセス間での通信が頻繁に行われます。第二項ではそのプロセス間に於ける通信方法や、それにまつわる問題、その解決法等を解説しています。プロセスは一つ一つ独立した物です。完全に独立してしまうと、そのプログラムに必要な動作を全て実装しなければなりません。権限の問題で使用できない機能を利用しなければならない場合もあります。完全に独立させるよりは、必要な機能を持った別のプロセスに処理を委譲できる様にすべきなのです。そこで必要になるのがプロセス間通信であり、通信に際しての決まり事と方法なのです。第三項は典型的なIPC問題とその解決についてです。略で、プロセス間通信の事です。IPC問題と言うのは、デッドロックや同期化、競合状態に関する典型的でプリミティブな事例の事です。これを解決する事で、実際の利用時に起きる複雑な状態にも対応できると言う、不具合の最小構成の事だと考えれば良いでしょう。第三項では、IPC問題の中でも特にありふれた問題を三つ取り上げて、その問題点と解決方法を解説しています。第四項で解説されるのはスケジューラ、いよいよ大物登場です。調整について等、プロセス管理の根本であり煩雑で難解な部分の解説を行っています。実行を開始された順で同じ量の資源を提供するのであれば複雑な事は有りません。処理には優先順位があり、実現すべき処理に必要な資源の量もそれぞれです。プロセスによってはスリープする事もあり、その間に何もしないのは資源の浪費になります。言った無駄を省き、必要な所に資源を回す為にもスケジューリングや資源の割り振りは慎重に行わなければなりません。第四項ではこう言った問題に対する今までに行われてきた提案を解説しています。第五項では、これまでに解説されてきた理論を元に、MINIXを題材とした設計の一例を解説しています。内部の構成、プロセス管理、プロセス間通信、スケジューリング等について、MINIXではどの様な理由でどの様な選択をしたのかが解説されています。ここで解説されているMINIXと言うOSのプロセスに関する思想を理解しておかないと、この後に続く具体的な解説で混乱します。ここまででも十分に厄介な第2章ですが、これまでの内容を理解していないと続く第6項で大変混乱します。プロセスはOSの根幹をなす概念です。他のほとんどの部分から依存される部分ですから、要点だけはしっかりと掴んでおきましょう。