この部分の著者は Amit Shah 氏です。
現状カーネルについてのドキュメントは十分とは言えません。来週にも書ければと 思っています。そのようなわけで、ここではソースがどのように構成されているかを 示しておきます。
openMosix のコードの大部分は、hpc/ と include/hpc にあります。arch/i386 ディレクトリからはじまって mm/、fs/ 等、カーネルファイルのあちこちに渡って パッチがたくさんあります。興味があるコードを調べ、現状がどうなっているのか 考えてみる必要があります(カーネルをコーディングしたことがあれば、問題はない はずです)。
ここに挙げるのは、各ソースファイルの中で皆さんが探しているはずのものです。
hpc/badops.c: 間違った操作を一手に引き受けるファイル。エラーコードを返す場合 がほとんど。
hpc/balance.c: 負荷分散のコード(負荷+メモリ使用量+ノード及び全体の使用量)。
hpc/comm.c: クラスタ内部の通信のセットアップ。
hpc/config.c: openMosix 用の設定コード。起動スクリプトを動かした後に使用。
hpc/decay.c: 他のノードから収集した情報とその状態を分散させる。
hpc/deputy.c: 代理実行されるコード。リモート上でのシステムコール (つまりプロセスがマイグレートした後)やシグナル等のサービス。
hpc/dfsa.c: Direct File System Access のコード。分散ファイルシステムの抽象 レイヤ。
hpc/div.c: 小数点除算を行うアルゴリズム。
hpc/export.c: 他のファイルが必要とするシンボルをエクスポート。
hpc/freemem.c: メモリの空きと平均値の情報を記録し、必要に応じて開放する。 Linux の mm/ コードを大幅に流用。
hpc/hpcadmin.c: openMosix の管理値を調整(/proc/hpc 経由で)。
hpc/hpcproc.c: /proc/hpc のコード。
hpc/info.c: 情報デーモン。負荷とメモリ使用量の状態をクラスタ全体に渡って 送受信(マルチキャスト)する。
hpc/init.c: 初期化コード。デーモンの初期化等。
hpc/kernel.c: 「コア」なコードのほとんど。重要なアルゴリズムのすべて。
hpc/load.c: ローカルの負荷の演算等。
hpc/mig.c: マイグレーションを扱うコード。このファイルのコードは、 マイグレーションの度に実行される。代理→リモート、リモート→代理、 リモート→リモート。
hpc/prequest.c: プロセスのリクエストを扱う。シグナル、メモリ要求等。
hpc/remote.c: プロセスがリモートにある時に実行されるコード。システムコール をリモートで扱い、代理プロセスに制御を渡す等。
hpc/rinode.c: fs/ に関連した項目。DFSA が利用。
hpc/service.c: デーモンの設定、メモリの確保等。
hpc/syscalls.c: リモートのシステムコールすべてを扱う。
hpc/ucache.c: ucache を扱う。mm/、fs/ が利用。