プロセスは後述する仮想CPUによって実行されます. したがって各プロセ スは,それぞれ独立した仮想CPUの情報(レジスタとメモリ)を保持して います. 以下の記述は何らかのCPUのアーキテクチャに関する知識を前提としてい ます. 機械語に不慣れでも C++,Delphi等のOOP言語をご存知の方は本システ ムの場合,
プロセス | = | クラスインスタンス |
レジスタ | = | データメンバ |
命令 | = | メソッド |
仮想CPUの1プロセスは以下に示す19本の32ビットレジスタ とデータメモリ空間を持ちます.
+----------------------------------+ | プログラムカウンター | +----------------------------------+ | 残り時間カウンター | +----------------------------------+ | メッセージ | +----------------------------------+ | スタックポインター | +----------------------------------+ | ベースポインタ BP | +----------------------------------+ | フラグレジスタ | レジスタ番号 +----------------------------------+ 1 | プロセスID RQ | 1 +----------------------------------+ 2 | ル-プカウンタ RL | 2 +----------------------------------+ 3 | レジスタ RX | 3 +----------------------------------+ 4 | レジスタ RY | 4 +----------------------------------+ 5 | レジスタ RZ | 5 +----------------------------------+ 6 | レジスタ RH | 6 +----------------------------------+ 7 | レジスタ RP | 7 +----------------------------------+ 8 | レジスタ RB | 8 +----------------------------------+ 9 | 汎用レジスタ R1 | 9 +----------------------------------+ 10 | 汎用レジスタ R2 | A +----------------------------------+ 11 | 汎用レジスタ R3 | B +----------------------------------+ 12 | 汎用レジスタ R4 | C +----------------------------------+ 13 | 汎用レジスタ R5 | D +----------------------------------+ 14 | 汎用レジスタ R6 | E +----------------------------------+
プロセス固有のデータメモリ空間(スタックと共用) +----------------------------------+ | デ-タメモリ 0 | +----------------------------------+ | 1 | +----------------------------------+ | 2 | +----------------------------------+ | : | | : | +----------------------------------+ | 最終メモリ番地( SPの初期値 - 1 ) | ↑スタックの伸びる方向 +----------------------------------+ デ-タメモリ空間の大きさはプロセス生成時に指定可能 プログラム起動時に生成される1つのプロセス(デフォルトプロセス) のデ-タメモリ空間の大きさは常に100です.