前期にオペレーティングシステムの講義を受けていたのだが、OSの仕組みを知れば知るほど、我々の脳も似たような機能を持っているのではないかと思った。
OSはコンピューターで多様なアプリケーションを実行するための中枢的なソフトウェアである。WindowsやmacOSがそれにあたり、ウェブブラウザやゲームなどのアプリケーションは、OSの機能を使って実現されている。
OSが提供する機能にはいくつかあるのだが、そのうちの1つにスケジューリングがある。スケジューリングとは、複数のアプリケーションを同時に動かしたときに、CPUなどの計算資源を各アプリケーションに分配する機能だ。このおかげで、ブラウザを開きながら、エディタを開くといったマルチタスクをすることができる。
アクティブなタスクを管理する"列"をランキューと呼び、ランキューに登録されたタスクは、基本的にかわりばんこで処理されるが、多くのOSでは、優先度の高いタスクに時間をかけたり、待ち時間の長いタスクは休眠させるといったアルゴリズムが用意されている。当然ながら、このアルゴリズムの良し悪しは、OSの処理性能に直結する。
私たちの日常生活はマルチタスクであり、時間スケールは違えどスケジューリングを行っている。大学の課題をやって、友達からのメッセージが来たらそれに返信し、返信が来るまでは待ち時間があるので、課題を再びやろう、といった流れである。この際、次に何をするかという選択は人によって異なるが、これはタスクごとの優先順位のつけ方や、どの程度時間を割くかという判断基準に、個人差があるためであり、スケジューリングアルゴリズムの違いと非常に近い概念だと思う。
また、多くのOSには、メモリの容量がひっ迫したときに、優先度の低いデータを2次記憶に退避させるページアウトという機能がある。これによって物理メモリの容量を超える作業データを扱うことができるようになる一方で、一度退避したデータを読み込むにはディスクから再度読み出す必要があり(ページフォルト)、大きな遅延が発生するため、パフォーマンスが低下してしまう。メインメモリの容量が十分にある場合、ページフォルトの影響はそれほど大きくないが、余裕があまりない場合、ページフォルトの回数をなるべく少なくすることが重要になる。理想的には、次に使用するまでの時間が長いものから順に退避させるのが効率的であるが、その時間は実際には不明であるため、LRUやセカンドチャンスといった、ヒューリスティック的なページ置換アルゴリズムが採用されている。
ヒトの場合、メモリと二次記憶の境界はあいまいであるが、一度に把握できるデータ量には制限があることは確かである。また、この量には個人差があるのはもちろんのこと、その時の精神状態などによっても影響を受けると思われる。たとえば、1日中予定を詰め込んでも淡々とこなせる人がいる一方で、休憩を一定時間確保する必要がある人もいたり、体調がすぐれない時や不安を感じている時には、ほかのことを考える余裕がなくなったりするといった具合だ。
また、一度に扱わなければならない課題を大量に抱えると、処理能力が低下することもいえるだろう。そのような状況に陥った際、ないしはそのような状況に陥らないようにするために、自分のタスクを整理することが求められるが、この整理が上手い人は優れたページ置換アルゴリズムをもっていると表現できる。
このように、意外とヒトの思考とOSには似た性質があるように感じた。だからなんなのだという話ではあるが、課題から目を背けて現実逃避をしている時に、「はたして自分のスケジューリングは適切だろうか」と考え、締め切り間近の課題を複数抱えた時には、「ページフォルトが大量発生しているな」と認識するように、自分の脳の状態を客観的に把握することで、漠然とした不安を解消し、次にとるべき行動を明らかにするという点で、作業効率性を向上させる効果があるかもしれない。また、他人の思考的な特徴を分析するうえで、「この人のメモリ容量は小さそうだ」「この人のスケジューリングは優れている」というような体系的な基準で判断するとともに、メモリ容量が小さそうな人に依頼をする際には、ほかのタスクが入っていない時にしようといった工夫が考えられるかもしれない。
ちなみに、かくいう私はメモリ容量が非常に小さいことを自認しているので、なるべく不要な事柄はページアウトして、メモリの余裕を保つことを最近では意識しています。