第5回 2009年1月
料理とOSと並列プログラム
冬は鍋をつついて忘年会
我々の研究室には「温泉部屋」と呼ばれる空間がある。IS棟の6階なので温泉が湧いているわけでは無いが、なぜかそう呼ばれている。部屋の入口には「ゆ」と描かれたのれんがかかっている。
毎年12月にはOB/OGにも声をかけて忘年会をする。いつの頃からか温泉部屋で鍋というのが定着してしまった。この年末も、水炊き、カレー、すき焼き風と3つの土鍋を用意して30人ぐらいの参加者で盛り上がった。
鍋の準備を見ていると、段取りの良い学生と悪い学生が居る。下拵えの必要な物は先に調理し、そうで無い物はぎりぎりまで冷蔵庫に保存する。野菜を取り出して空いた冷蔵庫にはビールを詰める。宴会の開始時には、すべての物が良いタイミングで揃っている必要がある。段取りの良い学生は様々な条件を考慮し、複数の作業をほぼ同時にこなし、見事にタイミングを合わせているのである。
並列に処理をするということ
聖徳太子は豊聡耳命(とよとみみのみこと)とも呼ばれるように10人の話を同時に聞いて理解することができたらしい。しかし一般に我々は、少なくとも私は、1人の話ですら聞き漏らすことがある。聖徳太子の真似は出来そうに無い。
ところが、コンピュータにはこの能力がある。いくつもの仕事を同時に処理できる。たとえば、音楽を聞きながら、Webページを眺め、気に入ったページをプリントする。この時コンピュータは、楽曲情報の入ったファイルを読み、それを電気信号に変換し、スピーカを鳴らし、ネットワークと通信をし、ディスプレイにWebページを表示し、キーボードやマウスからの指示に対応しつつ、プリンタに印字する。これらの仕事を同時にやっている。
コンピュータにはOS (Operating System) というプログラムが必須である。パソコンで言えばWindowsとかMac OS, Linuxなどがそれである。
OSは複数の仕事を同時に処理するための仕組みを提供する。簡単に言えば、それぞれの仕事を細切れにして、それらをOSが取っ換え引っ換え動かしているのである。
並列プログラム
ところで、プログラムは処理の手順を書いたものである。あれをやって、次にこれをやって、もし、こういう場合はそれを、そうでない場合には3回これをやる...という風に、基本的には処理すべきことを順番に記述する。
ところが、OS自体のプログラムやOSを利用した並列処理のプログラムでは、話はそう簡単ではない。複数の仕事を同時に処理するように記述しなければならないからである。もし、2つの仕事が同じ鍋を必要とするならば、そういう事態を検知し、どちらかを先に調理するようにプログラミングしなければならない。また、複数の白菜を切る作業は、複数の学生で担当してスビードアップが図れるかも知れない。
つまり、料理の段取りの良い学生は並列プログラムのセンスがあり、OSの研究にも向いている(場合が多い)ということだ。
で、結論
と言うわけで、あなたも我々の研究室に来て、鍋やOSを作ってみませんか?