<CHAPTER ID="Internals ">
<!--
<TITLE>Getting started with openMosix internals</TITLE>
<SECT1><TITLE>Introduction</TITLE>
<PARA>this part has been written by Amit Shah</para>
-->
<TITLE>openMosix の内部を見る</TITLE>
<SECT1><TITLE>はじめに</TITLE>
<PARA>この部分の著者は Amit Shah 氏です。</para>

<para>
<!--
There's not much documentation available right now for the kernel. I hope to 
write some in the coming weeks. Anyways, here's how the sources are laid out:
-->
現状カーネルについてのドキュメントは十分とは言えません。来週にも書ければと
思っています。そのようなわけで、ここではソースがどのように構成されているかを
示しておきます。
</para>
<para>
<!--
The openMosix code resides largely in hpc/ and include/hpc. There are lots of 
patches to the core kernel files everywhere, right from the arch/i386 
directories to mm/, fs/, etc. You need to read up the code which interests 
you and think that would matter for the present situation (that shouldn't be 
a problem, since you've done kernel coding).
-->
openMosix のコードの大部分は、hpc/ と include/hpc にあります。arch/i386 
ディレクトリからはじまって mm/、fs/ 等、カーネルファイルのあちこちに渡って
パッチがたくさんあります。興味があるコードを調べ、現状がどうなっているのか
考えてみる必要があります(カーネルをコーディングしたことがあれば、問題はない
はずです)。
</para>
<para>
<!--
here's what you should expect in each of the source files:
-->
ここに挙げるのは、各ソースファイルの中で皆さんが探しているはずのものです。
<itemizedlist>
<listitem><para>

<!--
hpc/badops.c: one file to handle all the bad operations: mostly return err 
codes
-->
hpc/badops.c: 間違った操作を一手に引き受けるファイル。エラーコードを返す場合
がほとんど。
</para></listitem>
<listitem><para>
<!--
hpc/balance.c: The load balancer code (load + mem usage + n/w usage)
-->
hpc/balance.c: 負荷分散のコード(負荷＋メモリ使用量＋ノード及び全体の使用量)。
</para></listitem>
<listitem><para>

<!--
hpc/comm.c: The intra-cluster communication setup
-->
hpc/comm.c: クラスタ内部の通信のセットアップ。
</para></listitem>
<listitem><para>

<!--
hpc/config.c: The config code for openMosix: after you run the startup script
-->
hpc/config.c: openMosix 用の設定コード。起動スクリプトを動かした後に使用。
</para></listitem>
<listitem><para>

<!--
hpc/decay.c: decay (age) the stats and info collected from other nodes
-->
hpc/decay.c: 他のノードから収集した情報とその状態を分散させる。
</para></listitem>
<listitem><para>

<!--
hpc/deputy.c: Code executed on the deputy: service remote syscalls (ie. after 
the process has migrated), signals, etc.
-->
hpc/deputy.c: 代理実行されるコード。リモート上でのシステムコール
(つまりプロセスがマイグレートした後)やシグナル等のサービス。
</para></listitem>
<listitem><para>

<!--
hpc/dfsa.c: Direct File System Access code: the distributed file system 
abstraction layer
-->
hpc/dfsa.c: Direct File System Access のコード。分散ファイルシステムの抽象
レイヤ。
</para></listitem>
<listitem><para>

<!--
hpc/div.c: the algorithms to do floating point divisions
-->
hpc/div.c: 小数点除算を行うアルゴリズム。
</para></listitem>
<listitem><para>
<!--
hpc/export.c: export symbols needed in other files
-->
hpc/export.c: 他のファイルが必要とするシンボルをエクスポート。
</para></listitem>
<listitem><para>

<!--
hpc/freemem.c: to keep track of free, avl. memory and to free it if need be. 
hugely taken from the Linux mm/ code.
-->
hpc/freemem.c: メモリの空きと平均値の情報を記録し、必要に応じて開放する。
Linux の mm/ コードを大幅に流用。
</para></listitem>
<listitem><para>

<!--
hpc/hpcadmin.c: tune openMosix admin values (through /proc/hpc)
-->
hpc/hpcadmin.c: openMosix の管理値を調整(/proc/hpc 経由で)。
</para></listitem>
<listitem><para>

<!--
hpc/hpcproc.c: The /proc/hpc code is handled here
-->
hpc/hpcproc.c: /proc/hpc のコード。
</para></listitem>
<listitem><para>

<!--
hpc/info.c: The info daemon: sends and receives (multicast) load+mem usage 
stats throughout the cluster
-->
hpc/info.c: 情報デーモン。負荷とメモリ使用量の状態をクラスタ全体に渡って
送受信(マルチキャスト)する。
</para></listitem>
<listitem><para>

<!--
hpc/init.c: Initialization code: initializes the daemons, etc.
-->
hpc/init.c: 初期化コード。デーモンの初期化等。
</para></listitem>
<listitem><para>

<!--
hpc/kernel.c: most of the "core" code: all the important algorithms, 
decisions, etc. made here.
-->
hpc/kernel.c: 「コア」なコードのほとんど。重要なアルゴリズムのすべて。
</para></listitem>
<listitem><para>

<!--
hpc/load.c: calculation of local load, etc.
-->
hpc/load.c: ローカルの負荷の演算等。
</para></listitem>
<listitem><para>

<!--
hpc/mig.c: Code that handles the migration. Code in this file is invoked on 
any migration: deputy->remote, remote->deputy; remote->remote
-->
hpc/mig.c: マイグレーションを扱うコード。このファイルのコードは、
マイグレーションの度に実行される。代理→リモート、リモート→代理、
リモート→リモート。
</para></listitem>
<listitem><para>

<!--
hpc/prequest.c: handles the process's requests: signals, more memory, etc.
-->
hpc/prequest.c: プロセスのリクエストを扱う。シグナル、メモリ要求等。
</para></listitem>
<listitem><para>

<!--
hpc/remote.c: Code executed when the process is on the remote: syscalls 
handling on remote, passing control to deputy, etc.
-->
hpc/remote.c: プロセスがリモートにある時に実行されるコード。システムコール
をリモートで扱い、代理プロセスに制御を渡す等。
</para></listitem>
<listitem><para>

<!--
hpc/rinode.c: fs/ related stuff: used mostly for DFSA
-->
hpc/rinode.c: fs/ に関連した項目。DFSA が利用。
</para></listitem>
<listitem><para>
<!--
hpc/service.c: setting up daemons, getting memory, etc.
-->
hpc/service.c: デーモンの設定、メモリの確保等。
</para></listitem>
<listitem><para>
<!--
hpc/syscalls.c: handles all the remote syscalls here
-->
hpc/syscalls.c: リモートのシステムコールすべてを扱う。
</para></listitem>
<listitem><para>
<!--
hpc/ucache.c: handles the ucache: mostly mm/, fs/ stuff.
-->
hpc/ucache.c: ucache を扱う。mm/、fs/ が利用。
</para></listitem>
</itemizedlist>

<!--
the other files like auto_syscalls.c, alternate.c are generated at compile 
time.
-->
その他 auto_syscalls.c や alternate.c のようなファイルは、コンパイル時に作成
されます。
</para>
</sect1>
</chapter>

