JPH03209551A - 並列処理システム - Google Patents

並列処理システム

Info

Publication number
JPH03209551A
JPH03209551A JP25755690A JP25755690A JPH03209551A JP H03209551 A JPH03209551 A JP H03209551A JP 25755690 A JP25755690 A JP 25755690A JP 25755690 A JP25755690 A JP 25755690A JP H03209551 A JPH03209551 A JP H03209551A
Authority
JP
Japan
Prior art keywords
page
task
agent
tasks
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP25755690A
Other languages
English (en)
Inventor
Colin G Broughton
コリン ジイ.ブロートン
James R Savage
ジェームズ アール.サベージ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MYRIAS RES CORP
Original Assignee
MYRIAS RES CORP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MYRIAS RES CORP filed Critical MYRIAS RES CORP
Publication of JPH03209551A publication Critical patent/JPH03209551A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 技術分野 本発明はコンピュータシステムに関するものであって、
更に詳細には、多数の論理要素が同時的に動作してプロ
グラムを並列的に実行するコンピュータシステムに関す
るものである。
従来技術 多数の論理要素が命令ストリーム及びデータに関して同
時的に動作するコンピュータシステムは、並列プロセサ
として知られている。並列プロセサと考えることが可能
な幾つかの種類のシステムが構築されている。例えば、
あるパイプラインシステムにおいては、幾つかのプロセ
サを使用することが可能であり、その各々はそのシステ
ムによって実行されるべき特定のタスクに対して専用化
されている。実行されるべき命令は、これらのプロセサ
を介して逐次的な順番で流れ、各プロセサは命令ストリ
ームに関して専用化された機能を実行する。各プロセサ
はそれが実行するタスクに対して最適化させることが可
能であるので、全てのタスクが汎用プロセサによって実
行される場合と比較してより短い時間で実行することが
可能である。
別の形態の並列プロセサは、多数の同一の処理要素を使
用し且つ単一命令シーケンスの制御下においてこれらの
処理要素を問題の別々の部分に関して使用する。このタ
イプのシステムの一例はlll1iac  IVである
更に別のタイプの並列処理システムは、ハードウェア概
念から生まれており、例えば、比較的低置なマイクロプ
ロセサのハイパーキューブ(Hypercube)又は
バンヤン(Banyan)相互接続がある。この様なシ
ステムにおいては、独立したプロセサが、典型的に、別
々の自己充足的な制御構成の下で動作してタスクの独立
的な部分を実行する。プロセサ間でのデータ及び命令の
通信は必要に応して実行される。しかしながら、その結
果前られるマシンは、プログラムすることが困難であり
、その主な理由は、このマシンのハードウェアアーキテ
クチャはユーザがプログラムするモデルを支配するから
である。
従来のシステムの一例が、Agpan  Gottll
ieb著rNYUウルトラコンピュータプロジェクトの
概観(An  Overview  ofthe  N
YU  U′TItracomputerProjec
t)Jの文献に記載されている。
このシステムにおいては、計算タスクはグローバルメモ
リを共用している。ユーザが、どのメモリが計算タスク
に対して専用のものであり且つどのメモリが全てのタス
クに対してグローバルに使用可能なものであるかどうか
を特定する。プロセサ間のコオディネーション即ち共同
動作のための基礎をなす「フェッチ−アンド−アット(
フェッチ及び加算)」構成が、全てのプロセサが、共用
メモリから値をフェッチし、且つ同時的に、その値を既
に存在していた値に整数値を加算することによって形成
した新たなものと置換することを可能とする。この動作
の効果は、それかあたかも不定の順番で発生したかのよ
うにシステムに対して見えるようにさせることである。
しかしながら、このことはプログラム用モデルに不確定
性を導入する。更に、NYUプロジェクトにおいては、
メモリ動作の簡単なモデルは存在していない。
S、  Lundstrom及びG、  Barnes
著「制御可能なMIMDアーキテクチャ(ACont 
rolfl abl e  MIMD  Archi 
tecture)Jの文献は、ユーザにメモリの使用の
明示的な制御を与えるためにフォートランの延長を有す
る流れモデルプロセサを提案している。メモリの制御は
、プログラムをコンパイルする時に特定される。プログ
ラムの実行期間中にメモリ動作のダイナミック制御を行
なうものではない。このMIMDアーキテクチャは、各
プロセサに対して専用のメモリと全てのプロセサによっ
て共用されるメモリとを有している。専用メモリの一部
がそのプロセサのローカルメモリ以外に位置されている
一つのプロセサ上で計算単位が実行される可能性はない
。しかしながら、コンパイルする時にメモリのタイプが
静的に割当てられ且つ変化することはないので、プログ
ラムの実行中に全プロセサに亘ってダイナミックにロー
ドをバランスさせる可能性はない。
MIMDアーキテクチャは、又、グローバル共用メモリ
へのアクセスについての通常の問題を提起し、即ち一つ
のプロセサが共用メモリ内の一つの位置をアクセスする
場合に、どのプロセサが最後にその位置に格納を行なっ
たか又どの様な値がフェッチされるかの問題が発生する
。その結果、これらの問題に対する答えが正確に実行す
るプログラムを発生することを確保するように慎重に注
意が払われねばならない。この点に関する問題は上述し
た文献に記載されているが、何らかの最終的な解決策が
提案されているものとは思われない。
ユーザの作業をこれらの並列プロセサへ分散乃至は分布
させるための幾つかの一般的な方法が存在している。最
初の技術は、ユーザの作業に関する情報を何れかの既知
の位置に維持することである。プロセサがアイドル状態
である場合には、該プロセサがこの位置をチエツクして
実行すベキユザの作業を獲得する。
この方法は、はとんどの共用メモリマルチプロセサシス
テムによって使用されているものと思われる。このアプ
ローチにおいては、分散されるべきタスクに関する情報
、例えば実行すべき次のタスクの反復数が、既知の共用
変数へ割当てられる。
プロセサがアイドル状態にあると、それは、この変数の
値を周期的にチエツクして、実行すべきタスクが存在す
るか否かを決定する。実行すべきタスクが存在する場合
には、該プロセサは、該変数を適宜デクリメントするこ
とによって1個又はそれ以上のタスクを獲得することが
可能である。子供タスクか完了したことを親タスクへ報
告するために、子供タスクが完了した場合には第二共用
変数がデクリメントされる。この変数がOであると、親
タスクは実行を再開することが可能である。
このアプローチについては二つの問題が存在している。
第一に、多くのプロセサがほぼ同時に同一の共用変数を
アクセスする場合がある。このことは、メモリ競合を発
生し、そのことはシステムの拡縮性に悪影響を与える場
合がある。第二に、このアプローチは、使用可能な資源
の最善の利用を行なうために、タスクをプロセサへ分散
させる機構を与えるものではない。例えば、実行中のタ
スクの通信条件を減少させるためにどの様にしてタスク
をプロセサへ割当てるかということが明確ではない。
本発明者等は、プログラム可能性及び使用の容易性によ
ってプログラマの生産性を向上させ、多数のプロセサへ
の拡張性によって高性能を達成し、且つプロセサに対し
ての計算作業の分散及び再分散によって及びコンピュー
タプログラムの基準位置を利用することによってプログ
ラムを効率的に実行するマルチ命令マルチデータ(M 
I MD)並列コンピュータシステムを開発した。
本発明者等の発明は、同時的に実行されるべき計算作業
即ちタスクのユニットとこれらのタスクによって必要と
されるアドレス空間との間を区別シテいる。特に、タス
クにはメモリ条件とは独立的にプロセサが割当てられて
いる。本システムの一実施例において設けられる全メモ
リは、潜在的に、本システムに関して実行する各タスク
に対して使用可能である。
本発明の最も顕著な二つの特徴は、コンピュタ適用にお
いて本質的な並列性をとるための言語拡張及び並列プロ
グラムの実行を管理するための機構である。言語拡張の
意味論は、並列計算のためのメモリモデルを包含してい
る。本システムの制御機構の好適実施例においては、こ
のメモリモデルは、分散型拡張可能板の要求ページ型板
想メモリを使用して実現される。
本システムの好適実施例においては、制御機構のコピー
、即ちカーネル乃至は中核は、本システムにおける各プ
ロセサと物理的に関連するメモリ内に存在している。こ
のカーネルは、その例示化間にメツセージを送給し且つ
本システム及び実行中のプログラムのステータスに関す
る情報の分散記録を維持することによって並列プログラ
ムの実行を管理する。
このアプローチには幾つかの問題がある。第一に、プロ
セサへタスクを割当て且つそれらの実行をコオディネー
ト即ち調整するのはプログラマの責任である。第二に、
各タスクのコード及びデータはそのプロセサにフィツト
せねばならない。第三に、並列タスクを開始させ且つ完
了させるための直接的なアプローチはシステム資源の競
合を発生させる場合がある。
目  的 本発明は、以上の点に鑑みなされたものであって、上述
した如き従来技術の欠点を解消し、従来の並列システム
と比較して一層高速であり且つ容易に使用することの可
能な改良した配列計算システム及びその方法を提供する
ことを目的とする。
構成 本発明システムは、プログラムすることが容易である。
なぜならば、ハードウェア及びシステムソフトウェアが
ユーザプログラム用モデルをサポートするからである。
更に、計算タスクはメモリ条件とは独立的にプロセサに
割当てられる。
本発明の好適実施例においては、並列システムがフォー
トラン又はC言語でプログラムされ、且つシステムプロ
グラミングに関する熟練性を必要とすることはない。本
システムは、任意の寸法のハードウェア形態でプログラ
ムが稼動することを可能とする。本システムは任意にス
ケール即ち拡縮することが可能であるので、共用中央メ
モリ又はユーザが特定したタスク通信を使用することは
ない。タスク及びデータ管理オーバーヘッドは、使用さ
れるプロセサ数によって測定されるシステムの寸法の関
数として極僅かに増加するに過ぎない。プロセサへのタ
スクの割当て及びタスクのメモリ条件の管理は自動的で
あり且つ本システムのユーザに対しては透明である。
本システムは、既存のフォートランに対して僅かな拡張
を使用しており、即ち単一の並列d。
(PARDO)が使用されている。本発明のpardo
構成は、構文的には、do小ループ成と似ているか、p
ardoの各反復はそれ自身のメモリで完成される別個
のタスクであるという意味において異なっている。その
結果、複数個のタスクを並列的に実行するか、又は任意
の所望の順番で実行することが可能である。
本発明の好適実施例においては、タスクがpardo命
令を実行する場合、一団の子供タスク(chilt d
  tasks)か形成され、これらの子供タスクの全
てが完了するまで、親タスク(parent  tas
k)は中断される。各子供タスクは、親のメモリの同一
のコピーを受継ぎ、反復子か異なるのみである。その結
果、各タスクは独立的に実行することが可能である。各
タスクが独立的に実行するので、子供タスクはそれぞれ
の他のメモリ画像に影響を与えることはない。子供タス
クの全てが完了すると、それらのメモリは一体的に併合
されてその親に対する新たなメモリを形成する。
本システムのアーキテクチャによって、プロセサに対す
るタスクの割当てはユーザから1蔽されている。本シス
テムを使用するために、ユーザは、適宜の位置において
実行可能なコード内にpardo構成を挿入することが
必要であるに過ぎない。
オペレーティングシステムか自動的且つダイナミックに
プロセサに対してタスクを割当て且つ再割当てするので
、本システムは、プロセサ間においてロードを均一に分
散させた状態で、はぼ最適な数のプロセサをビジーな状
態に維持する。本システムも、各タスクと関連するメモ
リ画像のコピ格納及び併合の全てを管理する。本システ
ムにより、ユーザが適切であると考えるレベルにおける
ユーザのアブリケーンヨンプログラムにおいて本質的な
並列性をユーザが表現することが可能である。並列do
命令は、子供タスクの数に何ら制限を課すものではなく
、且つネスティングの深さに何ら制限を与えることなし
に入れ予室pa rd。
とすることを可能とする。更に、pa rdoを再帰と
結合して並列再帰を有するプログラムを得ることが可能
である。
各タスクはそれ自身のアドレス空間を参照するので、タ
スクが存在することはシステムハードウェアの観点から
潜在的に「高価」である。その結果、少なくとも原則的
には、親タスクの各メモリステートが、形成された各子
供タスクに対して複製され且つ管理されねばならない。
本発明者等は、並列タスクを管理し且つそれらのアドレ
ス空間を管理する上で関連する作業を最小とする技術を
開発した。特に、本システムは、プロセサ当りの全管理
オーバーヘッドが、プログラムを実行するために使用さ
れるプロセサの数が増加するに従い、ゆっくりと増加す
るように構成されている。本制御システムは、分離され
たプロセサにおける管理作業が集中することを回避する
ように構成されている。プログラムをランするために使
用されるマシンの部分に亘って管理作業が可及的に一様
であるように分散させることにより、より一層効率的な
並列処理システムが得られる。例えば、タスクを分散さ
せ且つ再分散させるのに必要な管理作業は、システム内
の何れかの指定されたプロセサ又はメモリによって実行
されるのではなく、その代わりに、タスク分散又は再分
散動作によって直接的に影響を受けるプロセサのみを使
用する。
好適実施例においては、本システムのハードウェア構成
は、処理要素のクラスタのヒエラルキ(階層)から構成
されている。各処理要素は、プロセサとそれと関連する
任意の」法のメモリとを有している。本発明においては
、処理要素はクラスタに構成され、該クラスタはそれぞ
れの処理要素間の距離を画定している。例えば、ヒエラ
ルキの最下位レベルは、単一のプロセサ及びそれと関連
するメモリによって実行されるタスクのクラスタに対応
している。次のレベルのヒエラルキは、固定数の処理要
素を具備するボード(基板)に対応している。ヒエラル
キを更に昇ると、次のレベルは、固定数のボードを具備
するカードケージに対応している。この概念は所望によ
り拡張することが可能である。任意の数のプロセサかメ
ッセジを使用して互いに通信を行なう。従って、例えば
、メモリ内のページを捜し出すためには、制御システム
がプロセサからプロセサヘページを捜すためのメソセー
ジを送給する。
本システムの好適実施例においては、制御メカニズム(
機構)が、実行中のタスクに対するアドレス空間を管理
するためのページャ−(pager)を有している。ペ
ージャ−は、ページに対スるプロセサのドメインをサー
チし且つ必要に応じてそれらを結合し、ページ欠陥を処
理し、且つ他の動作を行なう。プランナ(pilann
er)コンポーネントは、新たなタスクをプロセサ間に
分散させ、且つ一群のプロセサにおける作業量がアンバ
ランスとなると、プロセサ間においてタスクを再分散さ
せる。本制御システムは、更に、単一のプロセサ上のタ
スクの実行を管理するためのタスクベージヤ(mana
ger)を有しており、マルチタスク作業を可能として
いる。本制御システムとハードウェアとの間にインター
フェースを与えるために、フレームワーク(frame
w。
rk)コンポーネントを使用し、プロセサによって実行
されるべき次の活動を決定する。
本発明では、特定の問題に対して使用されるプロセサの
ドメインの小さな部分に対して管理作業を局所化させる
ためにフェイム(f ame)の概念を使用している。
タスクのフェイム(名声)は、プロセサの最小のクラス
タのレベルであり、そのタスクに属するメモリの全ての
ページ及びそのタスクの全ての子孫はそのクラスタ内に
存在している。本システムにおいては、フェイムは制御
システム内のフェイムマネジャコンポーネントによって
制御される。
実施例 ■。
■。
目  次 並列処理システム概括 プランナ(P、Qanner) A、緒論 B、レベリング(Level)ing)サブコンポーネ
ント 1、概括 2、レベリングサブコンポーネントの設計a、ロードー
レベリングの発動 b ロード−レノベリングの調整 C,ロードーレヘリングの例 d、ロードーレヘリングトランザクションの相互作用 e、クラスタへの作業の割当て f、レベリングサブコンポーネントの要約 C,モーションサブコンポーネント 1、概括 2、モーションサブコンポーネントの設計a1作業の要
求 す、インターバルの選択 C,クラスタへのタスクインターバルの割当て d、タスク転送 e、スタートさせたタスクモーション f、モーションサブコンポーネント設計の要約 ページャ−(Pager) A、概括 B、ページのタイプ 1、タスクページ 26ページの併合 C,ページャ−データ構成 13分散型データ構成 2、ページ名称記録 3、タスク及び併合ページヘッダ 4、タスクに基づく記録 5、ページツリー a、ページャ−エージェント b、ヘッド及びリーフページャ−エージェント C,ページャ−エージェント及びエージェントリスト構
成 d、タスク活性及びマージ活性ページャ−エージェント e、ページ経路 り、併合 1、併合用に使用されるページャ−エージェント記録フ
ィールド 2、ページ形成 a、Note−page−creat 1on)ランザ
クジョン (i)NPC構成 (jDNPc処理 す、Acknowj7  edge−pagecrea
tion)ランザクジョ ン (i)APC構成 (iDAPc処理 3、併合の開始 a、Permit−mergingトランザクション (i)PEM構成 (ii)PEM処理 す、Force−merging動作 (i)Force−merging処 理 (ii)ROM構成 (iij)RQM処理 (iv)Force−merging/Fame相互作
用 4、併合の継続 a。
Pe  r  f  o  rm merging動 作 (i)Perform−mergin g処理 す、Me rge−page トランザクション (i)MPI構成 (ii) MP I処理 5、併合の終了 a、ページ破壊及びページ削除トランザクション (i)DPS構成 (ii)DPS処理 す、ページ再名称化及びRename pages)ランザクジョン (i)RPS構成 (jj)RPS処理 E、タスクページモーション及び削除 1、Del ete−pathトランザクション a、DPR構成 り、DPR処理 2、Transfer−archivallpage 
)ランザクジョン a、TAP構成 り、TAP処理 3、Bui、17 d−taskpage−path)
ランザクジョン a、BPA構成 り、BPA処理 4、Locate−archivajl −pageト
ラントランザク ションAP構成 り、LAP処理 F、ページサーチ 1、ページサーチ名称 2、フェイムレベルページサーチ 3、ページサーチ用に使用されるページャ−エージェン
ト記録フィールド 4、ページサーチの開始 a、ページ欠陥及び局所的ベージサーチb、ページ要求
処理 C0局所的ページサーチ処理 5、グローバルページサーチ及びRequest−ta
sk−page)ランザ クジョン a、RPR構成 り、グローバルページサーチの終了 C,グローバルページサーチの開始 d、グローバルページサーチ状態 (i)経路構築 (ji)経路構築の後 (iiD経路探索及び経路追従 (iv)経路フェイル (V)アーカイハルサーチ及びアーカ イバルフェイル RPR処理 f、RPR/フェイム相互作用 6、ページデリバリ a、Transfer−requested−page
トランザクション (i)TPR構成 (11)ページデリバリ処理 (Ili)TPR/フェイム相互作用 7、ページ到着 a、TPR処理 す、Note−page−equivalenceトラ
ンザクション (i)NEQ構成 (iDNEQ処理 G、ページャーフェイム動作 1、フェイム増加動作 a、Raise−pager−agentトランザクシ
ョン (i)RPA構成 (H)RPA処理 す、Acknowfledge−pager−agen
t−mot ton)ラ ンサクション (i)APM構成 (it)APM処理 c、Move−page−to−headトランザクシ
ョン (i)MPH構成 (N)MPH処理 H,ページャ−インターフェース 1、ドメイン初期化 2、プラナインターフェース a、タスク記録 す、タスク及びページ形成 3、フレームワークインターフェース 4、タスクマネジャインターフェース 56 ページフレームマネジャインターフェース 6、フェイムマネジャインターフェースフェイム(Fa
me) A、緒論 B、フェイムの記録 C,フェイム増加 り、フェイムコマンド 1、フェイムコマンドコオディネーション2、フェイム
命令擬似コード カーネルトランザクション A、緒論 B、フォーマット C,)ランザクジョンサイクル D、  トランザクションパターン E、  )ランザクジョン制御 1、緒論 a、  )ランサクションシーケンシングb、  トラ
ンザクション休止 2、機能的記述 a、論理モデルの受取り す、論理モデルの休止 3、インターフェース a、)ランザクジョンサービス b、休止サービス c、TQU構成 4、物理的設計 a、データ構成 b、擬似コード タスクマネジャ A、仮想メモリマツピング B、タスクマネジャ活動 C,タスクマネノヤインターフェース 情報コンポーネント A、緒論 B、情報サブコンポーネントの設計 1、周期的情報流れ 2、偶発的情報流れ 3、コンポーネントコオディネーション4、インターフ
ェース及びデータ構成 フレームワーク A1機能的記述 B、メツセージ C,タイマー 06例外 E、PMMUサポート F、ディスパッチ+ (Dispatcher)以下、
上述した目次の内容を順番に説明する。
■。
■。
■。
1、並列処理システム概括 第1図は、本発明の並列処理システムによって使用され
るメモリモデルを示したブロック図である。第1図に示
したシステムは、ユーザに、パラレル処理へのアクセス
か容易なシステムを与えている。特に、並列処理の数又
は異質性に関しての制限がなく、且つプログラマに感知
しうる同期条件は存在しない。
第1図は、本発明システムでの並列性を達成する主要な
側面を示している。第1図に示した如く、PARDO文
(並列do)は、コードを並列的に実行するために本シ
ステムによって使用される言語構成である。
並列フォートランのバージョンにおいては、このpa 
rdo文は以下の形態を有している。
pardo 1abel 1ndex = I、Jco
de block label  continue 尚、rl)abeJ7Jは正の整数であり、月つ整数I
及びJはI<−Jの条件を満足する。rcode  b
jJockJで表わされるコードは、別のpa rdo
文を包含することが可能である。好適実施例においては
フォートランを使用しているが、その他の言語、例えば
、別の実施例においては、C言語を使用することも可能
であることを理解すべきである。
このpa rdo文の実行により、n−J−1+1個の
タスク(task)が形成され、各タスクには特定の繰
返し番号が割当てられ、その番号は0とnとの間の整数
である。各タスクは、それ自身のアドレス空間において
ランされ、その初期的状態は、タスクの繰返し数を除い
て、親タスクのものと同一である。
制御メカニズム乃至はカーネル(kernep)は、各
プロセサ上で稼動する動作システムである。
それは、独特な名称を各タスクに割当てる。この名称か
らそのタスクの家系を決定することが可能であり、即ち
、その親タスク、祖父母などを決定することか可能であ
る。プログラムを実行するために使用される一組のプロ
セサはドメイン(d。
ma i n)と呼ばれ、該ドメイン内の特定のプロセ
サで初期的に実行を開始するプログラムコードはプライ
マルクスク(primajl  task)、即ち主タ
スクと呼ばれる。主タスクの名称(name)は該ドメ
インを識別する単一数乃至は単一番号である。
タスクがpardoを実行する場合、それは親タスクと
して言及され、そのpardoによって形成されるタス
クは子供タスクと呼ばれる。この子供タスクの名称は、
親タスクの名称と、親タスクの現在の化身番号(inc
arnat tonn umb e r)と、子供タス
クの繰返し数乃至は番号とから構成される。
並列doと逐次的do小ループの間の主要な差異は、メ
モリへ割当てられる意味が多少変化されるということで
ある。並列do小ループおいては、実行中のコードがマ
シン状態が、先行する繰返しの終わりにおけるものでは
な(pa rdoの開始時におけるものと同一であるこ
とを見付は出す。
図面に示した如く、概念的には、このマシン状態は多く
の子供タスク又はループ繰返しに対する親である。子供
タスクは、完全に異質なものである場合もあり、且つ概
念的には並列的に処理される。
勿論、並列性の実際の量は、使用されるプロセサの数に
依存する。
各タスクは、それが修正する親メモリ状態のこれらの部
分の自分自身の専用コピーを作成する。
各子供タスクがpardoによって形成されると、その
メモリ状態は、pa rdo制御変数を除いて、その親
の正確なコピーである。このpa rdo制御変数は、
兄第タスクの各々において独特の値を有している。
兄第タスクのメモリ状態は独立的である。タスクは、そ
の兄第の何れかのメモリ状態に影響を与えることは不可
能である。しかしなから、子供は、その子供のメモリ状
態及びその兄第のメモリ状態かpardo完了後に一体
的にマージ即ち併合される場合に、そのタスクの終了時
においてその親のメモリ状態を変化させることが可能で
ありHつ変化させる。
第2図に示した如く、ハードウェアアーキテクチャは、
一団のプロセサ要素(PE)1.0を有しており、それ
らのプロセサ要素はメツセージ又はトランズアクション
を介してのみ互いに通信を行なう。各プロセサ要素は、
関連するメモリを伴った1個のプロセサに対応している
。典型的には、1個のプロセサは、市販されている単一
チップのマイクロプロセサであり、一方関連するメモリ
は市販されているダイナミックランダムアクセスメモリ
のアレイである。以下の説明において、プロセサ要素の
ことを単にプロセサとも呼称する。
プロセサボード(基板)20は、4個のプロセサを有し
ており、それらのプロセサはボードバス]5を介して通
信を行なう。共通バス15を共用する一団のボード20
はケージ30と呼ばれる。
好適実施例においては、1個のケージ内に16個のボー
ドを設けることか可能である。1個のケシ内の異なった
ボード上のプロセサは、ケージハスを介して通信を行な
う。異なったケージ内のプロセサは、ケージ相互接続体
35を介して通信を行なう。
プロセサの種々の団体に対してクラスタ(cIIust
er)という概括的な名称を与えており、且つリーフU
?eaf)クラスタは単一のプロセサであり、且つクラ
スタのレベルがより高くなるに従い、ボード(boar
d)、ケージ(cage)などとなる。又、与えられた
クラスタのサブクラスタ(subci)us ter)
及びスーパクラスタ(supercguster)につ
いても言及する。例えば、特定のボードを収容するケシ
は、そのボートのスーパークラスタであり、一方そのボ
ード上のプロセサはそのボードのサブクラスタである。
タスクの化身番号は初期的にはゼロである。タスクかp
a rdoを行ない且つその子供タスクの全てが完了し
た後には、そのタスクの化身番号がインクリメントされ
る。従って、化身番号は、pardo文を実行した後に
そのタスクが実行を再開した回数をカウントする。
連続する繰返し番号を有するpa rdo文がら得られ
る一団のタスクはタスクインターバル(task  1
nterva、Q)と呼ばれる。タスクインターバルは
、時々、そのタスクが何らかのその他のタスクインター
バルから得たものであることを強調するために、タスク
サブインターバル(task  5ubinterva
l))と呼ばれる。
pardo文を完了した後に、全ての子供タスクはある
規則を使用して一つのマシン状態へマージ即ち併合され
る。本システムにおいては、何れの子供タスクもメモリ
位置内に値を格納していない場合、親メモリ状態におけ
るメモリ内のその位置は、pardoの実行前にそれが
有していた値を維持する。ここで使用される次の規則は
、子供タスクのみがその位置に値を格納していた場合に
は、親メモリ状態におけるその位置はその子供タスクに
よって格納されている最後の値を受取る。
一方、1個を超える子供タスクかそのメモリ位置に値を
格納しているか、格納されている最後の値が各子供タス
クに対して同一であった場合には、親メモリ状態におけ
るその位置はその値を受取る。
最後に、1個を超えた子供タスクがそのメモリ位置に値
を格納しており且つ格納されている最後の鎖が各子供タ
スクに対して同一ではない場合には、そのメモリ位置及
び親メモリ状態は不定となる。
制御メカニズム乃至は機構は、コンピュータシステムの
資源をマネージ即ち管理しなければならない。本システ
ムは、これを行なうために管理ツリーを使用する。管理
ツリー(management  tree)は、分散
型データ構成の形態である。このツリーのノードは、ハ
ードウエアヒエラルキに対応している。各プロセサにお
いてはリフ(Neaf)ノードが存在しており、各ボー
ドに対してはボートノードか存在しており、各ケシに対
してはケージノードが存在している。管理ツリーノード
かプロセサへ割当てられる態様は、そのドメイン内の各
プロセサに対して既知である。
従って、資源のタイプを特定するノードの名称が与えら
れると、そのノードの位置を決定することか可能である
フェイム(Fame)即ち「名声」は、ある種のオブジ
ェクト及び情報をドメインのクラスタ内に閉込める即ち
制限する方法である。負でない整数がユーザプログラム
における各タスクと関連している。この整数は、そのタ
スクのフェイムレベルと呼ばれ、より簡単には、そのタ
スクのフェイム即ち「名声」であると言われる。
タスクのフェイムは、どのクラスタがそのタスクと関連
するオブジェクト(object)を有しているかを表
わす。これらのオブジェクトは、タスク自身と、そのペ
ージと、その名称と、そのタスク又はそのページの記録
と、そのタスクによって発生されたトランザクション(
transaction)を有している。一般的には、
それからタスクが存在することを演鐸することが可能な
任意のオブジェクトが閉込め即ち制限される。この様な
オブジェクトはフェイム付きオブジェクトと呼ばれる。
それらは、又、関連するタスクのフェイムと同しフェイ
ムを有するものであると言われる。
タスクオブジェクトがその様に閉込められたクラスタは
そのタスクのフェイムクラスタ(f ame  clu
ster)又はフェイム領域と呼ばれる。それは、フェ
イムクラスタのクラスタレベルであるフェイムレベル及
びそのレベルの一つのクラスタにおいてのみ存在する場
合のあるそのタスクの何らかの記録によって識別される
。フェイムレベルがゼロであることは、そのタスクが1
個のプロセサに閉込め即ち制限されていること(プロセ
サフェイム)を表わしており、フェイムレベルが1であ
るということはボードフェイム(board  fam
e)であることを表わす。最大のフェイムレベルは、ド
メインのクラスタレベル、即ちドメインフェイム(do
ma in  f ame)である。
多くの観点から、子供タスクはその親タスクの一部であ
る。子供タスクの名称は、親タスクの名称を有しており
、子供タスクは究極的に親タスクの併合ページとなるペ
ージを形成する。従って、親タスクのフェイムクラスタ
は、子供タスクのフェイムクラスタを有するものでなけ
ればならない。
タスクのフェイムはダイナミックな特性であり、変更さ
れる場合がある。フェイム増加動作は、タスクのフェイ
ムクラスタをより高いクラスタへ変更させる。フェイム
減少動作はそれをより低いクラスタへ変更し、一方フニ
イム転送動作はそれを解体したクラスタべ変更する。
第3図は、カーネルの種々のコンポーネントの関係を示
した1079図である。第3図に示した如く、カーネル
は、プランナ20を有しており、それは新たなタスクを
分散させ且つドメイン内の作業量がアンバランスになる
とタスクを再分散させる。ページャ−(pager)3
0は、タスクに対してのアドレス空間を管理し、即ちそ
れはページに対するドメインをサーチし、ページをマー
ジ即ち併合し、ページ欠陥を処理するなどの動作を行な
う。フェイムマネージャ((arle  manage
r)40は、タスク管理作業をそのドメインの小さなサ
ブクラスタ(subc、9uster)へ局所化させる
。トランザクンヨン制御50は、トランザクションが正
確に送られ且つシステム内の種々のプロセサの間で処理
されることを確保する。タスクマネージャ60は、プロ
セサ上でのタスクの実行を管理し且つその他のマルチタ
スクに関連した機能を実行する。情報コンポーネント7
0は、プロセサ上に適切なページフレームの供給を維持
すべく機能するページフレームマネジャ (page 
 frame  manager)及びプランナによっ
て必要とされる情報を収集し且つ分散させる。フレーム
ワーク(f ramework)80は、カーネルとハ
ードウェアとの間のインターフェースを与え、且つプロ
セサに関して実行すべき次の活動を決定する。I10ユ
ニット90は、各タスクに対しての入出力機能を実行す
る。上述したコンポーネントの特定の動作について以下
に詳細に説明する。
オペレーテインクシステムが、各タスクに対して独特な
名称を割当てる。この名称は、そのタスクの家系を表わ
し、即ち、親タスク、祖父母タスクなどを表わす。プラ
イマルクスク即ち主タスクの名称は単一の番号であり、
それはそのプログラムが稼動する一組のプロセサを識別
する(ドメイン識別子)。
タスクがpa rdoを実行する場合、各子供タスクに
は0からスタートして形成されるタスク数よりも一つ少
ない数までの個別的な繰返し番号が割当てられる。この
子供タスクの名称は、親タスクの名称と、親タスクの現
在の化身番号と、子供タスクの繰返し番号とから構成さ
れている。
タスクの化身番号は、初期的には、Oである。
タスクがpa rdoを行ない且つその子供タスクの全
てが完了した後に、タスクの化身番号がインクリメント
される。従って、化身番号は、そのタスクがpa rd
oの後に実行を再開した回数をカウントする。
形式上、タスク名称は以下の如くに構成されている。
((tl、  cl)、   (t2.  c2)、 
  (t3゜C3)、・・・、−(in)1 (tl、cl)対はシャーム(germ)と呼ばれ、ジ
ャームは繰返し番号tnと化身番号ciとを有している
。タスク名称の最後のジャームは繰返し番号のみを有し
ている。
以下の如き化身番号を有している。
f(tl、cl)、  (t2.c2)、  (t3゜
c3)、−、(tn、cn)1 これらは、タスクの化身番号が最後のジャーム内に含ま
れている場合を除いて、タスク名称と同じである。タス
クの異なった「化身」のアドレス空間は異なった内容を
有しているので、この様な化身番号は有用である。
各ページも、そのページが属するタスク化身の名称と、
ページ番号と、タスクページ又は併合ベジを特定するイ
ンジケータとから構成される独特の名称を有している。
例えば、以下の如く構成されている。
[+ (12,1)、  (5,0)l  、  10
00゜TP] これは、ドメイン識別子で稼動されるプログラムの2番
目の化身の6番目の子供タスクのタスクベジ1000の
名称である。タスクページを表示するTPは、タスクが
完了すると、マージングページ即ち併合ページを表わす
MPへ変化される。
■、プランナ(Pilanne r) A、緒論 並列システムのプロセサを効果的に使用するために、ユ
ーザの作業をプロセサへ分散するメカニズム即ち機構が
なければならない。この制御メカニズムのプランナコン
ポーネントは、本システムに対してのこの機能を実行す
る。
第4図に示した如く、プランナツリー(pi) ann
er  tree)として言及される単一の管理ツリー
は、プランナの活動を実施するために使用される。この
プランナツリーのノードは、プランナエージェント(p
、Qanner  agent)として言及され、且つ
該プランナによって必要とされる情報を包含するプラン
ナエージェント記録によって表わされる。各プランナエ
ージェントは、ハードウェアの特定のクラスタに対する
プランナの活動を実施することが可能である。従って、
プランナツリーの連結性は、本システムのハードウェア
形態に相当する。従って、例えば、第4図に示した如く
、個々の処理要素に対応してリーフノドが存在しており
、プリント回路基板に対応してボードノードが存在して
いるなどである。該プランナによるプロセサへのタスク
の割当ては、適宜のプランナエージェントによって調整
される。
従って、タスクインターバルの運動は、プランナツリー
を構成するプランナエージェントによって実施される。
プランナエージェントは、そのプランナエージェント記
録内に含まれる情報によって表わされる。
該プランナエージェントは、例えば、そのエージェント
のクラスタ内のスタートされた及びスタトされていない
作業の量なとのクラスタ情報を有している。プランナエ
ージェント記録が非リーフ資源管理エージェントに対応
すると、それは各活性子供クラスタに対する子供クラス
タ情報記録へポイントする。該子供クラスタ情報は、そ
の子供クラスタ内のスタートされた及びスタートされて
いない作業の量を有すると共に、その子供クラスタ内の
プロセサによって送給されるか又は受取られる処理中の
作業の量を有している。プランナエージェントは、又、
例えば作業を必要とするスーパークラスタが存在するこ
と及びこれらのスーパークラスタによって必要とされる
タスク数などのようなドメイン情報を有している。
プランナエージェント記録は以下の如き構成を有してい
る。
5truct pla−*g*tpdata fint
erval−sotion int int int int int int int int int *pIld−intervals; pad−unstarted−veights[2]1
)md−unstarted−denos ;pmd−
started−weights[2]pmd−sta
rted−denom :pmd−1ct l : pmd−total−work; pmd−1otal−unstarted;paid−
total−startecf+pmd−unstar
ted [MAX rX)MAINDEryT旧[2]
:int             pmd−star
ted [MAX DOMAIN DEFnll[2]
;int             pmd−sent
−or−rec [MAX DOMAIN DE円M]
:boo l            pad−ch 
i ! d−has−excess−work :bo
ol            paid−chi Id
−has−work:boot           
 rymd−chi Id−can−use−work
;bool            pmd−chi 
Id−needs−work;bool       
     pmd−cl uster−vj thou
t−tasks[MA)jDOMAIN−DEI’ロロ
;int             pmd−clus
ter−needs−tasks[MAX−DOMA 
I N−DBPT81 ;int          
   pIIld−cl uster−can−use
−tasks[MAX−IX)HAIljDEPT)I
コニchi Id−info        *pmd
−chi Id−4nfo[MAX DOMAIN A
GENTSI;/* other informati
on which is omitted */尚、 PMD  INTERVALSは、コノエージェントに
対するインターバルモーション記録のリストへポイント
するか、又は零である。
PMD  UNSTARTED  WEIGHTSは各
スタートされていないタスク長さのウェイト(we i
 gh t)即ち重さの分子である。
PMD  UNSTARTED  DENOMはPLA
  UNSTARTED  WEIGHTSエントリー
用の分母である。
PMD  5TARTED  WEIGHTSは各スタ
ートしたタスク長さに対するウェイト(weight)
即ち重さの分子である。
PMD  5TARTED  DENOMはPLAST
ARTED  WEIGHTSエントリー用の分母であ
る。
PMD  LCTLはクラスタの局所的競合タスク限界
である。
PMD  TOTAL  WORKはクラスタ内のタス
クの総数である。
PMD  TOTAL  UNSTARTEDはクラス
タ内のスタートされていないタスクの総数である。
PMD  TOTAL  5TARTEDはクラスタ内
のスタートされたタスクの総数である。
PMD  UNSTARTEDは親タスクのフェイム及
び該タスクの長さによって分類されたクラスタ内のスタ
ートされていないタスクの数である。
PMD  5TARTEDは親タスクのフェイム及び該
タスクの長さによって分類されるクラスタ内のスタート
されたタスクの数である。
PMD  5ENT  ORRECはタスクの移動を調
整するエージェントのレベルによってリストされたクラ
スタ内のプロセサによって受取られる(正)又は送られ
る(負)タスクの数である。
PMD  TASKS  EXECUTEDはこのクラ
スタにおける前のサンプル期間の期間中に実行を完了し
たタスクの数である。
PMD  CHILD  HAS  EXCESSWO
RKは、子供か報告を行ない且つそのクラスタかその局
所的競合タスク限界よりも多くのタスクを有する場合に
、セットされる。
PMD  CHILD  HAS  WORKは、子供
が報告を行ない且つそのクラスタかその局所的競合タス
ク限界と同一のタスク数を有する場合に、セットされる
PMD   CHILD   CAN   USE  
 WORKは、子供が報告を行ない且つそのクラスタが
そのtasks  neededカウントよりも大きな
タスクカウントを有しているがその局所的競合タスク限
界よりも小さい場合に、セットされる。
PMD  CHILD  NEEDS  WORKは、
子供が報告を行ない且つそのタスクカウントがそのta
sk  neededカウントよりも小さい場合に、セ
ットされる。
PMD  CHILD  INFOは、各子供クラスタ
に対する情報記録へポイント・する。
PMD  CLUSTERWITHOUT  TASK
Sは、そのレベルにおけるエージェントかタスクなしの
子供クラスタを有する場合に、セットされる。
PMD  CLUSTERNEEDS  TASKSは
、該エージェントか作業を必要とする場合に、そのレベ
ルにおけるエージェントによって必要とされるタスク数
であり、そうでない場合には、それは0である。
PMD   CLUSTERCAN   USE   
WORKは、そのエージェントが作業を使用することが
できる場合、そのレベルにおけるエージェントによって
使用することか可能なタスク数であり、そうでなければ
、それは0である。
プランナ記録内に表われるchij) 0記録は次の如くである。
5truct child−infolnt nt nt nt nt nt −1nf ehi−Ictl ; chi−total−unstarted;chf−t
otal−startecl;chj−unstart
ed [MAX DO)4AIN DEFI”旧[2]
:chi−started [MAX−IX)MAIN
−DEFrH][2];chi−work−+noti
on゛ 尚、 CHT  CHILD  LCTLは子供クラスタに対
する局所的競合タスク限界である。
CHI  TOTAL  UNSTARTEDは子供ク
ラスタ用のスタートされていないタスクの総数である。
CHI  TOTAL  5TARTEDはその子供ク
ラスタ用のスタートされたタスクの総数である。
CHI  5TARTEDは、子供クラスタ用であり、
親タスクのフェイム及びそのタスクの長さによって分類
される開始されたタスクの数である。
CHI  WORK  MOTIONは、子供タスクが
受取る予定(送り出される作業の場合は負)の作業の総
量である。
タスクインターバルは、プランナか作業するオブジェク
トである。PARDOが実施されると、タスクインター
バル(task  1ntervaIりか形成される。
説明する如く、タスクの分散は、タスクインターバルを
サブインターバル(Subinterva、l))へ分
割し且つ該サブインターバルをプロセサへ割当てること
を包含する。
各タスクインターバルは、タスクインターバル記録によ
って表現される。この記録のフィールドは、そのタスク
インターバルを形成している一団の全てのタスクと関連
する情報を有している。タスクインターバルに含まれる
情報には三つのタイプがあり、即ちインターバルに関す
る情報(インターバルを構成しているタスクの繰返し数
、及びそのインターバル内に含まれる推定作業量)、タ
スクマネジャによって使用される情報(スタートされた
タスクのキュー、及びタスクインターバルのステータス
)、及び親タスクに関するページング(paging)
情報である。
タスクインターバル記録は以下の如くである。
5truct task tnterval ftas
k 1nterval   *tir next;ta
sk +nterval   *tir−prev+1
nterval motion  *tir moti
onint        tir Io 1tera
tion。
int      tirbi 1teration:
address       tir grLs 5t
ack;/* other inrormation 
which is os+1tted */): 尚、 TIRNEXTはこのプロセサ上の次のタスクインター
バル記録へポイントする。
TIRPREVは、このプロセサ上の前のタスクインタ
ーバル記録へポイントする。
TIRMOTIONは、このインターバルに対するイン
ターバルモーション記録へポイントする。
TIRLOITERATIONは、このインターバル内
のスタートされていないタスクの最下位の繰返し数であ
る。
TIRHI  ITERATIONは、このインターバ
ル内のスタートされていないタスクの最高の繰返し数で
ある。
TIRGRTS  5TACKは、このタスクに対する
CRTS制御スタックが開始する場合の仮想アドレスで
ある。
タスクを分散させるプロセスは、通常、一団のプランナ
エージェントを使用し、各エージェントがそれが受取る
タスクインターバルをサブインターバルへ分割し且つ該
サブインターバルをプランナサブエージェントへ送給す
る。全てのタスクが実行を完了すると、この情報は親タ
スクへ帰還し、従って親タスクは実行を再開することが
可能である。インターバルモーション(interva
l)motion)記録は、タスクを分散する場合に行
なわれるタスクインターバルの移動及び分割を追跡する
ために使用される。インターバルモーション記録は、二
つのタイプの情報を有しており、即ち、関連するタスク
インターバルの移動に関する情報(そのタスクインター
バルの発生源又はそのタスクインターバルを発生した親
タスク)、及びタスクインターバルに関する情報(その
インターバルを構成するタスクによって消費される時間
及びそのインターバルを構成するタスクのページ使用)
である。プロセサ上に位置されているインターバルモー
ション記録は、特定のプランナエージェントと関連して
おり、従ってそのプロセサ上に位置されているプランナ
エージェント記録を介してアクセスすることが可能であ
る。
インターバルモーション記録は以下の如くである。
5truct  tnterval  motionl
interval  motion   *Ie+r 
 next;intervajmotion   ti
er−prev;task  1nterval   
 tier  1nterval;agent  na
me       imr  trl  5ource
;jnt           i+u  tri  
1den:5tartedjask     Her−
parent task;jnt          
 Her dispensed;int       
    imr coIlpIeted  tasks
;/* other information whi
ch is omitted */); 尚、 IMRNEXTは、リスト上の次のインターバルモーシ
ョン記録へポイントする。
IMRPREVは、リスト上の前のインターバルモーシ
ョン記録へポイントする。
IMRINTERVALは、一つがこのプロセサ上にあ
る場合、このインターバルに対するタスクインターバル
記録へポイントする。
IMRTRI  5OURCEは、該インターパルをこ
こへ送ったエージェントの名称を有しており、且つ局所
的PARDOがそのインターバルを形成した場合には、
有効である。
IMRTRI  IDENは、そのインターバルをここ
へ持ってきたTRI)ランザクジョンからの諜別子を有
しており、且つ局所的PARDOがそのインターバルを
形成した場合には、有効である。
IMRPARENT  TASKは、局所的PARDO
がそのインターバルを形成した場合には親タスクに対−
するスタートしたタスク記録へポイントし、又は、TR
1トランザクシヨンがそのインターバルをここへ持って
きた場合には、零である。
IMRDISPENSEDは、幾つのサブインターバル
かこのインターバルから分割され且つ他のプロセサへ配
給され、いまだに完了し且つ帰還していないかを表わす
IMRCOMPLETED  TASKSは、このイン
ターバル内の幾つのタスクが完了したかを表わす。
サイクル(cycle)記録は、特定のタスクインター
バルに対するインターバルモーション記録を追跡するた
めに使用される。サイクル記録は次の如くである。
5truct cycIel cycle         *cyc、、−next
:cycle         *cyc prev;
jnt          cyc−jden;jr+
tervalノotion    *cyc−mot 
ton;/ネ other  jnformatJon
  vhjch  depends  on  1be
use yaade of the cycle re
cord and omjtted */1); 尚、 CYCNEXTは、このプロセサ上の次のサイクル記録
へポイントする。
CYCPREVは、このプロセサ上の前のサイクル記録
へポイントする。
CYCIDENは、各サイクル記録に割当てられた独特
の(このプロセサに対して)整数である。
CYCMOTIONは、インターバルモーション記録へ
ポイントする。
サイクル記録のリストは各プロセサ上に維持される。
プランナは二つのサブコンポーネント即ち部分コンポー
ネントを有している。レベリングサブコンポーネント(
Ieveling  subcomponent)は、
余分のユーザ作業をユーザ作業を必要とする一団のプロ
セサへ割当てる機能を行なう。モーションサブコンポー
ネント(motion  subcomponent)
は、レベリングサブコンポーネントによってなされた決
定を、余分のユーザワークを持ったプロセサからユーザ
作業を必要とするプロセサへ実際に転送するタスクへ変
換する機能を行なう。
このモーションサブコンポーネントは、実際にタスクを
移動させるサブコンポーネント(task  tran
sfer即ちタスク転送コンポーネント)と共に、タス
クを移動させることを要求するサブコンポーネント(r
equestor即ち要求者コンポーネント)を有して
いる。
このプランナの主要の目標は、ユーザプログラム実行時
間が可及的に小さくなるようにタスクを分散させること
である。プランナは、ドメインに亘ってのユーザの作業
のロードを可及的に「−様」であることを維持し、且つ
「密接に関連したjタスクを近くのクラスタへ分散させ
ることによってこの目標を達成せんとする。作業量を「
−様Jに維持することにより、ハードウェアの並列性が
使用される。密接に関連したタスクを近くのクラスタへ
分散させることにより、ページャ−のオーバーヘッドが
減少される。
このプランナの第二の目標は一貫性である。固定した入
力を有するプログラムの実行時間が稼動毎に著しく異な
ることは望ましくない。これを達成するために、本プラ
ンナは、プロセサへのタスクの割当てにおいて一貫性が
ある。従って、固定した入力を有するプログラムの場合
、主タスクによって実行される各PARDOに対するタ
スクの分散はラン即ち稼動毎に変化することはない。
B、レベリングサブコンポーネント 1、概括 本プランナのレベリングサブコンポーネントQt ev
efl ing  subcomponent)の機能
は、余分のユーザ作業を、ユーザ作業を必要とするクラ
スタへ割当てることである。この機能を実施するために
、レベリングサブコンポーネントは、何時余分のユーザ
ワークを分散させるべきか、ドメインのどの部分かその
分散に含まれるべきか、及びどの程度の余分のユーザ作
業を必要とする各クラスタべ割当てるべきかということ
を決定する。
これらの機能を実施するために、レベリングサブコンポ
ーネントは、ドメインの状態及びユーザプログラムに関
するアップツーデート即ち最近の情報を有している。本
システムは、はとんどの状態に対して有効な態様で子供
タスクを分散させるか、子供タスクの「将来の作業」の
完全な推定を行なうことなしに行なわれる。例えば、P
ARDOが実行される場合、本プランナには、新たに形
成された子供タスクが将来の作業を形成する蓋然性(P
ARDOIMPO3SIBLE、PARDOPO35I
BLE、PARDOCERTAIN)が与えられる。
ドメインを構成するプロセサを可及的にビジーな状態に
維持するために、本プランナのレベリング機能は、分散
を必要とする作業が存在する場合に、発動される。この
作業の分散は可及的に迅速にスタートし、プロセサのア
イドル時間を減少させ、且つその分散がプログラムの実
行時間を減少させる場合に作業が分散されるのみである
典型的には、PARDOが実行される場合に、プランナ
のレベリングサブコンポーネントが発動される。なぜな
らば、新たな作業か形成され、それが分散を必要とする
場合かあるからである。ドメイン内における可及的に多
数のプロセサに関してバランスしたユーザ作業のロード
即ち負荷状態を維持するためにプログラムの実行期間中
においても作業の再分散が行なわれる。
先祖タスクのフェイム(f ame)は、レベリングコ
ンポーネントが作業を分散するドメインの一部に重要な
制限を課す。これを説明するために、幾つかの用語を導
入せねばならない。タスクインターバル(task  
1ntervaρ)は、同一の親タスク及び連続した繰
返し数を持った一団のタスクである。タスクインターバ
ルシーケンス(task  1nterva、77 5
equence)は、タスクインターバルのシーケンス
、即ちTl、Tl、・・・、Tkであり、Tlの親はイ
ンターバルT1内のタスクであり、T3の親はインター
バルTl内のタスクであり、以下間等である。
ブライマルタスフインターバル(p r imaIIt
ask  1nterval)即ち主タスクインターバ
ルは、TOで示され、ドメインフェイム(doma i
 n  f ame)を有するものと仮定される。本プ
ランナは、新たなタスクインターバルを構成するタスク
へフェイム値を割当てる機能を行なう。このレベリング
コンポーネントの一つの目標は、フェイム上昇動作(可
能な場合)を実施することを回避するために、入れ予室
PARDOから得られるタスクインターバルを分散させ
ることである。従って、Tl内のタスクがクラスタC1
に亘って分散され且つフェイムクラスタF1を有してお
り、且つTl内のタスクがクラスタC2に亘って分散さ
れ且つフェイムクラスタF2を有している場合、C2及
びF2の両方ともが、Flのサブクラスタである。同様
に、T3内のタスクがクラスタC3に亘って分散されて
おり且つフェイムクラスタF3を有する場合、C3及び
F3はF2のサブクラスタである。従って、入れ予室P
ARDOの場合、各タスクインターバルTiに対して、
レベリングサブコンポーネントは、そのタスクインター
バルを分散させるべきクラスタC1及びTi内の各タス
クに対するフェイムクラスタFiを選択せねばならない
。これらのクラスタは、C2及びF2がFlのサブクラ
スタてあり、C3及びF3がF2のサブクラスタであり
、以下同様であるように選択されねばならない。
特定のクラスタに関して作業を分散するための決定がな
されると、レベリングサブコンポーネントは、各子供ク
ラスタがどの程度の作業を受取るべきかを決定せねばな
らない。このことは、重要性の順番にリストした以下の
検討事項を使用して達成される。可能である場合には、
クラスタ内の各プロセサが実行すべき少なくとも1個の
タスクを有するように、各不十分のクラスタは十分な作
業を受取るべきである。残りの余分のユーザ作業は、そ
の局所的競合タスク限界(ilctN)を基にして各ク
ラスタへ割当てられるべきである。従って、大きな0c
t(lを持った子供クラスタは、小さなllctgを持
ったクラスタよりもより多くのタスクを持っている。
プロセサの局所的競合タスク限界は、ドメイン初期化に
おいて割当てられ、且つそのプロセサに対する同時的に
実行するタスクの最大数を表わしている。クラスタの局
所的競合タスク限界は、そのクラスタを構成するプロセ
サの局所的競合タスク限界の和である。
作業を再分散する試みは、サブクラスタが作業を受取る
こととなることを保証するものではない。
これには幾つかの理由がある。第一に、タスクを移動す
ることは、タスクを受取るべきクラスタを有することの
ない親タスクのフェイム領域に起因してフェイム上昇動
作を必要とする場合がある。
従って、この様なタスクを移動することは、フェイム上
昇動作を実施する高いオーバーヘッドに起因してユーザ
プログラムの稼動時間を増加させる場合がある。第二に
、余分なユーザ作業は、スタートしたタスクのみから構
成される場合があり、スタートしたタスクを移動するこ
とはコスト的に効果的でない場合がある。最後に、エー
ジェントの情報は、古くなっている場合があり、及び/
又は要求が適宜のプロセサへ到達する前にタスクが実行
を完了する場合がある。レベリングサブコンポーネント
は、タスクの不必要な再分散を回避するように構成され
ている。
2、レベリングサブコンポーネントの設計レベリングサ
ブコンポーネントは、余分のユザ作業をユーザ作業を必
要とするクラスタへ割当てる、即ち「ロードレベリング
」即ち負荷の平均化乃至は一様化であるプランナの主要
な機能を実施する。この部分は、レベリングサブコンポ
ーネントの設計乃至は構成について説明する。
a、ロードレベリングの発動 ロードレベリング(,77oad  47 eve9 
ing)は、二つの別個の状態において発動される。
第一に、PARDOの実行によって新たなタスクが形成
される場合に、ロードレベリングが発動される場合があ
る。第二に、ユーザプログラムの通常の実行期間中に、
ユーザ作業ロードがアンバランスとなる場合があり、即
ち他のクラスタが過剰なユーザ作業を有する場合に、一
つ又はそれ以上のクラスタが不十分なユーザ作業を有す
る場合がある。新タスク報告(report  new
  tasks))ランサクンヨンは、適宜のプランナ
エージェントに対して新タスクの形成を知らせ、その際
にロードレベリング、即ちレベリングのロードを発動す
る動作を行なう。このトランザクションは、それかロー
ドレベリング動作を発動する適宜の祖先エージェントへ
プランナツリーを上方に送られる。ロードレベリング動
作を調整するために適宜のプランナエージェントを決定
するための正確な条件について以下に説明する。
ユーザ作業の分散をバランスさせるためのロードルベリ
ング即ちロードの平均化乃至は一様化動作は周期的に行
なわれる。情報コンポーネントによって使用される分散
統計(dispersestatistics))ラン
ザクジョンは、このタスクを実行する。非リーフアンソ
ース(n。
n−1eaf  unsource)管理エージェント
がそのサブクラスタに対して分散統計トランザクション
をブロードキャスト即ち同報通信を行なうと、アンバラ
ンスな作業ロード即ち負荷状態がある場合には、プラン
ナエージェントがロード(負荷)の分散を発動する。
資源管理エージェントがそのサブクラスタに対して分散
統制トランザクションをブロードキャストする度にロー
ドルへリングを実行せんとする試みがなされるとすると
、過剰な数のロードレヘリングの試みが発生する。本発
明のアプローチは、各プランナエージェント記録におい
て以下の如きプール(Boo、Q ean)フィールド
を有するものである。
(1)pmd  chij)d  has  exce
ss  work:サブクラスタのタスクカウントがサ
ブクラスタの局所的競合タスク限界よりも大きい場合に
セットされる。
(2)pmd  chigd  has  work:
サブクラスタのタスクカウントがサブクラスタの局所的
競合タスク限界と等しい場合にセットされる。
(3)pmd   chig d   can   u
sework:サブクラスタのタスクカウントがそのt
asks  neededカウントよりも大きいがサブ
クラスタのpmd−Ωct(lよりも小さい場合にセッ
トされる。尚、tasks  needed=min(
クラスタ内のプロセサ数、クラスタのffcN))であ
る。
(4)pmd  chigd  need  work
:サブクラスタのタスクカウントがそのtasks  
neededカウントよりも小さい場合にセットされる
これらのフィールドは、情報コンポーネントによって使
用されるコレクト(colj7ect)統計トランザク
ションによってアップデートされる。
(1)及び(3)又は(4)である場合にロードレベリ
ング(1)oad  l evel ing)が発動さ
れる。なぜならば、これは、サブクラスタが余分の作業
を有しており且つその作業を使用することが可能である
か又はその作業を必要とする何れかのサブクラスタが存
在することを意味しているからである。ロードレベリン
グは、又、(2)は(3)及び(4)である場合にも発
動される。
なぜならば、これは、作業を実行することが可能なプロ
セサよりも多くのタスクを有するサブクラスタが存在し
ており且つ作業を必要とするサブクラスタが存在するこ
とを意味しているからである。
第一の場合は、作業か再分布される通常の状態であり、
一方第二の場合は、スタートしたタスクの可能な移動を
包含している。ロードレベリングが発動されると、これ
ら四つのフィールドはFALSE(偽)ヘセットするこ
とが可能である。
b、ロードレベリングの調整 本システムは、どのプランナエージェントがロードレベ
リング動作を調整するための責任を有するかを決定せね
ばならない。タスク再分布の場合には、ロードレベリン
グ動作を調整するプランナエージェントは、分散統計ト
ランザクションをブロードキャストする資源管理エージ
ェントに対応する。新タスク分布の場合には、新作業の
分散を調整するプランナエージェントを決定することは
一層困難である。
どのプランナエージェントが新作業の分散を調整するか
を決定するために以下のドメイン情報を使用する。
pmd  cΩuster  without  ta
sks・このレベルにおける祖先プランナエージェント
がタスクなしのサブクラスタである場合に、このビット
のアレイのg番目のエントリーがセットされる。
pmd  cluster  needs  task
s:このレベルにおける祖先エージェントがtasks
  needed−min (クラスタ内のプロセサ数
、クラスタの11Ctj))よりも多くのタスクを有し
ている場合にこのアレイのg番目のエントリーは0であ
り、そうでなければtasks  needed−該エ
ージェントのクラスタ内のタスク数である。
pmd  c(l uster  can  use 
 tasks :このレベルにおける祖先エージェント
がその1ctflよりも多くのタスクを有している場合
にはこのアレイのg番目のエントリーがOであり、そう
でなければクラスタの1ctl−該エージェントのクラ
スタ内のタスク数である。
これら三つの情報は、分散統計トランザクションの処理
によってアップデートされる。しかしながら、親タスク
のフェイムも考慮に入れられなければならない。フェイ
ムによって導入される限定は、別の作業を発生すること
のないタスクと別のタスクを形成するタスクの両方に適
用される。
第一に、新タスクが別の新作業を形成する可能性がある
場合、即ち、PARDOPO35IBLE又はPARD
OCERTAINの何れかがセットされる場合について
検討する。五つの可能な状態について検討する。
(1)該新作業を取扱うことの可能な空のサブクラスタ
を有する祖先エージェントが存在している。「作業を取
扱う」という文節は、tasksneeded−クラス
タタスクカウント〉−新タスクの数を意味している。基
本的に、新タスクを各「アイドル」プロセサへ割当てる
ことが可能であるように、タスクを実行することが可能
な十分な「アイドル」プロセサが存在している。
(2)新作業を取扱うことが可能な空のサブクラスタを
持った祖先エージェントは存在しないが、作業を必要と
し月つ新作業を取扱うことが可能な祖先エージェントが
存在している。この「作業が必要」という文節は、ta
sks  neededクラスタタスクカウント〉−〇
であることを意味している。即ち、タスクを実行するこ
とが可能な「アイドル」プロセサが存在している。
(3)作業を必要とし且つ新作業を取扱うことの可能な
祖先エージェントは存在しないが、作業を使用すること
か可能であり且つ新作業を利用することが可能な祖先エ
ージェントが存在している。
この「作業を使用する」という文節は、クラスタの(l
ctlよりも少ない数のタスクがエージェントのクラス
タ内に存在していることを意味している。「作業を利用
することが可能」という文節は、クラスタのflctl
−クラスタのタスクカウント〉−新タスクカウントであ
ることを意味している。
従って、作業を利用することか可能であるという文節は
、それらか分散されると新タスクか実行をスタートする
ことが可能であることを意味している。
(4)作業を使用することが可能な祖先エージェントが
存在しているが、これらのエージェントの何れもが新作
業を利用することか不可能である。
(5)何れの祖先エージェントも作業を使用することか
不可能である。
状態(1)においては、新タスク報告トランザクション
が、空のサブクラスタを有しており且つ新作業を取扱う
ことが可能な最高レベルエージェントへ送られる。この
アプローチは、新タスクを可及的に離して広げさせ、何
れかの可能な子孫タスクに対して場所を開ける。同時に
、それは、新タスクが形成される毎に、全ドメインに亘
ってタスクを分散させることはない。どのエージェント
が新作業を分散させるかを決定するための処方は状態(
2)乃至(5)に対して保守的である。兄弟タスクも、
それらの親タスクに可及的に近接して分散されねばなら
ない子供タスクを形成するものと仮定する。状態(2)
において、新タスク報告トランザクションか、作業を必
要とし且つ新作業を取扱うことの可能な最下位レベルプ
ランナエージェントへ送られる。
状態(3)において、新タスク報告トランザクションか
、作業を使用することが可能であり且つ新たに形成され
た作業を利用することが可能な最下位レベルエージェン
トへ送られる。状態(4)において、新タスク報告トラ
ンザクションは、該作業を使用することが可能な最下位
祖先エージェントにおいて停止する。最後に、状態(5
)において、新タスク報告トランザクションは何れの祖
先プランナエージェントへ送られることはなく、即ち新
タスクインターバルは親タスクのプロセサへ分散される
。本発明の組の規則がどの様にしてタスクの分散に影響
を与えるかの例を、新タスクが他の作業を形成すること
のない場合について検討した後に与える。
上述した説明においては、新タスクが別の作業を形成す
るものと仮定した。次に、新タスクが別の作業を形成す
ることがないものと仮定する、即ちPARDOIMPO
3SIBLEがセットされる。状態(1)及び(2)に
おいて、新タスク報告トランサクンヨンが、新作業を取
扱うことの可能な最下位レベルのプランナエージェント
へ送られる。状態(3)において、新タスク報告トラン
ザクションが、新作業を利用することか可能なM下位プ
ランナエージェントへ送られる。状態(4)において、
新タスク報告トランザクションが、作業を使用すること
の可能な最下位プランナエージェントへ送られる。最後
に、状態(5)において、新タスク報告トランザクショ
ンは送られることはなく、従ってタスクが初期的に、親
タスクを有するプロセサへ分散される。
プランナは、又、フェイム値を新タスクへ割当てる機能
を行なう。コオディネーティング即ち調整用エージェン
トが新タスクインターバル及びドメインの状態に関する
最も正確な情報を有しているので、このエージェントは
フェイム値を新タスクへ割当てる。新タスクが別の作業
を形成することがない場合には、0のフェイムか各新タ
スクへ割当てられる。一方、タスクが別の新作業を形成
する場合には、調整用エージェントによるフェイムの割
当ては一層困難である。該エージェントか新タスクを種
々の子供クラスタへ割当てると、該エージェントのクラ
スタは以下の三つの状態のうちの一つとなることか可能
である。
(1)クラスタのタスクカウントくクラスタのtask
s  neededカウント (2)クラスタのtasks  neededカウント
〈−クラスタのタスクカウント〈−クラスタの11ct
O (3)クラスタの(lct(1<−クラスタのタスクカ
ウント 状態(1)の場合には、最初に、最高限界によって与え
られる「タスク当りのプロセサの平均数」を計算する(
クラスタに対するクラスタ/タスクカウントに対するt
asks  neededカウント)。少なくともこの
タスク当りのプロセサの平均数を包含する最小クラスタ
のレベルが新タスクのフェイムとして割当てられる。状
態(2)の場合においては、最初に、最高限界によって
与えられる「タスク当りの実効的プロセサの平均数」を
計算する(クラスタに対するクラスタ/タスクカウント
に対する。Qctg)。このタスク当りの実効的プロセ
サの平均数を包含する最小クラスタか、タスクの実効的
勢力クラスタと呼ばれる。注意すべきことであるが、実
効的勢力クラスタのレベルがレベリングエージェントの
レベルよりも大きいものであることが可能である。従っ
て、新タスクへ割当てるフェイム値は(調整用エージェ
ントのレベル、実効的勢力クラスタのレベル)の最小の
ものである。状態(3)の場合においては、0のフェイ
ム値を新タスクへ割当てる。次に、新タスクインターバ
ルに対する調整用エージェントの選択に関するフェイム
の影響について検討する。
新作業は、常に、親タスクのフェイム領域内に分散され
ることを必要とする。従って、前に説明した規則を使用
して決定される調整用エージェントのレベルが親タスク
のフェイムよりも大きい場合には、新タスクの分散用の
調整用エージェントは親タスクのフェイムレベルにおけ
る祖先エージェントとして選択される。
新タスク報告トランザクンヨンをプランナツリの情報へ
正確に案内するためには、エージェントのドメイン情報
はアップツーデート即ち最近のものでなければならない
。従って、エージェントがアレイのステータスを変化さ
せるロードレベリング動作を実施すると、即ちpmd 
 cluster  without  tasks;
pmd  cIIuster  needs  tas
ks;pmdc、Quster  can  use 
 tasks。
この情報はエージェントのクラスタを介して可及的迅速
に使用可能なものとなされねばならない。
このことを確保するために、ロードレベリング動作を終
了する各エージェントがそのクラスタ上で偶発的な分散
統計トランザクションをブロードキャストすることを必
要とする。このことは、クラスタ内のエージェントが可
及的にアップツーデートなドメイン情報を有することを
保証する。分散統計トランザクションがこの目的のため
に使用される場合、それはロードレベリングサブコンポ
ーネントを発動すべきてはない。
新タスク報告トランザクションは、新タスクの分散を調
整するための特定の祖先プランナエージェントを選択す
るための理由(RNT  CLUSTER3EMPTY
  RNT  NEEDS  TASKS、RNT  
USE  TASKS、RNTCAN  USE  T
ASKS、及びRNT  CLUSTER5FULL)
を有している。祖先エージェントを選択するために使用
される情報がアップツーデートなものではない場合には
、祖先エージェントを選択するための理由が無効である
場合がある。新タスク分散をコオディネート即ち調整す
るために選択されたプランナエージェントが該理由の有
効性をチエツクする。該理由がいまだに有効であるか、
又は該エージェントが作業を使用することが可能である
か、新タスクインタバルを有するクラスタに対する子供
プランナエージェントか作業を使用することが不可能で
ある場合には、該エージェントか新タスク分散を調整す
る。そうでない場合には、新タスク報告トランザクショ
ンか、新タスクインターバルを包含するクラスタ内の子
供プランナエージェントへ送られる。
子供エージェントか新作業を使用することが可能である
場合には、それは新タスクインターバルの分散を調整し
、そうでない場合には、それかリフプランナエージェン
トでない場合には、それが新タスク報告トランザクショ
ンをそのクラスタが新タスクインターバルを有する子供
へ送る。これは、リーフエージェントである可能性のあ
るプランナエージェントが新タスクの分散を調整するた
めに見付かるまで繰返し行なわれる。
C,ロードラベリングの例 以下の説明においては、ドメインが二つの完全なケージ
から構成されており、各ケージが16個のボード(基板
)を有しており、且つ各ボードが4個の処理要素を有し
ているものと仮定する。更に、各プロセサの(lctl
が3であると仮定する。
第一に、主タスクが01個の子供タスクを形成し且つ各
子供タスクが02個の子供タスクを形成し11つ最後に
各孫タスクが03個の子供タスクを形成する場合につい
て検討する。nl、n2.n3の値に依存して多数の可
能な場合か存在する。
しかしながら、ケース(A)においては、n]=4、n
2−16.n3=8であるとし、ケース(B)において
は、n1=64.n2=8.n3−0であると、仮定す
る。ケース(A)について検討する。世代2タスクの分
散は状態(1)に対応する。それは、トップレベルのプ
ランナエージェントによってコオディネート即ち調整さ
れ、且つ各ケージが2個のタスクを受取ることとなる。
2のフェイム値が各タスクに割当てられる。世代3タス
クの分散は、状態(1)及び(2)の両方に対応し、レ
ベル2プランナエージエントによって調整され、且つ各
ボードが2個のタスクを受取ることとなる。各タスクは
フェイム1が割当てられる。世代4タスクの分散は、状
態(3)及び(4)の両方に対応し、レベル1プランナ
エージエントによって調整され、且つ各プロセサが4個
のタスクを受取ることとなる。各タスクはフェイム0が
割当てられる。
ケース(B)においては、世代2タスクの分散は状態(
1)に対応する。それは、トップレベルのプランナエー
ジェントによって調整され、且つ各ボードが2個のタス
クを受取ることとなる。1のフェイムが各タスクに割当
てられる。世代3タスクの分散は状態(3)及び(4)
の両方に対応し、レベル1プランナエージエントによっ
て調整され、且つ各プロセサが4個のタスクを受取るこ
ととなる。0のフェイムが各タスクに割当てられる。
d、ロードレベリングトランザクションの繰返し新タス
ク報告トランザクション及び分散統計トランザクション
が相互作用することが可能である。
両方のトランザクションは、ロードレベリングを発動す
る作用を有している。新タスク報告トランザクションに
よって開始されるロードレベリング動作が新作業を分散
させる前に、ロードレベリング動作によって分散される
べき新タスクが分散統計トランザクションによって発動
されることは望ましいことではない。この状態を回避す
るために、それらが分散される後まで、新たに形成され
たタスクインターバルが親タスクプロセサの作業量にお
いてカウントされることはない。従って、新作業の知識
は、新作業を分散する作用を行なう新タスク報告トラン
ザクションを介して!jえられるのみである。
e、クラスタへの作業の割当て 次に、余分の作業が作業を必要とする種々の子供クラス
タへ割当てられる本システムの側面について検討する。
ロートルベリング動作が新タスクの分散又はタスクの再
分散を行なうが否かに従って、検討すべき二つの場合が
ある。
第一に、新タスクの分散を包含するロードレベリング動
作について検討する。作業を分散させるエージェントは
、例えば各子供クラスタ内に存在する全作業及び各子供
クラスタのj7ctgなどのようなりラスタ情報を有し
ている。レベリングルチンは、この情報を使用して、新
作業のどれほどが各子供クラスタへ割当てられねばなら
ないがを決定する。新作業を分散するために使用される
処方は、その新作業か作業を必要とする子供クラスタに
よって受イ・」けられることが可能であるが否かに依存
する。これらの場合の各々について別々に検討する。
子供クラスタか新作業を受付けることができない場合に
は、本システムは、各子供クラスタ内に含まれる作業を
新作業へ加算することによってtotal7  wor
kを決定する。各子供クラスタのエンタイトルメント即
ち表題は以下の如くにしてM1算される。
(chid cluster Ictl)/(sum 
of the chidcluster’s Ictり
 * total work現在のタスクカウントがそ
れらのエンタイトルメント即ち表題と等しいか又はそれ
より大きい子供クラスタは無視され、且つそれらのタス
クはt。
tap  workから除去される。次いて、上の式を
使用して残りの子供クラスタに対してエンタイトルメン
ト即ち表題を再計算する。子供クラスタのpct(lの
和を、残りの子供クラスタのみを使用して計算する。各
子供クラスタに十分のタスクを割当てることによって新
タスクを分散させ、そのエンタイトルメント即ち表題を
達成する。最もタスクを必要とする子供クラスタからこ
のプロセスかスタートする。
次いて、子供クラスタが新作業を受付けることが可能で
ある場合について検討する。本システムが、作業を必要
とする各子供クラスタ内に含まれる作業を新作業へ加算
することによってtotaj7workを決定する。次
いで、以下の式を使用して各子供クラスタのエンタイト
ルメント即ち表題を計算する。
(child cluster tasks−aeed
ed couno/(sutx ofchid clu
ster’s tasks−needed count
)* total work 注意すべきことであるが、作業を必要とする子供クラス
タのみが、子供クラスタのtasks  needed
カウントの和内に含まれる。現在のタスクカウントがそ
れらのエンタイトルメント即ち表題き等しいか又はそれ
より大きい子供クラスタは無視され、且つそれらのタス
クはt o t aljworkから除去される。次い
で、残りの子供クラスタに対してのエンタイトルメント
即ち表題が再H算される。次いて、各子供クラスタに十
分なタスクを割当てることによって新タスクを分散させ
、そのエンタイトルメント即ち表題を達成する。
最もタスクを必要とする子供クラスタからこのプロセス
かスタートする。
新作業を子供クラスタへ割当てるためのこの処方は、既
に子供クラスタ内に存在する作業及び子供クラスタの寸
法を考慮に入れる。一般的には、この処方は、局所的競
合タスク限界が各サブクラスタに対して同一でない限り
、サブクラスタに対して一様にタスクを分散するもので
はない。更に、このアプローチは、全てのタスクが等し
いものとして処置しており且つタスク内にどれほどの作
業(命令で測定)が含まれているかを直接的に考慮する
ものではない。
次に、タスクの再分布を包含するロードレベリング動作
について検討する。作業を再分散するニジエンドは、例
えば親タスクのフェイムによって分類される各子供クラ
スタ内に存在する全作業、タスクの長さ、及びそれがス
タートされているか又はスタートされていないかなどの
クラスタ情報を有している。従って、該エージェントは
、各タスクを以下のカテゴリの一つへ割当てることが可
能である。
T1:フェイム上昇動作なして移動させることが可能な
スタートされていないタスク。
T2:その移動かフェイム上昇動作を必要とするスター
トされていないタスク。
T3:その移動がフェイム上昇を必要とする場合がある
スタートされたタスク。
平均で、各タイプのタスクは、移動させるために異なっ
た量の管理作業を必要とする。T1タスクは、移動する
のに最少量の管理作業を必要とする。
T2タスクは、フェイム上昇動作を実施する必要性のた
めに、より多くの管理作業を必要とする。
最後に、スタートされたタスクは、移動するのに最も多
い管理作業を必要とする。
タスクの再分散に関する正しい決定は、部分的には、関
係するタスクのタイプに依存する。従って、TI、T2
又はT3タイプの作業としての作業の分類は、とのタス
クを移動すべきであるかを決定する上でのガイドとして
使用することが可能である。これは、更に、タスクの再
分散用のレベリング動作が三つのフェイズへ分解され、
各フェイズが特定のタイプの作業の再分散を取扱うもの
であるということを示している。タスクの再分散用のレ
ベリング動作の各フェイズについて以下に説明する。
フェイズ1:このフェイズは、タイプT1タスクの再分
散を取扱う。第一に、タイプT1タスクの総数が決定さ
れる。これらのタスクの再分散は、該タスクが作業を必
要とする子供クラスタによって受入れられるか否かに依
存する。そのタスクカウントがそのt a s lc 
s  n e e d e dカウントよりも小さい場
合には、子供クラスタは「作業を必要とする」。
タイプT1タスクが、作業を必要とする子供クラスタに
よって受付けることが不可能であると仮定する。各子供
クラスタのエンタイトルメントを計算するために次式を
使用する。
(child cluster Ictl)/(clu
ster’s tell)* total work 各子供クラスタに十分のタスクを割当てることによって
T1タスクを再分散させ、そのエンタイトルメントを達
成すべきである。このプロセスは、タスクを最も必要と
する子供クラスタから開始すべきであり、且つエンタイ
トルメントの計算に関連する切捨て問題を考慮に入れる
べきである。余分のタスクが作業を必要とする子供クラ
スタによって受入れることが可能であると仮定する。作
業を最も必要とする子供クラスタからこの再分散を開始
すべきであり、且つ全ての余分のT1タスクが再分散さ
れた場合に終了すべきである。
フェイズ2:このフェイズは、タイプT2タスクの再分
散を取扱う。このフェイズに入るためには、フェイズ1
を完了した後に作業を必要とする子供クラスタが存在せ
ねばならない。第一に、タイプT2タスクの数及び作業
を必要とする子供クラスタによって必要とされるタスク
の数の最小値をとることによってtota、17  w
orkが決定される。
フェイム上昇が関与するので、「適当な量の余分の作業
」が存在する場合にのみタスクを移動させる。「適当な
量の余分な作業」という概念は、二つのパラメータ(m
l、m2) 、尚Q < −m ]、 。
m2<−1、から構成される重みベクトルによって定義
される実効的タスクカウントによって測定される。これ
らのパラメータを適宜選択することにより、フェイム上
昇動作を発生させるこれらのタスクの移動において、所
望な程度の「自由主義的」又は「保守的」とすることが
可能である。同様に、各フェイズの実効的タスクカウン
トの計算のために異なった重みベクトルを選択すること
により、フェイズ2及びフェイズ3との間を区別するこ
とが可能である。例えば、フェイズ2に対して重みベク
トル(1/3.1)を選択し、且つフェイズ3に対して
より「保守的な」重みベクトル(1/4.1)を選択す
ることが可能である。重みベクトルがプランナエージェ
ントのレベルに依存させることも可能である。従って、
プランナ・ツリーのトップ近傍のプランナエージェント
は、該ツリーの底部近傍にあるプランナエージェントと
比較して、タスクを移動させる上で一層保守的なものと
することが可能である。
プランナ用の重みベクトルは、ドメインのスタートアッ
プにおいて初期化される。タイプ2作業用の重みベクト
ルは、二つの部分の集合であり、その分子はプランナ記
録フィールドpmd  unstarted  wei
ghts  [2]であり且つその分母はpmd  u
nstarted  denomによって与えられる。
タイプ3作業に対する重みベクトルは、二つの部分の集
合体であり、その分子はプランナ記録フィールドpmd
  5tarted  weights  [2]で与
えられ且つその分母はpmd  5tarted  d
en。
mて与えられる。
例えば、S−1/4T、L−ITの如くにして、異なっ
た長さのタスクに対して実効的なタスクカウントを割当
てることが可能である。実効的なタスクカウントの重み
ベクトルは、トリプル0/4.1)によって与えられる
。従って、四つの短い(Short)タスクと、二つの
長い(Long)のタスクを有するクラスタは実効的タ
スクカウントが3である。
この実効的タスクカウントは、タイプ下2タスクが移動
されるべきか否かを決定するために以下の如くに使用さ
れる。最大数のT2タスクを有するクラスタでスタート
し、且つそのクラスタの実効的タスクカウントを計算す
る。その実効的タスクカウントがそのtasks  n
eededカウントより小さいか又は等しい場合には、
このクラスタから何れのタスクも移動させることはない
この子供クラスタを「レベル済み」としてマークを付け
、且つそのT2タスクをtotall  w。
rkから減算する。そのクラスタに対しての実効的タス
クカウントかクラスタのtasks  neededカ
ウントよりも大きい場合には、可及的に多くのT2タス
クを該クラスタから移動させ、且つ移動させたタスクの
数をt o t aj7  wo rkから減算する。
total  workが0より小さくなるか又は等し
くなるまで、レベル化されていない最大数の12タスク
を持った子供クラスタについてこの手順を繰返し行なう
フェイズ3:このフェイズは、T3タスクの再分布を処
理する。このフェイズにエンターするために、フェイズ
2を完了した後に作業を必要とする子供クラスタが存在
せねばならない。T3タスクを再分散させるための手順
は、フェイズ2において「レベル化済み」としてマーク
が付けられた子供クラスタがフェイズ3においては考慮
されないということを除いて、フェイズ2において与え
られたものと基本的に同一である。
f、レベリングサブコンポーネントの要約新タスクイン
ターバルが形成されると、それはプランナタスクに区画
化され、そのプランナタスクは、更に、5hort(短
い)又はLong(長い)タスクとして分類される。こ
の新タスクのステータス、親タスクのフェイム及びドメ
インに関する情報を使用して、新タスクの分散を調整す
る作用を行なう適宜のプランナエージェントへ、新タス
ク報告トランザクションをプランナツリーの情報ヘガイ
ドする。このエージェントは、ロートレベリング動作を
発動させ、その結果、タスクインターバルがエージェン
トのクラスタに亘って分散される。更に、該エージェン
トは、新タスクのステータスと共に、そのクラスタの最
終的ステータスを使用して、フェイム値をタスクインタ
バルにおける各新タスクへ割当てる。
クラスタ内の作業量がアンバランスとなると、クラスタ
エージェントはコレクト統計トランザクションによって
知らされ、該エージェントの記録内に適宜のビットを設
定する。各分散統計トランザクションか、これらのビッ
トを検査して、タスクの再分散を行なうためにロードレ
ベリング動作を発動する価値があるか否かを決定する。
このロードレベリング動作は、該エージェントのクラス
タを構成するサブクラスタに関してタスクの「−様な」
分散を得ようとする。タスクは、作業を実行するサブク
ラスタの能力に基づいて分散される。これは、二つの異
なった方法で測定される。第一に、実行すべきタスクの
ないサブクラスタにおけるプロセサ数によって行なわれ
る。第二に、同時的にタスクを実行するサブクラスタの
能力の目安であるサブクラスタの局所的競合タスク限界
によって行なわれる。
タスクの再分散用のロードレベリング動作は3フエイズ
プロセスである。第一フェイズにおいて、フェイム上昇
動作なしで移動させることが可能な余分のタスクがレベ
ル化される。第二フェイズは、実行すべきタスクを必要
とするプロセサがいまだに存在する場合にのみエンター
される。このフェイズにおいては、フェイム上昇動作を
必要とする余分のタスクがレベル化される。第三フェイ
ズは、第二フェイスか完了した後に、実行すべきタスク
を必要とするプロセサがいまだに存在する場合にのみエ
ンターされる。このフェイズにおいては、余分のスター
トしたタスクがレベル化される。注意すべきことである
が、第二及び第三フェイスにおいては、クラスタの実効
的タスクカウントかそのtasks  neededカ
ウントよりも大きい場合にのみ、タスクがクラスタから
移動される。
これは、余分のタスクの移動を正当化するために適当な
量の余分の作業か存在していることを保証する。この実
行タスクカラン・トを計算するために使用される式は、
関与するタスクのタイプに依存してタスクの移動を容易
とさせるために、フェイズ毎に変化させることが可能で
ある。
C,モーションサブコンポーネント 1、概括 モーションサブコンポーネント(motionsubc
omponent)の機能は、レベリングサブコンポー
ネントによってなされた決定を実行することである。従
って、ユーザ作業が一つのクラスタ(送給クラスタ)か
ら別のクラスタ(受給クラスタ)へ移動されることをレ
ベリングサブコンポーネントが要求すると、余分のユー
ザ作業を有する送給クラスタにおけるプロセサから適宜
の数のタスクをユーザ作業を必要とする受給クラスタに
おけるプロセサへ移動させるのはモーションサブコンポ
ーネントの責任である。
つのクラスタから別のクラスタへの作業の分散は、以下
のンーケンスのステップを包含する。
第一に、作業に対する要求が送給クラスタへなされる。
次いで、作業要求か余分の作業を有する送給クラスタ内
の個々のプロセサへの作業要求へ変換されねばならない
。次いで、作業要求を受取る各プロセサは、その要求を
満足するタスクを選択し且つ送給せねばならない。最後
に、受給クラスタへ送られるタスクは、作業を必要とす
る受給クラスタ内のプロセサへ分散されねばならない。
このプランナのモーションサブコンポーネントは、又、
タスクに関連する情報の移動も処理する。
タスクを送給することは、受給プロセサ上で実行するだ
めのタスクに対して必要な情報の移動を包含する。タス
クが実行を完了すると、この情報は、タスク実行に関す
るその他の情報と共に、親タスクへ送られねばならず、
従って、それは実行を再開することが可能である。
モーションサブコンポーネントは、作業に対するレベリ
ングサブコンポーネントの要求を、送給クラスタ内のプ
ロセサから余分のタスクの送給へ変換せねばならない。
作業に対する要求は、幾つかのプロセサかタスクを送給
することとなる場合がある。なぜならば、単一のプロセ
サから必要とされる作業を得ることが不可能な場合があ
るからである。密接に関連したタスクは、要求を満足す
るために可及的に少ないタスクインターバルを送給する
ことにより可及的に近接した状態を維持させることが可
能である。要求された作業を送給クラスタから得るため
のプロセスもフェイムを考慮に入れねばならない。可能
な場合には、要求された作業は、フェイム上昇動作を実
施することなしに送給することが可能な要求された余分
の作業を持ったクラスタから得るべきである。その結果
、クラスタから作業を得る場合には、以下の重要性の順
番にリストした事項を包含している。即ち、(1)フェ
イム上昇動作の回避、及び(2)可及的に少ない数のタ
スクインターバルの送給。
このモーションサブコンポーネントは、又、受給クラス
タへ送られた作業を分散させる作用を行なう。受給した
タスクインターバルをサブインタバルへ分割することが
必要な場合がある。なぜならば、作業を必要とする受給
クラスタ内には幾つかのプロセサが存在する場合がある
からである。
密接に関連したタスクを近接して維持するために、タス
クインターバルの不必要な分割は回避する。
従って、作業をクラスタ内で分散させるべき場合には、
受給したタスクインターバルを可及的に少ない数のサブ
インターバルへ分割させる。
本プランナのモーションサブコンポーネントは、又、プ
ロセサ上のどのタスクインターバルが作業要求を充足す
るために送給されるべきであるがを決定する作用を行な
う。タスクのフェイムが考慮されねばならない。例えば
、二つのタスクインターバルが存在しており且つ一方の
親タスクのフェイムが受給エージェントのレベルよりも
大きい場合であって、他方の親タスクのフェイムが受給
エージェントのレベルと等しいが又はそれより小さい場
合には、第一インターバルに優先性が与えられるべきで
ある。この選択の理由は、フェイム上昇動作は高価であ
り、従って可能である限り回避されるべきであるからで
ある。タスクがPARDOを実施する可能性を考慮に入
れるべきである。
例えば、二つのタスクインターバルが存在しており且つ
一方が子供タスクを形成し、他方が形成しない場合には
、第一インターバルに優先性が与えられるべきである。
この選択に対する理由は、子供タスクを形成するタスク
は、プロセサをユーザ作業を実行してビジー状態に維持
するための努力において可及的に迅速にスタートされる
べきであるからである。タスクの世代が考慮に入れられ
るべきである。例えば、二つのタスクインターバルが存
在しており且つ全てのタスクが子供タスクを形成する場
合には、最小世代を有するインターバルニ優先性か与え
られるべきである。最小世代を有するタスクインターバ
ルは、より多くの作業を形成するより多くの蓋然性があ
り、従って可及的に速やかに実行を開始すべきであるか
らである。
従って、作業要求を満足するためのタスクインターバル
の選択は、以下の重要性の順番にリストした事項に基づ
いてなされる。
(1)タスクの送給がフェイム上昇動作を引起こす可能
性 (2)タスクが子供タスクを形成する可能性(3)子供
タスクを形成するタスクの世代(4)作業要求を満足す
るために必要とされるタスクインターバルの数 2、モーションサブコンポーネントの設計モーションサ
ブコンポーネントの機能は、レベリングサブコンポーネ
ントによって要求される作業の分散を実行することであ
る。
a0作業の要求 このセクションにおいては、送給サブクラスタからの作
業に対する要求を送給クラスタを構成している個々のプ
ロセサからの作業に対する要求へ変換するために使用さ
れるメカニズムについて説明する。又、ドメイン内の作
業の移動を反映するためにどの様にして各プランナエー
ジェントのドメイン情報かアップデートされるかという
補助的な問題について検討する。この場合にも、ロード
レベリング動作が新タスクの分散を包含するか又はタス
クの再分散を包含するかに依存して、検討すべき二つの
場合かある。
第一に、ロードレベリングが新タスクインターバルの分
散を包含する場合について検討する。新作業要求(re
ques t  new  work)トランザクショ
ンが、新タスクインターバルを有するプロセサへ直接的
に送給される。このトランザクションは、各サブエージ
ェントが受給すべきタスク数と共に、調整用エージェン
トのどのサブエージェントが作業を受給するかというこ
とを表わす。従って、新作業の分散を要求するために単
一の新作業要求トランザクションが必要であるに過ぎな
い。更に、この要求は満足されることが保証されている
ので、新作業要求トランザクションに対するアクルッジ
メント即ち認知を行なう必要性はない。
次に、ロードレベリングが作業の再分散を包含する場合
について検討する。この場合には、作業要求のプロセス
は繰返しプロセスである。送給クラスタに対するトップ
エージェントは、そのサブクラスタのどれが該要求を満
足することが可能な余分の作業を有しているかを決定せ
ねばならない。
(一般的には、元の要求を満足するために作業を送給す
ることが必要な一つを超えたサブクラスタか存在してい
る。)このプロセスは、作業が要求された各サブクラス
タの非リーフエージェントによって繰返し行なわれる。
従って、作業に対する元の要求は、作業に対する送給ク
ラスタ内のリーフエージェントに対する要求数となる。
作業に対する要求は、送給されるべきTI、T2.T3
タスクのタイプ数を包含している。作業要求を満足せん
とする場合に非リーフエージェントが従う二つの一般的
なガイドラインが存在している。第一に、Tlタイプタ
スクと共にT2タイプタスクに対する要求を満足するこ
とが可能である場合には、それが実行される。同様に、
T2タイプのタスクと共に、又はより良好には、T1タ
イプのタスクと共に、T3タイプのタスクに対する要求
を満足することが可能である場合には、それを実行する
第二に、単一の作業要求を満足するために必要とされる
リーフエージェントの数を最小とする。このことは、最
大量の余分の作業を持ったサブクラスタからの作業を要
求することによりその作業要求を満足する各非リーフエ
ージェントによって達成することが可能である。作業要
求分散トランザクションを使用して作業に対するこの要
求を実施する。
次に、クラスタ情報を可及的にアップツーデート即ち最
近のものに維持することの問題について説明する。エー
ジェントが送給クラスタから受給クラスタへ作業を移動
させると、それはそのw。
rk  motion記録をアップデートして、作業が
移動中であるという事実を記録する。一般的に、エージ
ェントがサブクラスタから作業を要求するか又はサブク
ラスタへ作業を送給する場合、該エージェントはそのw
ork  motion記録をアップデートする。この
work  motion記録は、各サブクラスタのp
md  chifId  1nfo記録のchi  w
ork  motionフィールドによって与えられる
。検討すべき二つの問題かある。第一に、その作業がリ
ーフプランナエージェントによって実際に送給されるか
又は受給されると、この情報は適宜の祖先エージェント
へ転送されて、該エージェントがそれらのwork  
motion記録をバランスすることが可能であるよう
にされねばならない。第二に、再分布中の作業の場合、
送給クラスタが実際に必要とされる作業を有するもので
はないことがある。
この場合に、この矛盾によって影響を受ける全てのプラ
ンナエージェントがそれらの記録を正確にバランスさせ
ることを可能とする何らかのメカニズムを必要とする。
第一の問題は、プランナエージェント記録内に含まれて
いるpmd  5ent  or  recフィールド
によって解決され、尚pmd  5entor  re
cはこのアレイ内のg番目のエントリーであり、g番目
のレベルの祖先エージェントが移動させDつそのエージ
ェントのクラスタ内のプロセサによって送給(負)され
たが又は受給(正)されたかの何れかであるタスク数で
ある。
リーフプランナエージェントかレベル1祖先エージエン
トの要求でタスクインターバルを受給(送給)すると、
それはその5ent  or  recアレイ内のg番
目のレベルエントリーへタスク数を加算するか又はそれ
から減算する。このアレイは、コレクト統計トランザク
ションを介して各祖先エージェントへ送給される。j番
目のレベルの祖先エージェントは、j番目のレベルから
スタートしてトップレベルへかけてこのアレイ内のエン
トリーを使用して、そのwork  motion記録
を補正する。
2番目の問題は、分散報告(report  dist
ributjon))ランザクジョンを導入することに
よって解決される。作業要求分散トランザクションが送
られると、対応する分散報告トランザクションが受取ら
れて、いかほどの要求された作業が実際に送給されたか
をアクルッジ即ち認知せねばならない。非リーフエージ
ェントによる作業要求分散トランザクションの処理は、
一つ又はそれ以上の作業要求トランザクションがそのサ
ブエージェントへ送られることとなる。各サブエージェ
ントから要求された作業量を、この様なエージェントの
数と共に包含するサイクルが形成される。サブエージェ
ントから分散報告トランザクションが受取られる毎に、
実際に送られたタスク数が要求されたタスク数と比較さ
れ、その差を使用して適宜のwork  motion
記録エントリーを補正する。全ての分散報告トランザク
ションが受取られると、分散報告トランザクションがそ
の作業要求分散トランザクションを送給したエージェン
トへ送給される。
b、インターバルの選択 作業に対する要求がリーフプランナエージェント (l
  eaf    pi  anner    age
nt)  Iこよって受取られると、このエージェント
はこの要求を満足するためにどのインターバルを使用す
べきかということを決定せねばならない。新タスクの分
散の場合、何ら決定をすべきものはない。0−ドレベリ
ング<9 oad  (l eveOing)動作を達
成させる新タスクインターバルは、この要求を満足する
ために使用される。タスクの再分散の場合には、この決
定はそんなに筒中ではない。
プロセサ上にたくさんのタスクインターバルが存在する
場合があり、且つ送給すべき特定のタスクインターバル
を選択することは重要な性能結果を有している。
作業要求分散(request  work  dis
tribution)  トランザクションは、送られ
るべきTI、T2.T3タイプのタスクの数を有してい
る。作業要求分散トランザクションの非リーフエージェ
ントの取扱いに対しての上述した一般的なガイドライン
はリーフエージェント(j7eaf  agent)に
も適用される。従って、最初に、作業に対する要求を満
足させるためにタスクインターバルを選択する場合、移
動させるためにフェイム上昇動作を必要とすることのな
いスタートされていないタスクを有するタスクインター
バルのみを検討する、即ち、タイプT1作業である。第
二に、以下のタスクインターバルを使用して、タスクに
対する要求を満足する試みを行なう。即ち、(1)最も
初期の世代を有しており1つ別の作業を形成するタスク
を具備するタスクインターバル、及び(2)タスクイン
ターバルの分割が最小であるタスクインターバル。タイ
プT2及びT3タスクに対する要求がいまだに未決であ
る場合には、移動させるためにフェイム上昇動作を必要
とするスタートされていないタスクを有するタスクイン
ターバルが考慮され、即ちタイプT2作業である。タイ
プT3タスクに対する要求がいまだに未決である場合に
は、スタートしたタスクを有するタスクインターバルを
検討する。
以下のタスクを使用することにより、タイプT3タスク
に対する要求を満足する試みを行なう。即ち、(1)フ
ェイム上昇動作を必要とすることのないタスク、及び(
2)最小数のアーカイバルベージ(archivall
  page)を有するタスク。最小数のアーカイバル
ページを有するスタートしたタスク(started 
 task)は最小の「確立された」ものと考えられ、
従って移動させるのに最良のスタートしたタスクである
C,クラスタへのタスクインターバルの割当て要求した
作業か送給されると、受給クラスタを構成するプランナ
エージェントは、作業を必要とする受給クラスタ内のプ
ロセサに対して、該作業を分散させねばならない。この
ことは、タスクインターバルを受給し且つこれらのタス
クインターバルを欠乏性のサブクラスタへ適宜分散させ
る受給クラスタに対するトップエージェントによって達
成される。これは、一般的には、繰返しプロセスである
。なぜならば、欠乏性サブクラスタに対する非リーフエ
ージェントは、受給したタスクインターバルをそれらの
欠乏性サブクラスタへ分散させねばならないからである
タスクインターバルを分散させるための明らかなアプロ
ーチは、送給クラスタに対しての元の作業要求を充足す
るために受取られるタスクインターバルの数とは独立的
に、各受給したタスクインターバルを分散させることを
包含する。このアプローチは適切なものではない。なぜ
ならば、それは、タスクインターバルを不必要に分割さ
せるからである。この問題を回避するために、受給され
たタスクインターバル内に含まれる作業ではなく、予定
された作業の全量を使用して分散が実施される。このプ
ロセスについて簡単に説明する。
ロードレベリング動作を調整するエージェントは、受給
クラスタべ送られる予定の全体的な作業を知っている。
この量は、ロードレベリング動作から得られる各作業要
求分散トランザクション内に含まれている。この作業要
求分散トランザクションは、最初に、受給クラスタのト
ップエージェントを訪ね、次いで送給クラスタに対する
トップエージェントへ送給される。この受給クラスタの
エージェントに対する僅かな回り道は、作業要求分散が
、送給されるべき全体的な予定された作業を使用して受
給クラスタに対する作業分散動作を発動することを可能
とする。作業分散動作の結果を有しており且つ受給クラ
スタが受給したタスクインターバルを分散させるために
プランナエージェントによって使用されるサイクル記録
が形成される。受給クラスタに対するトップエージェン
トがタスクインターバルを受給すると、それは作業分散
動作から得られた情報を使用して、各受給されたタスク
インターバルを適宜のサブクラスタへ送給する。この時
に、該エージェントは、どの程度各サブクラスタか受給
を行なう予定であるがを知っており且つそれが送給する
タスクインターバルと共にこの情報を包含する。サブエ
ージェント(s ubagen t)がタスクインター
バルを受給すると、それは作業分散動作を実施するため
に予定した量の作業を使用する。このプロセスは、全て
のタスクインターバルが分散されるまで継続される。受
給クラスタ用のトップエージェントは、作業要求分散ト
ランザクションに応答して何時全てのタスクインターバ
ルが受給されるがということを知っている。これは、受
給クラスタ用のトップエージェントが、全てのタスクイ
ンターバルが送給された場合に、送給クラスタ用のトッ
プエジエントから分散報告トランザクションを受取る結
果である。このトランサクションは、送給されたタスク
の総数を有している。分散報告トランザクションが受給
され且つ全てのタスクインターバルか受給されると、受
給クラスタ用のトップエージェントはそのwork  
motion記録を補正し、且つ分散報告トランザクシ
ョンをその親プランナエージェントへ送給する。
作業分散動作は、プランナエージェントがどのサブクラ
スタが予定された作業の一部を受取るべきであるかとい
うことを決定することを包含している。この動作を実施
するために使用される処方は、新タスクの分散のための
処方と同一である。
d、タスク転送 タスク転送(task  transfer):1ンポ
ーネントは、特定されたタスクインターバル内に含まれ
る与えられた数のタスクの転送を実行する。タスクイン
ターバルが存在するプロセサが送給プロセサによって呼
出される。タスク分散要求において特定されたクラスタ
が受給クラスタによって呼出される。この動作は、通常
、受給クラスタ内の幾つかのプロセサが元のタスクイン
タバルのサブインターバルを受取る結果となる。タスク
サブインターバルを受給するプロセサは受給プロセサに
よって呼出される。
タスクの転送は、そのタスクインターバルに関連する情
報を送給することを包含している。この情報は、タスク
インターバルを構成しているタスクを特定し、且つその
タスクを受給プロセサ上で実行することを可能とする。
これらのタスクが実行を完了すると、タスク転送コンポ
ーネントは、それらの実行に関する情報を収集し且つこ
の情報を元の送給プロセサへリターンする。従って、こ
のタスク転送コンポーネントは二つの部分から構成され
ている。第一に、タスクに関連する情報を種々のプロセ
サへ送給する部分がある。第二に、タスクが実行を完了
した場合に情報を収集する部分がある。
インターバル転送(TRI))ランザクジョンは、タス
クインターバルに関する情報を宛て先プロセサへ移動さ
せるために使用される。以下の情5truct  tr
ansre+−1nterval   !jnt   
      triJirsf Her;int   
      tri−1ast 1ter;1nt  
        tri jder+:address
       trjgrts 5tack;tasj
name            tr i−task
name:bool         trjnew 
tasks:int         tri−exp
ected work:jnt         tr
i−receiver 1den:/* other 
tnfori*atjon vhjch js oti
tted */); 尚、 TRI  FIR5T  ITERは、該インタバル内
のタスクの最下位の繰返し数である。
TRI  LAST  ITERjt、該インタル内の
タスクの最高の繰返し数である。
TRI  IDENは、このインターバル転送トランザ
クションの識別子である。
TRI  GRTS  5TACKは、コノタスクに対
するCRTS制御スタックが開始する箇所における仮想
アドレスである。
TRI  TASKNAMEは、該インターバルの親化
身の名称である。
TRI  NEW  TASKSは、該タスクが新しい
か否かを表わす。
TRI  EXPECTED  WORKは、このロー
ドレベリング動作において全てのインターバル転送トラ
ンザクションが受給エージェントへ送られる場合の全て
の作業である。
TRI  RECEIVERIDENは、タスク再分散
動作において受給クラスタ用のトップレベルエージェン
ト用のサイクル識別子である。
インターバル報告完了(RIC))ランザクジョンは、
完了したタスクに関する情報を、該タスクを最初に送給
したプロセサへ帰還させるために使用される。以下の情
報がRIC)ランザクショ5truct reporf
jnterval−cospletion (Lnt 
      ric−1rj 1den;task−n
ame    rjc Iasltname:/* o
ther information which Is
 omitted */); 尚、 RICTRI  TDENは、インターバルモーション
記録を得るために使用されるサイクル識別子である。
RI CTASKNAMEは、該イ>ターハルの親化身
の名称である。
次に、タスクインターバルを移動させることが必要な情
報がどの様にして受給クラスフ内の受給プロセサへ送給
されるがということについて説明する。以下のシーケン
スのステップによってこの動作を実行する。
(1)タスクを移動させることが必要な情報は、タスク
インターバル(TRI))ランザクジョンを形成するた
めに使用される。インターバルモーション記録が形成さ
れ口っプロセサのリーフプランナエージェント記録に取
付lすられる。このTR1は、受給クラスタ用のトップ
レベルプランナエージェントに送給される。
(2)該TRI)ランザクジョンを受給する各非リーフ
プランナエージェントは、タスク分散動作を発動する。
該タスクインターバルの一部を受取るべき各サブクラス
タに対し°(、TRI)ランザクジョンが形成され且つ
該サブクラスタ用のトップレベルプランナエージェント
へ送給される。
インターバルモーション記録が形成され且つ非リーフプ
ランナエージェント記録へ取付けられる。
(3)TRI )ランザクジョンを受取る各リーフプラ
ンナエージェントは、該TRI内に含まれる情報からタ
スクインターバル記録を形aする。
それは、又、インターバルモーション記録を形成し、そ
れは該リーフプランナエージェント記録へ取付けられる
。該タスクインターバルは、タスクマネジャコンポーネ
ントへ与えられる。ステップ2乃至4について以下に更
に詳細に説明する。
作業に対する要求は、特定のタスクインターバル内に含
まれる固定数のタスクが受給クラスタ内に含まれるプロ
セサへ送給されることによって満足されるか又は部分的
に満足される。注意すべきことであるが、この要求は、
受給クラスタ内のどのプロセサが、実際に、移動される
べきタスクサブインターバルからタスクを受取るかを特
定するものではない。
該要求において特定されるタスクインターバルを、初期
的タスクインターバルとして言及する。
このインターバルは、インターバルモーション記録のリ
ーフプランナエージェントのリスト上に対応スるインタ
ーバルモーション記録を有するものでなければならない
。該初期インターバルがこのプロセサ上の親タスクによ
って形成された場合には、rimr  barend 
 taskJフィルドが親タスク記録へポイントする。
この初期インターバルがこのプロセサへ移動されると、
「imr  tri  5ourceJフイールドが送
給プランナエージェントの名称を与える。
このタスク転送コンポーネントは、初期タスクインター
バル記録内に含まれる情報を使用することによってタス
クインターバルの転送をスタートし、TRIトランザク
ションを形成する。このトランザクションは、受信クラ
スタ用のトップレベルプランナエージェントへ送給され
る。
このTRIが送給されると、初期タスクインターバル記
録に対応するインターバルモーション記録がアップデー
トされて、付加的なタスクサブインターバルが初期タス
クインターバルから取除かれたという事実を反映させる
。初期タスクインターバルを追跡するために、サイクル
記録が形成され且つ該プロセサ上のサイクル記録のリス
ト内に挿入される。このサイクル記録は、独特な(プロ
セサに対して)識別子が与えられ、それはTRI記録フ
ィールド[tri  1denJへ割当てられる。この
サイクルは、初期タスクインターバルに対するインター
バルモーション記録へポイントする。
非リーフプランナエージェントがTRll−ランザクジ
ョンを受取ると、それは、最初に、インク−パルモーシ
ョン記録を形成し、受給したタスクインターバルのモー
ション即ち運動乃至は移動を追跡する。該エージェント
が受給クラスタ用のトップレベルエージェントである場
合には、trireceiver  1denが使用さ
れて、作業′に対する要求の期間中に実施された作業分
散動作の結果を有するサイクル記録を捜し出す。そうで
ない場合には、それは、タスク分散動作を実施すること
を要求する。この動作の結果は、エージェントのサブク
ラスタの各々へ送給されるべきタスクの数である。
サブエージェントに対して送給された各TRIに対して
、サイクル記録が形成され且つ独特の識別子が割当てら
れる。このサイクル記録は、TRIが最初に処理された
時に形成されたインターバルモーション記録へポイント
し、且つその識別子は該TRI内において該サブエージ
ェントへ送給される。
リーフプランナエージェントがTRI)ランサクション
を受給すると、それは、最初にインクパルモーション記
録を形成し、そのタスクインターバルのモーションを追
跡する。次いで、その受給したTRI)ランザクジョン
内の情報が使用されて、タスクインターバル記録を形成
し、それは受給されたタスクを表わしている。該タスク
インターバルはタスクマネジャコンポーネントへ与えら
れる。
タスクが完了すると、それらの実行に関連する情報が初
期タスクインターバルのプロセサへ送給される。これは
、該タスクが転送された時に形成されたインターバルモ
ーション記録内に含まれる情報を使用して行なわれる。
以下のステップは、タスク転送動作を完了するために実
行される。
(1)タスクインターバル内の最後のタスクがその実行
を完了すると、タスクマネジャコンポーネントがタスク
転送コンポーネントにそのインタバルが完了したことを
知らせる。
(2)タスクの実行に関する情報か収集され且つインタ
ーバル完了報告(RIC))ランザクジョンを形成する
ために使用される。リーフプランナエージェントのイン
ターバルモーション記録を使用して、該タスクインター
バルを最初に送給したプランナエージェントを決定する
。そのRICがこのプランナエージェントへ送給され、
且つインターバルモーション及びタスクインターバル記
録か削除される。
(3)RIC)ランザクジョンを受取る各非リーフプラ
ンナエージェントが、該タスクインターバルに対応する
そのインターバルモーション記録をアップデートする。
このインターバルモーション記録に対応するタスクイン
ターバルが完了すると、該インターバルモーション記録
内に含まれる情報が使用されてRICトランザクション
を形成する。最初にこのタスクインターバル及びインタ
ーバルモーション記録を送給したプランナエージェント
へ送給されるこのトランザクションは削除される。
(4)リーフプランナエージェントがRICを受取ると
、それは元の送給プロセサ上に存在せねばならない。該
RICトランザクション内に含まれる情報を使用して、
元のタスクインターバルに対するインターバルモーショ
ン記録をアップデートする。
ステップ2乃至4についてこのセクションの残りの部分
においてより詳細に説明する。タスクマネジャコンポー
ネント(task  manager  compon
en t)は、タスクインターバル内の全てのタスクか
それらの実行を完了すると、タスクインターバル完了プ
ロセスを開始する。完了したタスクに関する全ての情報
は、タスクインターバルのインターバルモーション記録
内に格納される。この情報を使用して、RICトランザ
クションを形成し、それはインターバルモーション記録
内に特定されているソースエージェント(Source
  agent)へ送給される。タスクインターバル及
びインターバルモーション記録は削除される。
非リーフプランナエージェントが受給したRICトラン
ザクションを処理すると、それは、該タスクインターバ
ルが受給された時に最初に形成されたインターバルモー
ション記録における情報をアップデートする。このイン
ターバルモーション記録は、それへポイントするサイク
ル記録を使用して捜し出される。このサイクル記録は、
該RICトランザクション内に含まれるサイクル識別子
を使用することによって個別的に決定される。
特に、rimr  dispensedJフィールドが
デクリメントされる。このフィールドがゼロでない場合
には、いまだに完了したことが報告されていない未決の
タスクインターバルが存在している。一方、このフィー
ルドがゼロである場合には、全てのタスクが完了してお
り、且つそれらの実行に関する情報を最初にそのタスク
インターバルを送給したプランナエージェントへ送給す
ることが可能である。このエージェントは、インターバ
ルモーション記録から得られる。この場合に、RIC)
ランサクションが送給され且つインターバルモーション
記録が削除される。
該RICトランザクションを受取るリーフエージェント
は、送給プロセサ用のエージェントてなければならない
。初期タスクインターバル用のインターバルモーション
記録は、該タスクが最初に送給された時に形成されたサ
イクル記録を使用して捜し出される。rimr  di
spensedJフィールドがデクリメントされ、且つ
完成したタスクに関してRIC内に含まれる情報を使用
してインターバルモーション記録情報をアップデートす
る。
いまだに完了していないタスクが存在子る場合には、初
期タスクインターバル用のタスク転送動作が完了する。
初期インターバルを有するタスクインターバル内の全て
のタスクが実行を完了すると、タスクインターバルの完
了がスタートされねばならない。該タスクインターバル
か親タスクによって形成されたか又は親タスクのタスク
インターバルのサブインターバルであるか否かに依存し
て二つの場合がある。そのタスクインターバルが親タス
クによって形成されたものである場合には、該親タスク
は、インターバル完了コンポーネントを発動することに
よって知らされる。そのタスクインターバルが何れかの
他のプロセサがらこのプロセサへ転送されたものである
場合には、該インターバルモーション記録内に含まれる
情報を使用してRICトランザクションが形成され、そ
れは送給エージェントへ送給され、且つそのタスクイン
ターバル及びインターバルモーション記録は削除される
e、スタートされたタスクモーション スタートしたタスク(started  task)が
移動される前に、宛て先プロセサが決定されねばならな
い。更に、スタートしたタスクのフェイム領域が宛て先
プロセサを包含するものであるようにフェイム(f a
me)動作を要求することが必要となる場合がある。
宛て先捜索プロセサトランザクションは、スタトしたタ
スクに対する宛て先プロセサを決定する作用を行なう。
それは、スタートしたタスクのプロセサから受給クラス
タ用のエージェントへ送給され、且つプランナツリーを
下方へ移動して実行すべきタスクなしてプロセサを捜索
する。リーフプランナエージェントに到達すると、それ
はスタートしたタスクのプロセサへ送り戻される。この
トランザクションは、適宜のwork  motion
記録をセットし、タスクが受給されるべきであることを
表わす。スタートしたタスクのプロセサによって処理さ
れると、deferredtask  move記録を
形成して、宛て先プロセサを追跡することが可能である
スタートしたタスクの移動は、幾つかのカーネルコンポ
ーネントによって開始させることが可能である。宛て先
捜索プロセサの処理は、全てのページ形成が完了してお
り且つフェイム動作が要求されない場合に、その移動を
スタートさせることが可能である。未決のページ形成が
存在する場合には、そのタスクの移動をスタートさせる
のはページ形成認知(acknow、Q edge  
page  creations)  トランザクンヨ
>の処理の責任である。フェイム動作が要求される場合
には、そのフェイム(名声)増加動作が完了すると、該
タスクか移動される。
宛て先プロセサが決定され、且つ未決のページ形成か完
了される間に、そのプロセサ上で実行可能なタスクの数
がゼロとなる場合がある。そのプロセサ上で実行可能な
タスクが存在しない場合には、スタートしたタスクの移
動がキャンセルされ且つスタートしたタスクが回復され
る。これは、宛て先捜索プロセサトランザクション又は
ページ形成認知トランザクションの何れかの処理によっ
て行なうこさが可能である。タスク移動キャンセル(c
anceII task  move) トランザクシ
ョンは、宛て先プロセサのリーフプランナエージェント
記録の5ent  or  recアレイの適宜のエン
トリーへ1を加算することにより受給クラスタのプラン
ナエージェント記録内に含まれる情報を補正する作用を
行なう。
スタートしたタスクを一つのプロセサから別のプロセサ
へ移動させることは、スタートしていないタスク(un
started  task)から構成されるタスクイ
ンターバルを移動させることよりも複雑である。移動さ
れるべき幾つかのスタートしたタスクか存在する場合に
は、各スタートしたタスクが別々に移動される。これは
、各スタートしたタスクについて転送されねばならない
情報量のためである。スタートしたタスクのタスク制御
ブロック(tcb)は、宛て先プロセサへ移動されねば
ならない。更に、スタートしたタスクのページ形成及び
ページ均等テーブル(pageequivaj)enC
e  tabge)が移動されねばならない。各スター
トしたタスクの移動は二つのトランザクションを使用す
る。スタート済みインターバル転送(transfer
  5tarted  1nterva、Q))ランザ
クジョンは、そのタスクのtcbを包含することのない
全ての情報を有している。スタート済みタスク転送(t
ransfer  5tarted  task))ラ
ンザクジョンはスタートしたタスクのtcbを包含して
いる。
f、モーションサブコンポーネント設計の要約新作業分
散を満足するための作業要求は、新作業要求(requ
est  new  work)トランザクジョンによ
って実施される。このトランザクションは、新タスク分
散を新タスクインタバルを有するプロセサと調整するエ
ージェントから送給される。このトランザクションの処
理の結果、インターバル転送トランザクションが新作業
を受給すべきサブクラスタ用の適宜のエージェントへ送
給される。各インターバル転送トランザクションは、新
タスクインターバルのサブインターバルの運動を表わす
。エージェントがサブインタバルを受取ると、それは、
一般的には、受給したサブインターバルを複数個のサブ
インターバルに細分化し、それらのサブインターバルは
結合性のサブエージェントへ送給される。一般的には、
このことは、多数のリーフエージェントか元の新タスク
インターバルのサブインターバルを受給することとなる
作業再分散を満足するだめの作業要求は、作業分散要求
トランザクシヨンによって実施される。
一般的には、クラスタへの里−の要求は、幾つがのリー
フエージェントか作業要求分散トランザクションを受取
ることとなる。これらのリーフエージェントは、作業要
求を満足させるために、受給クラスタに対して送給すべ
き適宜のタスクインターバルを選択せねばならない。そ
れらは、又、送給された作業量を包含する分散報告トラ
ンザクションを使用して作業要求分散トランザクション
をアクルッジ即ち認知する。エージェントがそれが送給
した作業要求分散トランザクションに対する全てのアク
ルッジメント即ち認知を受取ると、それは、分散報告ト
ランザクションを、作業要求を送給したエージェントへ
送給する。これは、作業再分散用の調整用プランナエー
ジェントが分散報告トランザクションを受取るまで継続
的に行なわれる。このトランザクションの内容は、各エ
ージェントがドメイン内の作業の運動に関するその情報
を「補正」することを可能とする。
受給エージェントがタスクインターバルを受給すると、
それはタスクインターバルを作業を必要とするサブクラ
スタべ分散させる。このことは、作業分散動作によって
実施される。タスクの再分散の場合には、受給クラスタ
エージェント用の作業分散動作が作業分散要求トランザ
クションによって開始される。
タスクインターバルがインターバル転送トランザクショ
ンを介して受給されると、インターバルモーション記録
がそのタスクインターバルに対して形成される。そのイ
ンターバルモーション記録は、どのエージェントがその
タスクインターバルを送給し且つどれ程のサブインター
バルがそのタスクインターバルから形成されたかという
ことを追跡する。従って、特定のプロセサ上のタスクイ
ンターバルがその実行を完了すると、そのインターバル
を構成するタスクの実行に関する情報をそのタスクイン
ターバルを最初に送給したエージェントへ送給すること
が可能である。インターバル完了報告トランザクション
はこの情報の送給を実施する作用を行なう。
スタートしたタスクの移動は、カーネルのプランナ、ペ
ージャ−及びフェイムコンポーネントを包含する。宛て
先捜索プロセサトランザクションはそのスタートしたタ
スクに対しての宛て先プロセサを決定する。宛て先プロ
セサが見付かり且つ全てのページ形成が完了すると、必
要とされるフェイム動作がプランナによって要求される
。フェイム動作が必要とされない場合には、そのタスク
は直ぐに移動される。フェイム増加動作が要求されてい
る場合には、そのフェイム増加動作が完了した後にその
タスクが移動される。スタートしたタスクの移動は、移
動キャンセルトランザクションを使用してキャンセルす
ることが可能である。
■、ページャー(pager) A、概括 ページャ−(pager)は、タスクからページ欠陥を
奪い取り、且つどのページが必要とされているかを決定
する。タスクは、そのアドレス空間内における使用可能
なアドレスから読取りを行なうか又はそこに書込みを行
なおうとする場合がある。そのタスクがそのページに対
する適切なアクセスを有していない場合には、この試み
は失敗し、ページ欠陥を発生する。フレームワーク(f
ramework)がページャ−に信号を送り、それは
、究極的に、該タスクへそのページ(即ち、アクセス)
を与える。
ページャ−は、又、ページを見付は出し且つそれを必要
とするプロセサへそれを送給する。ページは、タスクに
よって必要とされる場合もあり、又マージング即ち併合
を行なうためにページャ−自身によって必要とされる場
合もある。ページャは、要求されたページが存在するか
否かを決定する。存在する場合には、そのコピーが見付
は出され、要求したプロセサへ送られる。存在しない場
合には、ページャ−は、マージング即ち併合によってそ
のページを生成するか、又は祖先タスクのアドレス空間
からページを見付は出す。最後に、そのページが要求者
へ送給される。ページ要求を満足するために究極的に使
用されるページは満足ページと呼ばれる。
ページャ−は、メモリモデルに従ってマーリング(併合
)を行なう。ページャ−は、どのページをマージ即ち併
合することが可能であるか又は併合せねばならないかを
決定し、且つそれは実際の(ビットにより)併合を行な
う。最後に、ページャ−は、例えばメモリマネジャなど
のような他のコンポーネントに対するページング(pa
ging)のサポートを与える。それは、ページフェイ
ムマネジャに対するサポートを与え、ページを削除又は
移動させ、且つチャンネルサポート(channel 
 5upport)コンポーネントに対してのベージン
グを行なう。
メモリモデルによって支配される如く、各タスクはそれ
自身のアドレス空間を稼動する。アドレス空間は大きい
。集約的には、それらは、マシン内の物理的メモリの量
よりも桁違いで大きい。タスクが稼動をスタートした場
合に、アドレス空間の完全なコピーを作ろうとすること
は無謀である。
その代わりに、ページャ−は、要求によりアドレス空間
のページをコピーする。該タスクがページ内に格納され
るまで、ページはタスクのアドレス空間内にコピーされ
ることはない。なぜならば、格納を行なう前に、そのペ
ージは親タスクのページと同一だからである(又は、多
分、その他の祖先のページと同じである)。コードペー
ジ及び予備初期化データページは主タスクに属し、且つ
プログラムが稼動を開始する前にロードされる。
PARDOの完了と次のPARDOの開始との間の「無
駄」時間を最小とするために、ページャ−がどのページ
を併合することが可能であるかということを知っている
場合には、ページ併合が行なわれる。これは、タスクが
完了した時に、プランナによってページャ−に知らせる
ことにより達成される。ページャ−は、タスクのページ
及びその子孫のページの全てを併合することが可能であ
ることを注意する。このバックグラウンドのページ併合
は、何れかのプロセサが稼動の準備がなされたタスクを
有していない場合には継続して行なわれる。
本アーキテクチャは、親タスクが、そのアドレス空間が
完全に併合される前に、実行を再開することを可能とす
る。タスクが併合を要求するページを必要とする場合、
その併合は、他のページャ−の活動に対して優先性を有
している。この要求をマージング即ち併合と呼ぶ。タス
クは、そのアドレス空間が併合される前に実行を再開す
ることが可能であるので、古いアドレス空間におけるペ
ージを化身番号によって新たなアドレス空間におけるペ
ージから区別する。
通常の効率に関する懸念に加えて、並列コンピュータは
付加的な懸念としてスケール可能性即ち拡縮性を有して
いる。ドメインが成長するに従い、システムが継続して
良好な動作を行なうものでなければならない。このこと
は、通常、各ページャ−活動の効率とそれを実施するた
めに費やされる努力との積がドメイン寸法と比例的に成
長するか又はそれよりも小さいものであるべきことを意
味する。しかしながら、P+、Q og (P)の成長
率は許容可能なものであると考えられる。
これを達成するために、管理ツリー及びフェイムは、可
能である限り、活動を小さなりラスタ内に拘束する。こ
こでは、各ページ番号に対して異なった管理ツリーを使
用する。ページ番号はツリ−の番号である。
ページサーチは、多分、ページャ−の最も一般的な活動
である。繰延べ併合及びページコピー動作のために、ペ
ージサーチは、必要とされるページを見付は出すだけで
はなく、併合を行なわねばならないか否か又どの祖先タ
スクのページ(存在する場合)を使用せねばならないか
を決定せねばならない。
タスクのページに対して併合が必要であるか否かを決定
するために、ページャ−は、そのタスクの前の化身の子
孫をチエツクする。これらの子孫は、そのページ内に格
納されている場合がある。
このタスク又は何れかの化身からの何れかの子孫タスク
によってページが形成されたことがない場合には、祖先
タスクのページが使用される。次いて、ページャ−は、
どの祖先(存在する場合)が最も最近にそのページ内に
格納を行なったかを決定せねばならない。
これらの従前の化身及び祖先を介してのサーチは、可及
的にトランザクションのやりとりが最も少ない態様でな
されねばならない。一実施例においては、同一のページ
番号を有しているが異なったタスクに対してのものであ
るページは同一の管理ツリーを使用する。ページに対す
るサーチが進行すると、ページャ−は同一のプロセサ上
の種々のタスクのページの記録を見付は出し、そこで、
それはそれらが必要とされていることを推論する。
種々のページャ−の活動は、多くのプロセサ時間を消費
する場合がある。しばしば、他の活動は、ページャ−が
その作業を終了するまで待機せねばならない。従って、
ページャ−の作業はドメインに亘って均一に分散される
ことが重要である。
ここでは、ページャ−の作業を、各ページ番号に対する
異なったページ管理ツリーを使用することによって、多
数の管理ツリーの間で分割する。
しかしながら、これでも十分なものではなく、あるペー
ジ番号(スタックフレーム(stackframe)及
びコードページ(code  page))は、他のも
のよりも一層使用される傾向となる。
ページャ〜の作業を更に分散させるためにフェイム(f
 ame)即ち「名声」を使用する。タスクのページに
対する記録は、そのタスクに対してのフェイムレベルノ
ードにおいて又はそれ以下において維持されており、従
ってページ用の併合及びページサーチは、そのフェイム
クラスタの外側で発生することはない。従って、異なっ
たフェイムクラスタを有するタスクは、ページャ−の作
業を行なうために異なった組のプロセサを使用する。
第5a図及び第5b図は、ページの形成及びそれらの爾
後の併合を示している。第5a図において、ページP2
が形成される。適宜のボードに対するボードノード、こ
の場合には2番目のボード、に通知が送られ、且つヘッ
ドタスクページ(head  task  page)
及びページ併合記録が構築される。これらの記録は、更
に詳細に以下に説明する如き態様で横第される。
第5b図は、ヘッドノード(h e a d  n o
 de)においてページが形成された後に、ページPに
対する併合記録が構築され且つ該ヘッドノードに対する
ポインタが第5b図内のステップ3によって示される如
く挿入されることを示している。
次に、ページ形成メツセージ(4で示されている)がス
ーパーノード(supernode)へ送給され、且つ
このスーパーノードに応答して、ケージノード(cag
e  node)においてヘッド併合記録5を構築する
。該スーパーノードからメツセージ送給者へのサブノー
ド(subnode)ポインタが挿入される。
第5C図乃至第5f図は、ページpH及びPI3を形成
した後の併合ツリーの構成を示している。ページpH及
びPI3がほぼ同じ時間に形成されたものと仮定する。
そのタスク及び併合ページに対するヘッドノード記録が
、第5C図及び第5d図に示した如く、それらのそれぞ
れのへラドノードにおいて構築される。次いで、第5e
図に示した如く、ヘッドノードP1に対する併合記録が
リーフノードにおいて構築され且つpH及びPI3用の
へラドノード記録へ接続される。このことは、第5e図
におけるステップ3によって示されている。ノードP1
に対するページ形成メツセージ4が該ヘッドノードの各
々からスーパーノードへ送給される。
pHヘッドノードからのメツセージが最初に到着したも
のと仮定する。この場合に、スーパーノードは左側のボ
ードノードにおいてノードP1に対するヘッド併合記録
5を構築する。この併合用記録は、最初のリーフノード
へポイントする。
Pに対する併合用記録も、そこで構築され、且つP1記
録に接続される。そのメツセージは、上方向へ継続して
移動し、ノードPに対する併合ツリーを拡張する。
次に、第5e図に示した如く、第二メツセージ7が処理
される。第三ノードに対するポインタが挿入される。P
lの併合用記録は既に存在しているので、そのメツセー
ジに対する処理は完了する。
第5f図は、第一メツセージ6がPに対するヘッドノー
ドに到着した状態を示している。ポインタ8が挿入され
てこのプロセスが完了する。
B、ページのタイプ ページャ−は二つの種類のページを有しており、即ちタ
スクページ及び併合用ページである。タスクページは通
常のタイプのページである。それらは、タスクから読出
されたりタスクへ書込まれたりし、且つタスク名称とペ
ージ番号からなるページ名称を有している。2番目のタ
イプのページは、併合用ページであり、それは一つ又は
それ以上のタスクページの併合結果を表わしている。タ
スクが完了すると、そのタスクページが併合ページへ変
化され、一体的に併合され、且つ究極的には、親タスク
のタスクページへ変化される。
]、タスクページ タスクページには種々の種類のものがある。ペジャーは
、ページ番号を検査することによりそのページのタイプ
を決定することが可能である。
コードページは、稼動中のプログラムのコードを有して
いる。これらのページは、プログラムのスタートアップ
即ち始動期間中にロードされ、修正することが不可能で
あり、且つ併合されることはない。これらのページは変
化することが不可能であるので、それらは主タスクの第
一化身と関連している。コードページは、残りのタスク
ページとは別のアドレス空間内に存在している。
前もって割当てられたタスクページは、コンパイル時に
割当てられた格納部を有している。それらは、プログラ
ムのスタートアップ即ち始動期間中にロードされ、且つ
主タスクと関連される。コードページと異なって、それ
らは修正されうる。
予め割当てられた即ち予備割当てページの一つの特別の
タイプはゼロ型ページであり、それはゼロへ初期化され
るがロードされることはない。その代わりに、ゼロ型ペ
ージに対する全てのページ番号のリストが各プロセサ上
に維持される。これらのページは、それらが最小に参照
された時に構成される。
ファンクション−ローカルページ(function−
11oca[page)は、見ることの可能なファンク
ション−ローカルデータ(function−floc
ag data)、即ちユーザのプログラムにおいて宣
言されたファンクション変数を有している。これらのデ
ータは、該ファンクションがリターンすると、不定とな
る。従って、そのページ内にスタックフレーム(sta
ck  frame)を有する全てのファンクションが
リターンすると、ファンクション−ローカルページに対
して併合を行なう必要はない。ファンクション−ローカ
ルページは、ファンクション−ローカル格納区画部内に
存在している。
格納制御(controII 5tore)ページは、
例えばリターンアドレス及びマシンレジスタなどのよう
な、レジスタ変数(Gregs)及び隠れたファンクシ
ョン−ローカルデータを有している。ファンクション−
ローカルページに関しては、そのページを使用する全て
のファンクションがリターンした場合には、格納制御ペ
ージは併合する必要がない。格納制御ページは、格納制
御区画部内に存在している。
タスクページは、タスクに対して使用可能な場合もあれ
ば又使用可能でない場合もある。この使用可能性は、タ
スクページのタイプ及び参照中のアドレスに依存する。
コードページは、そのコードページが存在する場合に「
使用可能」である。
予備割当てページは、常に使用可能である。ファンクシ
ョン−ローカルページは、参照されたアドレスがタスク
のファンクションスタックポインタ以下のものでない場
合には、タスクに対して使用可能である。格納制御ペー
ジは、参照されたアドレスがタスクのスタック制御ポイ
ンタよりも低いものでない場合には、タスクに対して与
えられる。
ファンクション−ローカルページ及び格納制御ページの
場合、フレームワークがページの使用可能性をチエツク
し、且つそのページが使用可能である場合にのみ、ペー
ジ欠陥をカーネルヘパスさせる。従って、ページャ−は
、使用可能性に対してのプログラム(gIobal)ペ
ージをチエツクすることが可能であるに過ぎない。これ
らは、そのページが存在するか、又はゼロ型ページであ
る場合にのみ使用可能である。ファンクション−ローカ
ルページ及び格納制御ページは、併合及び使用可能性の
両方に対して同一に処理される。
ページャ−は、タスクページの一つを超えたコピーが存
在することを許容することがしばしばある。このことは
、異なったプロセサ上のタスクが該ページ内のデータを
同時的に使用することを許容し、且つ異なったプロセサ
上での同時的な併合動作を行なうことを援助する。正確
に一つのこの様なコピーがアーカイバル属性を有してお
り、このコピーはアーカイバルページ(archiva
j?  page)と呼ばれる。はとんどの場合におい
て、このページは削除されることがない。該ページのそ
の他のコピーは通常のものと呼ばれ、これらのページは
、例えば、ページフレームマネジャ(page  fr
ame  manager)によって随意に削除するこ
とが可能である。
ページのタスクが稼動中である場合には、タスクがタス
クページを書込むことが可能である。ページは変化可能
なものであるが、そのページの一つのコピーのみが存在
することが可能であり、その独特なコピーもアーカイバ
ル即ち保存用のものである。このことは、該ページの全
てのコピーが同一の内容を有するものであることを保証
する。
ある時間において、ページャ−が、タスクページがその
プロセサ上に止どまることを要求し、且つ該ページのそ
の他のコピーが形成されないことを要求することがある
。このページは、ビン止めされたと言われる。
2、ページ併合 タスクページが、例えば、そのタスクの完了後に、併合
可能となる場合には、そのタスクページの一つのコピー
が併合用ページへ変更される。この併合用ページは、親
の化身名称が与えられ、且つ同一のページ番号を維持す
る。従って、同一の併合用ページの多くのバージョンが
存在することが可能であり、その全てが同一のページ名
称を有している。
C,ページャ−のデータ構成 1、分散型データ構成 分散型オペレーティングシステムの最も困難な側面の一
つは、その分散型データ構成の維持である。これは、特
に、ページャ−に対してそのことが言え、そこでは、ペ
ージャ−のデータ構成に影響を与える活動が任意数の箇
所で一度に発生する場合がある。カーネルの同期能力の
全てを使用して制御した状態に維持するが、可能な場合
には何時でも、ページャ−動作は交換可能なものとされ
、ページャ−はトランザクション同期及びトランザクシ
ョン休止制御に強く依存し、且つトランザクションは多
様な条件下において後の処理のためにしばしばキュー状
態とされる。
ページャ−のデータ構成自身は断続的に変化する。一つ
のプロセサ上の記録が他のプロセサ上のものと一貫性が
ないことがあるのは通常であり、このことは、何らかの
イベントが両方の上の記録に影響を与え、且つ一方のプ
ロセサに対して通知がなされていない場合に発生する。
2、ページ名称記録 ページ名称は、タスク(化身)名称とページ番号の組合
わせである。しかしながら、ページが、単にタスクの化
身であるというよりも、タスクと関連したものとして考
えることが一層便利であることが多い。
各繰返し記録(iterati けてページ名称記録のAVLツリ いる。
typedef 5truct pagenameTr
ec 1struct  pagenameTrecs
truct pagenameTrecstruct 
1terationTreestruct 1ncar
nationTreestruct pager−1g
entTreestruct taskpags he
aderTrecstruct mergpagt h
eaderTrecard4T nt2T l  pagenaleT: 尚、 onT)に取付 −が設けられて *pnt  1eft: *pnt  right; *pnt  itr; 零pnt  lne; *pnt−sgents; 零pnt  laskpage: 零pnt  mergpage; pnt、、−pagenu■; pnt  balance; rpnt  pagenumJは、ページ番号であり、
それは又AVLキーである。
rpnt  ffeftJ及びrpnt  right
」は、左側及び右側のAVLポインタである。
rpnt  bag anceJは、AVLバランスイ
ンジケータである。その値は、rPNT  LEFT 
 HEAVYJ、rPNT  BALANCEDl及び
rPNT  RIGHT  HEAVYJである。
[pnt  1trJは、繰返し記録へ戻ってポイント
する。
rpnt  1ncJは、繰返しに対する化身記録の一
つへポイントする。
rpnt  agentsJは、ページャ−エージェン
トのリストへポイントする(rPagetreesJセ
クションを参照)。
rpnt  taskpageJは、一つ存在する場合
に、このページに対するタスクページヘッダへポイント
する。
rpnt  mergpageJは、一つ存在する場合
に、このページに対する併合用ページヘッダへポイント
する。
プロセサ上にこのページ名称を有するタスクページ又は
併合用ページが存在する場合には、ページ名称記録が対
応するヘッダに対してポイントし、且つrpnt  1
ncJが該ページの化身へポイントする。そうでなけれ
ば、該化身は任意である。
3、タスク及び併合用ページヘッダ プロセサ上の各タスクページに対して、タスクページヘ
ッダ(task  page  header)が存在
している。この記録は、ページ名称記録に取付けられて
おり、それは該ページの名称を特定する。
プロセサ上の全てのタスクページヘッダは二方向リスト
(rtask  page  II 1stJ)上でリ
ンクされる。
typedef 5truet taskpage−h
eaderTree 1struct taskpgs
−haaderTrecstruct taskpag
C−headerTreeStrtlet pagen
aleTreegeT ard4T ωrd4T ωrd2T nt2T ωrd2T bits16T 尚、 *tkpノext; *tkp−prev: *tkpノagenue; 零tkp−pge: tkp−1ime−stop tkp−sotsons: tkp−iolock: tkpjook−value; tkp−++5e−count ; tkp−flags: ltaskpag!−head
erT;rtkp  nextJは、存在する場合に、
このプロセサ上の次のタスクページヘッダへポイントす
る。
rtkp  prevJは、存在する場合に、このプロ
セサ上の前のタスクページヘッダへポイントする。
rtkp  pagenameJは、コノページに対す
るページ名称記録へポイントする。
「tkp  pageJは、タスクページコピー自身へ
ポイントする。
rtkp  time  stampJは、そのページ
が最後に使用された時を表わす。これは、ページフレー
ムマネジャによって使用される。
rtkp  mot 1onsJは、このベージフビー
が何回−つのプロセサがら別のプロセサへ移動されたか
を表わす。
rtkp  1offockJは、幾つのチャンネルサ
ポート要求がこのヘッダのページを使用しているかを表
わす。該ページは、このデータがゼロでない場合には、
そのプロセサ上に止どまらねばならない。
rtkp  book  val ueJは、ページフ
レームマネジャによって割当てられた値である。
rtkp  use  countJは、何回そのペー
ジが使用されたかを表わす。これは、ページフレームマ
ネジャによって使用される。
rtkp  fl agsJは、そのページがアーカイ
バルであるか、ピン止めされたが、又はG−ピン止め(
オペレーティングシステムによるピン止め)の何れか、
(rTKP  ARCHIVAL」、rTKP  P 
INNEDJ、[TKP  GP INNEDJ )で
あるかを表わす。
プロセサ上で同一のページ名称を有する各−組の併合用
ページに対して、併合用ページヘッダが存在している。
この記録は、ページ名称記録に取付けられ、それは該ペ
ージの名称を特定する。このヘッダは、併合用ページバ
ージョン記録のリストへ対してポイントし、それは該併
合用ページに対してポイントする。
プロセサ上の全ての併合用ページヘッダは二方向リスト
(rmerging  page  p 1stJ)上
てリンクされる。
typedef 5truct *ergpage−h
eaderTree 1struct wergpag
s−headerTreestruct Iergpa
ge−headerTrecstruct pagen
ueTreestruet sergpage−ver
sionTreeard2T ) mergpage−beaderT;typede
r 5truet s+ergpage−versio
nTrec 1struet Iergpage−Ve
rstOnTreeageT l mergpage−wersionT;尚、 軸rp−next; 軸rJpr6V; Thrp−Pagena*e; 軸rp−wi3rsions; brp−wersIon−quart:brv nex
t; brv−page; rmrp  nextJは、存在する場合に、このプロ
セサ上の次の併合用ページヘッダへポイントする。
rmrp  prevJは、存在する場合に、このプロ
セサ上の前の併合用ページヘッダへポイントする。
rmrp  pagenameJは、このページに対す
るページ名称記録へポイントする。
「mrp  versionsJは、併合用ページバー
ジョン記録のリストへポイントする。
「mrp  vers ion  quanJは、該リ
スト内に幾つの併合用ページバージョン記録が存在する
かを表わす。
rm r v  n e x t Jは、存在する場合
に、次の併合用ページバージョン記録へポイントする。
rmrv  pageJは併合用ページへポイントする
4、タスクに基づく記録 ページを見付は出す上での困難性の一つは、どの祖先の
タスクのページに対してサーチを行なうかということを
知ることである。このことを決定することを助けるため
に、ページャ−は、各タスクに対してのページ世代テー
ブル(PGT)を維持している。mPGTに対して二つ
の部分が存在している。第一の部分は、ページ形成テー
ブル(PCT)であり、それは整数のアレイであって、
ページグループによってインデックスされており、その
グループ内のページを形成するための最後の祖先タスク
の世代を与える。一つのページのページグループは、最
後の数個のビットを除いて全てをマスクすることによっ
て計算される。このテーブルは、必要とされるページの
実際の世代番号に対する上限を与える。第二の部分は、
ページ均等テーブル(PET)であり、それは最も最近
に使用されたページ番号を有しており、それに対して、
ページ形成テーブルは不正確な情報を有している。
typedef 5truct pag!gene+−
tableTrec [5truct pagecre
ate−tableTrecstruct pags−
equl w−tableTrecl page ge
ner−1ableT;typodef 5truct
 page Create 1ableTrec l5
truct page−create entryTr
ecl page−create−tableT;ty
pedef 5truct pagt−create 
entryTrec 1ardlT ardlT l page−craats entryTtyped
erStruct page equit−table
Trec 1struct page equiw e
ntryTrecard2T l page equlv−1ableT;typed
ef 5truct page−equiw entr
yTrec (ard4T ard2T ard2T l page tqutv−entryT;pgt c
reate; pgt−tqutv; pet−tntrles[PAGE−CREATE−3
IZE] ;pce−gener; pce−equlv quan: pet tntrles[PAGE EQUIV IZ
EI;pet−next seq+ 仄陀−pagenum: pee gener; pee 1equence: 尚、 rpgt  createJはこのPGTに対するPC
Tである。
rpgt  equivJはこのPGTに対するPET
である。
rpct  entriesJは、ページ番号の下側7
個のビットによってインデックスされるページ形成エン
トリーのアレイである。従って、rPAGE  CRE
ATE  5IZEJG;1128である。
rpce  generJは、このエントリーのページ
グループにおける最も高い世代のページ番号である。
rpce  equiv  quanJは、このページ
グループに対して幾つのページ均等エントリーが存在し
ているかを表わしている。
rpet  entriesJは、何ら特定の順番では
ないページ均等エントリーのアレイである。
rpet  next  5eqJは、このPETに対
する次のシーケンス番号である。それは、ページ均等エ
ントリーが形成されるが又は使用される場合にrpee
  5equenceJフイールドヘコピーされる。
rpee  pagenumJは、このページ均等エン
トリーに対するページ番号である。
rpee  generJは、ページ番号に対する世代
番号である。
rpee  pagenumJ rpee  5equenceJは、どれだけ最近にこ
のページ均等エントリーが使用されたがを表わす。PE
Tが満杯で且つ新たなエントリーが挿入されねばならな
い場合には、最も最近でなく使用されたエントリーは破
棄される。
5、ページツリー ページツリー(page  tree)は管理ツリーの
一つのタイプであり、ページャ−に対する基本的なデー
タ構成である。各ページに対して一つのページツリーが
存在している。前に説明した如く、エージェントのマツ
ピングはページ番号(及びレベル及びクラスタ)に依存
するが、ページのタスク名称には依存しない。
a、ページャ−エージェント ページツリーの各ノードにおいて、ページャ−エージェ
ント(pager  agent)が存在している。こ
れらのエージェントは、マシン内のほとんどのページャ
−活動に対する焦点である。
この様なエージェントは、ページ番号、化身名称、及び
クラスタ名称によって識別することが可能である。ペー
ジツリー内の各ノードにおいて、ページャ−エージェン
ト記録が存在する場合がある。
これらの記録は、例えばタスクページコピーの位置など
のようなページに関する情報を有しており、且つどの様
にしてそのページが関連するページと併合されるかとい
う情報を有している。ノードにおいてページャ−エージ
ェント記録が存在する場合には、対応するページャ−エ
ージェントが活性であると言われる。そうでない場合に
は、そのエージェントは不活性である。
各ページ名称記録は、ページャ−エージェント記録の空
でないリストへポイントする。該エージェント記録は、
最下位のクラスタレベルから最高位へ順番に、且つ同一
のクラスタレベル内において、最も最近の化身から最も
最初のものへ配列されている。
このエージェントリスト記録は、ページャ−エージェン
トの他のリストを構成するために使用される。該ページ
ャ−エージェント及びエージェントリスト構成について
以下に説明する。
b、ヘッド及びリーフページャ−エージェントレベルゼ
ロクラスタに対するページャ−エージェントは、リーフ
(leaf)ページャ−エージェント又は単にリーフエ
ージェント乃至は葉ニジエンドと呼ばれる。タスクが完
了すると、ページャ−は、究極的に、該タスクページを
親化身に対する併合用ページへ変化させる。完了したタ
スクに対して併合用ページが存在する場合には(別の子
孫タスクのページから既に変換され且つ併合されている
)、このページも親化身の併合用ペジヘ変換される。
ヘッド(h e a d)ページャ−エージェントは、
この様なページの存在を記録する。ページに対するヘッ
ドエージェントは、ページツリーのフェイムレベルノー
ドに位置している。一つのページの全ての「過去、現在
及び将来」の化身に対して正確に一つのヘッドエージェ
ントが存在している。
フェイム動作がページのタスクである場合には、ページ
ャ−は全てのヘッドエージェント(種々のページ番号に
対して)を新フェイムレベルノードへ移動させる。
C,ページャ−エージェント及びエージェントリスト構
成 typedef 5truct pager−tgen
tTree tstruct pager−ggent
Trec     *pga−next;5truct
  pager−tgentTree        
  本pga−prev;5truct nodena
meTree      pga nase;5tru
ct 1ncarnatlonTree     *p
ga−tnc;5truct pagenueTrec
      *pga−pagenue;5truct
 queued actionTrec    tpg
a queue:5truct pagt−reque
stTree    *pga−current−re
quests;5truct page−reques
tTree    *pga−1ater−+eque
sts;5ubnode bltsT bits16T /* task page part */5truc
t agent−+1StTreeard4T ard4T ard4T subnodCbitsT /* merging page part */5t
ruct agent−1istTrecsubnod
e bitsT 1 pager−agentT; 尚、 pga−subnodes: pga−status; *pga−chi Id−taskJage:pga−
1ocation: pga−mot tons ; pga−searehnm; pga−task−subnodes;*pga−ch
i Id−mergJage;pga−mer g−s
ubnodes :rpga  nextJは、存在す
る場合に、このページ名称記録に対する次のページャ−
エージェント記録である。
rpga  prevJは、存在する場合に、このペー
ジ名称記録に対する前のページャ−エージェント記録で
ある。
「pga  nameJは、このエージェントのノード
の名称を有している。
rpga  1ncJは、エージェントの化身に対する
化身記録へポイントする。これは、エージェント名称の
化身名称部分に貢献する。
rpga  pagenameJは、このエージェント
に対するページ名称記録へ戻ってポイントする。
rpga  queueJは、このエージェントに対す
るキューした作用のリストである。
rpga  current  requestsJは
、エージェントのページに対するこのページにおいて待
機するページ要求のリストである。
rpga  、17 ater  requestsJ
は、そのページの後の化身に対するこのエージェントに
おいて待機するページ要求のリストである。
rpga  5ubnodesJは、どのサブクラスタ
がドメイン内にあるかを表わすビットストリングである
rpga  5tatusJは、該エージェントのステ
ータスを表わす一組のビットである。可能な状態は、r
PGA  HEADJ、rPGA  NEV  BEA
DJ 、 rPGA  TPAGE   EXISTS
J 、 rPGA   PARENT  PATH」、
 rPGA  RENAMINGJ、 rPGALEA
F   EXPECTJ 、 rPGA  HEAD 
 EXPECTJ 、 rPGA  DEMANDME
RG I NGJ 、 rPGA  MPAGE  T
PARENTJ 、 rPGA  TPAGE   T
PARENTJ及びrPGA  5END  MPAG
EJがある。これらは本明細書において説明する。
rpga  chiId  task  pageJは
、このエージェントのページと均等な子供タスクページ
に対するページャ−エージェント記録のリストへポイン
トする。この様な子供タスクページは存在しないが、そ
れらに対するエージェント記録はページサーチの期間中
に構成される。
rpga  1locationJは、存在する場合に
、アーカイバルページを有するプロセサの数を有する。
このフィールドは維持され且つヘッドエージェントにお
いてのみ使用される。
rpga  mot 1onsJは、アーカイバルベー
ジが一つのプロセサから別のプロセサへ移動した回数を
有している。このデータは、新たな位置情報がrpga
  l ocat 1onJよりもより現在のものであ
るか否かを決定するために使用される。このフィールド
は維持され且つヘッドエージェントにおいてのみ使用さ
れる。
rpga  searchnumJは、ページサーチの
期間中にデッドロックを防止するために使用されるエー
ジェントのページサーチ番号を有している。
rpga  task  5ubnodesJは、どの
サブノードがタスク活性エージェントを有しているかを
表わす。
rpga  chigd  merg  pageJは
、子供タスクの併合用ページに対するページャ−エージ
ェント記録のリストへポイントする。
rpga  merg  5ubnodesJは、どの
サブノードが併合活性エージェントを有しているかを表
わす。
typedef 5truct agenjlistT
rec (struct  agenjlistTre
c     *agl−next;5truct ag
ent−+tstTrec  *agl−prey;5
truct pager−*gentTrec  *a
gl−*gent;l agent l1stT; 尚、 「Bg(J  nextJは、このリスト内の次のエー
ジェントリスト記録へポイントする。
ragj7  prevJは、このリスト内の前のエー
ジェントリスト記録へポイントする。
「agfJ agentjはページャ−エージェント5
己録ヘポイントする。
d、タスク活性及び併合活性ページャ−エージェント ページャ−エージェント記録には二つの部分があり、即
ちタスクページ部分と併合用ページ部分である。これら
の部分はほぼ独立的であり、且つ便宜上はとんど結合さ
れている。タスクページ又はタスクページ経路の記録が
ある場合に、は、該工−ジエントはタスク活性であると
言われる。これは、以下の条件のうちの何れかが成立す
る場合に発生する。(1)タスクページコピーがプロセ
サ上に存在している(ページ名称記録がタスクページヘ
ッダへポイントしている)、(2)エージェントがタス
クページのコピーを要求した(PGAHEAD  EX
PECT又はPGA  LEAFEXPECTがセット
されている)、(3)サブノードにおいてタスク活性エ
ージェントが存在している(pga  task  5
ubnodesがゼロではない)、(4)該エージェン
トがヘッドエージェントであり(PGA  HEADが
セットされている)且つ該タスクページが存在している
(PGA  TPAGE  EXI STSがセットさ
れている)、(5)子供タスクページがこのベジと均等
であると判別される(pga  child  tas
k  pageが零ではなイ)、又は(6)このエージ
ェントのページが親ページと均等であり且つこのエージ
ェントがページ経路の一部である(PGA  PARE
NT  PATHがセットされている)。
併合用ページの記録が存在する場合には、該エージェン
トは併合活性である。これは、以下の条件のうちの何れ
かが成立する場合に発生する。
(1)幾つかの併合用ページバージョンがプロセサ上に
存在している(ページ名称記録が併合用ページヘッダへ
ポイントしている)、(2)該エージェントがヘッドエ
ージェントであり(PGAHEADがセットされている
)、そのことはこのエージェントが究極的に併合用ペー
ジを親ページに対するこのノードのエージェントへ送給
することを意味する、(3)このエージェントに対して
併合用ページを送給するサブノードにおいて併合活性エ
ージェントが存在している(pga  merg  5
ubnodesは零てはない)、(4)このノードにお
いて子供ページに対する幾つかの併合活性ヘッドエージ
ェントが存在しており、それは究極的に併合用ページを
このエージェントへ送給する(pga  chip d
  merg  pageは零てはない)、(5)ペー
ジ要求に応答して併合がこのノードにおいて進行中であ
る(PGA  DEMAND  MERGINGがセッ
トされている)、又は(6)スーパーノードにおけるエ
ージェントがこのノードから併合用ページを受取ること
を予定している(PGA  5END  MPAGEが
セットされている)。
エージェントがタスクアクティブ(taskactiv
e)でもなく又併合活性(merge−active)
でもない場合には、記録が存在する必要性がなく、従っ
てそれは削除される。ページ名称記録に取付けられた最
後のページャ−エージェントが削除されると、ページ名
称記録も削除される。必要な場合には、ページャ−エー
ジェント記録が形成される場合に、ページ名称記録も形
成される。タスクページ又は併合用ページがプロセサ上
に存在する場合には、そこにはページャ−エージェント
記録も存在せねばならない。
e、ページャ−経路 上述した如く、活性ページャ−エージェント記録は、多
様な方法で、rpga  chilld  task 
 pagedS rpga   task   5ub
nodesJ 、 「pga   chiil  d 
 merg  pageJ及び「pga  merg 
 5ubnodesJフイールドと共に、一体内に接続
される。これらのフィールドは、集約的にページポイン
タ(page  pointer)として呼ばれる。タ
スクページポインタ及び併合用ページポインタが存在し
ている。これらのページポインタは、ページに対するヘ
ッドエージェントから該タスクページのほとんど全ての
コピーへの及び併合用ページに貢献する全てのヘッドエ
ージェントへのページ経路を形成する。
併合用ページ経路は、タスクがページを形成する場合に
構築され、且つ形成されたタスクページが親タスク用の
併合用ページへ変更される場合に除去される。ページが
併合される場合、ページャ−は、これらの経路に従うこ
とによって全ての併合用ページを得ることが可能であり
、且つ全ての併合用ページ経路を通過し且つただ一つの
併合用ページが存在している場合に併合が終了したこと
を判定する。
全ての通常のタスクページコピーはページ経路上にある
ので、全てのこの様なコピーに関して動作を実施するこ
とが可能である。これらの動作は、しばしば、最初にア
ーカイバルコピーをヘッドエージェントへ持って行き、
次いでヘッドエージェントからのトランザクションを全
てのタスクページ経路を介して送給することによって行
なわれる。
第一部分を容易とするために、ヘッドエージェントは特
別のページポインタrpga−IIocati onJ
を維持し、それはアー力イバルページコピーが現在位置
している箇所にプロセサのアドレスを有する(rTas
k  page  moti。
n」セクションを参照するとよい)。
しかしながら、全ての通常のタスクページが常にページ
経路上にある訳ではない。なぜならば、ヘッドエージェ
ントへのこれらの経路を構築するのに時間がかかるから
である。そのことは、タスクページ動作は単にページ経
路のブロードキャストではなく完全なブロードキャスト
を必要とすることを意味している。タスクページの全て
のコピーの削除は例外である。なぜならば、ページャ−
は、ページ経路がfam−レベルノードへ構築される場
合にrre−defl eteJ即ち再削除を行なうこ
とが可能だからである。
タスクページ経路は、又、必要とされるタスクページの
近傍のコピーを見出すために使用される。
ページサーチは、通常、タスク活性エージェントが見付
かるまで、ページツリーを上方へ進行する。
このエージェントは、しばしば、該サーチが従うことの
可能なページ経路を有しており、それは、通常、該ペー
ジのコピーとなる。従って、クラスタ内にページコピー
が存在する場合には、サーチはそのクラスタの外側に行
く必要はない。
併合用ページ経路の場合における如く、タスクページ経
路も、ページが形成する場合に、タスクによるか、又は
ページがラン(稼動)のスタートにおいてロードされる
時に形成される。ページャ−は、又、ページャ−サーチ
がリーフエージェントからスタートする時に、タスクペ
ージ経路を構築する。該経路は、タスク活性エージェン
トが見付かった時に完了し、且つ該ページが到着した後
は何も行なう必要はない。この方法は、他のページサー
チが従うべき経路を直ぐに提供する。
D、マーリング(併合) マージング即ち併合において関与する活動は四つある。
ページャ−は、ページが形成された場合にどのページが
マーリング(併合)に貢献するかを記録する。ページャ
−は、必要とされるページを構成するために何時マージ
ング即ち併合がなされねばならないかを認識する。ペー
ジャ−は、ページの実際の併合を行ない、且つ併合用エ
ージェント記録をクリーンアップする。ページャ−は、
又、必要とされない古いタスクページを削除する。
実際の併合を行なうために、三つのページが存在せねば
ならず、そのうちの二つは併合用ページであり、且つ他
の残りの一つの参照ページはタスクページか又は併合用
ページかの何れかとすることが可能である。第一併合用
ページは、参照用ページとビット毎に比較され、ビット
が異なる場合には、第一併合用ページ内のビットが第二
併合用ページ内にコピーされる。最後に、第一併合用ペ
ー・ジが破棄される。第二併合用ページは結果である。
併合用ページの一つを超えたバージョンが存在する限り
、これらのバージョンは部分的併合ページと呼ばれる。
これは、いまだに幾つかの子孫タスクページが存在する
か又はこれらのページを形成することが可能なタスクが
存在する場合もそうである。全てのバージョンが一つに
併合されると、それは完全併合ページと呼ばれる。従っ
て、最後の二つの併合用ページバージョンが併合される
場合にはタスクページが存在せねばならない。一つのペ
ージに対して併合が行なわれると、そのタスクページの
全てのコピーが削除され、且つ該併合用ページは後の化
身のタスクページ又は祖先タスクの併合用ページとなる
ことが可能である。
タスクページが存在しない場合には、該タスクのアドレ
ス空間のその部分は親タスクのアドレス空間と同一であ
る。親タスクのページ(即ち何らかの別の祖先のページ
)は、併合を完成するために使用される。この場合、完
全併合ページは何れかのタスクページを置換することは
ない。
第一タスクのページが併合される前に、一つのタスク及
び幾つかの祖先タスクが完成する場合に多世代併合が発
生する。この場合に、完全併合ページは、後の化身のタ
スクページへ変化することは必要ではないが、その代わ
りに、親タスクの併合用ページとなる。それが置換して
いたであろうタスクページは通常の如く削除される。
タスクページが存在しない世代を介して多世代併合が通
過する場合、別のショートカットが可能である。完全併
合ページは、前のように、親タスクの併合用ページとし
て変化させることが可能である。しかしながら、併合は
同一のタスクページに関して行なわれ、且つこの様な併
合は連合動作であるので、部分併合ページであっても親
タスク併合用ページへ変化させることが可能である。
1、併合用に使用されるページャ−エージェント記録フ
ィールド 以下のページャ−エージェント記録フィールド及びステ
ータスビットはマージング即ち併合のために使用される
rpga  pagenameJは、該ページ用のペー
ジ名称記録へポイントし、それはタスクページ及び併合
用ページヘッダへポイントする(但し、これらのページ
がこのプロセサ上に存在する場合)。
「pga  ch il d  me rg  pag
e」は、このノードにおける子供併合用ページに対する
全てのエージェントのエージェントリストへポイントす
る。この様なエージェントの各々は、究極的に、ページ
をこのエージェントに対する併合用ページへ変化させる
rpga  merg  5ubnodesJは、どの
サブノードが併合活性エージェントを有しているかを表
わす。この様なエージェントの各々は、究極的には、併
合用ページをこのエージェントへ送給する。
rPGA  HEADJは、これがヘッドエージェント
であることを表わす。このエージェントは、そのページ
に対する併合が完了した時を認識し且つ古いタスクペー
ジを破壊することが可能である。
rPGA  NEW  HEADJは、このエージェン
トが、併合用のそのタスクページを要求し次いでこのノ
ードを移動させた(フェイム動作期間中に)新たなヘッ
ドエージェントであることを表わす。
rPGA  TPAGE  EX I 5TSJは、該
タスクページが存在するか否かを表わす(そうでない場
合には、それは祖先タスクのページと均等である)。
rPGA  RENAMINGJは、前の化身ニ対スる
ページがこのエージェントの化身に対して再度命名され
ていることを表わす。
rPGA  HEAD  EXPECTJは、この(可
能性としては前者)ヘッドエージェントが併合用のその
タスクページを要求したことを表わす。
rPGA  DEMANIjMERGINGJは、この
エージェントのページに対して併合のデマンド(要求)
が進行中であることを表わす。
rPGA  MPAGE  TOPARENT」は、こ
のヘッドエージェントがその完全併合ページを親タスク
に対する併合用ページへ変化させるべきであることを表
わす。PGA  TPAGE  EXISTSがセット
されていない場合には、部分併合ページもその様に変化
させることが可能である。
rPGA  TPAGE  To  PARENT」は
、このヘッドエージェントがそのタスクページを親タス
ク用の併合用ページへ変化させるべきであることを表わ
す。
rPGA  5END  MPAGEJは、スーパーノ
ードにおけるエージェントがこのエージェントからの併
合用ページを予定することを表わす。
該ヘッドエージェントは、全ての子供タスクが完了した
場合にページが完全に併合されたこと、rpga  c
hifId merg  pageJが零テアルコト、
rpga  merg  5ubn。
desJがゼロであること、及びこのプロセサ上に正確
に一つの併合用ページが存在することを知らせることが
可能である。該ヘッドエージェントがPGA  NEW
  HEAD又はPGA  HEAD  EXPECT
状態を有している場合には、併合が終了したものとは考
えられない。これらの場合の何れかにおいて、ヘッドエ
ージェントは併合用のタスクベージを要求している。併
合用の最後の活動は、ページツリーを除去することであ
り、未解決のページ要求が存在している場合には、それ
は該ページを決して見付は出さない場合がある。
従って、要求したページが到着するまで併合が終了する
ことはない。従って、「pga  chifld  m
erg  pageJが零でない場合又はrpga  
merg  5ubnodesJがゼロでない場合には
、エージェントが併合用ページを予定する。
2、ページ形成 タスクが最初に格納命令を介してか又はその他の何らか
の手段によってページ内に書込みを行なうと、ページャ
−は、タスクページが存在することを記録し、且つそれ
が究極的には併合されて祖先タスクのページを形成する
ことを記録する。従って、タスクベージPが形成される
場合に、全ての祖先併合用ページが暗示的に形成される
全ての経路が構築されるまで、ページャ−は、正確に祖
先ページを併合することは不可能であり、又該ページに
対するサーチを成功裡に納めることができない。これが
問題となることを防止するために、該ページを形成する
タスクが、該ページ経路が構築されるまで、完了し、移
動し、又はPARDOを行なうことを防止する。又、該
ページをビン化めする。該タスクが完了することができ
ないので、そのページに対して併合を行なう必要はない
。該タスク及びページは移動することができないので、
該ページに対する参照は「この」プロセサからやってこ
なければならず、且つ局所的ページサーチが該ページを
捜し出す。又、PARDOは不可能であるので、どの子
供タスクも他の場所から該ページを参照することはでき
ない。
該経路が構築されると、アクルッジメント即ち認知が該
形成されたページに対するリーフエージェントへ送られ
る。従って、ページ形成はサイクルである。スタートし
たタスク記録は、ページ形成カウンタを有しており、該
カウンタは、各ページ形成に対してインクリメントされ
、且つ各アクルッジメント即ち認知に対してデクリメン
トされる。該タスクは、このカウンタがゼロである場合
には、PARDOを行なうか、移動するか、又は完了す
ることが可能である。
ページ形成は、又、プログラムロード期間中に発生する
。各ロードしたページに対して、ドメイン管理コンポー
ネントがページャ−ルーチンを呼出して、主ページに対
するページツリーを構築する。この様な呼出しの全ては
、該主タスクが稼動をスタートする前に行なわれ、従っ
てタスク完了又はPARDOが速すぎることとなる危険
性はない。ページ形成は、該ページが初期的に格納され
たプロセサ上で開始する。これは、通常、スタートした
タスク記録を有するプロセサではなく、その代わりに、
rinit  detaTJ記録(ドメイン管理構成)
がページ形成をカウントする。
この値がゼロとなると、ページャ−はドメイン管理ルー
チンを呼出す。
a、Note−page−creation)ランザク
ジョン Note−page−creation (NPC)ト
ランザクションは、ページ形成用のページ経路を構築す
るために使用される。NPCは、ページのプロセサから
スタートして、該ページのフェイムレベルノードまでの
タスクページ経路を構築する。タスク活性エージェント
は、この経路に沿っての各ノードにおいて構築され、そ
の各々は下側のクラスタに対するサブノードポインタ(
Subnode  pointer)を有している。
フェイムノードにおけるエージェントは、ヘッドエージ
ェントステータス(head  agentstatu
s)が与えられ、且つ該ページ位置がそこに格納される
この点から、祖先ページ用の併合用経路が形成される。
該ページに対するページャ−エージェントが併合活性状
態とされ(いまだにその様にされていない場合)、且つ
P用のヘッドエージェントに対する子供併合用ページポ
インタが挿入される。
NPCはページツリーを上方に継続して、親ベージに対
する併合用ページ経路を構築する。該親ページのフェイ
ムノードエージェントもヘッドエージェントステータス
をとり、且つ祖父母ページに対する経路がそこから構築
される。経路構築は、併合活性ページャ−エージェント
が見付かるまで、又は主ページのヘッドエージェントが
構築されるまで継続して行なわれ、次いでアクルッジメ
ント即ち認知が送られる。
ヘッドでない併合活性エージェントにはPGASEND
  MPAGEステータスが与えられて、スーパーノー
ドエージェントがそのエージェントからの併合用ページ
を予定することを表わす。
NPC)ランザクジョンは、上方ページ経路トランザク
ションと共にシーケンス動作され、且つフェイム動作用
に休止させることが可能である。
(i)NPC構成 typederstruct note−page−c
reationTrec tcard4T      
npcJden;bltslBT     npe−f
 lags:$def’ins NPC−ANCEST
OR0XOOOI婁define NPCPAGELO
AD 0XOOO2node naweT    np
c−generator;l note−pagt−c
reatlonT;尚、 「npc  i denJは、このページ形成用のサイ
クル識別子である。
rNPCANCESTORJは、タスクページ経路又は
祖先ページの併合用ページ経路が構築中であることを表
わす。
rNPc  PAGELOADJは、このページ形成が
ロードしたページ用のものであることを表わす。
[npc  generatorJは、このペジ形成サ
イクルをスタートさせたリーフエージェントのノード名
称である。
NPC)ランザクジョンは、又、ページ名称部分を有し
ており、それはトランザクションヘッダのタスク及びノ
ード名称フィールド内に設けられている。
(it)NPC処理 To create a page (task T、
 page P):resove the ances
tor page from the tasks M
MU (if present)incresent 
pge creations I’or task T
build 1eaf gent record fo
r page Pbut Id cycle reco
rdpin the task page build NPCtransaction:npcj
den  :” the tear node″s n
uenpcJIags ニー 0 npcJenerator ニー the 1earn
ode s nalIetrs 1nc−hthe p
age s 1ncarnation recordt
rIsender ニー the 1eaf node
 s nametrIreceiver ニー the
 1eaf node s nueprocess N
PCat 1eaf nodeTo 1oad a p
age (page P):1ncre+went p
age creations in ’1nil−da
taT−recordbuild 1eaf gent
 record for page Pbulld c
ycle recordpln the task p
age build NPCtransaction:npcJ
den ニー the cycle numbernp
c−flags ニー NPC−PAGELOADnp
cJnerator :” the 1eaf nod
e’s nallletrIInc −+ the p
age’s 1ncarnation recordt
rx 5ender ニー the Iaaf nod
e s naffletrt  receiver ニ
ー the 1eaf node’s nueproc
ess NPCat 1eaf nodeProces
s NPC(page P、 node N) :no
te processing Isn’t doneb
uild (or rlnd) pager agen
t record at node N (agent
 A) 1f’not at 1evel zer。
if agent A has PGA−3END−M
PAGE of PGA−HEAD 5tatesno
te processing is doneend 
i f if buj Iding ancestor pag
e S merging pathinsert 5u
bnode mergig page pointer
 to NPC5ender1se insert 5ubnode task page 
pointer to NPC5enderendif
’ ndif whj le at rue 1evel ofP a
nd processing Isn’t dones
et PGA HEAD 5tatus ror ag
ent Airbui lding task pag
e pathstore page 1ocation
 in agent recordset the p
age motions to zer。
set the PGA−TPAGE−EXISTS 
5tatus bitend i r if page P is primalnote p
rocessing is done1se buj Id (or find) node N a
gent record ror P/ (agent
 B)if agentB is llerge−ac
tiveinsert chi ld merging
 page pointer to agent^no
te processtng ts done1se insert chi ld s+erging pa
ge pointer to agent Aset 
NPC−ANC:PSroRbit in NPCse
t NPCpage nue to P/gent A
 :” gent B end 1 f’ ndif endwhile irprocessing is done−5end
 acknowledgment to npcJen
eratorbuild APCtransactjo
nsend to npc−generatordis
card NPCtransaction1se if’ NPCANCESTORbjt is 5et
set PGA SE?JD MPAGE 5tatu
s in aicent^nd 1f send NPCto 5upernodeend i
 r ページが形成中にフェイム動作が発生すると、NPCに
よって形成されたエージェントの幾つかが移動し、且つ
経路が調節される場合がある。NPC)ランザクジョン
は、又、フェイム動作期間中に、併合用ページ経路を調
節するために使用される。NPCMERGPAGEビッ
トは、これらのフェイム動作によってのみ使用される。
b、Acknowj7 edge−page−c re
ation)ランザクジョン Acknowj7 edge−page−c reat
 ion (APC)hランザクジョンは、ページ形成
の完了に関する信号を発生する。NPC処理が終了する
と、APC)ランザクジョンが構築され且つNPC発生
器へ送られる。そこで、該ページがピン止めから外され
、且つ該タスクのページ形成カウントがデクリメントさ
れる。該カウンタがゼロであると、該タスクは、PAR
DOを行なうか、移動するか、又完了することが許容さ
れる。
(i)APC構成 typedef’ 5truct ack−page−
creationTrec (card4T ape−
npc−iden;bits16T apeJIags
; $deflne APC−PAGELOAD 0XOO
OIl  acjpage−creatlonT;尚、 rapc  npc  1denJは、このページ形成
サイクルに対する識別子である。
rAPCPAGELOADJは、このページ形成がロー
ドしたページに対するものであることを表わす。
(if)APC処理 ProcessAPC: fjnd the cycle recordunpi
n the page irthis is a page loaddecr
ement pge creation count 
in ”1njt−dataT” recordift
he page creation count is
 zer。
cal l dog+a!n manages+ent
 routjnendif 1se decresent page creation c
ount in 5tarted tasktr th
e page creation count is 
Zer。
allow the task to finish、
 orat low the task to do 
a eureka jus+p、 oral low 
the task to do a PARIX)、 
oral low the task to move
end i r end i f delete the cycle recordcH
scard the APC廿ansact 1on3
、併合のスタート ecord マージング即ち併合がpermjt−merging 
(併合許可)及びdemand−merging(併合
要求)を開始することが可能な場合に二つの場合がある
。最初に、ページのタスクが完了し且つ全ての子孫ペー
ジに対する併合が行なわれると、該タスクページは併合
用ページへ変化させることが可能である。該permi
t−mergingトランザクションは、バックグラウ
ンド併合をスタートするために使用される。第二に、タ
スクが実行を再開し且つ幾つかの子供タスクが修正した
ページを参照する場合、そのページが併合されねばなら
ない。該demand−mergingをスタートする
ために、force−merging (併合強制)動
作が使用される。
a、Permit−mergingトランザクション Permit−merging (PEM))ランザク
ジョン、即ち併合許可トランザクションは、タスクの完
了を示す信号を発するために使用される。タスクが完了
すると、PEMは、タスクのフェイム領域を介してブロ
ードキャスト、即ち同報通信され、PEMが該タスクの
ページ用の全てのヘッドエージェントに到達することを
確保する。
このブロードキャストのために使用される管理ツリーは
任意的なものである。従って、各PEMブロードキャス
トに対してランダムなツリ一番号が選択される。これは
、カーネル作業を分散することを助ける。PEM)ラン
ザクジョンがリーフノードに到達すると、ページャ−は
そのノードのプロセサ上のタスクのページに対する全て
のヘッドエージェントを捜し出し、且つ併合はこの様な
各エージェントにおいてスタートされる。
(i)PEM構成 PEM)ランザクジョンは、該トランザクションヘッダ
内に含まれているタスク名称部分のみを有している。
(It)PEM処理 On task completion:build 
PEN transactionpick rando
s manage@ent tree +u+s+be
rf’ill in 5ender field or
 transaction:gnJgenua: ra
ndom tree r+usberagn−type
: pager agn−1eve! : O agn−cluster: this process
orsend transaction to fay
ae 1evel of taskProeessPE
M(task T、 node N):if’ N i
s not a 1eaf nodesend tra
nsactlon to 5ubnodes1se but Id 1ist of head agent
s on this processor for t
ask T’sages discard PEM transactionfo
r each 5uch agent Airther
e are llerging pagesif’ A
 s merging is finishedcha
nge  the merging  page  t
o  a  parentmerging page delete the page tree ror 
A s pages1se set the PGA−MPAGE−TO−PARE
NT 5tatus bit(change merg
ingpage to parent merging
page) endif’ else if the agent has req
uested the task page−the 
agent is already mergtng;
 do nothingelse If the ta
sk page Is on this proces
sorchange the task page t
o a parent lergillg paged
elete the page tree for A
 S 9dge1se −the task page exists、 bu
t is not hererequest the 
task pageset the PGA TPAG
E To PARENT 5tatus bit(ch
ange task paze to parent 
merging page)end I f ndfor end i f b、Force−merging動作 要求されたページが併合されねばならないことをページ
ャ−が見出すと、force−merging(強制併
合)動作がそのページのヘッドエージェントからスター
トされる。これは以下の四つのステップを包含してイル
(1)ページャ−がrequest−mergi n 
g (RQM) トランザクション、即ち併合要求トラ
ンザクションを、各併合活性サブノード(pga  m
erg  5ubnodes)へ送給する。
(2)ページャ−が、各子供併合用ページのエージェン
ト上で再帰的に併合強制動作を行なう(pga  ch
i、9d  merge  page)。
(3)ページャ−が、全ての現在の併合用ページバージ
ョンを併合する。
(4)最後に、タスクページコピーが存在しない場合に
は、ページャ−は、併合を終了するためにそれが必要で
あるか否かを決定し、且つ必要である場合には、それを
要求する。
強制併合が最初に実施される場合、rpgastatu
sJのrPGA  DEMAND MERG I NG
J ビットがセットされる。これは、爾後の発動を防止
する。
上述した再帰は、スタック上にフイ・ソトするのには深
すぎる場合があり、従って「StaCkframes(
スタックフレーム)」は、ヒープ(山積み)割当て型記
録内に配置させる。二つのスタック(stack)が使
用される。最初のスタックは、強制併合が行なわれるエ
ージェント記録に対してのポインタを格納する。これら
は、二つのステップでこのスタック上に押込まれる。強
制併合がエージェント記録を処理することを終了すると
、それは2番目のスタック上へ押込まれる。
これは、ステップ3及び4に対して、逆の順番でエージ
ェント記録を処理することを可能とする。
(i)Force−merging (強制併合)Fo
rce−merglng (agent A):if 
 force−merglng has alread
y been per「orIIled  for a
gent  A  andtile agent ex
pects post−tmagesreturn、 
1ndicat1ng merglng has no
t completed for agent Aui
 t ndif Initialize recursion 5tas
kspush agent A onto 5tack
 onewhile 5tack one isn t
 emptypop 5tack one  →age
nt Bset PGA DEMAND MERGIN
G 5tatus for Bif there ar
e merge−active agents at 
5ubnodessend request−merg
e transact、Ions to these 
5ubnodesndIf for each chi ld merging p
age S agent C1f there are
 merging pages ror C5et l
”GA−MPAGE−To−PARENT 5tatu
s ror Cpush Conto 5tack o
neelse if Chas requested 
a task page、 of’ is a ”ne
w head−agentset PGA−DEHAN
DJRGING 5tatus for Celse 
if Cs task page is presen
tchange  the  task  page 
 to a  parent  task’s  me
rgiry、pagedelete the page
 tree CS pages1se set  PGA−DEMAND−)tJ?’GING
  and  PGA−RENAME−PRE  5t
ates  for  Crequest the t
ask I)age for mergjngend 
] t rndfor push agent B onto 5tack t
w。
endvhi 1e assus+e serging will fini
sh for agent AwhNe 5tack 
two ins t emptypop 5tack 
two →agent Dmerge al I po
ssible merg]ng page versi
ons together+r there are 
merging pageS at 5ubnodes
note merging will not fin
ish for agent^Irthe task 
page is needed to finish 
mergingrequest the task p
age for s+erglngndjr 5e if the PGA−MP^GE−To−PAREN
T 5tatus js 5etif  there 
 is  exactly one merging 
 page、or  ir thetaSk page
 does not eXistchange the
 merging page versions to
 mergingpages f’or the pa
rent taskdelete the page 
tree for D s pages1se note merging  will  not  
finish  for  agent  Aif t
he task page js needed to
 rlnish mergingrequest  t
he  task  page  for  merg
ingndjf ndif 1se if’ agent D is a head age
ntiT there is tnore than 
one merging page versionn
ote merging will not fini
sh for agent Aif the task
 page is needecl to finis
h mersjngrequest the task
 page for mergingnd jf else If agent D has reque
stecl the task pagenote m
erging will not rinish fo
r agent Andif else tr there are merging
 pages at 5ubnodesnote me
rging will not finish for
 agent A1se send the merging page ver
sions to the 5upernodelak
e agent D not lerge−aetiV
eend i r end i f ndif endwh i I e return、 indicating whethe
r merging has flnishecl f
or agent A(ii)RQM構成 RQMトランザクションは、該トランザクションヘッダ
のタスク及びノード名称フィールド内に設けられている
ページ名称部分のみを有している。
(iii)RQM処理 ProcessRQM(page P、 node N
) :if P’s pager agent at 
node N is merge−activeif 
there are Ilerge−active a
gents it 5ubnodes、 or the
re arechile merging T)age
 agents at this nodedo ro
reflerging for this agent
s1se do perfor+i−sergil−5er th
is agentend i r (iv)Force−merging/Fame相互作
用 フェイム(f ame)増加が進行中である場合、ヘッ
Fページar −(head  pager)エージェ
ントはノードからより高(1ノードへ移動されることが
可能である。RQM)ランザクションカ(より低いノー
ドへ向かって送られて併合要求を行なう場合、それは該
へ・ソドエージェントをミスする。これを解決するため
に、該へ・ソドエージェントがより高いノードに到達す
る場合1こ、ページャ−は、そのノードにおける親ペー
ジのエージェントが併合要求であるか否かをチエ・ツク
し、且つそうである場合には、そのヘッドエージェント
に対してforce−merging (強制併合)を
発動する。
4、併合の継続 マージング即ち併合の期間中、ページが一体的に併合さ
れ且つノード(n o d e)からスーパーノード(
s upe rnode) へ移動され、且つ併合用ペ
ージ経路が削除される。Performmerging
 (併合実施)動作がマーリング(併合)を行ない且つ
該経路をクリーンアップし、一方merge−page
  (MPI)  トランザクション、即ちページ併合
トランザクションが該ページを移動させる。
a、Perform−merging動作ページャ−が
、ノードにおいて実施すべき併合作業が存在することを
見付は出すと、perf。
rm−merging (以下の条件か満たされる場合
に)このことが発生する。
(1)併合がスタートした時、 (2)親タスクの併合用ページへ変化されるために要求
したタスクページが到達した時、(3)併合用の参照ペ
ージとして使用されるために要求したタスクページがヘ
ッドエージェントに到達した時、 (4)他のページと併合されるために併合用ページが到
達した時、及び (5)ページフレームマネジャ(page  fram
e  manager)が自由空間への併合を行なう時
Perform−merging動作は五つの結果と関
与する。
(1)ページャ−がページを併合する場合がある。
(2)ページャ−がタスクページを親タスクの併合用ペ
ージへ変化させ且つその親タスクのペジに対してper
form−merging (併合実施)を発動する場
合かある。
(3)ページャ−が、該エージェントが併合を終了し且
つヘッドノードでない場合に、スーパーノードへ併合用
ページを送給する場合がある(MPIトランザクション
)。
(4)該エージェントがヘッドエージェントであり且つ
併合を終了した場合、又は該エージェントがヘッドエー
ジェントであり且つタスクページが存在しない場合に、
ページャ−が併合用ページを親タスクの併合用ページへ
変化させ且つ該親タスクのページに対してpe r f
 o rm−me rging(併合実施)を発動する
場合がある。この再帰はテール(t a ig)再帰で
あり、従ってそれは反復的に行なわれる。
(5)何れかが存在しており且つ併合が行なわれる場合
に、ページャ−が完全併合ページを要求するページサー
チを再開する場合がある。ページ要求活動は、完全併合
ページを後の化身のタスクページ内に挿入する。
Perform−mergingをエージェントに対し
て行なった後に、該エージェントが活性でない場合には
、該記録が削除される。Perfo rm−me rg
 i ngが「オリジナル」のニジエンド記録(パラメ
ータ)が削除されたか否かを表わすプール(b o o
jl e a n)をリターンする。
(i)Perform−merging処理Perfo
nI−terglng (agent^):agent
 B ニー agent Adeleted(lag 
ニー FALSEepeat recursing +−FAIsE If there are three or tao
re pages for agent Bdo me
rging ndlf If agent B does not expec
t merging pagesjragent B 
is non−headsend merging p
age(s) to 5upernode (MPI 
transaction)g+ake agent B
 not sergL1!−active汀agent
 B is not actlvedelete ag
ent B s recordiragent B i
s agent^deleted(lag ニー TR
1JEndif else endjf’ If PGA−MPACE To−PARENT 5t
atus is Set 「or agent Bif
 the page is ful Iy merge
tJ or the task pagedoes n
ot exist change B’s merging pages 
to the parent task’ssergt
ng  pages lrdemand merging or storg
e is lowfind parent page 
S agentrecursing ニー TRUE ndlr delete the page tree ror 
B’s pageIf agent B is age
nt^deleted−rlag ニー TRUEen
d I r agent B ニー parent page’s 
agent (for recursion)1se If  the  task  page  Is  
needed  to  flnjsb  mergi
ngrequest the task page r
or mergingndif end I r else jf PcA−TPAGE−TO−PARE
NT 5tatus is set for agen
t Bchange B S task page t
o the parent task’swergir
1gpage (the pge must be p
resent now)irdemand mergi
ng or storge is lowflnd p
arent page’s agentrecursl
ng ニー TRUE endj「 delete the page tree for 
B S pageif agent B is age
nt Adeletecl−flag ニー TRLI
Eend I f agent B  ニー parent page’s
 agent  (ror reeursfon)el
se irB s page is rully me
rgedresume page 5earches 
ror 1ater jncarnatjonsels
e irB s task page is need
ed to finish mergingreque
st the task page ror merg
ingndjf end i r until recurs4ng is FALSE+
r the rererence page is a
n ancestor page and +merg
ing did notcoetplete copy the rererence page t
o awake agent A s task pa
gestore page l0eatjOn In 
A S agent recordend i r return deletaf−rlagb、Merg
e−page)ランザクジョンページャ−が併合用ペー
ジをノードからスーパノードへ移動させる場合に、それ
はmerge−page (MP I))ランザクジョ
ン、即ちページ併合トランザクションを使用する。その
ページが到着すると、perform−merging
動作を使用してマーリング(併合)を継続する。
(i)MP!構成 typedef’ 5truct serge−pag
eTree (bits18T wpi−f!ags;
5define MPjNIL IMAGE  0XO
OOI零define MPI LAST IMAGE
 0XOOO21merge−pageT: rMPI  NIL  IMAGEJは、このトランザ
クション内に併合用ページが含まれていないことを表わ
す。これは、フェイム(f ame)動作に関連しての
み使用される。rMP I / f ame相互作用」
のセクションを参照するとよい。
rMP I  LAST  IMAGEJは、このトラ
ンザクションがノードからスーパーノードへ送られるべ
き最後の併合用ページを有していることを表わしている
MPI)ランザクジョンは、又、該トランザクションヘ
ッダのタスク及びノード名称フィールド内に含まれるペ
ージ名称部分を有している。
(it)MP!処理 SendMPI (agent A):if agen
t A has PGA−3END−MPACE 5t
atusbufld an MP[transact4
onif there are merging pa
gesattach the merging pag
es to the M円delete the w+
erging page recordsirthe 
pager agent is no longer 
merge−activeset the MPI−L
AST−IMAGE rlagclear PGA−8
END−MPAGE statusend I r send the MPI to the 5uper
node1se set MPI−NIL−IMAGE and M円−
LAST−IMAGE f lagssend the
 MPI to the 5upernodeend 
1 f 1se −do nothlng end i f ProcessMPI(page P、 node N
):find the pager agent fo
r P at N汀MPI LAST IMAGE i
s 5etdelete the 5ubnode m
erging pointer to the sen
der(pga merg 5ubnode>end 
i f if’ MPI−NIL−IMAGE is not 
5etinsert the merging pag
e versionsend i 「 1rthere are merging pages
irthe agent is desand mer
gingdo performlerging for
 the agentndif else if the agent isn t h
ead and does not expect m
ore mergigages send an MPI rraa the agen
tclear PGA−DEMAND−MERGING
 5tatusend i r 5、マーリング(併合)の終了 前述した如く、ヘッドエージェント(headagen
t)は、何時ページ用のマージング即ち併合が完了する
かということを決定することが可能である。これは、全
ての子供タスクが完了したかどうか、子供ページエージ
ェントに対する併合用ページポインタが存在しないか、
サブノードにおけるエージェントに対しての併合用ペー
ジポインタが存在しないか、ただ一つの併合用ページが
存在するのみであるか、及び該タスクページが要求され
ていないかどうかの場合である。第一の条件は、該ペー
ジのタスクの後の化身の記録が存在するか否かを検討す
ることによって決定することが可能である。存在する場
合には、該ページのタスクは実行を再開したはずであり
、従って全てが、後の化身のページに対するページ要求
と共に到達する。
ページ用の併合要求(demand−me rging
)が終了すると、該ページは後の化身のタスクベージへ
変化される。これは、demand−merging(
併合要求)をスタートさせたページ要求をサービスする
ことによって行なわれる。しかしながら、それが発生す
ると、該ページが要求される前に併合が完了する。この
場合、完全併合ページはそのままに残される。後に、該
ページが要求され且つ後の化身タスクページへ変化され
る場合があり、又そのタスクが完了する場合かあり、且
つそのページが親タスクの併合用ページへ変化される。
a、ページ破壊及びDelete−pagesトランザ
クション ページ用の併合が終了すると、該タスクベージの全ての
コピーは削除される。これは、局所的ページコピーを削
除し、且ツdejl e t e−pages(ページ
削除)トランザクションを全てのタスクページサブノー
ドポインタ(task  page  5ubnode
  pointers)を介して送ることによって行な
われ、他のコピーを削除する。
この方法は、タスクページ経路がいまだに構築中である
場合には、アーカイバルコピー(archivap  
copy)をミスする場合がある。
それは、現在のところアーカイバルコビーであって且つ
それに対して経路がいまだ構築中である通常のコピーを
ミスする場合がある。最終的に、それは、経路がいまだ
構築中の他の経路へ連結されている通常のコピーをミス
する場合がある。
DPSトランザクションは、タスクページサブノードポ
インタのみに追従する。子供タスクページポインタを有
するエージェントに遭遇すると、DPSは、これらの経
路がサブノードポインタへ変更されるまで、待機する。
(NE(lランザクジョンが該ポインタを変更させ且つ
DPSをキュ−即ち列から外す。)エージェントがrP
GARENAMINGJステータスを有していると、D
PSトランザクションはそこでキュー、即ち列をなす。
ページ破壊活動は、該ヘッド活動からスタートする。該
トランザクションが子供タスクページポインタを有する
エージェントに到達(又はそこからスタート)すると、
それは、全ての子供タスクページポインタがサブノード
ポインタへ変更されるまで、そこでキューを形成する(
即ち、列をなす)。該トランザクションが子供タスクペ
ージポインタのない非リーフエージェントに到達(又は
、そこからスタート、又はそこにおいてキューから外れ
る)と、それは、全てのタスクページサブノードポイン
タを介して送られる。ページコピーは、存在している場
合には、削除される。該エージェントは、タスク活性と
はされず、且つ該エージェント記録は削除される。該ト
ランザクションが子供タスクページポインタのないリー
フエージェントに到達する(又は、そこからスタートす
る、又はそこで列から外れる)と、該ページコピーは、
それが存在する場合には、削除される。該エージェント
はタスク活性とはされず、且つ該エージェント記録が削
除される。該トランザクションが破棄される。最後に、
該トランザクションが活性エージェントのないノードに
到達すると、なされるべき必要なものは何もない。タス
クページ経路も、底部から削除することが可能である。
該トランザクションが破棄される。
幾つかのページコピーが喪失している場合には、GPS
ブロードキャストを繰返すことが可能である。これは、
活性エージェントが存在しないフェイムレベルノードに
おいてbuij7 t−taskpage−path 
(BPA))ランザクジョンを処理した後に発生する。
(i)DPS構成 りPSトランザクションは、そのトランザクションヘッ
ダのタスク及びノード名称フィールド内に含まれている
ページ名称部分のみを有している。
(ii)DPS処理 To delete a page tree (fr
om head agent^):clear PGA
 1rEAD 5tatus in Aif A ha
s no task page pointers (
or either type) and does 
nothave PGA RENAMING 5tat
usIr a page copy ts prese
ntdelete It end 1 r delete the agent record1s
e build DPS transactlonif a
gent A has child task pag
e pointers or PGA RENAMIN
Gtatus queue DPS at A (wait f’or
 NEQ)1se send DPS to al I task−act
ive subnodesremove a! I t
ask page 5ubnode pojnters
delete the agent recorden
d 1f end i 「 ProcessDPS(node N、 page P
):1ook for pager agent^「o
r P at Nif not I’ound discard DPS transaction1s
e if a page copy is present
delete 1t end i r if’ agent A has child tas
k page pointers orPGA−REN
AMINGtatus queue DPS at A (waft for 
NEQ)1se send DPS to al I task−act
ive 5ubnodesresove al I t
ask page 5ubncxie pointer
sde+ete the agent recorde
nd i t end i f b、ページ再命名及びRename−pagesトラン
ザクション しばしば、ページサーチがタスクの古い化身に対するペ
ージを見付けることがあり、且つそのべ−ジのタスクの
子孫がそのページを修正しないことがある。この場合、
メモリモデルは、新しい化身のページが前の化身のもの
と同一であると陳述する。この新たな化身のページを構
築するために、ページャ−はタスクページコピーの一つ
をとり、且つそれを該新たな化身に対して再命名する。
次いで、他のコピーは、通常の如く、削除する。
しかし、この新たな化身のページがユニークでない場合
、該ページのコピーの全てが再命名され、且つ単に一つ
のコピーのみが発生される場合よりも、ページサーチは
これらのページをより速く捜し出す。Rename−p
ages  (RPS)  トランザクションを使用し
て、この再命名を行なう。
それは、ヘッドエージェントからスタートし、且つ全て
のタスクページサブノードポインタに追従する。ページ
が見付かると、それは新たな化身に対して再命名され、
且つそのアーカイバル/通常状態を維持する。
DPSの場合の如く、RPSI−ランサクンヨノは該ペ
ージコピーの幾つかをミスする場合がある。
これは問題ではない。なぜならば、ミスした通常のペー
ジは、経路かへラドノードに到達した時に削除されるか
らである。
ページャ−は、DPSトランザクションがミスし且つ「
別の」削除を行なうものと仮定する。しかし、ページャ
−は、アーカイバルベージが再命名されることを確保せ
ねばならない。従って、アーカイバルページがヘッドエ
ージェントへ持ってこられ、且つrename−pag
es )ランザクジョンが送出される前に、その場所で
再命名される。
PH1は、タスクページサブノードポインタのみに追従
する。子供タスクページポインタを有するエージェント
に遭遇すると、これらの経路がサブノードポインタへ変
更されるまで、RPSは待機する。別のpage−re
name (ページ再命名)又はpage−destr
uction(ページ破壊)動作が開始することが可能
であるので、RPSがキューされる場合、新たなエージ
ェント記録にはrPGA  RENAMINGJステー
タスが与えられて、最初のRPSが終了するまで、新た
なRPS又はDPS)ランザクジョンは新たなエージェ
ントにおいて待機すべきであることを表わす。ページ再
命名活動は、アーカイバルコビーが存在すると、ヘッド
エージェントからスタートする。Rename−pag
es )ランザクジョンが構築され且つそこで処理され
る。
該トランザクションが活性エージェントに到達する(又
は、そこからスタートする)場合、その新たな化身に対
するエージェント記録が構築され(又は見付は出され)
、且つ古いページが、存在する場合には、再命名される
。その古いエージェントがヘッドエージェントである場
合には、新たなエージェントにはrPGA  HEAD
Jステータスが与えられ、且つそのステータスは古いエ
ージェントが除去される。親ページのエージェントから
の子供併合用ページポインタが新たなエージェント記録
へポイントすべく調節され、且つアーカイバルページの
位置及び存在が新たなエージェント記録内に格納される
。古いエージェントが子供タスクページポインタを有し
ていると、子供タスクページポインタがサブノードポイ
ンタへ変更されるまでRPSはそこでキューし、且つ新
たなエージェントにはrPGA  RENAMINGJ
ステータスが与えられる。しかし、古いエージェントが
子供タスクページポインタを有していない場合には、そ
のタスクページサブノードポインタは新たなエージェン
ト記録内にFor処理」され、RPSトランザクション
が古いエージェントに対する全てのタスクページサブノ
ードポインタを介して送られ、且つその古いエージェン
ト記録が削除される。
該トランザクションがキュー状態から外されると(古い
エージェントにおいて)、新しいエージェント記録が見
付は出される。古いエージェントのタスクページサブノ
ードポインタは新たなエージェント記録内に「Or処理
」され、RPSトランザクションは古いエージェントに
対する全てのタスクページサブノードポインタを介して
送られ、且つ古いエージェント記録が削除される。rP
GA  RENAMINGJステータスが新たなエージ
ェントが除去され、且つ未決のDPS又はRPSトラン
ザクションがキュー状態から外される。
該トランザクションがエージェントなしのノードに到達
すると、それは、古いタスクページ経路が底部から削除
されることを意味する。古いベージ経路に対するDEL
ETE−PAGE−COPY (DPR)  トランザ
クションは、ちょうど、このノードを介して通過し、且
つスーパーノードのエージェントに対するタスクページ
サブノードポインタをクリアすることはできない。なぜ
ならば再命名は、最初に、そこで発生するからである。
従って、ページャ−は、新たな名称に対してDPRを送
給する。RPS)ランザクジョンが破棄される。
(i)RPS構成 typedef 5truct renase−pag
esTrec 1card4T  rps−new I
nc nun:)  renase−pagesT; jrps  new  inc  numJは、新しい
ページ名称の最後のジャーム(germ)の化身番号で
ある。
RPS)ランザクジョンは、又、そのトランザクション
ヘッダのタスク及びノード名称フィールド内に含まれて
いるページ名称部分を有している。
これは、古いページ名称を特定する。
(jj)RPS処理 To renue at I task page c
opies (fros head gent^):i
f A has no task page poin
ters (Or either type) and
 does nothave PGA−RENAMIN
G 5tatusbuild the new tnc
arnatson’s agent record(a
gent B)set PGA−HEAD 5tatu
s ror Birthe page is not 
primalchange the parent a
gent’s child merging page
 pointerror A to point to
 Bend i f’ 5tore the page 1ocation i
n B s recordrer+aIIle the
 archival pagedelete agen
t A s record1se build RPS transactionproc
ess RPS at A’s nodendlf ProcessRPS(node N、 pages 
P and P>> ):1ook for agen
t record f’or P at N (age
nt A)if A’s record is not
 foundsend DPRtransaetfon
 f’or p>> to 5upernodedls
eard RPS transaction1se flnd or bulld agent recor
d for P>> at N (agent B)i
f A is a haad agentset PG
A−HEAD 5tatus ror Bclear 
PGA−HEAD 5tatus for Ait t
he page is not primalchan
ge  the  parent  agent’s 
 child  merging  page  po
interror A to point to Be
rkdir store the archival page’s
 1ocation in B’s recorden
d i r if’ a task page P Is pres
entrenue P to P>> ndif Iragent A has child task 
page pointers or PcA RENA
)IING 5tatusqueue the RPS
 at^(wait for NEQ)set PGA
 RENAMING 5tatus for Bels
e ’or” A’s task page 5ubnod
e pointers 1nto H’s recor
dsend the RPS to al l or 
A s task page 5ubnode poi
ntersdelete gent A s reco
rdend i r end t r ProcessRPS after dequetng
cagent A、 new page P>>)fi
nd agent record for P>> a
t^’s node (gent B)’or+A’s
 task page 5ubnode pointe
rs Into B’s recordsend th
e RPS to all o「^s task pa
ge 5ubnode pointersdelete
 agent A s recordclear PG
A RENAMING 5tatus for Bde
queue DPS or RPS transact
ion (if any) at BE、タスクベージ
モーンヨン及び削除 ページャ−が一つのプロセサから別のプロセサヘタスフ
ベージコピーを移動させる場合に二つの場合がある。第
一に、プロセサが自由空間を必要とする場合があり、従
ってページフレームマネジャがアーカイバルタスクベー
ジコピーを送出すことによってそれを行なうことを選択
する。第二に、タスクによって又はマーリング(併合)
又はりネーミング(再命名)を行なうために、そのペー
ジがプロセサにおいて必要とされる場合がある。
空間が自由とされている場合、ページフレームマネジャ
は決して通常のタスクページを移動することはないが、
その代わりに、それらを単に削除する。従って、通常の
ページコピーは、そのページを要求したプロセサへのみ
移動することが可能である。
タスクベージ(P)がプロセサに到達すると、別のペー
ジコピーが既に存在している場合がある。
このページは、前の化身又は後の化身のための該ページ
のタスクの同一の化身に対してのものである場合がある
。又、同一の化身又は後の化身に対しての併合用ページ
が存在している場合がある。
既に存在しているページがそのページについてなされる
べきことを制御する。該プロセサによってとられる活動
は以下の如くである。
(1)タスク又は後の化身に対しての併合用ページが存
在すると、ページPが破棄される。この場合、ページP
は、DPSブロードキャストによって喪失されたアーカ
イバルページであるか、又はDPS又はRPSブロード
キャストによってミスされた通常のページの何れかでな
ければならない。何れにしても、ページPは要求される
ということは不可能である。
(2)同一の化身に対してタスクページコピーが存在す
る場合には、ページPが破棄される。ページPがアーカ
イバルであると、他のページコピーがアーカイバルとな
る。
(3)同一の化身に対して併合用ページコピーのみが存
在すると、ページPはそのプロセサ上のページャ−記録
内に挿入され、タスクページヘッダが構築され、且つペ
ージ名称記録が該ヘッダへポイントするようにされる。
(4)前の化身に対するタスクページコピーが存在する
場合には、そのコピーは破棄され、且つその経路が削除
され、且つページPが該プロセサ上のページャ−記録内
に挿入され、ページ名称記録がページPの化身に対して
ポイントするようにされ、且つ古いページヘッダがペー
ジPに対してポイントするようにされる。
(5)何れの化身のページも存在しない場合には、ペー
ジPがそのプロセサ上のページャ−記録内に挿入され、
タスクページヘッダ及びページ名称記録が構築され、且
つページ名称記録がページPの化身に対してポイントす
るようにされる。
又、タスクベージがノードに到達すると、そのエージェ
ントはタスク活性状態とされ、且つそのノードへのタス
クページ経路が構築される。
アーカイバルページが移動する場合に、fIoca t
 e−a rch i vaII−page (LAP
)トランザクションと共に、その新たな位置がそのペー
ジのヘッドエージェントへ報告される。各アーカイバル
ページは、rpage  mot 1onJカウントを
有しており、該カウントは該ページが移動する毎にイン
クリメントされる。そのページが迅速に動き回る場合に
は、このデータは、ページャ−が、新たなLAP情報が
前のLAPよりも一層現在のものであるか否かを決定す
ることを可能とする。
どこにそのページが行くかということをソースノードが
「知っている」としても、LAPは、常に、宛て先ノー
ドから送られる。このことは、LAPがヘッドエージェ
ントに到達する前に、該ページがその宛て先に到達する
ことを保証する。従って、ページサーチは、そのヘッド
エージェントにおける位置情報が現在のものであるか、
又はLAP)ランザクジョンが新たな情報と共に後に到
達するかの何れかを仮定することが可能である。
ページコピーがプロセサから除去される場合には、de
fl ete−page−copy (DPR)トラン
ザクションと共に、そのコピーに通ずるタスクページ経
路も削除される。このトランザクションは、タスク活性
状態のままであるページャ−エージェントが見付かるま
で、ページツリーを介して進み、タスクページポインタ
を削除する。
ページコピーがページフレームマネジャによって移動さ
れる場合、transfer−archi van −
page  (TAP))ランザクジョンが使用される
。到着すると、宛て先ノードにおいてタスク活性ページ
ャ−エージェントが存在しない場合には、buil d
−taskpage−pa th (BPA))ランザ
クジョンと共にタスクベージ経路が構築される。このト
ランザクションは、既にタスク活性状態であるページャ
−エージェントが見付かるまで、ページツリーを介して
進行し、タスクベージポインタを挿入する。
ページコピーが要求するノードへ移動する場合に、tr
ansfer−requested−page (TP
R))ランザクジョンが使用される。
1.0sJ ete−path (経路削除)トランザ
クション Del ete−path (DPR))ランザクジョ
ンは、タスクページ経路を削除するために使用される。
DPRがエージェントにおいて処理されると、送給サブ
ノードへ向けてポイントするタスクベージポインタが取
除かれる。該エージェントがタスク活性状態のままであ
ると、DPR処理が完了され、そうでない場合には、そ
れはスーパーノードにおいて継続する。
a、DPR構成 りPR)ランザクジョンは、トランザクションヘッダの
タスク及びノード名称フィールド内に含まれているペー
ジ名称部分のみを有している。
b、DPR処理 To delete a task page cop
y (P):f’ind the lowest ta
sk−active pager agent (^)
 for Prree the page and t
ask page haader recordset
 the page name record s t
ask page beader pointer t
o nj ltr agent A is no lo
nger task−aetjVebuild DPR
transactionsend DPRrrow A
 to A s 5upernOdeif A is 
not merge−activedelete th
e agent record ror^ndif end i r ProeessDPR(node N、 page P
):ffnd the pager agent re
cord for page P at node N
 (gent A)if found rtx>ve the task page 5ubn
ode pointer to the 5ender
if agent A is 5t111 task−
actlvediscard the DPRtran
saction1se send the DPRto the 5upern
odetr agent^Is not Ierge−
aetlVedelete agent record
 Andif end ] r 1se djseard the DPRtransaetjo
nend I r 2、Transfer−archivafI−page
(アーカイバルベージ転送)トランザクショTrans
fer−archivafi−page (TAP)ト
ランザクションは、一つのプロセサから別のプロセサへ
要求されていないアーカイバルベージフピーを送るため
に使用される。このページは、ソースプロセサから削除
され、且つde(lete−path)ランザクジョン
をそのソースから送ることが可能である。宛て先プロセ
サにおいて、そのページを挿入することが可能であり、
且つより多くのpath−updat ingトランザ
クションを発生させることが可能である。
a、TAP構成 typedef’ 5truct transfer−
archjval−pageTree (card4T
 tap−motions;l transrer−s
rchjval−pageT;rtap  mot 1
onsJは、このモーション即ち運動を包含してこのア
ーカイバルページが移動した回数である。
TAPトランザクションは、又、該トランザクションヘ
ッダのタスク及びノード名称フィールド内に含まれるペ
ージ名称部分を有している。
b、TAP処理 To jnsert a task page cop
y P:tr there js a task pa
ge copy for a prior 1ncar
nationdelete the old task
 pge copyease if’ there i
s a task page copy ror a 
1ater incarnattondjSCardp
agecOpyP 1se tf there is no pge nue re
cord for Pbui Id 0ne end i f lake the page naIIe recor
d point to page P S +ncar
nat+onir there is no task
 page header ror pbui ld 
one、 attach it to the pag
e narae recordndif if page copy P is archjva
lset the archival bit in 
the task page headerstore
 the page l01iOnS counten
d I r iranother copy o「page P i
s presentdiscard page cop
y P1se attach pge copy p to the 
task page headerend I f end I r To 5end an unrequestecl a
rchlval page (P) rr> proc
essor Sto processor [): 1ncresent the pge s w+oti
on countbut Id TAP transa
ction、 attach page to TAP
send TAP from 1eaf pager 
node on processor Sto 1ea
f pager node on procassor
 Ddelete the 1ocal page c
opyProcessTAP(page P) :ri
nd or build page ntae rec
ord ror Pif there is no p
age o「either type for a 1
ater Inc、arnationfind the
 lowest task−active pager
 agent (^) for Pif there 
is no 5uch agentbut ld a 
1eaf agent record for pag
e P (agent A)end i r note whether agent^Is tas
k−activeInsert page copy 
P (as above)if agent A wa
sn’t task−aetlvesend BPA 
transaction for P from Ae
nd i r send page 1ocation inform
ation to the head agent14
 A is leaf−expectingresLl
lle page 5earches for age
nt A’s tncarnattonelse if
 A is h7−expecting and de
Iand serglngdo perfonm−me
rging for Aend i r end i f’ discard TAP transaction3、
Buigd−taskpage−path(タスクペー
ジ経路構築)トランザクションBuigd−taskp
age−path (BPA)トランザクションは、転
送したアーカイバルページコビーに対してページ経路を
構築するために使用される。このトランザクションは、
サブノードからスーパーノードヘパスされ、既にタスク
活性であるエージェントが見付がるまで、エージェント
記録を構築し且つタスクページサブノードポインタを挿
入する。
このトランザクションがフェイムレベルノードへ到達し
且つそこには該ページに対するヘッドエージェントが存
在しないことを判別すると、DPSトランザクションが
送出されて該ページのコピーを削除する。これは、前の
DPS又はRPSブロードキャストが転送ページをミス
した場合にのみ発生することが可能である。尚、「ペー
ジ破壊」及ヒ「ページ再命名」のセクションを参照スル
トよい。
DPA)ランザクジョンは、上方ページ経路動作とシー
ケンスされており、且つフェイム動作のために休止させ
ることが可能である。
a、BPA構成 りPA)ランザクジョンは、該トランザクションのヘッ
ダのタスク及びノード名称フィールド内に含まれるペー
ジ名称部分のみを有している。
b、BPA処理 ProcessBPA(page P、 nocle 
N) :rind Or buj Id the pa
ger agent record for P at
 node N (agent A)note whe
ther agent A is task−acti
vetnsert the 5ender s tas
k page 5ubnode pointerif’
 gent A was task−actived4
seard the BPA transaction
else if this Is the fue 1
evel ofPdiscard the BPA t
ransactiondelete al I taS
k page Copiesl 5e send the BPA to the 5uper
ncdeend I r 4、Locate−archivajl−page(ア
ーカイバルページ捜索)トランザクションLocate
−archivall−page(LAP))ランザク
ジョンは、ページのヘッドエージェントへページ位置情
報を送るために使用される。
a、LAP構成 typeder 5truet locate−are
hlval−pageTree  (card4T 1
apjocation;card4T lap−mot
ions;]  1ocate−archival−p
ageT;rj! ap  l ocat 1onJは
、該ページの位置(プロセサ番号)を有している。
rj7ap  motionsJは、該アーカイバルコ
ビーが何回移動したかを表わしている。
LAP )ランザクジョンは、又、該トランザクション
ヘッダのタスク及びノード名称フィールド内に含まれて
いるページ名称部分を有している。
b、LAP処理 To 5end page 1ocatton inr
orwation to the head agen
t:if the head agent is on
 this processorflnd the h
ead gent recordif the pag
e motions is greater than
 the head agent’smotions 
datum store the page motions an
d 1ocation 1nro1atlonndir l 5e build LAP transactionsend
 to head agentndlF ProeessLAP(node N、 page P
)if thjs is the f’ase 1ev
el of page Pf’ind the hea
d agent recordif the pge 
motions is greater than t
he head agent’510tiOnS  d
atLII store  the  page  motions
  and  1ocation  !nf’orwa
tionend i r discard LAP transactionel
se send the LAP to the head 
agentend j f F、ページサーチ ベージサーチは、プロセサがタスクページを必要とする
場合に始められる。これは、タスクが読取り又は書込み
のためにページを必要とするが、又はページャ−がマー
ジング即ち併合を終了するためにページを必要とする場
合があるがらである。
1、ページサーチ名称 ベージサーチは幾つかのページ名称を必要とする。最初
に、タスクのページ名称は欠陥性タスクの名称子ページ
番号である。(そのベージサーチがページ欠陥に起因す
るものでない場合には、タスクのページ名称はない。)
第二に、要求されたページ名称は、ページ要求を行なう
ページャ−エージェントと関連するページ名称である。
これは、タスクのページ名称であるか、又は何らかの祖
先のページ名称(局所的ページ名称サーチによって見付
は出される)、又は併合用エージェントのページの名称
である。第三に、満足するページ名称は、究極的に要求
者へ送られるページの名称である。これは、要求された
ページ名称であるか、又は何らかの祖先のページの名称
である。
ページ名称は以下の如くにして決定される。即ち、(1
)そのページ内への最後の格納が親タスクからのもので
あった場合には、その満足するページ名称は同一の世代
内にある。このページが存在するが、−層長い名称に対
するページが存在しない。(2)最後の格納が子供タス
クからのものであった場合には、その満足するページ名
称は親であり、且つ該ページを構築するために併合が行
なわれねばならない。何らかのタスクが既に併合動作を
完了させていない限り、子供タスクの記録が存在してお
り、その場合は、該ページが存在する。(3)何れのタ
スクも該ページ内に格納を行なわなかった場合には、プ
ログラムが稼動を開始する前にロードされた主ページが
存在していた場合があり、これが満足するページである
。この様なページがロードされなかった場合、満足する
ページが存在せず、その満足する名称は主ページの名称
である。この様なページが要求され且つ該タスクに対し
て与えられると、新たなページが構築され、それは該主
タスクに属する。それがゼロ型ページである場合には、
該ページはゼロで満たされており、そうでない場合には
、その内容は任意である。該ページが与えられない場合
には、該タスクはアドレス用例外をとる。
要求を発するプロセサにおける情報から満足するページ
名称を決定することは通常可能ではない。
従って、サーチ用ページ名称は、ページャ−が現在サー
チしているページの名称である。初期的には、この名称
は要求したページ名称と同一であり、且つベージサーチ
がページ均等情報に遭遇すると変化する。究極的には、
サーチ用ページ名称は満足するページ名称とマツチする
が、これは、通常、そのページ自身が見付かるか又はマ
ージング即ち併合動作が開始されるまで、知られていな
い。
2、フェイムレベルページサーチ フェイムレベルサーチは、該ページの前の化身に対する
ヘッドエージェントの記録に対するページのフェイムレ
ベルノードにおけるサーチのことである。ページが形成
されると、そのページの存在が該ページのフェイムレベ
ルノードにおいて記される。そのノードにおける記録を
検査することにより、ページャ−は該ページが存在する
か否かを決定することが可能であり、且つ存在する場合
には、マージング即ち併合を行なう必要があるか否かを
決定する。より詳細には、(1)rPGATPAGE 
 EXISTSJステータスを有する問題のページに対
するヘッドページャ−エージェントが存在する場合には
、そのページが存在しており、且つ満足するページであ
る。(2)そのページの前の化身に対する併合活性ヘッ
ドエージェントが存在する場合には、そのページに対ス
る併合要求が開始される。併合が直ぐに完了すると、ペ
ージャ−は完全に併合したページをサーチ用名称の化身
用のタスクページへ変化させる。このページは満足する
ページである。併合が直ぐに完了しない場合には、併合
が完了する時にページサーチが継続する。(3)前の化
身に対するタスク活性エージェントが存在する場合には
、該タスクページが現在の化身に対して再命名される。
アーカイバルページコピーが存在する場合には、その再
命名動作は直ぐに行なわれ、且つ再命名されたページが
要求を出したエージェントへ送られる。そうでない場合
には、アーカイバルベージコビーはヘッドエージェント
へ送られ、別のベージサーチを使用する。このアーカイ
バルベージが到着スると、オリジナルのベージサーチが
継続し、(4)フェイムレベルノードにおける何れの前
の化身に対するヘッドエージェントが存在しない場合に
は、サーチ用ページは親のタスクのページと均等であり
、(5)ヘッドエージェントが存在せず且つサーチ用ペ
ージが主(primag)である場合には、全くページ
が存在しない。
フェイムレベルページサーチ用の擬似コードは以下の如
くである。
To do a rue−level 5earch 
(node N、 page P):ror  eac
h  pger  agent  record  (
A)  at  node  N  ror  any
  Page Pく<−These recorcls
 are on a pagenueT’s agen
t I istニー only one can be
 head、 If there are other
、 non−head−agents、 they a
re“befng deleted−。
if’ the agent is a head a
gent (PGAJ!BAD 5tatus)ret
urn agent A ndir ndfor return、 indicating no fam
e−1evel agent is foundTo 
do fase−1evel processing 
at gent A for page Pc<:−P
 Is the searching page na
se汀agent A knows of Imerg
ing pagesdo roree−merging
 for gent AIf g+erging co
mpletesbui Id haad pager 
agent 「or P −> agent Bif 
P js not primalchange the
 parent agent’s chi Id me
rging pagepointer for A t
o potnt to Bend i r change the rut Iy−merged 
page 1nto a task page for
 PresIJe 1ater page 5earc
hesdelete  the  page  tre
e  for  P<<5tore page 1oc
ation 1nforllatjon in P’s
 agentreturn、 Indicating 
page is merged 5e return、 indicating mergin
g in progressend i r else jf agent A is IIEAD−
EXPECTING−can t let mergi
ng coa+plete yetreturn、 i
ndicating merging in prog
resslse +r the requested page is 
uniquelf  a  task  page  
copy  is  present  (Pc<)b
uild head pager agent ror
 P −> agent Bif P is not 
prima!change the parent a
gent S child merging puep
ointer for A to point to 
Bend 1 「 renase the task page to t
he archival page Pde!ete 
 the  page  tree  for  P<
<return、 indrcfating page
 fs merged5e request the archival page
 P<<return、 Indicating me
rging in progressend i f 1se if the archival page is p
resentrenallle al I page 
copies to Preturn、 indica
ting page is merged1se request  the  archfval  9
age  P((return、 indieatin
g merging in progresSend 
i 「 end i f ndir 3、ページサーチ用に使用されるページャーエジェント
記録フィールド 以下のページャ−エージェント記録フィールド及びステ
ータスビットはページサーチ用に使用される。
[pga  queueJは、キューした動作記録のリ
ストへポイントする。これらは、キューしたreque
st−task−page (タスクページ要求)トラ
ンザクション及び二三のその他の種類のものを包含して
いる。
「pga  requestsJは、エージェントのペ
ージに対する又は該ページの後の化身に対するページ要
求記録のリストへポイントする。
「pga  chill d  task  page
」は、このノードにおける均等子供タスクページに対す
るエージェントのエージェントリストへポイントしてい
る。
[pga  task  5ubnodesJは、どの
サブノードがタスク活性エージェントを有しているかを
表わす。
rPGA  NEW  HEADJは、このエージェン
トが新しいヘッドエージェントであり、それはその併合
用のタスクページを要求し次いでこのノードへ移動(フ
ェイム動作期間中)ことを表わす。
rPGA  TPAGE  EXISTSJは、タスク
ベージが存在することを表わす(そうでない場合には、
それは祖先のタスクベージと均等である)。このフラッ
グはヘッドエージェントに対してのみ有効である。
rPGA  PARENT  PATHJは、このエー
ジェントのページが親タスクのページと均等であること
を表わす。ページサーチが均等情報に遭遇すると、この
ステータスビット及び「pga  chil)d  t
ask  pageJフィールドは、均等タスクページ
用のページ経路を接続するために使用される。
rPGA  LEAF  EXPECTJは、このエー
ジェントがタスクの代わりにそのタスクページを要求し
たことを表わす。
rPGA  HEAD  EXPECTJは、この(多
分前者の)ヘッドエージェントが併合用のタスクページ
を要求したことを表わす。
ページが要求され、且つその要求が直ぐにサービスされ
ない場合には、ページ要求記録が構築され且つ要求リー
フページャ−エージェント記録のrpga  requ
estsJフィールドへ取付けられる。このページ要求
記録は、要求するページ名称に対する化身ポインタを有
している。ページ欠陥を発生したか又はIloを行なっ
ているタスクを識別するスタートしたタスク記録ポイン
タも存在している。特に、I10ページ要求の場合、コ
ールバック手順ポインタ及びパラメータがここに格納さ
れる。最後に、ページ要求フラッグが、書込み又は読取
り要求があるか否かを表わし、且つページ欠陥又はI1
0要求があるか否かを表わす。コードページに対する欠
陥は読取られた要求である。
タスクページを予定するか又はそれを併合するエージェ
ントにおいてサーチが待機する場合には、ページ要求記
録はグローバルページサーチのためにも使用される。こ
れらの記録は、零からスタートしたタスクポインタを有
しており、且つRPRトランザクションに対するポイン
タを有している。
ページにアクセスするタスクには二つの方法があり、即
ちページ欠陥(page  fauj)ts)及びIl
oによるものである。従って、ページの中に二つの格納
を非同期的に行なうことが可能である。しかしながら、
同一のページに対して二つのページ形成があってはなら
ない。これを防止するために、ページャ−は、タスクの
スタートしたタスク記録に取付けた全ての未決の書込み
要求のリストを維持する。書込み要求が受取られると、
それはこのリストに対してチエツクされ、同一のページ
番号に対する別の書込み要求が既に存在する場合には、
最初の格納が発生するまで新たな要求は繰延べられる。
typedef page、、−requestTre
e tstruct page−requestTre
e  *pgr−next;card4T      
     pg r−1)agenuw :1ncar
nationT       *pgr−1nc;t 
ransaet IonT       19g rj
prt ranS :5tarted−taskT  
     *pg+−5it;card4T     
     (tpgr−cal Iback) 0 ;
card4T                   
 pgr  eallparm;bits16T   
       I)gr−flags+婁define
 PGRJRITE−REQ    0XOOOIld
efine PGR10REQ     0xO002
1page−+equestT; 尚、 「pgr  nextJは、このページャ−エージェン
トに対する次のページ要求記録へポイントする。
rpgr  pagenumJはこのページ要求に対す
るページ番号である。
rpgr  1ncJは、このページ要求に対する化身
記録へポイントする。
rpgr  rprtransJは、これがグローバル
ページ要求である場合に、RPRトランザクションへポ
イントする。
rpgr  5ttJは、この要求記録がページ欠陥又
はI10要求に対するものである場合にはスタートした
タスク記録へポイントし、そうでない場合には零である
rpgr  calfl backJは、I10要求に
対し、I10コールバックルーチンへポイントする。
rpgr  calfl parmJは、I10要求に
対するコールバックパラメータである。
rpgr  fl agsJは、局所的ページ要求に対
するソース及びアクセスタイプを表わす。
rPGRWRITE  REQJは、セットされた場合
に書込み要求を表わし、且つそうでない場合には読取り
を表わす。
rPGA  10  REQJは、セットされた場合に
I10要求を表わし、そうでない場合にはページ欠陥を
表わす。
4、ページサーチの開始 ページサーチを開始するためには、ページャ−は、それ
が存在する場合に、サーチが進行する間満足するページ
が継続して存在し且つ満足するページであることを継続
することを保証することが必要である。
タスクページが併合のために必要とされる場合、ヘッド
エージェント記録にrPGA  HEADEXPECT
Jステータスが与えられ、ページサーチが進行中である
ことを表わす。ページサーチが完了し且つ満足するペー
ジを送給するまで、併合は完了せず、且つ該ページは削
除されない。
タスクが該ページを必要とする場合、ページサーチが完
了し且つ該ページを送るまで、該タスクが継続乃至は移
動することが防止される。該タスクも完了することがで
きず、従って祖先のタスクの何れの将来の化身に対して
も併合は完了することができず(その後に、該ページは
削除されているかもしれない)、又該満足するタスクベ
ージが併合用ページへ変化させることもできない。
a、ページ欠陥及び局所的ページサーチページ欠陥には
二つの種類がある。第一に、そのページが該タスクに与
えられない場合には、タスクをページから読取るか又は
ページへ書込むことが可能である。第二に、祖先のペー
ジの場合には、それが読取りアクセスのみを有する場合
にタスクはページへの書込みを行なうことが可能である
。これらの欠陥は、フレームワークによって中止され、
該フレームワークはページャ−ルーチンを呼出して、タ
スクのTCB、ページ番号及びアクセスタイプをパスす
る。
タスクがコードページを要求する場合、主タスク(及び
ページ番号)の名称は、要求されたページ名称を構成す
る。タスクがデータページを要求すると、該要求された
ページ名称は、初期的に、タスクのページ名称である。
次いで、ページャ−かタスクのページ世代テーブル及び
その他の局所的記録をチエツクする。
要求されたページ名称が、PCT内における世代へ短縮
され、該PCTは満足するページ名称の世代へ上限を与
える。このページグループに対してPET内にエントリ
ーがあると、ページャ−はマツチングするページ番号を
捜し出し、且つそれが見付かると、対応する世代番号を
使用する。
ページ世代テーブルをチエツクした後に、局所的サーチ
が行なわれる。ページャ−はエージェント記録を見て、
要求されたページ名称が更に短縮することが可能である
か否かを決定し、且つベジそれ自身を捜し出す。ページ
ャ−が、要求されたページが親ページと均等であること
を推論することが可能な多数の場合がある。即ち、(1
)rPGA  PARENT  PATHJステータス
を有するページに対するエージェントが見付かる場合、
(2)rPGA  TPAGE  EXISTS」ステ
ータスを有することのないページに対するリーフヘッド
エージェントが見付かる場合、又は(3)要求されたペ
ージ名称がプロセサフェイムを有しており、且つそのペ
ージの何れの化身に対するエージェントも存在しない場
合。
これらの条件の何れかが非主ページに対して成り立つ場
合、その要求されたページ名称は1個のジャーム(ge
rm)だけ短縮され、且つこれらの条件は再度テストさ
れる。該名称がブライマル(primal)即ち主であ
る場合には、そのページ番号を有するページは存在せず
、一方、該ページが該タスクに対して与えられる場合に
は、新たなページが形成される。
次の場合には局所的サーチが終了する。(1)新たなペ
ージが形成された場合、(2)満足するページが見付か
った場合、(3)該ページが併合されたことをフェイム
レベル処理が表わす場合、(4)併合処理が進行中であ
ることをフェイムレベル処理が表わす場合、(5)rP
cA  LEAF  EXPECTJステータスを有す
るエージェントが見付かった場合、又は(6)要求され
たページが親ページと均等でないことをページャ−が推
論することができず、且つ上述した条件の何れもが適用
されない場合、である。
最初に、主タスクのページ用のヘッドエージェント記録
が構築され、該ページがゼロで満たされ且つ該タスクに
与えられる。2番目及び3番目の場合においては、該ペ
ージに該タスクが与えられる。4番目の場合においては
、祖先ページと均等な参照ページが存在しないという理
由のみによって、併合は完了しない。該参照ページが到
着し且つ併合が完了した後に、該ページに該タスクが与
えられる。しかし、該ページのフェイムが最初に増加さ
れると、該参照ページが到着する場合に併合処理は完了
することがなく、その代わりに、局所的ページサーチが
繰返し行なわれ、且つグローバルサーチを開始させる。
5番目の場合においては、ページ要求記録が構築され且
つ予定するエージェント記録(rPGA  REQUE
STSJ )へ取付けられる。他のグローバルページサ
ーチの終わりに該ページが到着する場合に該タスクが継
続する。6番目の場合においては、グローバルページサ
ーチか開始される。
ページが見付かり、且つ要求した(更に、満足する)ペ
ージ名称が要求するタスクと同一の世代のものではない
場合には、該タスクは該ページから読取りを行なうだけ
の場合がある。そのページ要求が書込みのためのもので
ある場合には、該ページが該タスクに対してコピーされ
、且つページ形成が行なわれる。
b、ページ要求処理 To process a task’s page 
request (task T、 page num
ber N)ニー this is f’or bot
h page f’ault、; and Ilo r
equestsif this Is a write
 requestif there is anoth
er write request for page
 Nbuild write request rec
ordattach to 5tarted task
 record ror Treturn、 indi
cating page not presentnd
ir ndif P  = task’s page nue (T 十
N)get generation nL+mber 
frow PCTshorten P to that
 generatjonif there are P
ET entries ror P s page g
roupsearch through the PE
T、 5horten P i(’ roundndi
f do a 1ocal 5earch f’or P 
−> gent A−this routine mg
 change the requested pag
e nme P−p ts now the requ
ested page nameif the pag
e Is presentfinish the pa
ge requestreturn、 indicat
ing page 1s presentelse I
f the pge is unavailable’
1mi page is unavai table1
se bui Id page request recor
dattach the page request 
record to A’s PGA−REQUEST
S 1ist−repeat page reques
t″is cat led、 with the pa
ge−request record、 when a
 page arrfvesirthis is a 
vrHe requestbuild wrjte r
equest recOrd。
attach to 5tarted task re
cord ror Tend i f return、 indicating page n
ot presentndif To repeat a task’s page r
eques七−the page request’s
 1ncarnation is 1− the ca
t led mg 5upply a task pa
ge header、 PHIf PHIs n1l do a 1ocal 5earch for pag
e [1] −) gent A、 page hea
der PHend i f 14 PHis non−n11 if the request is a readf
inish the page reqUestels
e −write requestror each 
vrjte request for the pag
e number (on 5tartedtask 
record) f’1njsh the page requestd
elete write request recor
dendif’ end i r delete page request recor
delse if the page is unav
ai fable’XXI;’A page is u
navailat)leelse attach page request recor
d to^’s PGA−REQUESTS 1ist
−thls routine is cal led 
again when a page arrives
end i f C1局所的ページサーチ処理 To do a !ocai 5earch (pag
e name P) :AGAIN ニー TR匪 while P Is non−primal and
 AGAINAGAIN ニー FALSE irpage P is presentreturn
 page p IsTR即 end i r look for task−active 1eaf
 pager agent ror Piran ag
ent is roundif the agent 
has PGA PARENT PATH5tatus
P・−P/ AGAIN ニー TR1JE else if the agent is head
 and doeSnot havePGA TPAG
E EXISTS 5tatusP・−P/ へG^lNニーTR匪 ndif else if’ P has processor 
fasedo fme−1evel 5earch f
or an agentif no agent is
 roundPニーP/ AGAIN ニー TRUE and Ir end i r endwhjle if’ AGAIN is TRUE irpage P ts presentreturn
 page p end i r −P is prjmai 、 and we hav
en’t 5earched ror its age
ntlook f’or task−active 1
eaf pager agent for P+r n
o gent is round and P has
 processor rueuniprocesso
r domaindo a rame−level 5
earch for an agent P<<end
 i f end I f tr page p is presentretur
n agent for P、 indicating
 page is presentelse 1rP 
Is primal 、 has processor
 raIe、 and no agent was f
oundIf’ the page is aval 
table to the taskbuild ne
w pge records for Preturw
 agent ror P、 Indicating 
page is presentelse return no agent、 indicati
ng unavailable pageend ! 
f else  if  the agent  is  
ror  P〈cdo rue−level proc
essingif the page is merg
edreturn agent ror p、 ind
icating page is presentel
se −merging  is  In  prog
ressreturn  sergjng  agen
t、  Indicating  merging  
in  progresSndlf else 1rthe agent (ror P) 
is lear−expectingreturn  
expecting  agent、  indica
ting  global  5earch  In 
 progress(31se start a global page 5earc
h for P (2)return expecti
ng agent、 Indicating glob
al 5earch in progressend 
I f 5、グローバルページサーチ及びRequesttas
k−page)ランザクジョン タスクページが必要とされ且つプロセサ上に存在しない
場合には、グローバルページサーチが開始される。Re
ques t−task−page(RPR)l’シラ
ンクジョン、即ちタスクページ要求トランザクションは
、このサーチを行なうために使用される。それは、上方
向ページ経路動作とシーケンス動作され、且つフェイム
動作に対して休止させることが可能である。
requestjask−pageTree  lrp
r−search−gener: rpr−+equester; rpr−iden; rpr−searchnuc rpr−*rchival  l0eatlOn;rp
r−mot tons ; *rpr−sender: rpr−+etry−evel; rpr−search−type: rpr−sender−type; rpr−f I ags : UNIQUE      0XOOOILOCATIO
N−KNOWN  0XOOO2ARCIIIV^L 
NEEDED 0XOOO4typeder 5tru
ct ard2T node  naseT ard4T ard4T ard4T ard4T pager−agentT ard2T ardlT ardlT bits16T 11define RPR 11define RPR 11deflne RPR 1request  tasJpageT:尚、 「rpr  search−generjは、サーチ用
ページ名称の世代番号を特定し、且つ満足するページの
世代上の上限である。
rrpr  requesterJは、要求するエージ
ェントの名称である。
rrp r  i denJはこのRPRサイクル用の
識別子である。
1”rpr  searchnumJは、要求するエー
ジェントのページサーチ番号であり、後で説明する。
rrpr  archivaj)  l ocat i
n」は、アーカイバルページの可能な位置である。
rRPRLOCATION  KNOWNJ(belo
w)は、このデータが有効であるか否かを表わす。
rrpr  motionsJは、ヘッドエージェント
記録の「pga  mot 1onsJフイールドから
とられる。それは、ページ位置情報が最近ヘッドエージ
ェントに到着したか否かを決定する。
rRPRLOCAT I ON  KNOWNJ(be
fiow)は、このデータが有効であるか否かを表わす
rrpr  5enderJは、送給側のタイプがrR
PRCHILD  PAGE  5ENDER」である
場合に、送給ページャ−エージェントの記録へポイント
する。
rrpr  retry  l evelJは、紅路追
従サーチが失敗した場合にどのノードレベルへ行くかを
表わす。
rrpr  5earch  typeJは、どのタイ
プのページサーチが行なわれているかを表わす。可能な
値は、rRPRPATHBUI LD」、rRPRPA
THF INDJ、rRPRPATHFOLLOWJ、
rRPRPATHFAILJ、rRPRARCHI V
ALJ及びrRPRARCHIVAL  FAILJで
ある。
rrpr  5ender  typeJは、最後にそ
のトランザクションを送ったページャ−エージェントに
関する何かを表わす。可能な値は[RPRCHILD 
 PAGE  5ENDERJ、rRPR5UBNOD
E  5ENDERJ及びrRPR0THER5END
ERJである。
rRPRUNrQUEJは、それが存在する場合に、要
求されたページがユニークであることを表わす。
rRPRLOCATI ON  KNOWNJ は、r
rpr  archivaI 1locationJ及
びrrpr  mot 1onsJデータが有効である
ことを表わす。
rRPRARCHIVAL  NEEDEDJは、アー
カイバルページコピーが見付は出され且つ送給されるべ
きことを表わす。
RPR)ランザクジョンも、該トランザクションヘッダ
のタスク及びノード名称フィールド内に含まれるページ
名称部分を有している。このページ名称は、rrpr 
 5earch  generJにおける世代へ短縮さ
れる場合には、サーチ用ページ名称である。
ページサーチの期間中、サーチ用ページが子供タスクの
ページと均等であることをページャ−が発見する場合が
ある。そのことが発生すると、べ−ジャーは、時々、R
PRトランザクションテールにおける名称を子供タスク
のものへ長いものとさせ、且つ該サーチを継続する。こ
のことは、サーチ用ページ名称に影響を与えるものでは
ない。
なぜならば、子供ページが実際に均等である場合には、
該ページは存在しないからである。rRPRMIN  
GENERJフィールドは、サーチ用ページ名称の世代
を表わす。(この名称の長尺化は、該子供ページに対す
る適切な予定のエージェントを捜し出す期待で行なわれ
る。この点に関しては、「グローバルページサーチの終
了」のセクションを参照するとよい。) b、グローバルベージサーチの終了 以下の条件が成立する場合にグローバルベージサーチが
終了する。即ち、(1)新たなページが形成された場合
、(2)満足するページのコピーが見付かった場合、(
3)該ページが併合されたことをフェイムレベル処理が
表わす場合、(4)該ページが使用可能であることが決
定された場合、(5)併合が進行中であることをフェイ
ムレベル処理が表わす場合、(6)該タスクページを予
定するエージェントが見付かり、その場合に該ページサ
ーチが待機することが可能である場合。
最初の三つの場合においては、該ページは要求側へ送給
される。4番目の場合においては、使用不可能であるこ
とを表わすトランザクションが要求側へ送られる。5番
目の場合においては、ページサーチがフェイムレベルエ
ージェントにおいて待機し、それは該ページの前の化身
に対するヘッドエージェントである。RPRは、マージ
ンが完了した場合に再処理される。6番目の場合におい
ては、デッドロックが発生しない限り、グローバルベー
ジサーチが待機する。RPR)ランザクジョンを有する
ページ要求記録が構築され且つ予定するエージェントに
取付けられる(rPGA  REQUESTSJ )。
デッドロックを防止するために、ページサーチ番号はペ
ージャ−エージェントのrpga  searchnu
mJフィールド及びRPRのrrpr  search
numJフィールド内に格納される。ページャ−エージ
ェントに対してグローバルサーチが開始されると、整数
が発生され且つエージェント記録及びRPR内に格納さ
れる。グローバルベージサーチは、RPRのページサー
チ番号が該エージェントのページサーチ番号よりも大き
い場合にだけ、予定するエージェントにおいて待機する
ことが可能である。該サーチが待機することができない
場合には、それは他のところで継続する。
ページサーチ番号は、プロセサのクロックの中間から3
2ビツトをとることによって発生される。
後のサーチが前のサーチに対する予定するエージェント
にしばしば遭遇するので、このことは本手法を効率的な
ものとするように思われ、且つここで待機することが可
能である。アーカイバルページコビーが必要とされ、且
つ通常のページが見付かった場合には、あたかも何れの
ページも見付からなかった如くのようにしてサーチが継
続する。
C,グローバルベージサーチのスタートページャ−は、
次の如き理由に対してグローバルベージサーチをスター
トさせる場合がある。即ち、(1)親タスクの併合用ペ
ージへ変更されるべくヘッドエージェントにおいてタス
クページが必要とされる場合、(2)併合を完了するた
めにヘッドエージェントにおいて参照ページが必要とさ
れる場合、(3)ページ再命名を開始するためにヘッド
エージェントにおいてアーカイバルページコビーが必要
とされる場合、(4)タスクがページ(ページ欠陥又は
Iloの何れが)を要求し且つ局所的サーチがページも
予定するエージェントも見出さない場合。
グローバルサーチが開始すると、要求するエージx ン
トi: ハr P G A  HE A D  E X
 P E CT Jステータス(1乃至3の場合)又は
rPGA  LEAF  EXPECTJステータス(
4の場合)の何れかが与えられる。サイクル記録が構築
され、それは要求するエージェントへポイントする。こ
のことは、ページが到着する場合にエージェント記録を
見付けるために使用される。Request−task
−page (タスクページ要求)トランザクジョンが
構築され、且つ該フィールドは以下の如くにセットされ
る。
[rpr  5earch  generJは、要求し
たページ名称(それは、初期のサーチ用ページ名称であ
る)の世代である。ページ欠陥及びI10要求の場合、
これは局所的ページ名称サーチによって決定され、その
他のページ要求の場合には、それは要求するエージェン
トのページの世代である。
「rpr  requesterJは要求するエージェ
ントの名称である。
rrpr  1denJはRPRサイクル用の識別子で
ある。
「rpr  searchnumJは、現在のクロック
の中間から32ビツトを抽出することによってセットさ
れる。同一の値が、ページャ−エージェントの[pga
  searchnumJフィールド内に格納される。
このフィールドは、該サーチの経路追従部分の期間中に
使用される。
「rpr  archivaJ  l ocation
Jは、該サーチがヘッドエージェントにおいて開始し且
つ該タスクページが存在する場合にのみセットされる。
該データは、ヘッドエージェント記録からとられ、且っ
rRPRLOCATI ON  KNOWNJフラッグ
がセットされる。
そうでない場合には、該フラッグはクリアされる。
rrpr  mot 1onsJは、該サーチがヘッド
エージェントにおいて開始し且つ該タスクページが存在
する場合にのみセットされる。該データは、ヘッドエー
ジェント記録からとられ、且つrRPRLOCATIO
N  KNOWNJフラッグがセットされる。
rrpr  5enderJは、要求するエージェント
記録に対してポイントする。
rrpr  retry  l evej!Jはゼロに
セットされる。
rrpr  5earch  typeJは、「グロー
バルページサーチ状態」セクションにおいて説明した如
く、初期のサーチ状態ヘセットされる。ページ欠陥の場
合、これはrRPRPATHBUILDJであり、アー
カイバルベージが必要とされる場合には、それはrRP
RARCHIVAL  5EARCHJである。併合に
関しては、該ページが存在する場合には、それはrRP
RARCHIVAL  5EARCHJテあり、該ペー
ジが存在しない場合には、それはrRPRPATHBU
I LDJである。
要求されたページが該タスクによって変更されることが
可能である場合にのみrRPRUNIQUEJがセット
される。これは、要求されたページ名称がタスクのペー
ジ名称である場合に、ページ欠陥及びI10要求に対し
てのみの場合であることがある。
ページ欠陥及びI10要求の場合には、該トランザクシ
ョンヘッド内のタスク名称が、局所的ページサーチによ
って発生された要求されたページ名称から派生される。
その他の要求に対しては、タスク名称は要求するエージ
ェントのページ名称から派生される。
該トランザクションが構築されると、それはどこか他の
ところへ送給されるか又は処理される。
ページ欠陥の場合、送給側のタイプがrRPR3EBN
ODE  5ENDERJへ送られ、且つRPRがスー
パーノードへ送られる。(該エージェントがプロセサフ
ェイムを有している場合には、該局所的サーチは何か別
のことを行なっている場合がある。)他の経路構築要求
に対しては、サーチ用ページ名称が1ジヤームだけ短縮
され(以下の如く)、送給側タイプがrRPRCHI 
LDPAGE  5ENDERJへ送られ、且つ該RP
Rが同一のノードで処理される。アーカイバルサーチの
場合、送給側のタイプがrRPR0TAGER5END
ERJへ送られ且つ該RPRが「rpr  archi
vafJfiocati。
n」プロセサ上のり−フノードへ送られる。
d、グローバルベージサーチ状態 グローバルページサーチは6個の状態、即ち経路構築、
経路捜索、経路追従、経路フェイル、アーカイバル及び
アー力イバルフエイルの6個の状態のうちの何れか一つ
にあることが可能である。
(i)Path  Buifi d (経路構築)タス
ク活性状態でないエージェントからグローバルサーチを
開始する場合、ページャ−は、そのノードから直ぐにペ
ージ経路を構築する。経路構築(path−bud! 
d)状態の期間中、RPRがノードからスーパーノード
へ移行し、ページャ−がタスク活性エージェント記録を
見付は出すか又はフェイムレベルに到達するまで、ペー
ジャ−エージェント記録を構築し且つタスクページポイ
ンタを挿入する。rRPR5ENDERTYPEJフィ
ールドが、どのタイプのポインタを挿入すべきかを表わ
し、rRPR5ENDERJは、子供タスクページポイ
ンタに対して、rsending (送給)」エージェ
ントへポイントする。
タスク活性エージェントが見付かると、最後のタスクペ
ージポインタが挿入され、且つ該経路は完成する。該サ
ーチは経路捜索(path  find)状態へ変化す
る。その後は、rRPR5ENDERTYPEJ及びr
RPR5ENDERJフイールドはもはや必要とはされ
ない。
フェイムレベルに到達し且つサーチ用ページに対するタ
スク活性エージェントが存在しない場合には、ページャ
−がフェイムレベル(fame−IevefI)サーチ
を行なう。その結果は次に何をなすべきかを決定する。
即ち、(1)フェイムレベルサーチが何れのエージェン
トも見付がらなかったことを表わす場合には、ページャ
−エージェント記録が構築され、且っRPR送給側に対
してのタスクページポインタが挿入される。従って、サ
ーチ用ページ名称がブライマル(prima、9)即ち
主である場合には、そのページ番号を有するページは存
在しない。そのページが該タスクに対して与えられる場
合には、該主ページに対するヘッドエージェント記録が
構築され、且つ新たなページが要求側エージェントへ送
給される。該主ページが得られない場合には、rpag
e  unava 1l)ab I eJ表示が要求側
エージェントへ送給される。しかし、該サーチ用ページ
名称が主ではない場合には、RPRにおけるページ名称
は親ページの名称へ変更される(rrpr  5ear
ch  generJがデクリメントされる)。
又、新たなサーチ用ページはユニークではなく、その位
置は知られておらず、且つアーカイバルベージコピーは
必要とはされず、従ってこれらのビットはクリアされる
。RPRは子供ページ送給側のタイプが与えられ、且つ
同一のコードにおいて再処理され、(2)フェイムレベ
ル処理が該ページが併合されていることを表わす場合に
は、そのページに対するページャ−エージェント記録が
構築されている。ページャ−は該送給側に対してタスク
ページポインタを挿入し、且つ要求側エージェントへ該
ページを送り、(3)フェイムレベル処理が併合が進行
中であることを表わす場合には、ページサーチはその併
合用エージェントにおいて待機する。ページ要求記録が
構築され且つ該ニジエンドのrPGA  REQUES
TSJリストへ取付けられる。併合が完了する場合又は
ツユイム動作が発生する場合に、該経路構築状態におい
てページサーチが再開する。
(ii)経路構築の後(After  Path−bu
ij?d) 該サーチが経路構築状態にない場合には、ページャ−は
、最初に、サーチ用名称のタスクページを捜す。見付か
った場合には、それは満足するページであり、それは要
求側へ送られ且つ該サーチは終了する。しかし、そのペ
ージが通常のものであり、且つアー力イバルページが必
要とされる場合には、該サーチは、あたかもページが見
付からなかったの如くにして、継続される。
(iff)経路捜索(Path  Find)及び経路
追従(Path  fofIjlow)経路捜索状態の
期間中、ページャ−は適切なtask−page−ex
pecting  agent(タスクページ予定エー
ジェント)又は追従すべきサブノードポインタを捜す。
「適切な」タスクページ予定エージェントは、rrpr
  searchnumJが「pga  search
num」よりも大きい場合のものである。
最初に、RPRベージ名称のエージェントが該タスクペ
ージを予定しているか否かをページャ−がチエツクする
。予定したものでない場合には、ページャ−は、予定し
ている子供ページのエージェントを捜そうとする。その
ことを失敗すると、子供ページエージェント自身の何れ
かが子供ページポインタを有する場合には、ページャ−
が予定する孫ページのエージェントを捜索する。適切な
タスクページ予定エージェントが見付かった場合には、
該サーチは、到着すべきページに対するそのエージェン
トにおいて待機する。
適切な予定エージェントが見付からない場合には、ペー
ジャ−は追従すべきサブノードポインタを捜索する。こ
の場合にも、それはRPRベージ名称のエージェント、
子供ページのエージェント、及び孫ページのエージェン
トをこの順番でチエツクする。特定のエージェントから
一つを超えたサブノードポインタがある場合には、ペー
ジャ−は、各々に等しい確率を与えて、ランダムに一つ
を選択する。
現在のノードにおいてタスク活性エージェントが存在し
ない場合には、ページャ−は、フェイムレベル処理を行
なうか、又はスーパーノードにおいてページサーチを継
続して行なう。フェイムレベルにおいて、処理は経路構
築に関してのものであるが、何らのエージェント記録も
経路ポインタも構築されることはない。フェイムレベル
サーチがエージェントを見付けなかった場合、サーチ用
ページ名称が短縮され、且つページャ−は再度捜索を行
なう(該ページ名称はブライマル即ち主であることはな
い)。
経路追従状態は経路捜索に類似している。この場合、サ
ーチがページ又は予定リーフエージェントへ到達するま
でタスクページ経路を追従する。
この場合にも、ページャ−は、子供ページポインタが存
在する場合に、rj7ooks  ahead(先の見
越し)」を行なう。(経路捜索と経路追従との間の唯一
の差異は、経路追従の場合には、[送給側(sende
r)Jは、スーパーノードか又は親ベーンのエージェン
トの何れかであり、従ってページ経路は送給側へ到達す
ることがないという点である。) 経路追従状態の期間中、タスク活性エージェントを有す
ることがないか、又はページサーチが待機することが不
可能な予定エージェントを有するノードに到達すること
が可能である。(最初の状態は、例えば、ページコピー
が送られたか又は削除された場合に発生することが可能
である。スパーノードは、究極的にはそのことについて
知らされる。「タスクページ運動及び削除」のセクショ
ンを参照するとよい。)このことが発生すると、ページ
サーチが再度試みられ、状態が経路操作へ変化し、RP
Rの再試行レベルが増加され、且つ該トランザクション
がそのレベルにおけるノードへ送られる。必要な場合に
は、該ヘッダにおけるタスク名称が、そのフェイムクラ
スタが再試行ノドを包含する最も少ない祖先タスクへ変
化される。
しかし、再試行レベルかサーチ用ページのフェイムレベ
ルよりも大きい場合には、経路サーチがフェイル(失敗
)する。即ち、サーチは経路フェイル状態へ変化し、該
名称がサーチ用ページのタスクへ変化され、且つ該トラ
ンザクションがそのフェイムレベルノードへ送られる。
該再試行レベル特徴が実行されて、カーネル作業の分散
を助ける。それがない場合には、フェイルするサーチが
直ぐに経路フェイル状態へ変化し、且つフェイムレベル
ノードへ進行する。該ページに対して多くの要求が存在
する場合には、この様な多数のフェイル(失敗)が存在
する場合があり、且つフェイムレベルノードはカーネル
作業でオーバーロードされることとなる場合がある。こ
のことは、再試行レベルであっても発生する場合がある
が、それ程頻繁ではなく、且つそれ程深刻なものではな
い。
(iv)経路失敗(Path  Faill)経路フェ
イル状態は、経路サーチ(状態を捜し出し且つ追従する
こと)が該ページを見付は出すことを失敗した場合に使
用される。それは、サーチが一群のノードを介して永久
的にサイクル動作をすることから防止するために必要で
ある。この状態の期間中、ページサーチはサーチ用ペー
ジのフェイムレベルへ移り、且つ該ページが存在するか
否かをチエツクする。存在しない場合には、該サーチは
経路捜索状態へ変化し且つ上述した如く継続する。該ペ
ージが存在する場合には、該サーチはアーカイバルサー
チ状態へ変化する。
(V)アーカイバルサーチ及びアーカイバルフエイル アーカイバルサーチ(archival 5earch
)は、該ページのコピーを見付は出すために、ヘッドエ
ージェント記録内のページ位置情報を使用する。それは
、該サーチが、サーチ用ページが存在し且つ満足するペ
ージであると決定した場合にのみ使用される。
RPRl−ランザクジョンがサーチ用ページのフェイム
レベルノードへ送られる(既にそこに存在しない限り)
。ページ位置及び運動カウントデータが、ヘッドエージ
ェント記録からRPR内にコピーされ、且つrRPRL
OCATION  KNOWNJフラッグがセットされ
る。次いで、該トランザクションが、アーカイバルコピ
ーのプロセサへ送られる。通常、ページコピーがそこに
あるが、ない場合には、ページサーチがアーカイバル失
敗状態へ変化し、且つフェイムレベルノードへ帰還する
アーカイバル失敗状態においては、ページャ−が、RP
Rの運動カウントをエージェントの運動カウントと比較
する。それらが異なる場合には、新たな位置情報が到着
し、それがRPR内にコピーされ、且つ該トランザクシ
ョンが再度アーカイバルサーチ状態で該ページへ送られ
る。それらが同じである場合には、新たな情報は到着せ
ず、該情報が到着するまでRPRはそこでキューされる
([タスクページ運動及び削除、locatearch
ivaj)−pageJのセクションを参照するとよい
)。
e、RPR処理 To process an RPRat the r
ue 1evel (searching page 
P) :do fase−1evel 5earch 
for PIfanagentforP<<l5rou
nddo 「aae−1ebel processin
gif page P Is merged14 pa
th−build modeInsert page 
pointer from P’s agent to
 5ender(as below) ndlf deliver page P to request
erdiscard RPRtransactione
lse −merging is 1n progre
ssbuild page request reco
rd with RPRattach to merg
ing agent、 PGA−REQLJES’円1
istndif return、 Indicating proces
sing Is done (for nov)els
e If P Is primalIf P Is a
vailable build a page nue record a
nd a head pager agent for
 PI「path−build mode insert page pointer to 5e
nder (as below)end i r send a new page to the re
quester1se send an unavailable indic
ating to the requesterndi
f discard RPRtransactionret
urn、 indicating processig
 1s done1se return、 indicating P is e
quivalent to P/−the RPRis
 processed again、 l++nedi
atelyndir To begin a global page 5e
arch for searching page P
 at 1eaf node N:build 1ea
f pager agent record for 
Pgive pager agent PGA−LEA
F−EXPECT 5tatusbuild cycl
e recordbuild RPRtransaet
ionsearch type ニー path bu
ildsender type ニー 5ubnode
send RPRto superntxieTo b
egin a global page 5earch
 for searchlng page P at 
fame−levelglve agent A PG
A−HEAD EXPECT 5tatusbuild
 cycle recordbulld RPRtra
nsaction14 the task page 
exists (PGA−TPAGE−EXISTS 
Is 5et)search type ニー arc
hlvalsender type ニー other
send RPRto page locatlona
gent A: 5horten RPRpage naIle (as
 below)If agent A has PGA
 PARENT PATH5tatussearch 
type ニー path(ind5e search type −path−but 1d end I r sendertypeニーchildpagesend
er −) agent^ process RPRat agent A s n
odend14 To In5ert page pointer to
 5ender:If 5ender type is
 5ubnode’or″5ubnode bit 1
nto PGA−TASK 5UBNODESelse
 −5ender type Is chl ld p
age−PGA PARENT PATHmust b
e clear In the 5enderInse
rt a chl Id task page pol
nter to the 5enderset PGA
 PARE)JT PATHIn 5enderndl
f To 5aarch for an expectin
g agent or a 5ubnode poin
ter (page P、 gent^):5UB−A
GENT ニー ’no agent−If gent
 A Is expecting the task 
page、 and its searchrum I
s 1essthan the RPRs 5earc
hnu*return agent A、 wait 
here Indicatorndjf iragent A has 5ubnode poi
nters not Iaadlng to the 
5ender nodeSUB AGENT ニー a
gent Antllr for aach chi ld page agen
t Cor agent AIfagent CIs 
expectIng the task page、 
and its saarchnum l5ess t
han the RPR’s searchnumre
turn agent C,waft here In
dicatorend i r If 5IJB−AGENT Is  no agen
t” and agent Chas 5ubnode
 pointersnot leading te t
he 5ender nodeSUB−AGENT ニ
ー agent Cend i r ndfor ror each chi Id page agen
t Cof agent^for each chi 
Id page agent GCor agent 
Cif agent CIs expecting t
he task page、 and its saa
rchnumIs 1ess than the RP
Rs searchnumreturn agent 
GC,wait here 1ndicatorndi
f IfSLIB−AGENT Is  no agent
″and agent GChas 5ubnodep
ointers not Ieadtng to th
e 5ender nodeSUB−AGENT ニー
 agent GCend i r end i 「 ndror IfSUB−AGENT Is  no agent−
return no agent 1ndicator
Se returnagentSLIB−^GENT、5ub
nodeIndicatorend I r To 5horten the RPRpage na
me (P):If the P s generat
lon Is equal to RPR−1IIIN
 GENERdecresent RPRMIN GE
NERf−NkKE ニーTRUE clear [?PRUNIQLJE、 1iPRユ美
^Tl0N KNOWN、 andRPR−^1?C)
IIV^L−NEEDED r l agsndlf P・−P/ To retry the path 5aarch 
(at node N):retry 1evel ニ
ー ll1ax(retry 1evel + l、 
node N 1evel + 1)jf the r
etry 1evel is 1ess or equ
al to the searchlng page’
s Caneve 1 search type ニー path(lndwh
ile the retry 1evel Is gr
eater than the RPRpage na
me’s ruePニーP/ ndlr send RPRto the retryevel 
node else P ニー the searchlng page n
amesearch type ニー path−fa
llsend RPRto the searchin
g page’s rue 1evel nodend
lr ProcessRPR(RPRpage name P
、 ncxle N) :find the sear
ching pageIncarnation Sle
peaj If Sl has changed and not
 In path−build 5tatelook 
for the searching pageIf 
found、 and It Is archlval
 or the archlval copy isn
’tn eed ed deliver page to requester
discard RPRtransactionetu
rn end I r end i r 17EPR(X套追ニー FALSE sQarch for task−active pa
ger agent for P at N −> a
gent AIf an gent Is round
if path−build 5tateinsert
 page pointer to 5ender (
as abobe)search type ニー p
ath−findsender type :” ot
herend i f irpath(ind or path(ollcw 
5tatesearch for a 5uitabl
e expectlng agent or a 5u
bnodepointer −> agent B (
as above)i「a 5uitable exp
ecting agent Is roundbui 
Id page request record wi
th RPRattach to agent B’s
 PGA−REQIJPSTS I isteturn else 1ran agent with 5ubn
ode pointers is foundsear
ch type ニー path(of lowsel
ect one of’ B s task−acti
ve 5ubnodessend the RPRto
 the 5ubnodeeturn end i r end i r −there’s no path to fat l
owj4 path−flnd 5tateif ag
ent A has PGA PARENT PATH
5tatusshorten RPRpage nas
e (as above)REPROCESS ニー 
TRUE continue else if not at P’s f’ue−l
evelsend RPRto 5upernodee
turn else IfP is the searching
 page name and that pagee
xists (PGA−TPAGE−EXISTS i
s set in A)search type ニー
 archival−searchelse jf p
age P existsP ニー the sear
ching page ntaecont i nue 5e shorten RPRpage nue (as a
bove)REPROCE≦ば3ニーTRtJE continue 1dir else jr path−follow 5tate
retry the path 5earchetur
n ndif if path(ail 5tate if at fame 1evel irthe page exists (PGA−TP
AGE−EXISTS Is set>5earch 
type ニー arch1val1se search type ニー path rInds
horten the RPRpage nas+ec
ontinue (2) ndir 1se send RPRto fue 1eveleturn ndjf end j f irat foe 1evel if archival(ail 5tate、 RP
R−^RCHIV^L−KNOWN is set。
and RPRMOTIONS equals PG^
MffrlONSqueue RPRon agent
 unti l a LAP tansactiona
rflves or a raIle 1ncreas
e occurseturn ndif copy motions and 1ocation
 data 1nto RPRset RPR−^f?
cHIVAL−KNOWN rtagif the p
age 5bould be here (aecor
djng t。
RPRARCHIV^L LEGATION)queu
e RPRon agent A until a L
AP transactionarrives or 
a fase 1ncrease occurs1se search type ニー archjvalse
nd RPRto page 1ocationndi
T 1se irRPRARCHIV^L KNOWN is se
t andthe page 5hould be h
eresaarch type ニー archjva
l(ailend汀 5end RPRto f’a+ne−levelen
d ] r else 1rnode N is P’s raII
le−level nodeprocess RPRa
t the raIle 1evel (as abo
ve)if P is equivalent to 
P/if path−build 5tatebuII
d pager agent record for 
P −> agent Aln5ert pge po
tnter to 5ender (as above
)sender type :” child pag
esender :” agent A end+ f shorten RPRpage nue (as a
bove)REPI?OCF′ssニーTRLJEen
cl f f 1se irpath−build 5tatebui ld 
pager agent record for Pi
nsert page pojnter to 5en
der (as above)sender type
 ニー 5ubnodesend RPRto 5up
ernodeelse 1rpath−fjnd 5t
atesend RPRto 5upernodeel
se if path−follow 5tatere
try the path 5earch1se 1f the page 5hould be her
esearch type ニー archival−
「a11ndif send RPRto fue 1evelend i
 r endif’ until REPROCFSS is PALSEf
、RPR/フェイム相互作用 併合が進行中であるので、ページサーチはフェイムレベ
ルノードにおいて待機する場合がある。
併合が完了する場合に、該サーチは通常継続する。
フェイム増加動作が発生すると、併合は異なったノード
で完了する。
RPRトランザクションがフェイムレベルノードにおい
てキューする場合があり、アーカイバルページの位置に
関する情報を待つ場合がある。RPRは、通常、LAP
 )ランザクジョンが到着する場合にキューから外され
る。フェイム増加動作が発生すると、LAPが新たなフ
ェイムレベルノードへ送られる。
何れの場合においても、ページサーチを再開させるイベ
ントは新たなフェイムレベルノードにおいて発生する。
従って、フェイム増加動作が発生する場合、ページサー
チは直ぐに再開し、それは新たなフェイムノードに究極
的に到達する。
6、ページデリバリ(page  defl 1ver
y) 満足するページが見付かった場合には、それはそれを必
要とするプロセサへ送られる。幾つかの検討すべき場合
がある。即ち、(1)該ページがユニークである場合に
は、見付かったページコピーはアーカイバルであるに違
いない。送給したページコピーはアーカイバルステータ
スを得、且つ局所的コピーは削除される。(2)該ペー
ジがユニークでない場合で且つ見付かったページコピー
が通常のものである場合には、送給したページコビーも
通常のものであり、且つ局所的コピーは保持される。(
3)該ページがユニークなものではなく且つ見付かった
ページコピーがアーカイバルであると、ページャ−は、
送給したコピー又は保持したコピーの何れかがアーカイ
バルであるものとする選択を有している。この実行は、
見付かったコピーがページのヘッドエージェントと同一
のプロセサ上にない限り、送給したページと共にアーカ
イバルステータスを送給する。
タスクページがユニークであるかないかを決定するため
に、ページャ−は、そのページのタスクが稼動中である
かないかを知らねばならない。このことは、単に、満足
するページ名称の世代番号が該タスクの世代番号と等し
いか否かという場合である。併合を行なうためにページ
が必要とされる場合には、それはユニークである。なぜ
ならば、それが併合用ページに変化される場合、該タス
クは終了し、且つそれが参照ページとして必要とされて
いる場合、該タスクは終了するか、又は新たな化身にお
いて実行を再開する。RPR)ランザクジョンは、rR
PRUNI QUEJビットを有しており、それはユニ
ークであることを表わしている。
a、Transfer−requested−page
 (要求ページ転送)トランザクション要求されたペー
ジは、transfer−requested−pag
e (TPR))ランザクジョンで要求側エージェント
へ送給される。TPRトランザクションは、又、満足す
るページが存在しておらず且つ要求側が新たな主ページ
を形成するか又は得られないことを要求側タスクへ信号
を送るかの何れかをすべきであることを表わすために使
用される。
(i)TPR構成 typedertransfer−+equested
−pageTree (card4T  tpr−rp
r−+den;card4T   tpr−wotlo
ns;bits16T tpr、−rlags;l t
ransrer−reqUestea−pageT;尚
、 [tpr  rpr  1denJは、RPR)ランザ
クジョンからとられ、このTPRを完了するページサー
チサイクルに対する識別子である。
rtpr  mot 1onsJは、そのページがアー
カイバルである場合(TAP )ランザクジョンの場合
の如く)、このページが移動した回数を有している。
jtpr  fffagsJは、満足するページが祖先
タスクのページ(要求されたページのタスクと相対的に
)であるか否かを表わす。それは、又、該ページコピー
が宛て先において形成されるべきであるか否かく新しい
ページに対して)、新しいページがゼロで満たされるべ
きであるか否か、該ページがアーカイバルであるか否か
、及び該ページが得られるか否かを表わす。そのフィー
ルド値はrTPRANCESTORJ、rTPRNEW
  PAGEJ、rTPRZFILLJ、rTPRAR
CHIVALJ及びrTPRUNAVAILABLEJ
である。
このTPR)ランザクジョンは、又、該トランザクショ
ンヘッダのタスク及びノード名称フィールド内に含まれ
ているページ名称部分を有している。又、新たなページ
又は得られないことが表示されない限り、データページ
部分が存在している。
(iI)ページデリバリ処理 To 5end page P to the req
uester:build TPRtransacti
onattach page copy to TPR
lf page P is uniquesent p
age is arch1va!increment 
page motionsde+ete 1ocal 
[e copyelse if page P is 
archivalif’ P’s head agen
t maps onto this processo
rlocal copy remains archl
valsent copy is ordinary1
se local copy bectyaes ordin
arysent copy is archivalI
ncrement  page  IOtjOnSen
djf else both copies are ordinarye
nd i r send TPRto requesting gen
tTo 5end a new page P to 
the requester:but ld TPRt
ransactionset page motion
s to 0nll!set TPR−NEW−PAG
E bitif page P is a zeroe
d pageset TPtjZFILL pagee
nd i r send TPRto requesting age
ntTo 5end unavai fable in
dicating to the requester
:bui Id TPRtransactionset
 TPR[JN^■^ILABLE bitsend 
TPRto requesting agent(Il
i)TPR/フェイム相互作用 ヘッドエージェントが併合のためにページを要求し、且
つフェイム増加動作が該ページが到着する前に発生する
場合、該エージェントは新たなフェイムレベルノードへ
移動しており、且つ該ページは古いフェイムレベルノー
ドへプリバー、即ち送給される。必要とされる場合に該
ページを移動させるためにmove−page−to−
head(ヘッドへのページ移動)トランザクションが
使用される。
7、ページ到着 TPR)ランザクジョンがページをエージェントへ持っ
てくると、ページャ−は、そのページに関して何をすべ
きかを決定せねばならない。このことは、なぜページが
要求されたか及びその後回が起こったかに依存する。即
ち、(1)別のコピーが最初にそこに到達しない限り、
該ページが局所的ページャ−記録内に挿入される。(2
)次いて、サイクル記録が見付けられる。この記録は、
要求されたページに対する予定エージェントへポイント
している。そのページが満足するページと異なる場合に
は、no t e−page−equ 1vBl en
ce (ページ均等注意)トランザクションを使用して
、タスクページ経路が再構築される。(3)該ページが
アーカイバルである場合には、その新たな位置がヘッド
エージェントへ送られる。(4)満足するページが要求
されたページでない場合には、ページャ−は、満足する
ページのエージェントに対して現在のページサーチを再
開する場合がある。しかし、局所的ページ要求がある場
合には、少なくとも一つが残されねばならず、従ってそ
のエージェントのページサーチは、タスクが終了するか
又はそのページ内に格納する前に完了することが可能で
ある。(5)要求側エージェントの化身用のページ要求
が存在する場合には、それらは再開される。(6)要求
側エージェントがrPGA  HEAD  EXPEC
TJステータスを有しており且つ併合活性である場合に
は、併合が継続される。該エージェントがもはやヘッド
エージェントでない場合には、フェイム増加が行なわれ
ねばならず、従って、move−page−to−he
ad)ランザクジョンを使用して、該ページは新たなヘ
ッドエージェントへ送られる。
ページ要求を再開する場合に、気を付けるべきユニの場
合がある。即ち、(1)ページサーチが子供タスクペー
ジ経路を追従し且つページ形成によって均等性が破られ
た後に予定エージェントに到達する可能性がある。この
場合には、プリバーされた即ち送られたページは満足す
るページではなく、且つページサーチは継続して行なわ
れねばならず、RPRは再度処理される。(2)TPR
トランザクションがページを送り且つページサーチサイ
クルを完了する場合、現在の化身に対する全ての待機中
のページサーチが再開される。しかし、TAP)ランザ
クジョンがページを送ると、一つの局所的ページ失敗は
そうではない。このことは、ページサーチが進行中に、
全てのタスクが完了することを防止する。(3)そのタ
スクページはユニークであるかもしれない。ページ要求
記録は、失敗するタスクの世代番号を、rpgrstt
Jポインタか又はRPRトランザクションのrrpr 
 5earch  generJフイ−ルドを介して表
示する。その世代番号が該ページの世代番号と等しい場
合にのみそのページはユニークである。
a、TPR処理 ProcessTPR(page P、 node N
) :find the page 5earch c
ycle record and requestin
g agent Rlrthe requested 
page is not the satlsfyig
 pagenote page equjvalenc
eend i f ir new page ereate page copy Pirzero−
fil led (TPRZFILL)zero rl
ll P end i f end I f jnsert page copy PIf the 
page copy is archjvalsnd 
page 1ocation jnrormatjon
 to the head agentend i r ir the requested page is 
not the satisfyIng pagere
sINe current page 5earche
s for agent Andlr resume current page 5earc
hes for agent RIf agent R
Is head−expecttngIf agent
 RIs not a head agent (ru
e Increase happend)send p
age p to the neV head age
nt14 agent Rhas PGA−5END−
MPAGE 5tatusdo pearormler
glng for Rend14 else If agent Rknows or m
erglng pages or is changi
ng Itstask  page  to  a m
erging  page of  the  par
ent  taskdo perform−sergl
ng for Re1sθ Incarnat fan resume 1ater page 5earche
s for agent Rend14 ndlr clear l’GA−11EAD−EXPECT、 
PGA−LE^F EXPECT 5tateS In
 agent RIf agent RIs no l
onger actlvedelete the ag
ent recordndir delete the RPRcyclediscar
d the TPRtransactlonTo re
sume current pge 5earches
 ror an agent (page P、 ag
ent R,!TEPONE):for each p
agerequest on gent R14the
 page request’s Incarnati
on differs rrca agent R’5
Incarnation put the page request back
 on the agent’s 1istelse 
If the request Is a page 
fault or Ilo requestIf th
ere Is a page and KEEPONE
 Is PAL、5Erepeat the pue 
requestdelete the page re
quest recordelsθ put the page request back
 on the agent’s I 1stKEEP
ONEニーFALSE ndlr 1se If the RPR’s MIN GENERfie
ld l5ess than the page sg
eneration number detach the RPRrroa the pa
ge request rocordRPRpue n
uf3 :” the searching pue 
rue(RPRJ!1ljGENER) reprocess the RPRtransact
ion1se if the searching page Is 
unlque and the generation
s1rfer clear the ”RPR−UNIQUE−rla
gend I r del 1ver page P to the re
questerdlscard the RPRtra
nsactionndlf detete the page request r
ecordend I f ndfor To resume page 5earches r
or +ater 1nearnatlons (ag
ent R):for each page requ
est on agen RIr the reque
st Is a 1ocal pge request
repeat the pge request1se delete the page request r
ecord、 but keep the RPRre
process the l?PRend i f ndfor To finish a page request 
(page P、 for task T):if [
T] isn’t P (dlff’erent nu
es) and the page requestw
riting cOpy P、 producing [T]do p
age Creation If task T is using page P
task page P away rros tas
k Tend I f end j f +r the request is a page 
raultif m is P or the pag
e was copiedgjve task T W
rite pel”1jssjon for the 
pageSe give task T read per+n1ss
ion for the page1dir 1se call−back channel 5uppOrt
s ror endf「 b、Note−page−equival7 ence
トランザクション 満足するページが要求したページと異なる場合、要求し
たページに対するエージェントへ通ずるタスクページ経
路が満足するページへ通ずるように変更される。これは
、note−page−equival ence  
(NEQ)  トランザクションで行なわれる。
NEQ処理が開始する前に、要求されたページへ通ずる
経路は、サブノードポインタと子供ページポインタの両
方を有している。該経路は、満足するページに対するタ
スク活性エージェントからスタートし、且つ要求側ペー
ジのエージェントへ通じている。ページャ−は、古い経
路を除去しくDPRトランザクションのように)且つ新
しいものを構築する(BPAの如く)。
満足するページのエージェントからの子供ページポイン
タが削除される場合、又は子孫ページのエージェントか
らタスクページポインタ(何れのタイプのものでも)を
除去した後に該エージェントがいまだにタスク活性状態
である場合に、ページャ−は古い経路を除去することを
停止する。
(これは、一つを超えたタスクが同一のページを要求す
る場合に発生し、且つ該要求は均等ページに対するペー
ジ経路を構築し、最後のNEQ)ランザクジョンが古い
経路を削除することを終了する。) ページャ−が満足するページのエージェントから最後の
子供タスクページポインタを除去する場合、それは未決
のDPS又はRPS)ランザクジョンをキューから外す
ページャ−が既にタスク活性状態にある満足するページ
に対するエージェントを見付けると、それは新たな経路
を構築することを停止する。
(i)NEQ構成 5truct note−page−equivale
nceTrec  1card2T   neq−sh
ort−gener:bits16T  neqJIa
gs;Idefine NEQ−NEW−PATH−D
ONE 0x0001婁deffne  NEJOLD
  PATHGONE  0x0002)  note
−page−equlvalenceT:尚、 rneq  5hort  generJは、満足する
ページの世代番号である。
rNEQ  NEW  PATHDONEJは、新たな
ページ経路が構成されたことを表わす。
rN E Q  OL D〜PATHGONEJは、古
いページ経路が削除されたか又は後のNEQ トランザ
クションがそれを削除することを表わす。
NEQ)ランザクジョンは、又、そのトランザクション
ヘッダのタスク及びエージェント名称フィールド内に含
まれているページ名称部分を有している。このページ名
称は均等ページである。
(iJ)NEQ処理 To note pge equivalence (
equivalent agent E。
satjsfy4ng page P):1ook r
or a task−actlve agent f’
or page P (agent B)if rou
nd note new path 1s already 
bu1ft1se bui Id an agent record fo
r the page Pend i f agent ^ ニー agent Ewhile d
eleting the old path and 
agent A has″PGA−PARENT PA
TH−tatus find parent page s agent 
PAdelete chi ld task page
 pointer rrcs PA to^ifage
nt PA is agent B、 and the
re are no 5ore chi ld tas
kpage pointers rroe Bdequ
eue DPS/RPS transaction a
t agent Bend i r clear ’PGA PARENT PAT!(−5
tatus In^汀agent^lsn t age
nt E and agent A isn’t ac
tivedelete agent A s reco
rdend 1. f agent^ニー agent PA endvhlle if agent A Isn t task−act
ivelf new path 1s already
 builtbuild NEQ transactl
on to delete old path to 
agent Aelsθ but Id NEQ transaction to
 delete old path to agent
 Aand l0ake new pathend l
 f’ 5end NEQ to 5upernode1se if new path isn t already
 builtbulld NEQ transacti
on to vake new path to ag
ent Bsend NEQ to 5uparnod
endir end + f ProcessNEQ (node N、 equiv
alent page PE、 satlsrylng
 page P):if a new path is
 being builtlook ror a ta
sk−actlve agent ror page 
p at node N(agent B)if fo
und note new path is alr8ady 
built(set ”NEQ−N′EJP^TH−D
ONE−)1se build an agent record for
 the page Pend i r insert 5ubnode task page 
pointer to NEQ 5enderndjr 1rthe old path Is being r
esovedrfnd the agent for 
page PEat node N (agent A
)while agent A has no tas
k pue pointers and has th
e”PGA PARENT PATH(” 5tatu
sfind parent page S agent
 PAshorten task nuae in t
ransaction headerdelete c
hi ld task page pointer f
rom PA to^Iragent PA is a
gent B、 and there are no 
more child taskpage point
ers rrass Bdequetse DPS/R
PS transaetions at agent 
Bend r 「 clear PGA PARENT PATH” 5t
atus in Aif agent A isn t
 activedelete agent A s r
ecordend i r agent A ニー gent PAendwhil
e if agent A is task−active
set ’PGAJ)LD−PATH−GONE”nd
if ndif if either the new path Is
 being built or the old p
ath is beingde+ete send NPQ to 5upernodee! 5
e discard NEQ transactionen
d i f G、ページャーフェイム(PAGERFAME)動作 フェイム増加動作は、タスクのフェイムクラスタ及び同
一のフェイムクラスタを有する全ての祖先タスクをより
大きなスーパークラスタへ変化させる。フェイム動作に
よって影響される各々スクの全てのページに対して、フ
ェイムレベルノードにおいてヘッドエージェントが存在
している。フェイム動作期間中、ページャ−はこの様な
各ヘッドエージェントを新たなフェイムレベルノードへ
移動させ且つそれに従ってページ経路を変更する。
それらが同時に変化している場合には記録を再構築する
ことは不可能であるので、ページャ−がその作業を開始
する前に、フェイムマネジエが古いフェイム領域上でト
ランザクションを休止させる。
フェイム動作期間中に、影響されたタスク名称(子孫の
タスク名称)を有するページャ−トランザクションが処
理されたり又は送出されたりすることはない。フェイム
動作を実施するために使用されるページャ−トランザク
ションは例外とされる。
フェイム動作の開始時に、フェイムマネジャがフェイム
動作の種類及び影響されるタスクを表わすページャ−ル
ーチンを呼出す。この呼出しは、古いフェイムクラスタ
内の全てのプロセサ上でなされる。この様な各プロセサ
上で、ページャ−は影響されたページに対するヘッドエ
ージェントをサーチし且つ見付かった各エージェントを
移動させる。エージェントが移動されるに従いページ経
路がアップデートされる。全てのエージェントがその様
に移動された後に、ページャ−はフェイムマネジャを呼
出して、フェイム動作のページャ−部分がそのプロセサ
に対して行なわれたことを知らせる。
1、フェイム増加動作 フェイムマネジャがプロセサ上でページャーフェイム増
加をスタートすると、ページャ−は、そのプロセサ上で
影響されるタスクのページに対する全てのヘッドページ
ャ−エージェントを見付は出す。古いフェイムレベルノ
ードにおけるものは新しいフェイムレベルノードへ移動
される。該ニジエンドは一度にルベルずつページツリー
を上方へ移動され、従って該ページ経路は再構築させる
ことが可能である。
フェイム増加が一つを超えたタスクに影響を与える場合
、特定のページ番号に対するエージェントが増加する世
代番号のシーケンスで移動される。
即ち、ページに対するエージェントは、子孫ページに対
する全てのエージェントの前に移動される。
特定のページ番号を持った一組の移動エージェントが移
動エージェントグループと呼ばれる。異なったエージェ
ントグループ内のエージェントは、互いに独立的に移動
させることが可能である。
ヘッドエージェントAがノード0(古いフェイムノード
)からより高いノードN(新たなフェイムノード)へ移
動すると、ノードN1ノードO及び中間ノード(存在す
る場合)における併合用記録は影響される。ノードOに
おけるヘッドエージェントは併合用ページポインタを有
しているか又は併合用ページバージョンが該プロセサ上
に存在している場合、該ノードは併合活性状態を維持し
、且つ併合用ページ経路はノードNに到達するまで構築
される。0におけるエージェントは、rPGA  5E
ND  NPAGEJステータスを得る。
該エージェントが上述したものの何れをも有するもので
はない場合には、該エージェントは非併合活性状態とさ
れ、且つ併合用経路は構築されない。
同様に、ノード0におけるエージェントがタスク活性状
態である場合には、ノードOからノードNヘタスフペー
ジ経路が構築される。
親ページに対する併合用記録も、ヘッドエージェントが
移動する場合に影響される場合がある。
親ページのエージェントは、削除されるヘッドエージェ
ントに対しての子供併合用ページポインタを有している
。従って、親ページャ−のエージェントがrPGA  
5END  NPAGEJステータスであるというだけ
で併合活性状態である場合には、該親ページへの併合用
ページ経路は削除される。
フェイム増加動作は、多数のエージェントを移動させる
可能性がある。各エージェントに対して一つのトランザ
クションを使用する代わりに、ページャ−は、単一のト
ランザクションで多数のエージェントを移動させようと
する。幾つかのエージェントに対する受給ノードが同一
のプロセサ上にマツプする場合には、一つのトランザク
ションが該情報の全てを有することが可能である場合に
限り、同一のトランザクションを使用してこれらのエー
ジェントを移動させることが可能である。
同一の移動エージェントグループ内のエージェントは、
新たなフェイムノードに到達するまでずっと一つのトラ
ンザクションを共用することが可能であり、異なったグ
ループ内のエージェントは、時々、一つのトランザクシ
ョンを共用し、次いでより高いレベルにおいて分割する
ヘッドエージェントがその宛て先に到達すると、古いフ
ェイムノードのプロセサヘアクルッジメント即ち認知が
送られる。ページャ−は、幾つのエージェントが上昇さ
れているかを記録し、カウントがゼロとなると、そのプ
ロセサに対してのページャーフェイム動作は完了する。
フェイム増加かへラドページャ−エージェントに発生す
ると、ページャ−はページサーチを再開し且つそこでキ
ューされているRPRをキューから外さねばならない。
a、Raise−pager−agent)ランザクジ
ョン Raise−pager−agent (RPA)トラ
ンザクションは、一つのノードからスーパーノードへ幾
つかのへッドベージャーエージェントを移動させるため
に使用される。ページャ−は、必要に応じ、ページ経路
及びエージェント記録を構築し且つ削除する。新しいフ
ェイムノードにおいて、ページャ−はヘッドエージェン
ト記録を構築し且つアクルッジメント即ち認知が古いフ
ェイムノードへ送られる。
(i)RPA構成 typederstruct rising−agen
tTrec 1bitslBT rpp−b4ts; $derine RPRBUILD−TPATI(0x
O0011に!efine RPRBUILD−MPA
TH0XOOO2kJerine RPR−DELET
E−MPATHOy+0O04tdefine RPR
LAST−RPA  0XOOO8bitslf3T 
rpp agent−status:card4T  
rpp archivaヒ1ocation;card
4T  rpp−arehlval−motions;
card4T  rpp−pagenuw;card4
T  rppJnc−r+us+ber;card2T
  rpp3neration;l rjsing−x
gentT; lde自ne RPPS−PER−PAGE (PAG
E−8IZE / 5izeof’(rising−t
gent))typedef rising−xgen
t     rpx−arrayT[RPPS−PER
−PAGE];/fl The rising−age
ntT array Is 5eparate fro
lthe RPA tail。
On Wapjtl 、 the data page
 part of the transaction 
Is used。
typedef 5truct raise−pger
−xgentTrec (card4T      r
pg cycl!−1den;node nneT  
  rpl−Originator;card2T  
   rpl−agenjquan;cardlT  
   rpx−new rue;raiseJager
−agentT;尚、 *1 rRPP  BUILD  TPATHJは、エージェ
ントのページに対するタスクページ経路が構築中である
ことを表わす。
rRPP  BUILD  MPATHJは、該エージ
ェントのページに対する併合用ページ経路が構築中であ
ることを表わす。
rRPP  DELETE  MPATHJは、該親ペ
ージに対する併合用ページ経路が削除中であることを表
わす。
rRPP  LAST  RPAJは、これがこのペー
ジ番号に対する最後のRPA)ランザクジョンであり、
且つこのトランザクションがアクルッジ即ち認知される
べきであることを表わす。
rrpp  agent  5tatusJはヘッドエ
ージェントのステータスである。
rrpp  archivafI fl ocat i
n」は、ヘッドエージェント記録からとられたアーカイ
バルベージの位置である。
rrpp  archiva、Q  motionsJ
は、ヘッドエージェント記録からとられたアーカイバル
ベージを移動した回数である。
rrpp  I)agenumJはページ番号である。
rrpp  inc  numberJはページ名称の
最後の化身番号である。
rrpp  generationJはこのエージェン
トのページの世代番号である。
rrpa  cycl e  1denJはこのRPA
サイクルに対するサイクル識別子である。
rrpa  originatorJはアクルッジメン
ト即ち認知が送られるべき古いフェイムノードの名称で
ある。
rrpa  agent  quanJは、このトラン
ザクションで幾つのページャ−エージェントが上昇され
ているかを表わす。
rrpa  new  fameJは新しいフェイムレ
ベルである。
RPA )ランザクジョンは、又、該トランザクション
ヘッダ内に含まれるタスク名称部分を有している。これ
は、常に、フェイム動作によって影響される最も少ない
祖先のタスクの名称である。
エージェントのページの名称は、タスクネームを[rp
p  generationJジャームへ短縮し、最後
のジャームの化身番号をrrpp  inc  num
berJて置換し、且つrrpppagenumJをペ
ージ番号として使用することによって得られる。
(11)RPA処理 To begin a pager raIIe In
eraase operation、 tasks T
 to ’ni”、 on processor P:
build a 1ist of head agen
ts for T&−bujld RPA cycle
 record; acknowlecjgments
 ニー 0clear the outgoing R
PA transaction 1istfor ea
ch agent A in the 1ist汀ag
ent A has the old faae Ie
verajse agents’s group fo
r tasks T to nt=ndif free the agent 1ist recor
dndfor Ir there vere no agent gr
oups ra1sedde!ete the cyc
le recordreturn、 +nd+cati
ng pager raI!le Increase 
is does1se send out al l RPA transac
tions on the 1istreturn、 
indicating the pager fame
 1ncrease is not doesend 
I r To  ralse  an  agent  gro
up  (agent  ^、  tasks  T 
 to Tl1−):for each task S
、 rrcs T to T&−Ir there I
s a head agent for any In
carnation or task S atthe
 old rue Ieve determine whether this Is
 the 1ast agent In the gr
oup(2)ralse the head agen
tIf thls Is the 1ast agen
tbreak the [’or 1oopndlr ndlf ndfor Increment the acknowledgm
ent countTo raise an agen
t (agent B、 task S):1ook 
for an RPA transactlon de
stined for the 5upernode 
5Processor Ifnot round build an RPA transaction、
 add It to the RPA transa
cLlonend I r +ncres+ent the agent coun
t In the RPA tallstore da
ta rros agent B In the ri
sing agentT arrayclear al
 I head 5tatus bits in ag
ent B、 expect 「orPGA HEAD
 EXPECT delete the parent agent’s
 chi Id merging page poin
ter to thisgent if the parent agent does 
not know of merging pages
clear the parent agent’s 
PGA−5END−MPAGE 5tatusndif if the parent agent Is no
t merge−activeset the RPP
 DELETE Ml”AT’)(bit in th
e rising−tgent entryif th
e parent agent is not tas
k−activedelete the parent
 agent recordndif endi「 iragent B would be task−a
ctive wjthout PGA−PARENT 
P^’rn 5tatusset the RPP、、
−BUILD−TPATHbit in the ri
sing−agent entryend i r if agent B is merge−activ
eset the RPjBUILD−MPATHbi
t in the rising−agent ent
ryset the PGA SEND−MPAGE 
5tatus in agent Bndir if agent B Is not actived
elete agent B’s recordlse resume 1ater pge 5earches
dequeue actions waning fo
r a rue 1ncreaseend I r irthe rising agent array 
Is rullrpsove the RPA tra
nsaction rros the l 1stse
nd tt to the 5upernodeend
 i f ProcessRP^(node N):clear 
the outgoing RPA transact
ion listacknowledgments ニ
ー 0ror each agent in the 
incoming RPAprocess the r
ising agentndfor iracknowledgments !−0send
 an APM transaction to th
e RP^Originatorndif send out al I RPA transac
tlons on the I 1stdlscard
 the lncoalng RPATo proce
ss a rlslng agent (agent 
A、 ncxle N) :If the rpp g
eneration Is equal to the
 generatlon or thetransac
LIon header s task nuecre
ate or find the tncarnati
on record 「or the rpp−Inc
 ru+g+ber1se find the Incarnatlon reco
rd for the right generati
onndif If’ node N Is the rue 1ev
el node、 or we are buildi
ng eHher kindfpath create (or flnd) a pager 
gent for the Incarnatlon 
(agent B)if building a ta
sk page path!n5ert a task
 page 5ubnode pointer to 
the 5enderndif 14 bul ldlng a werglng pa
ga pathInsert a merging p
age 5ubncxle polnter to t
he 5enderend i r ndif if node N Is the fame 1ev
el nodestore the head age
nt and PGA DEMAND−MEI?GIN
G bits rrcsrpp、、−agent−st
atus in the agent B s rec
ordif the old agent 5tatu
s (r+)p−*gent−status) 1nc
ludedPGA−HEAD−EXPECT or P
GA−El−HEADset PGA NEwHEAD
 5tatus in the agent B’s 
recordend l f store the archlval page 1
ocation and motionsf’lnd 
the parent page s agent r
ecordinsert a chi Id page
 g+erging pointer rrow th
e parent page’sagent to a
gent B if the parent page !li ag
ent is demand mergingdo f
orce−merging for agent Be
nd i f end r r +r we are deleting the pa
rent page s mergtng pathr
!nd the parent page’s age
nt record (agent P)rc*+ov
e agent P s 5ubnode mergi
ng page pointer to the 5e
ndernote whether agent P 
has PGA−5END−M円5tatusclea
r PGA 5END MPI 5tatus in 
agent P (tcsporari Iy)+r 
agent p is merge−act4vese
t l”GA 5END MPI 5tatus in
 agent P、 ir!t was set be
foreclear RFP−DELETE−MPAT
HIn rpp−bitselse if agent
 P is not task−activedele
te agent P s recordndif end i f irnode N is the ftae 1eve
l nodeif’ this is the 1as
t rising gent f’or the gr
oupacknowledgments 4−1end
 i r 1se irWe are but ld a sergtng
 page pathset PGA−8ENDJ’l
 5tatus in agent Bend i f fjnd or but Id an RPA tra
nsaction headed for the 5
upernodeineresent the age
nt count in the RPA tai 1
copy over the risjng−agen
tT entry rrom the incomin
g RPAend t r b、Acknowp  edge−page ren 
t−mo t i on トランザクションAckno
w[edge−page rg ge n t−mo t i on (APN) トランザク
ションは、幾つかの移動エージェントグループが移動さ
れたことの信号を送るために使用される。該トランザク
ションは、新たなフェイムノードがら古いフェイムノー
ドへ送られ、そこで、ページャ−は、フェイム動作に対
して移動されるべきグループの数を記録する。
(i)APM構成 typedef 5truct ac3pager−m
otlonTrec 1card4T  arym−c
yclt :den:card2T  apm−ack
−quan:l ack−pager wotjonT
;尚、 rapm  cyc(l e  1denJはこのべ一
ジャーフェイム動作サイクルに対するサイクル識別子で
ある。
rapm  ack  quanJは、このトランザク
ションによってアクルッジ即ち認知される移動するエー
ジェントグループの数である。
(fi)APM処理 ProcessAPM (node N) :nnd 
the rawe operatjon cycle 
recordsubtract ape−1ck−qu
an tram the number or ack
nowledgments 1nthe cycle 
record tr the cycle acknowledgme
nts is Zer。
cat 1−back the rue manage
r、 indicating that the pa
gerfame operation is co@p
lete for thls processorde
lete the cycle recordndjr dfscard the APM transactj
onc、Move−page−to−head)ランザ
クジョン ヘッドエージェント(エージェントのページのフェイム
レベルにおける)が併合用のタスクページを要求する場
合、該ページは、究極的に、そのフェイムレベルノード
へ送られる。フェイム増加動作が発生すると、そのペー
ジは新しいフェイムレベルノードにおいて必要とされる
が、古いフェイムレベルにおいては必要とされない。古
いフェイムノードに到着した後に、該ページを移動させ
るだめに、move−page−to−head(MP
H)  トランザクション、即ちページのヘッドへの移
動のトランザクションが使用される。
MPHトランザクションは、シーケンスされず、且つフ
ェイム動作のために休止させることが可能である。
(i)MPH構成 typeder 5truct  wove−page
−to−headTrec  (card2T   m
ph−page−gener;bits16T  *p
b−r1ags;$define MPH−^RCHI
VAL 0XOOOIcard4T   mph mo
tlons;l wove−pagt−to−head
T:尚、 rmph  page  generJは該ページの世
代番号である。
rmph  flagsJは、該ページがアーカイバル
コピーであるか否かを表わす。
rmph  motionsJは、このモーション即ち
運動を包含して、該ページが何回移動したかを表わす。
MPH)ランザクジョンは、又、該トランザクションヘ
ッダのタスク及びノード名称フィールド内に含まれるペ
ージ名称部分を有している。このページ名称は、(前の
)要求側エージェントのページの名称であり、rmph
  page  generJ世代へ短縮された場合、
それはページの名称である。
(Il)MP)i処理 ProeessMPH(node N、 agent’
s pagenue P、 page P/−):if
 this is P’s fue 1evelsen
d the MPHto the fue 1evel
l 5e ftnd the pager agent reco
rdreset the PGA−NEWIHE^D 
5tatusinsert page copy P/
perf’or*  merging  for  t
he  agentdiscard the MPHt
ransactionend i f H。
ベ ジャーインターフェース (Pager Interfaces) 1.ドメイン初期化(Domain  In1tiaj
7ization) プログラムがロードされると、ドメインマネジャが主ペ
ージをページャ−へ与える。該ドメインマネジャは、ど
のプロセサ上で各ページが初期的に存在するかを決定し
、且つそのページをそこへ送る。それが到着すると、ペ
ージャ−ルーチンがコール即ち呼出されて、該ページが
存在することの信号を送る。
public vojdT LoadPage(card4T pagenu*be
r、  pageT *page)ページャ−は、1n
it  data前記録内のページ形成カウントフィー
ルドを使用し、それはグ0−パル変数によってポイント
されている。
public 1nil dataT *1nil d
ata;typedefstruct  jnit d
ataTrec  1card4T incjpage
−creations;1 1nit dataT: [ind  page  creationsJフィー
ルドがゼロとなると(最後のNPCサイクルが完了した
後に)、ページャ−はドメインマネジャをコールバック
して、ページローディングがこのプロセサに対してなさ
れたことを表わす。
public vojdT PagerLoadingDone(vojd)ドメイ
ンマネジャは、必要がある場合には、より多くのページ
に対してrLoadPage OJをコール、即ち呼出
すことが可能であり、且っrPagerLoading
Done ()Jを介して別の返答を予定することが可
能である。
2、プランナインターフェース(PjlannerIn
terfacesJ タスクが完了すると、プランナはページャ−に報告し、
従ってバックグラウンド併合をそのタスクのページに対
して行なうことが可能である。
a、タスク記録(Task  Records)ページ
ャ−は、プランナのスタートしたタスク記録内にページ
世代テーブル(PGT)を格納する。(「ページャ−デ
ータ構成、タスクをベースにした記録(Pager  
data  5tructures、   task−
based  rec。
rdsJ )のセクションを参照するとよい。)タスク
が稼動中の場合、ページャ−はPGTをアップツーデー
トの状態に維持する。しかしながら、プランナは、PG
Tを初期化する作用を行ない且つタスクが完了した場合
にそれらをマージング即ち併合する作用を行なう。
タスクがPARDOを行なう場合、プランナはタスクイ
ンターバル記録(task  1nterv ajl 
 r e c o r d)を形成し、それはいまだに
実行されていない子供タスクを表わしている。
このタスクインターバル記録は、親タスクのページ形成
テーブル(PCT)のコピーを有している。
(ページ均等テーブルは受継がれない。)子供タスクが
該インターバルから「スプリットオフ」、即ち切り取ら
れると、インターバルのPCTが子供タスクのスタート
したタスク記録内にコピーされ、且つ該PETがクリア
される。
プランナは、又、子供タスクのページ形成の結果を蓄積
するために使用されるインターバル運動記録を維持する
。タスクが終了すると、そのPCTが、エントリー毎に
、インターバル運動記録のPCT内に併合される。
To merge task A’s pc’r In
to 1nterVal B S Per:for e
ach PCT entry14^’S entrY 
Is graater than B S entry
1r^’s entry 5s equal to t
he generation or task Ast
ore that generatlon numbe
r、 m1nus one、 In B’sntry 1se store A s entry Into B s 
entryndlf end i r end「or 同様のアルゴリズムを使用して、インターバルの完了し
た部分からのPCTを併合し、且つ全体的なインターバ
ルのPCTを親タスクのPCTへ併合させる。親タスク
のPETは、該タスクが実To merge 1nte
rval  A’s PCT 1nto 1nterv
al  B’s PCT or parent  ta
sk B’s Per二for each PCT e
ntryif A s entry 1s great
er than B s entrystore A 
s entry Into B s entryndi
f ndfor ページャ−は、スタートしたタスク記録へ取付けたペー
ジ書込み記録のリストを維持する。
typedef 5truct 5tarted ta
skTrec (struct page−creat
e tableTrecstruct pagC−eq
ufr−tableTrecstruct pags−
vr4teTrecl 5tarted taskT: st jcreate; Btl−equiV: btl 」■evrltes; b、タスク及びページ形成 ページャ−は、タスクに対してページ形成が行なわれて
いる場合、該タスクが移動せず、完了せず、且っPAR
DOを行なわないことを要求する。
タスクがPARDO又はエンドトラップ(endtra
p)を発行すると、又はプランナがタスクを移動するこ
とを決定すると、そのイベントは、ページ形成が完了す
るまで繰延べられる。何れかのイベントが繰延べられる
と、プランナはスタートしたタスク記録内にフラッグを
セットし、セットされると、そのページ形成が完了した
時に、ページャ−がブランチルーチンを呼出す。
typederstarted taskTrec t
card4T   stl 」age creatio
ns:bjts16T  stl 5tatus;td
efind  STT  EVENT  DEFERR
ED  0X8000  /* or  whatev
er 零ll 5tarted taskT; publ Ic voidT DoDererredEvent(started t
askT htt)3、フレームワークインターフェー
ス(Framework  Interfaces)タ
スクがページ欠陥(page  faujl t)を行
なう場合、要求されたページが到着するか又はコピーさ
れるまで、実行は繰延べられる。フレームワークが各ペ
ージ欠陥を中断し且つそれを取扱つためにページャ−ル
ーチンを呼出す。該ページが到着すると、ページャ−が
MMUハンドラを呼出して該ページを挿入し且つタスク
マネジャを呼出して該タスクを継続する。該ページが該
タスクに対して与えられない場合、ページャ−はアドレ
ス用例外ハンドラ(handjler)を呼出し、該タ
スクのTCB及び現在のPCをバスする。
タスクが、それが読取りアクセスのみを持ったページに
対しての書込みアクセスを必要とするのでページ欠陥が
発生した場合、ページャ−は、新たなページを供給する
前に、該タスクから読取りのみのページを取去る。
public boolT PagePault(tc
bT *tcb、 card4T pueny、 bo
olT wrjteaccess)publle vo
ldT InsertPage(tcbT *tcb、
 card4T pagenuw、 pageT *p
age)publ 1c voldT Res+ove
Pge(tcbT 5tCb、 card4T pag
enuw)publ ic boolT TaskHa
sPage(tcbTれcb、 card4T pag
enum)public voIdT Address
lrdxceptlon(tcbT 本tcb、vir
tual  addreccT pc);フレームワー
クは容易にタスクのcontr。
1−stack及びfunction−stackポイ
ンタにアクセスすることが可能であるので、それは、c
ontroll−store及びfunction−J
oca(1−store領域内において使用不能のペー
ジをチエツクする。それが、これらの領域の一つにおけ
る使用不能の領域へのアクセスを受取ると、ページ欠陥
はベージャーヘバスされることはない。ページャ−は、
p rogram−global  5tore内にお
ける使用不能のページに対してチエツクせねばならない
public voidT UnlocklOPage(taskpag!−hea
derT *taskpage);チャンネルサポート
コンポーネント(channefl  5upport
  component)からのページ要求は、コール
バック(calfl −b a c k)メカニズムの
場合を除いて、ページ欠陥(page  f aujl
 t s)と同一の態様で取扱われる。チャンネルサポ
ートがページを形成させ、且つ祖先ページが該タスクに
よって使用されている場合(勿論、読取りのために)、
ページャ−は古いページを取去り且つ新しいページを供
給せねばならない。フレームワークルーチンは、その古
いページが使用中であるか否かを決定するために呼出さ
れる。
4、タスクマネジャインターフェース タスクが送給されるべきページを待っている場合、ペー
ジャ−はそのタスクがランすることができないことをタ
スクマネジャへ知らせる(TMEventStart)
。該ページが到着し且つ該タスクが継続することが可能
である場合、タスクマネジャは再度報告される(TME
ventEnd)。
public TMEventStart(start
ed−taskT bit、 bits18T eve
ntblt)publie TMEventEnd(s
tarted−taskT btt、 bits16T
 eventbit)$def1ne 5TT−PAG
EFAULT  0x00105、ページフレームマネ
ジャインターフェースページフレームマネジャは、しば
しば、通常タスクページコピーを削除するか又はアーカ
イバルコピーを別のプロセサへ移動させることによって
空間を取戻すことが必要な場合がしばしばある。
ページャ−はこのために二つのルーチンを与える。
publ lc void De+eterpagec
opy(taskpage−beaaerr *tkp
)publ ICvoid MoveTPageCop
y(taskpage−headerT *tkp、 
card4T destproc)ページフレームマネ
ジャは、又、ページのブ・ツク値(book  vaJ
 ue)を記録する。コノタスクページヘッダにおける
二つのフィールドは、ページフレームマネジャによって
操作される。
typeder 5truet taskpag!−h
eaderTrec (int2T   tkp−bo
ok−walue;card2T  tkp−uss−
count;、 l  taskpagejeader
T;ページが別のプロセサへ移動される場合、ブック値
がそれと共に送られる。宛て先プロセサ上にそのページ
の別のコピーが存在する場合には、そのブック値が加算
される。
ページが要求されると、ページサーチの「コスト」がR
PRトランザクションの[rpr  c。
stJフィールド内に蓄積される。このフィールドは、
満足するページのブック値に貢献する。
6、フェイムマネジャインターフェースフェイムマネジ
ャインターフェースは、「ぺ−ジャーフェイム動作(P
ager  fame  。
perations)Jのセクションにおいて説明しで
ある。それらを、ここに要約する。
publ ic boolT PagerFuelncrease(card4T r
eplyarg、 1ncarnationT *jn
e。
card2T generation、 cardlT
 nev「ue)publ ic voidT FuelnereaseReply(card4T r
eplyarg)尚、PagerFamelncrea
se □は、フェイムマネジャがフェイム増加を行なう
場合に呼出される。それは、古いフェイム領域内の各プ
ロセサ上で、タスクトランザクション休止が発効中に呼
出される。それは、ページャーフェイム増加が直ぐに完
了するとFALSEをリターンし、TRUEがリターン
される場合には、フェイムマネジャはFameIncr
easeRepgyOの呼出しを待たねばならない。「
ページャーフェイム動作、RPA処理」のセクションを
参照するとよい。
FamelncreaseRepj7 y ()は、ペ
ージャ−かページャーフェイム増加を完了すると呼出さ
れる。「repNyargJは、PagerFamel
ncrea5e ()においてバスされたものと同一の
値である。
■、フェイム(Fame) A、緒論 フェイムは、あるオブジェクト及び情報を一つのドメイ
ンの一つのクラスタ内に閉込める、即ち制限する方法で
ある。負でない整数が、ユーザ°のプログラムにおける
各タスクと関連している。この整数は、そのタスクのフ
ェイムレベルと呼ばれ、より簡単には、そのタスクのフ
ェイムと呼ばれる。
タスクのフェイムは、どのクラスタがそのタスクと関連
するオブジェクトを有することが可能であるかを表わす
。これらのオブジェクトは、タスク自身、そのページ、
その名称、該タスク又はそのページの記録、及び該タス
クによって発生されたトランザクションを包含している
。一般的に、タスクの存在を推論することの可能な任意
のオブジェクトが閉込められる。この様なオブジェクト
はフェイム型オブジェクトと呼ばれる。それらは、又、
フェイムを有するとも言われ、関連するタスクのフェイ
ムと等しい。
タスクオブジェクトがその様に閉込められるクラスタは
、フェイムクラスタ(fame  clus t e 
r)又は該タスクのフェイム領域と呼ばれる。それは、
そのフェイムクラスタのクラスタレベルであるフェイム
レベル(f ame  47 eveg)、及びそのレ
ベルのただ一つのクラスタ内に存在する場合のある該タ
スクの任意の記録(re(ord)によって識別される
。フレームレベルが0であることは、そのタスクが1個
のプロセサに閉込められていることを表わす(プロセサ
フェイム、即ちprocessor  fame)、フ
ェイムが1であることはボードフェイム(board 
 fame)であることを表わし、以下同様である。最
大フレームレベルは、ドメインのクラスタレベルである
(ドメインフェイム、即ちdOma i n  f a
me)。親タスクのフェイムクラスタは、子供タスクの
フェイムクラスタを包含せねばならない。
タスクのフェイムは、フェイム増加動作によって変化さ
れる、動的特性である。これは、タスクのフェイムクラ
スタをより高いクラスタへ変化させる。
フェイムは、通信、管理作業、及び休止時間を減少させ
ることによって拡縮性を向上させる。例えば、タスクが
ページを形成する場合、そのドメインはそのことが通知
されねばならず、従って併合を実施することが可能であ
る。フェイムの場合、より少ない数のプロセサが関与す
ることとなる。
そして、一般的に、ページ欠陥が発生すると、サーチさ
れねばならない領域、そのタスクとそのページとの間の
距離、及びそのページを見付は出すのに必要な時間はよ
り小さくなる。一般的に、低いフェイムを有するタスク
は、小さなドメイン上で稼動する全ての利点を享受する
フェイムは、多数の複雑化を導入する。フェイムは、分
散型タスク及びページ情報を制限するので、この情報は
、ドメインレベルノードではなく、フレームレベルノー
ドに集積する傾向がある。これは、その情報を使用する
場合に利点ではあるがフェイム動作が適用される場合、
その情報は再分散されることを必要とする場合がある。
従って、フェイム動作は、フェイムレベルノードを区別
する何れかのカーネルコンポーネントに影響を与える場
合がある。
フェイムは、又、ページを閉込める。このことは、幾つ
かのタスクがそれらのフェイムクラスタ内に嵌まるより
も一層多くのページを形成する場合に、問題となる場合
がある。そのカーネルは、タスクを再スタートさせるか
、又はフェイムを上昇させるか又は転送することの何れ
かによってこの様な状態を検知し且つ矯正せねばならな
い。
フェイムはタスクを閉込める。クラスタがそのユーザ作
業を消費し尽くすと、カーネルはもっと供給しようとす
る。稼動可能なタスクのフェイムクラスタが消費し尽く
されたクラスタを有していると、そこへタスクを送るた
めにフェイム動作が必要とされる場合がある。一方、こ
の様なタスクの閉込めは、参照の局所化を実施する助け
となる傾向となり、タスクはドメインに亘って散乱され
ることはない。
タスクに関連するオブジェクトはドメイン全体に亘って
移動させることが可能であるので、カーネルは提案され
たアクションが許容されるか否かを局所的に決定するこ
とが可能でなければならない。このことは、各プロセサ
がこの様な全てのオブジェクトに対するフェイム記録を
有することを確保することによって行なうことが可能で
ある。
B、フェイムの記録 タスク名称の各ジャーム(jerm)はフェイムレベル
と関連している。フェイム記録は、タスクが実行をスタ
ートする時、又は該タスク名称を包含するトランザクシ
ョンが到着する時に、局所的に形成される。それらは、
最後のタスクに関連するオブジェクトが削除されるか又
は送出される場合に削除される。
タスク名称内の各ジャームは小さな整数を有しており、
それはタスクのフェイムレベルを特定する。このタスク
は、その名称が、該ジャームを包含してそこまでのタス
ク名称における全てのジャームから構成されるものであ
る。以下に一例を示す。
第一ジャーム: 反復29 フェイムレベル4化身2 第二ジャーム: 反復4  フェイムレベル3化身20 第三ジャーム: 反復17 フェイムレベル0化身O これは、タスク(29)がフェイムレベル4を有してお
り、タスク(29/2:4>がフェイムレベル3を有し
ており、且つタスク(29/2;4/20;17)がフ
ェイムレベル0を有していることを表わしている。
フェイム増加が発生すると、影響されるタスクの名称を
包含する各トランザクションが捜し出され且つ新たなフ
ェイムレベルを有するように補正されねばならない。そ
れらの全てを捜し出すために終わりのないカーネル構成
を介して捜し出すことを回避するために、以下の方法が
使用される。
タスク名称を包含するトランザクションがプロセサに到
着すると、その名称が該名称の記録に対してのポインタ
で置換される。タスクに言及するトランザクションを発
生する場合、各カーネルコンポーネントはタスク記録ポ
インタを格納することが必要であるに過ぎず、該トラン
ザクションを送る前に、該ポインタが該タスク名称と置
換される。トランザクションを受取った後に、そのタス
ク名称は、そのタスク記録に対するポインタと置換され
る。このことは、タスク名称を、転送中であるか又はち
ょうど転送されたトランザクション内側のユニの可能な
位置のみに制限し、従って、タスク名称を有する全ての
トランザクションを容易に見付けることが可能である。
C,フェイム増加(Fame  IncreaseS) フェイム増加動作は、−組のタスクのフェイムを変化さ
せる。この組は、タスク名称T及び世代番号によって識
別される。その組は、タスクT及びその世代に至るまで
の全ての祖先タスクを有している。
フェイム動作は、又、フェイムクラスタを包含する。こ
れらは、クラスタレベルとプロセサ名称とによって識別
される。物事を簡単にするために、フェイム増加動作に
よって影響される一組のタスクは、単一のソースフニイ
ムクラスタ(source  fame  cl us
ter)を共用し、且つ単一の宛て先フェイムクラスタ
となる。
フェイム増加動作を制限するルールがある。即ち、(1
)フェイム増加動作は、親タスクのフェイムクラスタの
外側のタスクのフェイムクラスタを超えてはならず、且
つ(2)タスクは、二つのフェイム増加動作によって一
度に影響を受けてはならない。
フェイム増加動作は、旧及び新フェイムクラスタに対し
てフェイムマネジャノードにおいて調整される。前者の
ノードは旧フェイムノードであり、後者は新フェイムノ
ードである。
フェイム増加動作は、−組のタスクのフェイム領域を拡
張する。該組内の各タスクは、同一の旧フェイムクラス
タ及び同一の新フェイムクラスタを有さねばならない。
−組のタスクに対してフェイム増加動作を開始するため
に、フェイムマネジャがフェイム動作スタート1  (
FOSI)及びタスク休止スタート1 (TQSI))
ランザクジョンを、旧フェイムノードのクラスタを介し
てプロトキャストする。該休止は、記録に同時的に影響
を与えることが可能な他のアクションのことを心配する
ことなしに、種々のコンポーネントがフェイム変化に対
してそれらの記録をアップデートすることを可能とする
。新フェイムクラスタはこの休止を必要としない。なぜ
ならば、フェイム動作が完了するまで、この様な活動が
そこには存在することがないからである。
旧フェイム領域内の各プロセサは、該タスクに対してそ
のフェイム記録をアップデートし、フェイムが変化して
いることを旧及び新フェイム領域に知らせ、且つこれら
のタスクに対して他のトランザクション活動を停止させ
る。次いで、該プロセサは、新フェイムノードに達する
まで、タスク休止スタート2及びフェイム動作スタート
2(FOS2))ランザクジョンを有するブロードキャ
スト応答を開始する。
FO32ブロードキャスト応答が終了すると、フェイム
マネジャが、旧フェイムノードのクラスタ全体に亘って
、フェイム動作増加1(FOII)トランザクションを
ブロードキャストする。FOll)ランザクジョンを受
取ると、該旧フェイム領域内の各プロセサは、フェイム
増加が進行中であることを各カーネルコンポーネントへ
信号で知らせ、且つどのものが後に応答するかを記録す
る。
フェイム動作全体に亘って、該プロセサはこれらの応答
を追従する。
全てのカーネルコンポーネントが、フェイム動作を終了
したことを表わすと、各プロセサはそのフェイム記録を
アップデートして該タスクの新しいフェイムレベルを表
示し、且つ旧フェイムノードに達するまで、フェイム動
作増加2(FO12)トランザクションを有するブロー
ドキャスト応答をスタートする。
FOI2ブロードキャスト応答が終了すると、フェイム
マネジャが、旧フェイムノードのクラスタ全体に亘って
タスク休止終了(TQF))ランザクジョンをブロード
キャストし、そのことはこれらのタスクに対するトラン
ザクション休止をキャンセルする。旧フェイム領域内の
プロセサは、TQFの前にフェイム型トランザクション
を受取る場合があり、これらは通常の如く処理すること
が可能である。
フェイム動作は、FOI2ブロードキャスト応答が旧フ
ェイムノードにおいて完了する時に完了したものと考え
られる。旧フェイムノードは、フェイムコマンドコオデ
ィネータ(fame  c。
mmand  coordinator)へ完了したこ
とを信号によって知らせる。
フェイムを増加させるための擬似コードは以下の如くで
ある。
To do raIle Increase (rro
s olci rue node):determtn
e task 5etit old rue node
 ts nonH銘r:5end TQSI/PO3I
 to 5ub−nodesnote that no
 IY)S2 broadcast response
s have beenrecejvec! 1se update rage records to sh
ow changing I’asecreate t
ransaction qujesce record
do 1earnode fu+e 1ncrease
end j r To process TQSI/IY)Sl:1rn
on−leaf node: 5end TQSI/PO3I to 5ub−nod
esnote  that  no  FO82bro
adcast  responses  havebe
en received 1se update rue records to sho
w Changing fuecreate tran
saction quiesce recordsen
d TQS2/PO32to 5uper−nodee
nd + f To process TQS2/FO82:note
 which 5ub−node has respo
ndedif this was the 1ast 
one:if this isn’t the old
 rase nodesend TQS2/PO32t
o 5uper−node1se send Po1l to old f’ue nod
eend i f end i r To process FY)11+ If non−1eaf’ node:5end Po
1l to 5ub−nodesnote that 
no POI2 broadcast respons
eshave been received1se do 1eaf node rase 1ncreas
endif To do 1earnode rue 1ncrea
se:ror each kernel coapon
ent:1ndlcate rale Increas
e in progressnote Vhieh 0
neS will respond 1aterend
「cr if  a! I  cmponents  have
  finished  immediate!yEn
d 1eaf node fme tnereasee
nd l r To process kernel compone
nt response:note that thi
s co@ponent has finished 
rue 1ncreaseIf this is th
e 1ast one:End 1eaf’ node
 foe 1ncreaseend i r To end 1eaf node fame 1nc
rease:update rale records
 to show new foeirold rme
 node is 1ear:cancel ta、s
k transaction qujescesjgn
al  Tue operation cos+ple
te−to rasecommand coordln
ator1se send POI2 t、o 5uper−noden
djf To process FO12: note which 5ub−node has r
espondedIf this is the 1a
st one:if this is the old
 rue node:signal  Tue ope
ration  cc*plete−to  rue 
 commandcoordinator 5end 
TQF to 5ub−nodes1se send POI2 to 5uper−ncxlee
nd i r end I f’ To process TQF: ir nun−1eaf’ node send TQF/For to 5ub−nodes
1se cancel task transaction q
uieqceend i f D、フェイムコマンド(Fame  Commands
) 資源マネジャが、タスクのフェイムが変更されるべきこ
とを命令すると、フェイムマネジャが発動される。この
様な命令はフェイムコマンドと呼ばれる。フェイムコマ
ンドは、再フェイム化タスクの祖先に対するフェイム動
作を発生させることが可能である。
各フェイムコマンドは、プロセサ番号によって識別され
るフェイムコマンドオリジネータ(originato
r)と、フェイムコマンドが完了した時に呼出されるべ
きルーチンのアドレスと、多分該ルーチンヘバスされる
べきパラメータとを供給スる。該プロセサは、フェイム
コマンドを命令するものである。それは、又、再フェイ
ム化タスクの名称及び該再フェイム化タスクの新しいフ
ェイムレベルを与える。
各タスクのフェイムクラスタは、その親タスクのフェイ
ムクラスタのサブクラスタでなければならない。各コマ
ンドに対して、フェイムマネジャは、どのタスクがフェ
イム動作を必要とするかを決定スる。そのフェイムレベ
ルが新フェイムレベルよりも低い祖先タスクはフェイム
増加を必要とする。
フェイム増加動作は、正確に1個のソースフレームクラ
スタ及び正確に1個の宛て先フェイムクラスタを使用す
る。従って、フェイムコマンドが1個を超えたソースフ
レームクラスタ、又は1個を超えた宛て先フレームクラ
スタを巻込む場合は、複数個のフェイム動作を必要とす
る。複数個のフェイム動作が行なわれる場合、それらは
減少するソースフェイムレベルの順番で行なわれる。こ
のことは、フェイムコマンドの動作量であっても、フェ
イム領域がネスト、即ち入れ子となることを保証する。
1、フェイムコマンドコオディネーション(Fame 
 Command  Coordinati。
n) フェイムコマンドは、フェイム管理ツリーを介してコオ
ディネート、即ち調整される。個別的なフェイムコマン
ド間において、及び一つのフェイムコマンド内における
フェイム動作問において、二つの種類のコオディネーシ
ョン、即ち調整が必要とされる。
二つの個別的なフェイムコマンドが発行されると、両方
のコマンドは同一のタスクに関与する場合がある。二つ
のフェイム動作が同時に発生することを防止するために
、各フェイム動作は、各影響されるタスクに対する古い
フェイムノードにおいて調整される。フェイムコマンド
を実行スるための許可はこの様な各ノードにおいて最も
低いノードから最も高いノードへの順番で与えられる。
最も高いノードに許可が与えられると、フェイムコマン
ドは実行を開始する。
ノードにおいて同期する場合、フェイムマネジャは、フ
ェイム動作がそのフェイムレベルにおいて各影響される
タスクに対して効果があることを注意する。爾後のフェ
イムコマンドは、フェイム動作が完了するまで遅延され
、次いで該タスクに対する新たなフェイムノードへ送ら
れる。
フェイムコマンドは、影響されるタスクに対する最も高
い古いフェイムノードにおいてフェイム動作の実行を開
始する。この動作か完了すると、フェイムマネジャは、
この古いフェイムノードにおいて遅延されているフェイ
ムコマンドを解放し、次いて次の最も高い古いフェイム
ノードへ進行し、以下同様である。最後に、最後の(最
も低い)フェイム動作が完了した後に、フェイムマネジ
ャは、そのコマンドが完了したことをオリジネータ、即
ち発行元に通知する。
その実行期間中、フェイムコマンドは多数の状態を介し
て通過する。それは、フェイム動作を実行するための許
可を必要とする場合があり、それはフェイム動作を実行
中である場合があり、又それは全てのフェイム動作を完
了している場合があり、且つフェイムコマンドオリジネ
ータへ信号を送って知らせることが必要であるに過ぎな
い場合がある。
記録は各フェイムコマンドと関連しており、それは該コ
マンドの状態を記録する。フェイムコマンドにおいて与
えられる情報に加えて、該記録は次の情報を有している
(1)フェイム許可データは、フェイムコマンドがフェ
イム動作を実施するために許可を必要とするタスクの最
も高い世代番号(数)である。このデータは、全ての許
可が与えられるとゼロとなる。
(2)最も低い世代データは、フェイム動作が必要とさ
れることのあるタスクの最も低い世代番号(数)である
。このデータは、フェイム許可データがゼロである場合
にのみ意味がある。
(3)最も高い世代データはフェイム動作が進行中のタ
スクの最も高い世代番号(数)である。
このデータは、フェイム動作が進行中である間及びその
後の短期間においてのみ意味がある。
(4)動作レベルデータは、フェイム動作が進行中の古
いフェイムクラスタのクラスタレベルである。このデー
タは該動作の期間中及びその後の短期間においてのみ意
味がある。
2、フェイムコマンド擬似ノード(Fame  Com
mand  Pseudo−code)Fue com
+mand: accept originator、 task、 
new fame−do assertions he
reif no tasks need a rase
 operationFlnish fame CoI
Amandve 1 1se set 1nitial fase pero+l5s
lon datus+ to the ref’aae
d task sgenerat 1on Synchronize fue coamandnd
lr Synchronlze rue command+P
rocess T”O3+ get rue penlsslon datum G
for each generation numbe
r、 rrcxa G upward:let ta、
qk T be the G’th generati
on ancestor of the refued
task if task T doesn’t ne
ed a fame operatlon:break
 for ndlf 14T″s old rue node Is on 
thls processor:if a rue o
peratlon 1s in progress f
or task T:queue cossand a
t task T until rue operat
ionCompletes return 1se note that a fame operatio
n Is jn progress forthis 
task Increment fame permission
 datum Gnd14 1se send FCS (fme coIllmand 5
ynchronlze) transaction t
odd fame node eturn end l r ndror −Here、 al l permissions h
ave been given。
set low generation da、tum
 equal to rue permission 
datumset rale permission 
datum to zer。
Continue rue eowandContln
ue raJIe cowaand:Process 
PCC get low generation datum 
Gfor each generation Hf’r
ow G to the refased taSk 
S generationlet task T be
 the H’th generation ance
stor or the reruetJtask i
f T’s old fale node isn t
 on this processor:5end F
CjS (rue cos+5and continu
e) to old fase nodeeturn 1se if task T needs a faIe op
eratlonCompute high gener
ation datLIIf’or task Tse
t operation 1evel datum t
o the old ruenode s clust
er 1evelStart rue operati
on at old rale nodequeue 
rue cos+*and at task T un
ti I this raseoperation c
ompletes−”Pue operation c
osplete−will becalledon −cosplet!on eturn 1se note no ra+ge operation I
n progress 「or task Ta5se
nt: there are no queued r
ue operations fortask T I
ncrtpsent Ivy generation 
datum−6qual to H+l Ir the
 low generation datum Isg
reater than the re鵠−task’
s generationFlnlsh rue co
mmandeturn end I r end l r end I r ndfor −If you fall off the end 
of this 1oop、 something I
s wrong。
Compute hlgh generation d
atus for task T:set hlgh 
generation datum to the g
eneration mmber or the fu
rthestdescendant or T vHh
 this fame 1evelFue opera
tlon complete:get rue ope
ration 1evel L、 low gener
atlon datum Ghlgh generat
lon datum Hfor aach ances
tor task T or the rerued 
task。
rrc* generations G to IIn
ote no rue operation In p
rogresS for task Tdequeue
 al l rue operations for 
task Tthey CC13ntln1 eXec
utIOn at’5ynchronize rue 
command−the ndfor set low generatlon datc++
+ equal to hfgh generatio
n datum plus one 1fov gen
eraNon datum Is greater t
han the refased task’s ge
neraLIonFlnlsh Lue comman
d1se Continue rue commandndjr Flnlsh rue cxxsmand:If or
lglnator Is on thls proce
ssorslgnal or1glnator 1se send FUF (「ue command rln
lsh) to orlglnatorend l ! Process FCF: slgnal or1g!nator ■、カーネルトランザクシラン(KernsJTran
sact 1ons) A、緒論 本発明のマルチ処理システムにおいては、プロセサは互
いに通信をせねばならない。本発明においては、メツセ
ージに基づいた通信を使用し、且つそのメツセージのこ
とをトランザクションとして言及する。メツセージをサ
ポートするために使用される通信ネットワークは、任意
のプロセサが任意のその他のプロセサへトランザクショ
ンを送ることを可能とする。送信は、二つのプロセサ間
の距離によって影響を受ける場合がある。
二つのプロセサ間の距離は、それらの両方を含む最も小
さいクラスタのクラスタレベルである。
従って、プロセサは、それからの距離は0であり、同一
のボード、即ち基板上の二つのプロセサの距離は1であ
り、同一のケージ内の異なったボード上の二つのプロセ
サの距離は2であり、以下同様である。距離が増加する
と、通信リンクの帯域幅は、これらのリンクを使用する
場合のあるプロセサの数よりもゆっくりと増加する。従
って、長い距離の通信のほうが、短い距離の通信よりも
遅延される可能性があり、且つその遅延は一層長いもの
と予測される。従って、本システムは、長い距離の通信
をたまに使用する。
B、フォーマット(Format) トランザクションフォーマットは、その基礎となるハー
ドウェアとは独立しており且つ異なったアーキテクチャ
に対してポータプル、即ち移動可能である。更に、フォ
ーマットはほとんどの共通の動作に対して最適化されて
おり、更に、現存する及び将来のカーネルコンポーネン
トをサポートするのに十分に柔軟性がある。
トランザクションフォーマットは、0がらTRA  M
AX  TAILトランザクションテールへの共通ヘッ
ダと、オプションの短いテールとから構成されている。
データページは、長いPAGESIZEの[テール(t
ai1’)Jであると考えられる。トランザクションの
第一の部分は、共通ヘッダフォーマットとマツチせねば
ならない。
Free−on−send意味論は、トランザクション
を送給する場合に使用される。従って、トランザクショ
ンが送給されると、それは「使用済み(used  u
p)Jとなる。このフォーマットを以下に示す。
kJerine TRA−MAX−T^ILtdefl
ne TRA−8HORT−3IZE (25B−OF
FSETOF(transT、 tra 5hort)
)typedef 5truct transTrec
 l5truct transTrec      *
trz next;bjts32T         
 trlsource:bits32T       
   trg destination;bftslB
T          tn−f lags;card
2T          trm type;card
4T          trx domain。
5truct agent−na+aeTrec   
 tra 5ender;5truct agent 
++ueTrec    tra rec、eiver
;5truct 1ncarnatjonTrec  
 氷tr1inc;5truet addr 1enT
rec     tra tail[TRA−MAX 
T^lL+1];1ntlT           t
ra」rlority;cardlT        
             廿s  5ize;car
d2T          trgJad:charT
           trx shortm^−8H
ORT−8IZE]l transT; トランザクションヘッダフィールドは以下の如くに定義
される。
tra  nextは、トランザクションをリスト及び
キューへリンクするために使用される。
tra  5ource及びtra  destina
tionは、それぞれ、ソース及び宛て先PEアドレス
を特定する。
tra  flagsは、種々のフラッグを格納するた
めにカーネルによって使用される。
tra  typeはトランザクションのタイプである
tra  domainは、スーパーバイザトランザク
ションに対するドメイン番号である。
tra  5ender及びtra  receive
rは、それぞれ、カーネルがエージェントを送給及び受
給することを表わしている。
tra  incは、命名したトランザクションに対す
る化身記録へポイントする。トランザクションか化身を
有する場合、少なくとも一つのテールが送信のためにタ
スク名称のアレイ形態を格納するために使用可能である
ように残されねばならない。
tra  taijlは、トランザクションテール用の
一組のアドレス長さ対である。
tra  prtorityは、トランザクションの優
先度を表わす。
tra  5izeは、バイトでの短いテールの寸法で
ある。それは、可能である場合に、タスク名称のアレイ
形態が短いテール内に詰込むことが可能であるように、
タスク名称を有するトランザクションに対してゼロでな
いことが要求される。
tra  padは、短いテールの長いワード配列を強
制する。
tra  5hortは、固定した短いテールから構成
される簡単なトランザクションに対して使用される。多
くのトランザクションはこの形態であるので、短いテー
ルは、ヘッダ内に格納し且つ単一のブロックとして送る
ことが可能である。
C,)ランザクジョンサイクル(T r a n s 
a ct ton  Cycl es) プロセサが応答を必要とするトランザクションを送給す
ると、そのトランザクション、その応答及び中間のトラ
ンザクション(存在する場合)は、トランザクションサ
イクルを形成する。最初のトランザクションは、サイク
ル発生器と呼ばれ、最後のトランザクションはサイクル
完成器と呼ばれる。種々の種類のサイクルが存在してい
る。
幾つかのサイクルは、例えばページ要求サイクルなどの
ようなある時間期間内で完了することが予定されている
。ページを必要とする動作又はタスクは、それが到着す
るまで継続することはできず、更に、小量のサーチ動作
がそのページを捜し出すことが可能であるべきである。
迅速に完了することが予定されるサイクルは計時される
。サイクルが発生されると、その記録が特別のキューの
上に配置され、プロセサは経過したサイクルに対してこ
のキュー(queue)を周期的にチエツクし且つその
一つが見付かると適宜のアクション即ち活動を行なう。
他のサイクルは、ある種のことが正しいシーケンスて行
なわれることを確保するために使用される。例えば、フ
ェイム型オブジェクト(f a m ed  obje
ct)は、そのフェイム領域の外側へ送給することがで
きない。コンポーネントがこのことを行なうことを望む
場合、それは、最初に、フェイム領域を拡張するための
トランザクションサイクルを使用し、そのサイクルが完
了すると、そのオブジェクトはその宛て先へ送給するこ
とが可能となる。
D、トランザクションパターン(Transactio
n  Patterns) トランザクションの処理は、多数のプロセサを関与させ
る場合がある。幾つかのトランザクションは一度だけ送
信され、処理され且つ廃棄される。
幾つかのトランザクションは、プロセサ間を多数回送給
される。幾つかのトランザクションは、群のプロセサヘ
ー団となって送給される。この様な送信シーケンスは、
トランザクションパターンによって分類され、そのカテ
ゴリは多数の種類がある。
プロセサが特定の単一のプロセサと通信することを必要
とする場合、単一のトランザクションが直接的に送られ
る。例えば、永久ノードを移動させるトランザクション
が古いフェイムノードのプロセサから新しいものへ直接
的に送られる。なぜならば、後者の位置が知られている
からである。
プロセサが単一のプロセサと通信を行なうことを必要と
するが、どのプロセサであるかを知らない場合、トラン
ザクションが送られてそのプロセサをサーチする。ペー
ジ要求トランザクションはこのトランザクションパター
ンを有している。
プロセサか小さな組のプロセサと通信をすることを必要
とする場合、トランザクションが送られて、それが各プ
ロセサを順番に訪問する。オリジネータが全体の絹を知
ることは必要ではないが、そのトランザクションを受取
る各プロセサは、トランザクションの送給を継続するか
否か及びどこへ送給するかを知らせねばならない。ペー
ジ紅路に影響を与えるトランザクションはこのトランザ
クションパターンを有している。
プロセサがクラスタ内の多数のプロセサと通信を行なう
ことを必要とする場合、トランザクションが該クラスタ
内の^、ラドノードへ送られる。そのノードは、各サブ
ノードに対して該トランザクションを送給し、且つ該サ
ブノードはそれらのサブノードの各々へそれを送給し、
且つ以下同様である。究極的に、該クラスタ内の全ての
リーフノードが該トランザクションを受取る。フェイム
動作は、しばしば、このパターンでトランザクションを
使用する。トランザクションブロードキャストは選択的
なものとすることが可能であり、即ち、各ノードは、ト
ランザクションをそのサブノードのサブセット、即ち副
組へ送ることを選択することが可能である。
クラスタ内の多数のプロセサが単一のプロセサと通信す
ることを必要とする場合、各リーフノードが反転したブ
ロードキャストトランザクションをそのスーパーノード
へ送給する。該スーパーノードは、全てのサブノードが
報告を行なうと、それらのサブノードに対してトランザ
クションを送り、該クラスタに対するヘッドノードが全
てのトランザクションを受取るまで、以下同様である。
上述したパターンの何れも、トランザクションサイクル
と結合することが可能である。一般的には、単一のトラ
ンザクション、サーチ用トランザクション、及び複数個
のトランザクションサイクルが、単一のトランザクショ
ンによって完了され、ブロードキャスト及び反転ブロー
ドキャストサイクルは互いに完了する。
サイクルを発生するか又は送信をブロードキャストする
ノードは、一般的に、ある特性を有しており、それから
、該トランスミッションがそこから発生したことを推論
することが可能である。例えば、欠陥性タスクを稼動す
るプロセサ上のリーフノードはページ要求サイクルを発
生する。フェイムレベルノードはPEMブロードキャス
トを行なう。
サイクルの場合、最も簡単な方法は、該サイクルが進行
中にノード特性が移動しないことを確保することである
。ブロードキャストの場合、発生するノードが、そのブ
ロードキャストが行なわれたことを注意し、且つ該特性
が移動した後にそれを繰返さねばならない。このことは
、該動作がリーフノードにおいて厳格に繰返し可能なも
のでない場合に、選択的ブロードキャストと共に行なう
ことが可能である。
E、  トランザクション制御(Transactio
n  Controg) 1、概括 メツセージを元にしたマルチ処理マシンを制御する困難
な側面の−っは、レース(r a c e)条件の防止
である。これは、同一のプロセサに対して二つ以上の非
同期トランザクションが行なわれようとする場合に発生
し、且つ該マシンの正確な動作は、それらのトランザク
ションが処理される順番に依存する。
本発明では、トランザクションを同期させるために二つ
の方法を使用している。トランザクションシーケンシン
グ(transaction  sequencing
)は、全てが同一のソース及び宛て先ノードを有するト
ランザクションのグループを制御する。トランザクショ
ン休止(transaction  quiesce)
は、クラスタ内の一組のプロセサに関してのトランザク
ションのグループを制御する。
a、トランザクションシーケンシング(T r a n
5action  Sequencing)トランザク
ションシーケンシングは、別のトランザクションの後に
続かねばならないトランザクションがそれに追付かない
ことを確保する制御方法である。シーケンシングは、他
のパターンも使用するものであるが、特に、マルチトラ
ンザクションパターン及びページ経路動作にとって有用
である。
シーケンスグループは、互いにシーケンス動作されるが
他のトランザクションとはシーケンス動作されない一組
のトランザクションタイプである。
現在のところ五つのグループがあり、即ち、シーケンス
なしくunsequenced) 、フェイムロック/
アンロック(fame  flock/un l o 
c k ) 、ページャ−経路アップ(pager  
path  up)、ページャ−経路ダウン(page
r  path  down)、及びその他のシーケン
ス(other  5equenced)である。全て
のトランザクションタイプは、正確に、これらのシーケ
ンスグループの一つに属する。
シーケンスされるトランザクションは、それらがキュー
されるか又は休止される場合であっても、その状態を維
持する。より高い優先度のトランザクションは、より低
い優先度のトランザクションの後にシーケンスさせるこ
とが可能である。トランザクションシーケンシングはノ
ードを基としている。即ち、二つのトランザクションが
同一のシーケンスグループにあり且つ同一のソースノー
ドと宛て先ノードとを有する場合に、それらはシーケン
スされる。
b、  )ランザクジョン休止(Transactio
n  Quiesce) トランザクション休止は、別の活動が進行中にあるタイ
プの活動を停止させる制御方法である。
この場合にも、トランザクションの一つ又はそれ以上が
休止される場合であっても、トランザクションはシーケ
ンシングを維持する。トランザクション休止には二つの
種類が存在している。クラスタトランザクション休止は
、チエツクポイント、再寸法、又はその他の特別の制御
動作のためのクラスタ乃至はドメインを用意する。タス
クトランザクション休止は、フェイム動作用のクラスタ
を用意する。
トランザクション休止には三つの部分があり、即ち、初
期ブロードキャスト、トランジションが保持される期間
、及び最終的トランジション解放である。クラスタトラ
ンジション休止は、クラスタ内の一つ又はそれ以上のク
ラスのトランジションに対してトランジション活動を停
止させる。
タスクトランジション休止の目的は、フェイム動作期間
中にレース条件を防止することである。
タスクトランジション休止は、−組のタスクと関連する
トランジション活動を停止する。この組は、該タスクの
実行中のその他のタスクとの関係を表わす付加的な情報
及びタスク名称によって識別される。
休止動作は、又、クラスタレベル及びプロセサ名称によ
って識別されるクラスタを関与させ、これは、最も祖先
の特定したタスクの最も高いフェイムクラスタである。
2、機能的記述(Functionaj7  Desc
ription) トランザクション制御は、カーネル自身とフレームワー
クを分離するコンポーネントである。このセクションは
、該コンポーネントの論理的動態について説明する。ト
ランザクション制御(Transaction  Co
ntroI)に対する外部的イベントリスト(第6図に
示しである)は以下の如くである。
カーネルによって送給されるトランザクショカーネルト
ランザクションの再処理 カーネルへ供給されるトランザクションカーネル休止要
求 要求送給 受給したトランザクション トランザクション制御は、再処理用のトランザクション
のみならずカーネルによって送られたトランザクション
も受付け、且つ全てのトランザクションをカーネルへ供
給する。カーネルは、更に、トランザクション休止要求
を開始する。トランザクション制御は、フレームワーク
がトランザクションを送給し且つ受取ったトランザクシ
ョンの経路を決定することを要求する。
トランザクション制御に対するデータフロー図(D F
 D)を第7図に示しである。トランザクション制御D
FDには三つの変形がある。
(1)トランザクションの送給(send  tran
sact 1ons)、このトランザクションの送給変
形はカーネルによって送られたトランザクションを受付
ける。これらのトランザクションは、宛て先かon−P
E又はoff−PEであるかに依存して、それぞれ、人
力するキュー内に配置されるか又はフレームワークに与
えられる。
トランザクションを送るためにフレームワーク送給要求
が発生される。
(2)トランザクションの受給(receive  t
ransactions)。全ての受取られた及び再処
理されたトランザクションは、トランザクションの受取
り変形ヘパスされる。トランザクションは、カーネルへ
送られるまで、保持される。
(3)トランザクションの休止(quiesce  t
ransactions)。第2図における最終的な変
形は、カーネルからのトランザクション休止要求を取扱
う。送給されるか又はプリバされるトランザクションは
凍結(freeze)動作によって影響される場合、キ
ューデータ格納部内に配置される。該休止が完了すると
、解凍したトランザクションが所要に応じ送給又はプリ
バーされる。
第7図は、トランザクションが保持される二つのデータ
格納部を示しており、即ち、受取ったトランザクション
に対する入力キュー(incoming  queue
)と、送給すべきトランザクションに対する出力キュー
(outgotngqueue)である。第7図におけ
る全ての変形は、カーネル又はフレームワークの何れか
によって発動されるワンショットの変形(trasf。
rm)である。
a、論理モデルの受給(Receive  Logic
al  Modeg) 第7図におけるトランザクション受給変形は、更に、第
8図に示した如くに区画される。第8図におけるトラン
スフオーム、即ち変形は以下の機能を実施する。
(1)トランザクションのプリバー(dej7iver
  transaction)。最初のトランスフオー
ム(変形)は、入力キューデータ格納部からカーネルへ
受給し且つ再処理したトランザクションをプリバーする
(2)トランザクションの受給。2番目のトランスフオ
ーム(変形)は、フレームワークから0ff−PE)ラ
ンザクジョンを受取り且つこれらを入力キュー内に配置
する。凍結動作によって影響されるトランザクションが
保持される。
(3)再処理トランザクション(reprocess 
 transaction)。トランザクションは、カ
ーネルによって後の再処理のためにキュー、即ち列を形
成させることが可能である。
再処理トランザクション変形(トランスフオーム)は、
カーネルによって発動されて、この様なトランザクショ
ンを入力キューへ付加する。
b、休止論理モデル(Quiesce  Logica
n  Model) 第7図における休止トランザクション変形(トランスフ
オーム)は、更に、第9図に示す如くに区画される。第
9図における変形乃至はトランスフオームは次の機能を
実施する。
(1)休止トランザクション(quiescetran
saction)。最初の変形(トランスフオーム)は
、カーネルからのトランザクション休止要求を受付ける
。トランザクションを凍結する要求は、休止要求データ
格納部内に維持される。
(2)トランザクションのチエツク(check  t
ransaction)、2番目の変形(トランスフオ
ーム)は、送給及び受給に関してのトランザクションを
チエツクして、トランザクション休止が適用されるか否
かを決定する。
3、インターフェース このセクションは、カーネル及びフレームワークヘトラ
ンザクジョン制御によって与えられるインターフェース
について説明する。
a、)ランザクジョンサービス(Transactio
n  5ervice) トランザクションサービスはトランザクションを送給し
且つ受給するために使用される。
(1,) T r a n s S e n dは、ヘ
ッダにおイテ特定された宛て先ヘトランザクンヨンを送
給する。
public voidT TransSend(trans ) transT *trans; (2)TransReceiveは、新たに受給したト
ランザクションをトランザクション制御ヘパスするため
にフレームワークによって呼出される。
publlc voidT TranssRecelve(trans )tran
sT *trans; (3)TranSDel 1verは、トランザクショ
ン制御がカーネルへトランザクションをプリバーするこ
とを許容するためにフレームワークによってコール、即
ち呼出される。
public voidT TransDellver() trans−queueT  ネtrp;(4)Tra
nsReprocessは、トランザクションがカーネ
ルによって再処理されることを許容する。それは、常に
、キューされたトランザクションに対するアクションル
ーチンとしてコール、即ち呼出されるので、Trans
Reprocessは、常に、FALSEをリターンし
且つトランザクションパラメータのみを使用する。
public boolT TransReprocess (agent、 tr
ans、 flags )addressT    *
agent;transaet1onT  *tran
s;bits16T     flags;b、休止サ
ービス(Quiesce  5ervice) 休止サービスは、トランザクションを凍結し且つ解凍す
るために使用される。全ての休止動作は、トランザクシ
ョンのクラスに基づいており、動作及びクラスはオーバ
ーラツプする場合がある。現在のところ、以下のクラス
が識別されている。
(1)フェイム型トランザクション(タスクトランザク
ション休止)。
(2)ユーリカジャブ(eureka  jump)ト
ランザクション(タスクトランザクション休止)。
(3)スーパーバイザトランザクション(クラスタトラ
ンザクション休止−スーパーバイザ)。
(4)カーネル非制御トランザクション(クラスタトラ
ンザクション休止−非制御)。
トランザクション休止は、以下の二つの態様のうちの一
つで発生する。
(1)トランザクション制御リーフ休止機能は、そのコ
ンポーネントのリーフエージェント上のカーネルコンポ
ーネントによって呼出される。トランザクション制御が
影響されるクラスタ内の全てのプロセサ上で発動される
ことを確保することは該コンポーネントの責任である。
フェイム型トランザクション(及び多分、ニーリカジャ
ンプトランザクション)はこの方法を使用する。
(2)トランザクション制御はクラスタを休止させるた
めに呼出される。この場合、トランザクション制御は、
該クラスタ全体に亘り休止動作をブロードキャストする
。スーパーバイザ及び非制御トランザクションはこの方
法を使用する。
リーフ休止機能は、単一のプロセサ上のトランザクショ
ンへ適用される。
(1)FreezeTaskTransは、与えられた
タスク及び全てのその子孫に対して特定したクラスのト
ランザクションを凍結する。
public voidT FreezeTaskTrans (class、 f
nc)bits16T    class; 1ncarnationT 5ine:(2)Thaw
TaskTransは、与えられたタスク及び全てのそ
の子孫に対して特定したクラスのトランザクションを解
凍する。
public voidT ThavTaskTrans (class、 Inc
)bits16T    class; jnearnationT *inc;トランザクショ
ン制御は、常に、命名したトランザクションタスク名称
をリンクしたリスト形態で維持するので、タスク名称を
変更するための機能を与えることは必要ではない。
クラスタ休止機能は、クラスタ内の全てのプロセサ上の
トランザクションへ適用される。
(1)SendTQUは、与えられたヘッドエージェン
トを持ったクラスタ内のクラスのトランザクションへ特
定した動作を適用する。その動作が完了したことを表わ
すためにアクルッジメント(認知)を要求することが可
能である。
public voidT SendTQU  (oper、  class、  
agent  name、aek)bits16T  
  oper; bits16T    class; agent  nameT  *agent  nam
e:boolT     ack: c−TQU構成 トランザクション制御によって単一のトランザクション
タイプが使用される。トランザクションテール(t a
 i、17 )を以下に示してあり、データページは存
在していない。
typedel’ 5truct trans−qui
eseeTreeb1ts16T          
tqw−operation;婁derine TQU
−FREEZE 0x000111derine TQ
U−THAW   0xO002Idef’lne T
QU−ACK   0x0004struct age
nt−naseTrec tqw−agent;bit
s16T          tq++−class;
boolT           tqn−ack;l
  trans−quiesceT:動作フィールドt
qu  operationは、休止動作、凍結(f 
reez6) 、解凍(thaW)又はアクノレツジ(
acknowjl edge)を表わしている。エージ
ェント名称tqu  agent及びクラスtqu  
cfIassは、どのクラスタ及びクラスのトランザク
ションが影響されるかを特定する。アクルッジメントフ
ィールドtqu  ackは、アクルッジメントが要求
されているか否かを表わす。
4、物理的設計(PhysicaI Design) このセクションは、トランザクション制御の物理的構成
を特定する。
a、データ構成 トランザクション休止要求を格納するために使用される
データ構成は以下の如くである。
typedef 5truct qulesce−+e
questTrec5truct quiesce−r
equestTree *qur」rev;5truc
t qulesce−requestTrec *qu
r−next;bits16T           
 qur、、−class;5truct agent
−nueTec     qur−agent;chi
ld bitsT         (Iu+−rep
orted[MAX−DOMAIN DEFT’)IF
;bits32T             qur−
source;5truet 1ncarnation
Tree   *qur−inc;timeT    
                  qur−sta
rt−time;l qulesc!−request
T;publ ic qutesce−+eqcses
tT *qulesce−+eq;プロセサ上の各未決
のトランザクション休止要求は、quiesce  r
eqリスト内にリンクされているquiesce  r
equestTのタイプの記録を有している。該記録は
、トランザクションクラスqur  classのみな
らず前のqur  prev及び次のqur  nex
t記録へのポインタを有している。
該クラスタに対するヘッドエージェントquragen
t、ソースプロセサqur  5ource及び子供報
告済みビットqur  reportedは、クラスタ
休止のために使用される。これらのフィールドは、リー
フ休止のためには使用されない。
化身記録ポインタqur  incは、タスクトランザ
クション休止動作のために使用される。タイムスタンプ
(timestamp)、qujstart  tim
eは、どの位長く休止要求が効果を持続するかを決定す
るために使用される。
トランザクションキュー(q u e u e)は、リ
ンクされたリスト構成を使用して維持される。
typedef 5truct trans−queu
eTreestruct transTree *tr
q−head;5truct transTree *
trq−tail;card4T         t
yq−count ;l  trans−queueT
; publlc trans−queueT incom
ing[MAX−3EQ−GROUPI;public
 trans−queueT outgoing[MA
X−3EQ−GROUPI :public  tra
ns−queueT  本kincosing;pub
lic trans−queueT *kreceiv
ed:各トランザクションキュー記録は、該キューのヘ
ッドtrq  head及びテールirq  taiI
及び現在キューしているトランザクションの数trq 
 countを表わすO b、擬似コード(Pseudo  Code)Tran
sSendは、送給用のトランザクションを用意する。
タスク名称は、各送給試みの直前にアレイ形態に変化さ
れる。凍結されていない遠隔(remote))ランザ
クジョンがフレームワークヘバスされる。
publ ic vojdT TransSend(trans ) transT *trans; assert transactton ts val
id;1rtransaction is not f
rozenif’ transaction is f
or thls PEenqueue incomin
g transaetion;1se convert task nue for nued
 transactions;request Fra
sevork 5end:145end 5ucces
sful discard transaction;else 
rrozen rreeze outgoing transacti
on;1 # TransSendネ1 TransReceiveは、新たなトランザクション
が受信された場合に、フレームワークによって呼出され
る。
public vojdT TransReceive (trans)trans
T *trans: assert  transacNon  1s  v
alid;convert  task name f
or named transactions;enq
ueue  incoming  transacti
on;1  #  TransReceive  */
TransDeJ  1verは、トランザクションを
カーネルヘデリバーすることを許容するためにフレーム
ワークによって呼出される。
public vojdT TransDel Iver(trq)trans−q
ueueT  ttrqassert transac
tion type is valid;dequeu
e transactton:nil transac
tion pointer fields in he
ader;1rtransact1on is not
 frozendeliver transactio
n to kernel;1se freeze incoming transacti
on;1  /l TransDeljver */T
ransReprocessは、カーネルによって保持
されているトランザクションを再処理することを可能と
する。
public boolT TransReprocess  (agent。
addressT    *agent:transa
etionT *trans;bits16T    
  flags;trans。
rlags) assert  transaction  Is v
alid;enqueue reprocessed 
 transactton:return FALSE
; ) /零TransReprocess */リーフ休
体機能FreezeTaskTranS及びThawT
askTransは、TQU処理のリーフエージェント
アクションを実施する。
publ ie voidT FreezeTaskTrans (class。
bitslBT   class; 1ncarnation *Inc; inc) assert 1ncarnation is val
id:assert quiesce record 
does not alraady exlst;al
locate and rill in quiesc
e record;jncresent 1ncarn
ation reference count;1in
k quiesee record 1nto  qu
lesce  request 1ist;) 7本 
FreezeTaskTrans  */public
 voidT ThawTaskTrans (class、 1nc
)bitslBT    class; 1ncarnationT  *jnc;(。
assert 1ncarnation is val
id+assert quiesce record 
exists:move thawed transa
ctions back 1nto queues:d
ecresent jncarnat40n rere
rence count;unllnk anr3 f
ree qujesce record;1 # Th
awTaskTransネ/クラスタ休止機能5end
TQUは、単に、TQUI−ランザクジョンをクラスタ
ヘッドエージェントへ送給する。
publ Ic vojdT SendTQU (oper、 class、 age
nt−name、 ack)b4ts16T   op
er; b4ts16T   class: agent−nueT *agent−nan+e:b
oolT   ack; assert agent name is va14
d;al 1ocate TQU transacti
on;set operation、 class、 
agent nue、 and acknowledg
e;5endransaction to head 
agent:# Ser+dTQ[Jネ/ TQU)ランザクジョンの処理は、該トランザクション
を正しいエージェントへ送給し次いで該体上記録をアッ
プデートすることを包含する。各要求に対して別個の体
上記録を使用することによって、同時的及びオーバーラ
ツプする休止動作を行なうことが可能である。
publ ic voidT ProeessTQU (trans)transac
tionT *trans;assert trans
action and transaction ta
il are valid:if transacti
on rrcxa 5upervisorsend t
ransaction to head cluste
r agent:ease transaction 
ror this clusterif’ ackno
wledge assert nonlear agent;asse
rt child not alraady repo
rted+set child reported b
it;1rall children reporte
dsendto 5upervjsor Or hea
d agent;jf acknowletJgetr
+ent completeunl ink  anc
l  rree  qutesce  record;
1se discard transaction;ease 
if rreeze if quiesce record does no
t existallocate and rlll 
jn quiesce record;1ink qu
iesce record 1nto qulesce
 request Ifst;if leafagen
t acknowledge if required o
therwise discard transact
jon;ease nonleaf’ agentcl
ear ehlld reported bits:5
end transaction to childr
en;else +r thav if qufesce record eXistsI
f’ 18af’ agent acknowledge if required o
therwise discardtransacti
on; move thawed transactions 
backunl ink and rree quie
sce record;else nonleaf a
gentclear child reported 
bits:5end transaction to 
chi Idren:1nto queues; 1se discard transaction;else error; # ProcessTQU if/ ■、タスクマネジ−? (Task  Manager
)A、仮想メモリマツピング(VirtuaI Mem
ory  Mapping) マルチ処理装置であることに加えて、本システムはマル
チプログラミングマシンでもある。各プロセサは、複数
個のタスクを同時的に稼動することが可能である。この
様な各タスクにそのアドレス空間を与えるために何らか
の方法が必要とされる。これは、従来は、仮想メモリを
使用して行なわれている。タスクは、「論理的」メモリ
を使用してフェッチ及び格納を行なう。該タスクによっ
て特定される仮想アドレスは実アドレスへ変換され、そ
の実アドレスを使用して物理的メモリに対してフェッチ
又は格納を適用する。この変換は、従来、オペレーティ
ングシステムによって与えられる情報を使用して、ハー
ドウェアによって行なわれている。ここでは、アドレス
変換はハードウェアによって行なわれる。
B、タスクマネジャ活動(Task  Manager
  Activities) タスクマネジャは、タスクと共に種々のことを行なうカ
ーネルのコンポーネントである。それは、どの様なタス
クインターバル及びタスクがプロセサ上で与えられてい
るかによって、どのタスク又は複数個のタスクを稼動す
るかを選択する。それは、スタートしていないタスク(
unstarted  task)をスタートするべき
か否かを決定する。それは、プランナ(pganne 
r)からのタスクインターバル及びタスクを受付け、且
つそれらを該プランナへ譲り渡す。それは、種々のコン
ポーネント、例えばプランナ、ページャ−及びI10サ
ポートから待機状態情報を受付ける。
それは、他のカーネル活動と共に、タスク形成、完了及
びモーション活動を調整することを助ける。
それは、マシン状態を特定することによって、スタート
されていないタスクをスタートされているタスクへ変換
する。
カーネルがタスクを稼動することを決定すると、タスク
マネジャが呼出されて一つのタスクを取上げる。その決
定は、以下の基準によって案内される。
(1)タスクの稼動は、ただ一つのタスクインターバル
、即ち主要インターバルから選択されるべきである。
(2)稼動タスクの最適数、即ち競合タスク目標があり
、それは実際的である場合には達成されるべきであるが
決して超えるべきではない。タスクマネジャは、競合タ
スクのカウントを維持する(競合タスクカウント)。こ
のカウントは、主要インターバル内の非遅滞化、非停止
型のみを参照する。その他のタスクは、たとえそれらが
そうであったとしても、競合であるとは考えられない。
(3)タスクは「深さ第一(depth−first)
Jの順番で稼動されるべきである。これは、ドメインが
幅第−(breadth−f i rst)で稼動して
いる場合であっても動作する。
なぜならば、その場合には、周り歩くのに十分なタスク
が存在しないからである。タスクマネジャは、多分、そ
れから「選択」するための唯一のタスクを有している。
(4)プロセサ間のベージングを最小とするためにタス
クは稼動されるべきである(タスクに亘っての参照位置
を仮定して)。
主要インターバルは、稼動可能なタスク(スタートされ
ていないもの、準備できているもの又は待機中のもの)
を有するプロセサ上で全てのインターバルから選択され
る。両方とも稼動可能なタスクとして二つのインターバ
ルが与えられると、(i)一方のタスクインターバルが
このプロセサ上で発生され且つ他方のものが「輸入」さ
れたものであると、前者が好ましい。
(11)そうでない場合には、一方のタスクインターバ
ルがタスクをスタートしており且つ他方がそうでない場
合には、前者か好ましい。
(ifi)そうでない場合には、一方のタスクインター
バルが他方のものよりも一層長い家系を有している場合
には、−層長い家系が好ましい。
(iv)そうでない場合には、任意的に一つを選択する
主要インターバルが選択されると、タスクマネジャは、
どのインターバルを稼動するかを決定する。通常、主要
インターバルが稼動される。他のタスクインターバルが
ピン止めしたページを具備するタスクを有している場合
には、これらのタスクが稼動のために選択され、それら
がそれらのベージをピンから外すことを可能とする。遅
滞化タスク(停止中のタスク)を有するインターバルは
、遅滞化インターバルと呼ばれ、これらは主要インター
バルよりも優先度を有している。
最後に、タスクマネジャは、選択したインタバルにおい
てどのタスクを稼動するかを決定する。
そのインターバルが遅滞化(sgowing)、レディ
 (ready)タスクを有している場合には、それら
のうちの一つが選択される。主要インターバル内にその
他のスタートされた(startea)、レディタスク
が存在する場合には、タスクマネジャはそれらのうちの
一つを取上げる。
そうでない場合には、競合タスクカウントが目標よりも
低い場合には、そのインターバルは主要であり、且つそ
れはスタートされていないタスクを有しており、タスク
マネジャは最初のもの(最も低い反復数)を選択し且つ
それをスタートさせる。
そうでない場合には、どのタスクも選択されない。
タスクマネジャ及びプランナは、タスクインターバル及
びスタートしたタスク構成を共用する。
各構成の関連性のある部分を以下に示す。
typederproe−infoTree (零de
fine TIR−QUEUE−QUAN 4stru
ct task 1ntervalT  *prc 1
jr−queues[TIRQUEUE−QU^に];
1fdefine TIRPRIMARY QUELJ
E 0tderine TIRSl、0WING−Qt
lEtJE 1tderine TIR−3TOPPE
D−QUEUE 2零define TIRELIRE
KA QUtEUE 3struct tcbTrec
     *prc exec tcb:l proc
 1nroT; typedef 5truct task jnter
valTree (struct task 1nte
rvalTec   *tir next:5truc
t taskjntervalTec   *tir−
prev;$defjne 5TT−QUEUE−QU
AN 3struct 5tarted−1askTr
ee   れIr−5tt−queues[5TT−Q
UEUE−QUANI ;$define 5Tr−R
UNNING−QUEIJE 0Iderlne ST
T 5TOPPED−QUEUE 1herIne 5
TT−FINIS)IED−QUEUE 2card4
T            tir−1o−itera
tion;card4T            ti
r−h iJ reration;card2T   
         tir、−queue;l tas
k 1ntervalT; typedef’ 5truct 5tarted +
aSkTrec (struct 5tarted 1
askT     *stt next;5truct
 5tarted−1askT     *5tt−p
rev:5truct task jntervalT
    *stt 1nterval+5truct 
task 1ntervalT    btt chi
ld 1nterval;5truct tcbTro
c         *stt tCb:card2T
             stt queue;東r
d4T stt−to−1ickets; ard2T stt−page−creations;bit818
T stt 5tatus; started taskT; proc  1nfo記録は、タスクインターバル及び
タスク記録用の開始点である。全てのタスクインターバ
ル記録は、三つのキューのうちの一つの上に配置され、
即ち、存在する場合に主要インターバルを有する主要キ
ュー(primaryqueue)、全ての遅滞化イン
ターバルを有している遅滞化キュー(sJ7owing
  queue)、及びタスクマネジャが稼動すること
を欲せず且つ遅滞化しない全てのインターバルを包含す
る停止キ、−(stopped  queue)である
。ニーリカキュー (eureka  queue)は
、この構成においては使用されることはない。
タスクインターバル記録は、スタートしたタスク記録の
リストを有している。スタートしたタスクは、稼動を続
けるか(そのことは、遅滞化タスクインターバルの場合
には、遅滞化することを意味する)、停止されるか又は
終了させることが可能であり、各状態に対してキューが
存在している。
タスクインターバル記録は、又、tir  110i 
terat ton及びtir  hi  1tera
tionフイールドによって表わされるスタートされて
いないタスクを有することが可能である。
このデータを含んでそれらの間の任意の値は、スタート
されていないタスクの反復数である。最後に、tir 
 queueは、その上にインターバル記録が配置され
たタスクインターバルキューのインデックス番号である
スタートしたタスク記録は、そのタスクが属するタスク
インターバル記録へのポインタ、そのタスクが中断され
ている場合には子供タスクインターバルへのポインタ、
該タスクのTCBへのポインタ、該記録のスタートした
タスクキューのインデックス、進行中のチケット及びペ
ージ形成の数、及び該タスクの稼動ステータスを有して
いる。
prc  exec  tcbフィールドは、実際には
、タスクマネジャの専用である。それがどのタスクを稼
動するかを決定すると、TCBへのポインタがここに格
納される。
C,タスクマネジャインターフェース(TaskMan
ager  Interfaces)フレームワークは
どのタスクを稼動するかを見付は出すためにタスクマネ
ジャを呼出す。
tcbT *GetCurrentTaskTCBO通
常、タスクマネジャは、単に、prc  exec  
tcbの値をリターンする。これが零である場合にのみ
、タスクマネジャは、実際に、何を稼動するかを決定す
る。
タスクマネジャは、プランナからのタスクインターバル
を受付は且つそれらを要求によって譲り渡す。プランナ
は、好きなように上述した記録を変更することが可能で
あるが、何れのアクションも主要インターバルの選択に
影響を与える場合がある。プランナがそのアクションの
信号を発生するために呼出す6個のタスクマネジャルー
チンが存在している。
vojdT TMNotelnterval(new 
1nterval)task−intervalT *
nev 1nterval;vojdT TMNote
Theft(interval、 allofit)t
ask 1ntervalT *1nterval;b
oolT alloflt; voidT TMNoteTaskMove(task
)started taskT *task;void
T TMRestartTask(task)star
ted taskT *task;voidT TMR
emoveTask(task)started ta
skT *task+voidT TMStartTa
sk(task)started taskT *ta
sk;最初のルーチンは、新たなインターバルが存在す
ることを表わすために呼出され、2番目のルーチンは、
プランナがタスクインターバル又はその−部を「盗む」
場合に使用される。両方の場合において、タスクマネジ
ャは新しい主要インターバルを選択することが可能であ
る。TMNotelntervalの場合、タスクマネ
ジャは、新たなインターバルが主要インターバル内のタ
スクによって生み出されたか否かをチエツクする。そう
である場合には、新たなインターバルが主要インターバ
ルとなり、且つ前の主要インターバルは遅滞化される。
そうでない場合には、新たなインターバルは、単に、停
止されたインターバルのキュー上に配置される。TMN
oteTheftの場合、主要インターバルは、「盗ま
れた」インターバルが主要である場合にのみ影響される
。全主要インターバルがとられる場合、タスクマネジャ
は、フレームワークがタスクを稼動することを要求する
まで、新たな主要インターバルの選択を繰延べる。
主要インターバルの一部がとられる場合には、タスクマ
ネジャが、そのインターバルが一体全体稼動することが
可能であるか否かをチエツクし、可能でない場合には、
それか停止されたインターバルのキューへ移動され、且
つ新たな主要決定は他の場合におけるように繰延べられ
る。
残りの四つのルーチン、即ちTMNoteTaskMo
veS TMRestartTask、TMRemov
eTask及びTMStartTaskは、プロセサ間
においてスタートしたタスクを移動するためにプランナ
によって使用される。
タスクマネジャは、例えばプランナ、ページャ−及びI
10サポートなどの種々のコンポーネントからの稼動中
の情報を受付ける。これらのコンポーネントは、タスク
が稼動することが可能であるか又は可能ではないかを表
わすために以下のルーチンを呼出す。
voidT  TMEventStart(task、
  eventiask)started taskT
 *task;bits16T eventsask;
voidT  TMEventEnd(task、  
eventmask)Started taskT *
task+bits16T eventmask;vo
idT TMNotePardo(task)star
ted taskT *task;vojdT TMN
oteParEnd(task)started ta
skT *task;voidT TMNoteTas
kEnd(task、  flnlshed)star
ted  taskT *task;boolT fi
nished; voidT TMNoteDeferredEnd(t
ask)started  taskT *task;
TMEven t S t a r tは、例えばペー
ジ欠陥やIloなどのような何らかのイベントのために
、該タスクが稼動することが不可能であることを表わす
ためにコールされる。そのイベントは、イベントマスク
(event  mask)においてエンコードされる
TMEventEndは、該タスクが稼動することを阻
止したイベントが完了したことを表わすためにコールさ
れる。該イベントはイベントマスク内においてエンコー
ドされる。
TMNotePardoは、該タスクが中断されている
ことを表わすためにコールされる。
TMNoteParEndは、該タスクがPARDOO
後に再開していることを表わすためにコールされる。
TMNo t eTaskEndは、該タスクが終了し
たか又は完了したことを表わすためにコールされる。そ
の終了したフラッグは、どれかを表わす。
TMNo t eDe f e r redEndは、
終了したタスクが完了したことを表わすためにコールさ
れる。
TMEventStart及びTMEventEndの
場合、タスクマネジャは、スタートしたタスク記録内の
ステータスをアップデートする。
又、タスクが急送不可能(non−dispatcha
ble)となると、prc  exec  tcbポイ
ンタが零ヘセットされる。
タスクマネジャは、タスク形成、完了及び他のカーネル
活動を有するモーション活動を調整することを助ける。
最後のI10チケット(ticket)が不活性となる
か、又は最後のページ形成が完了すると、このルーチン
がコールされる。
voidT DoTaskActivity(task
)started taskT *task;そこで、
該タスクが既に終了されていると、それは完了し、PA
RDOが繰延されていると、それは効果を発揮し、且つ
プランナが該タスクを移動することを所望していると、
それが行なわれる。
■、情報コンポーネント(I n f o rma t
 i 。
n  Componen t) A、緒論 このセクションは、情報コンポーネントについて説明す
る。コンピュータシステムの物理的資源を適切に管理す
るために、カーネルは、ドメイン全体に亘っての資源利
用に関する情報を必要とする。該情報コンポーネントの
一つの機能は、この情報を収集し且つ分散させることで
ある。この情報が有用なものであるためには、それが可
及的にアップツーデートなものでなければならない。こ
の要求は、情報コンポーネントの主要な設計特徴を与え
ている。即ち、ドメインを介してのユーザ及びカーネル
作業の分散は、情報の収集及び分散に認知可能な程度の
影響を与えるものではない。
B、情報サブコンポーネントの設計(Design  
 of   the   Information  
 Subcomponent) 資源管理コンポーネントエージェントは、二つのタイプ
の情報、即ちドメイン情報及びクラスタ情報を維持する
。ドメイン情報は、ブロードキャストメカニズムを介し
て、資源管理ツリーによって親から子供へ拡散され、一
方クラスタ情報は、集中メカニズムを介して、資源管理
ツリーによって子供から親へ集められる。
ドメイン内には二つのタイプの情報の流れがあり、即ち
周期的なものと偶発的なものである。周期的なものは、
ドメイン内の状態において漸次的な変化がトラックされ
ることを確保するために存在する。偶発的なものは、該
ドメインの状態内における急激的な変化を識別するため
に存在する。
1、周期的情報流れ(Periodic  Info 
rma t i on  Fl ow)周期的に、各情
報コンポーネントリーフエージェントは、他の資源管理
コンポーネントの各々からの情報を収集統計トランザク
ション(CST)内に集める。このC3Tは周期的C5
Tと表わされる。このトランザクションはそのスーパー
エージェントへ送られる。このトランザクション内に含
まれる情報は、スーパーエージェントのクラスタ情報を
アップデートするために使用される。該スーパーエージ
ェントの全てのサブエージェントが報告を行なうと、こ
のエージェントは、それがトップレベルエージェントで
ない場合には、そのスーパーエージェントへC3Tを送
る。このプロセスは、トップレベル資源エージェントが
そのサブエージェントの全てから収集統計トランザクシ
ョン(col)Iect  5tatisticst 
ransact 1on)を受取るまで、繰返し行なわ
れる。
該トップレベルエージェントの全てのサブエージェント
がC3Tで報告を行なうと、トップレベル情報コンポー
ネントエージェントは、分散統計トランザクション(D
 S T)を介してそのサブエージェントへドメイン情
報を送る。このDSTは周期的DSTと表わされる。該
ドメイン情報は、他の資源管理コンポーネントの各々か
ら集められる。このトランザクション内の情報は、各エ
ージェントのドメイン情報をアップデートするために使
用される。次いで、DSTが、該エージェントのサブエ
ージェントの各々に対して形成され且つ送給される。こ
のプロセスは、各リーフエージェントがDSTを受取る
まで、繰返し行なわれる。
周期的情報収集の期間はサンプル期間(s ampie
  period)と呼ばれる。それはカーネルパラメ
ータである。それは、情報をアップツーデートに維持す
るためのコストと古い情報を有するコストとの間の利益
考量を適宜バランスするためにセントされる。
該ドメイン全体に亘ってのこの情報の移動に対するアプ
ローチは、二つの問題を取扱わねばならない。第一に、
非リーフエージェントが収集又は分散統計トランザクシ
ョンを送給する場合、該エージェントの全てのサブエー
ジェントが最初にレポート即ち報告を行なわねばならな
い。従って、何らかの理由で、単一のサブエージェント
が報告を行なわない場合には、該ドメインを介しての情
報の流れは停止される。別のタイプの問題は、各サブエ
ージェントがランダムに報告を行なう場合に発生する。
この場合には、全てのサブエージェントが報告を行なう
前に、単にサブエージェントの数ではなくより多くの収
集統計トランザクションが受取られねばならない。その
結果得られるものは、単一の分散統計トランザクション
を得るために送られねばならない収集統計トランザクシ
ョンの数の間にインバランス、即ち不均衡が存在するこ
とである。
上述した問題の両方ともが、収集及び分散統計トランザ
クションが最優先度を有することを要求することによっ
て低減される。このことは、インバランス問題を完全に
解消するものではない。プロセサのクロックは同期され
ておらず且つトランザクションの処理を中断することは
不可能であるので、収集統計トランザクションの受取り
においては常に何らかのランダム性が存在しており、従
ってこの問題は尚且つ発生する。
このインバランス問題は、C8Tの発生がDSTの受取
りときっちりと決められていることを要求することによ
って解消される。即ち、サンプル期間が経過し且つDS
Tトランザクションが受取られて初めてリーフエージェ
ントがC5Tを送ることが可能である。
2、偶発的情報流れ(Episodic  Info 
rma t i on  FN ow)情報コンポーネ
ントは、周期的CST及びDSTとは異なった態様で、
偶発的CST及びDSTを取扱う。偶発的CSTを受取
る各非ヘッドエージェントは、該トランザクションを処
理し、次いで該トランザクションをそのスーパーエージ
ェントへ転送する。該ヘッドエージェントは、単に、受
取った偶発的C3Tを処理し、それは応答においてDS
T )ランザクジョンをブロードキャストすることはな
い。偶発的DSTの場合においては、各リーフエージェ
ントが該トランザクションを処理し、それは応答におい
てC5Tを送ることはない。
各資源管理コンポーネントは、周期的情報とは異なった
態様で偶発的情報を取扱う。例えば、プランナコンポー
ネントが偶発的DST内に含まれる情報のその持ち分を
処理すべく発動される場合、ロードレベリング(N o
ad  D evep ing)動作は発動されること
はない。周期的DSTのみが、プランナコンポーネント
のロードレベリング動作を発動する。
3、コンポーネント調整(ComponentCoo 
rd i na t i on)このセクションは、情
報コンポーネントを動作させるイベント及びそのアクシ
ョンの順番について説明する。プールフラッグ、即ちt
imerexpired及びdst  receive
dは、きっちりした態様てC5T及びDSTの送給を調
整するために使用される。
(1)周期的タイマ経過 (a)t ime r−exp i redをTRUE
にセット (b)dst  receivedがTRUEであると
、各資源管理エージェントに対するC3T発生ルーチン
をコールし且つC5Tをそのスーパーエージェントへ送
給し、timer  expired及びdst  r
eceivedの両方をFALSEヘセットする。
(2)周期的C3Tの到着 (a)サブエージェントからのデータを有する全ての資
源マネジャに対するC3Tデータ受付はルーチンをコー
ルする。
(b)全てのサブエージェントが報告している場合には
、非トップエージェントがC8T発生ルーチンをコール
し且つC3Tをソノスーパーエージェントへ送り、そう
でない場合にはDST発生ルーチンをコールし且つDS
Tをそのサブエージェントへ送る。
(3)偶発的CSTの到着 (a)サブエージェントからのデータを有する全ての資
源マネジャに対してC3Tデータ受付はルーチンをコー
ルする。
(b)非トップエージェントであると、CS7発生ルー
チンをコールし且っCSTをそのスーパーエージェント
へ送る。
(4)周期的DSTの到着 (a)スーパーエージェントからのデータを有する全て
の資源マネジャに対してDST受付はルーチンをコール
スル。
(b)dst  receivedをTRUEにセット
する。
(c)リーフエージェント及びtimer−expir
edがTRUEであると、CS7発生ルーチンをコール
し且つ該CSTをそのスーパーエージェントへ送ル。
(d)非リーフエージェントであると、DSTをサブエ
ージェントへ送る。
(5)偶発的DSTの到着 (a) 7.−パーエージェントからのデータを有する
全ての資源マネジャに対してDST受付はルーチンをコ
ールする。
(b)非リーフエージェントであると、DSTをサブエ
ージェントへ送る。
4、インターフェース及びデータ構成 鎖情報コンポーネントは、以下のコンポーネントを具備
するインターフェースを有している。
(1)資源管理初期化 (2)タイマサービス (3)資源マネジャ 資源管理初期化に対するインターフェースは、情報コン
ポーネントのデータ構成を初期化する情報コンポーネン
ト内への一つのエントリー及ヒタイマエントリーから構
成されている。
タイマサービスに対するインターフェースは、周期的情
報収集を初期化する一つの周期的タイマキューエントリ
ーである。
資源マネジャに対するインターフェースは以下のものか
ら構成されている。
(1)以下のことを実施する資源マネジャ内へのエント
リー (a)周期的/偶発的C3Tに対して情報を発生する (b)サブエージェント周期的/偶発的C5Tからの情
報を受付ける (c)周期的/偶発的DSTに対して情報を発生する (d)スーパーエージェント周期的/偶発的DSTから
情報を受付ける (2)C3T及びDSTメツセージにおいて送られるべ
き情報を見付は出すアドレス長対(address−J
ength  pairs)を有する外部的に知られた
メモリ位置。
(3)偶発的C5T形成を開始する情報コンポーネント
内へのエントリー (4)偶発的DST形成を開始する情報コンポーネント
内へのエントリー typedef enus 1ift PERIODI
C,1ff−EPISODICI  1nlJIov−
1ypeT;typederstruct addr 
IenTree 1address alp−addr
: fnt   alp−fen; l addr IenT: typedef 5truct inf−rm−int
erfaceTree (bool       (*
iri −gen−C8T)   (rat−res 
 teeT LinfJlow−1yl)eT); void     (*iri acc−C8T)  
(rlt−tes−rocT Laddress、  
Int。
1nfJ low−1ypeT) ; bool     (*iri Jen−DST)  
(net res−tecT *。
1nfJ low−1ypeT) ; void         (ネtri  ace、J
)ST)   (rvt−res  recT  La
ddress、  Int。
jnl flow−1ypeT): addr 1enT  tri C8T jnfo;a
ddr IenT   iri DST 1nto;1
  inl tv 1nterfaceT;情報発生ル
ーチンが存在する場合、それは該情報が発生されたか否
かを示す値をリターンする。発生された情報は、CST
情報の場合、tri  C5T  1nfoによって見
付は出され、且つDST情報の場合、iri  DST
  1nfoによって見付は出される。受付はルーチン
(acceptance  rout 1ne)におけ
るアドレス及び長さ対は、スーパーからサブエージェン
トへ送られたデータを捜し出す。注意すべきことである
が、資源マネジャは、マネジャによって送られたデータ
を異なった資源に対して観察することは不可能である。
rmt  res  recTタイプは資源管理記録で
ある。
typelder 5truct rvt−mgsl−
recTrec (struct  rat−Ilgm
l−recTrec *rrr  next:/* D
ata enmon to al I resourc
e management components *
/5truct  agent、、−name   r
rr−nase:int         rrr、、
−chi Id−quan:chi IjbitsT 
     rrr−chi Id−sgents;in
t         rrr−1ree−size;i
nt        rrr−chi IdJ ret
−s1zeD4AX−CHll、D−AGFXr’3]
;/* Pinters  to data  pee
ulJar  to  aaeh  resource
 management  component  本
/5truct Inf−mgt−dataTree 
:rrr−inf−data;5truct pla−
mgml−dataTree :rrr−pla−da
ta;5truct gem−m鴎1−dataTre
e : rrr−men−data:l rg+I−e
Bt recT 偶発的情報流れを開始する情報コンポーネント内へのエ
ントリーは以下のコールシーケンスを有している。
void Inf−epjDST(rlt−「es−t
ecT *);void  Inr−epi−C3T(
rIt−+es−+ecT  *);以下に示すものは
、情報コンポーネント管理データ構成である。資源管理
記録は、このデータ構成に対するポインタを有している
。資源管理ツリー内の各ノードに対するこれらの一つが
存在している。それは、資源管理コンポーネントの残部
に対するコオディネーション、即ち調整を与えるために
必要な情報を維持するために使用される。
typedef  5truct  1nf−mgsl
−dataTree電 boot Ind 1iver !xpjred;bo
ol Ind dst 「eceived;child
 bitsT Ind chlld reported
:1 1nl  west  dataT+imd  
chigd  reportedは、全てのサブエージ
ェントが一度報告を行なった最後の時から、どのサブエ
ージェントが報告を行なったかを追従するために使用さ
れる。
■、フレームワーク(F r amewo rk)A1
機能的記述 フレームワークは、カーネルをその基礎となるハードウ
ェアから分離するために、カーネルに対して一組の基本
的サービスを与えている。これは、異なったハードウェ
アアーキテクチャに亘ってカーネルがポータプル、即ち
移動可能であるようにすることを助けている。第10図
は、このフレームワークの文脈を示す説明図である。
フレームワークに対する外部イベントリストは、メツセ
ージ送給(message  5end)、メツセージ
受給(message  received)及びタイ
マ経過(timer  expired)から構成され
ている。
メツセージに関連するイベントは、通信(Ienter
com)サブシステムに起因している。
このサブシステムは、PEがメツセージを使用して互い
に通信することを可能とする。該タイマイベントは、該
カーネルに対してタイマサービスを与えるために使用さ
れるハードウェアタイマに起因している。フレームワー
クと相互作用を行なうその他のハードウェアは、ページ
メモリ管理ユニット(PMMU)であり、それは仮想メ
モリを管理するために使用される。多くのフレームワー
クサービスは、カーネルそのものに対して与えられ、例
えばトランザクションサービス(transactio
n  5ervice)、タイマサービス(timer
  5ervice)、例外サービス(excepti
on  5ervice)及びタスクサービス(tas
k  5ervice)である。
第11図は、フレームワークに対するトップレベルのデ
ータ流れ図(DFD)を示している。第11図には六つ
のトランスフオーム(transfom)、即ち変形が
存在している。
(1)サービスメツセージ(service  mes
sage)。このトランスフオーム(変形)は、PEか
ら送られ且つPEによって受取られる全てのメツセージ
を取扱う。Intercomステータス及び制御は、そ
れぞれ、読取られ且つ書込まれ、Intercomエラ
ーは記録される。
(2)サービスタイマ(service  timer
)。サービスタイマのトランスフオーム(変形)は、他
のカーネルコンポーネントに対してソフトウェアタイマ
を与える。ハードウェアタイマに対するステータス及び
制御も読取られ且つ書込まれる。
(3)サービス例外(service  except
ion)。サービス例外のトランスフオーム(変形)は
、二つの目的を有しており、即ちハードウェア例外を適
宜のハンドラ(handge r)へディスパッチ(急
送)し且つソフトウェア例外をサービスすることである
。診断情報は、該例外を識別するために保存される。
(4)サービスタスク(service  task)
。このトランスフオーム(変形)は、カーネルの代わり
にタスク文脈スイッチングを実施する。
(5)サービスPMMU、このトランスフオーム(変形
)はカーネルの代わりにPMMUを管理する。このトラ
ンスフオームは、PMMU例外又はタスク文脈スイッチ
によって発動される。
(6)サービスデバッガ(service  debu
gger)。このトランスフオーム(変形)は、低レベ
ルデバッガのサポートを与える。このトランスフオーム
は、デバッガ例外(例えば、ブレークポイント)によっ
て発動される。
トップレベルDFDに対応する状態遷移図(STD)を
第12図に示しである。フレームワークに対するSTD
ダイヤグラムは、ディスバッチループ(dispatc
h  1)oop)を示しており、即ち、サービスが種
々の機能に対して与えられる順番を示している。注意す
べきことであるが、カーネルは再大型ではなく、該ディ
スバッチループはこの制限を遵守せねばならない。ST
Dにおける状態は以下の如くである。
(1)プリバー受給メツセージ(de、Qiverre
ceived  messages)o これは、フレ
ームワークに対する初期状態であり、且つ、常に、ディ
スバッチループにおける第一状態である。この状態にお
いて、全ての受取った入力メツセージが用意され次いて
カーネルヘパスされる。処理すべき入力メツセージがも
はや存在しない場合には、処理経過タイマ状態への遷移
か発生し、サービスメツセージトランスフオームがディ
スエーブルされ且つサービスタイマトランスフオームが
イネーブルされる。
(2)処理経過タイマ(processingexpi
red  timers)。ディスバッチループにおけ
る第二状態は処理経過タイマである。
過去において又は現在において経過した任意のタイマは
、そのタイマに関連するアクションを発動することによ
ってサービスされる。もはや経過タイマが存在しない場
合には、サービスタスク状態への遷移が発生し、サービ
スタイマトランスフオームがディスエーブルされ且つサ
ービスタスクトランスフオームがイネーブルされる。
(3)サービシングタスク(servicingtas
ks)。サービシングタスク状態は、タスクが稼動する
準備がなされているか否かをチエツクする。準備されて
いる即ちレディなタスクが存在する場合には、サービス
タスクトランスフオームがディスエーブルされ且つ実行
用タスク状態への遷移か発生する。一方、用意されてい
る即ちレディなタスクが存在しない場合には、サービス
タスクトランスフオームはディスエーブルされ且つバッ
クグラウンド処理への遷移が行なわれる。
(4)実行用タスク(execut ing  tas
k)。この状態においては、ユーザタスクがPE上で実
行する。該タスクは、インタラブドが発生するか、又は
該タスクが中断乃至は完了するまで、稼動する。上述し
た条件の何れかがサービスメツセージトランスフオーム
がイネーブルされることとなり、且つプリバー受給メツ
セージ(degiver  received  me
ssageS)への遷移を発生させる。従って、ディス
バッチループは最初から再スタートされる。
(5)バックグランド処理(background p
rOCeSSing)。ノくツクグラウンド処理状態は
、フレームワーク用のアイドル状態である。この状態に
おいて、行なうべき有用な作業は存在せず、従って低優
先度のバックグラウンド機能及び監査動作が実施される
。インタラブドがあると、サービスメツセージトランス
フオームをイネーブルさせ、且つプリバー受給メツセー
ジへの遷移を起こさせる。この場合にも、ディスバッチ
ループは最初からスタートする。
B、メツセージ 第11図におけるサービスメツセージトランスフオーム
は、第13図において送給及び受給部分に分割される。
これらのトランスフオーム(変形)は独立的であり且つ
以下の機能を実施する。
(1)メツセージ送給(sent  message)
。このトランスフオームは、カーネルから送るべきトラ
ンザクションを受付は且つ出力するメツセージの格納を
維持する。Intercomサブシステムは、これらの
メツセージを送るために制御される。送給が成功すると
、格納部からメツセージが削除される。
(2)メツセージ受給(receive  messa
ge)。メツセージ受給トランスフオームは、人力する
メツセージの格納を維持し且つこれらのメツセージを受
取るためにIntercomサブシステムを制御する。
それがカーネルヘデリバーされると、該格納部からメツ
セージが削除される。
第14図は、送給メツセージトランスフオーム(sen
d  message  transform)に対応
するSTDを示している。
メツセージを送給する場合に二つの状態がある。
(1)アイドル(Idle)。メツセージサービスの送
給部分に対する初期的な状態はアイドル(Idle)で
ある。送給するためにメツセージが与えられていると、
メツセージ送給トランスフオーム(Send  mes
sage  transform)がイネーブルされ且
っ送給状態への遷移が発生する。前のビジー(b u 
s y)のために再度試みられねばならないメツセージ
は後テ再度送給するために保持される。
(2)送給(Send i ng)o この状態ニオイ
ては、特定した宛て先に対してメツセージを送給するた
めの試みか行なわれる。該メツセージを送給することが
成功すると、メツセージ送給トランスフオームがディス
エーブルされ、サクセス(Su’ccess)の信号か
発せられ、且つアイドル状態へ戻る遷移が発生する。宛
て先がビジーであると、メツセージ送給トランスフオー
ムがディスエーブルされ、ビジーの信号が発せられ、ア
イドル状態への遷移が行なわれる。送給が失敗し且つ宛
て先がビジーでない場合には、該メツセージを送給する
ための別の試みが行なわれる。何回かの試みの後に該メ
ツセージを送給することが不可能である場合には、エラ
ーの信号が発せられる。
第15図は、メツセージサービスの受給(receiv
e)部分に対応するSTDを示している。
メツセージを受給するための状態は以下の如くである。
(1)アイドル(Ille)。アイドルは初期的な状態
である。接続が要求されると、メツセージ受給トランス
フオーム(Receive  message  tr
ansform)がイネーブルされ且つメツセージ受給
状態(Receivingmessage  5tat
e)への遷移が発生する。
(2)メツセージ受給(Receiving  mes
sage)。この状態においては、新たな入力メツセー
ジがカーネルの代わりに受取られる。
受給が完了すると、メツセージ受給状態がディスエーブ
ルされ且つアイドルへ戻る遷移が発生する。
該メツセージサービスはPE間での通信のために使用さ
れる。
(1)SendMessageは、トランザクションを
変換し且つ対応するメツセージをトランザクションヘッ
ダにおいて特定されたPEへ送給する試みを行なう。ト
ランザクション制御のみがこの機能をコールする。
public boolT SendMessage(
trans )transT *trans; SendMessageからのリターンコードは、該メ
ツセージの送給が成功したか又は失敗が発生したか否か
を表わす。
SendMessageは、トランザクションをメツセ
ージフォーマットへ変換し且つ該メツセージを特定した
宛て先へ送給する試みを行なう。
punlic boolT SendMessge(t
rans )transT *trans; if’ new transactioneonVer
t  to  message  f’ormat:e
lse retry find  corresponding  mess
age  in  outgoing  g+essa
geq LjeLle ; C1ear transmit count;epea
t send  message; 1ncresent transmit count;
untI l 5uccess or transmi
t count exceeded;1rsucces
s and retrydelete message
 rraa outgoing message qu
eue;else If busy and new 
transact4onlink sessage 1
nto outgojng message queu
e;returv 5tatus; 1 # SendMessage */TargetH
andllerは、PEによって受給されたメツセージ
に対するインタラブドハンドラ(interrupt 
 hand、9 er)である。該ハンドラは、それが
その様に行なうことが安全である場合には、該ディスバ
ッチループを再スタートさせる。
private voldT TargetHandl
er()ifmessage 5hould be i
gnoredsjgnal message reje
ctetJ:1se receive taessage: 1ink message 1nto incomin
g messaze queue;check for
 dispatch 1oop restart;/*
 Targetllandler */C,タイマ 第11図におけるサービスタイマトランスフオーム(S
ervice  timer  transform)
は第16図において拡張されている。
第16図におけるタイマトランスフオーム(変形)は以
下の如くである。
(1)管理タイ? (Manage  t imerS
)。管理タイマトランスフオームは、全ての活性タイマ
の格納を維持する。新たなスタートしたタイマは、該格
納部に付加され且つキャンセルされたタイマは除去され
る。
(2)サービスタイムアウト(Servicet im
eou t)。サービスタイムアウトトランスフオーム
は、ハードウェアタイマの一つが経過した時に発動され
る。
該タイマサービスは、該クロックを読取り且つタイマを
管理するために使用される。
(1)GetTimeは、−日の現在の時間をリターン
する。
public voidT GetTime(time
 )timeT *time; (2)StartTimerは、ワンショット又は連続
的なタイマをスタートさせ、該タイマは単一の引数でタ
イムアウト毎に機能を呼出す。該タイマは、満了時間後
に終了する。リピート、即ち繰返しが零でない場合には
、該タイマはリピート時間後に自動的にタイムアウトへ
再スタートされる。必要な場合に該タイマをキャンセル
するために使用することが可能なポインタがリターンさ
れる。
publfc tiwerT *5tartTfser
(tuna、 arg、 expiry、 repea
t )vojdT (tfunc)0; card4T arg; tiseT t−explry: tlseT *repeat; (3)Cancel Timerは、スタートしたタイ
マをキャンセルする。該タイマのキャンセルが成功する
と、該機能はTRUEヘリターンし、そうでない場合は
、FALSEである。
public boolT CanceTimer(t
fser )tlserT *ti麟er; タイマサービスによって使用されるデータ構成を以下に
示す。
typeder  5truat  tiwerTre
ctiseT           tar 1nte
rval;voldT          (ttmr
−f’unc) 0 ;card4T        
  tsr tod;card4T         
  t+u arg;5truct tiwerTre
c    ttmr next;l  tiwerT; タイマ構成timerTは、リピートインターバル(r
epeat  1nterva、Q)、終了時間(ex
p i ry  t ime) 、終了時にコールされ
る機能へのポインタ、その機能に対する引数(a rg
umen t)及び次のタイマ記録へのポインタを有し
ている。
GetTimeは、現在のTODクロック値をリターン
する。該機能は、該クロックを読取る場合のゆがみ(w
a rp−a round)を考慮すべく注意深くなけ
ればならない。
publ Ie voidT Getllse(tis
+e )timeT 本t1me; re仄乏t save high order part ofTO
D clock;read low order pa
rt ofTOD clock;until 5ave
d and current high order 
parts are equal ;1  /* Ge
tTjwe  */ StartTimer及びCancejlTimerは
、それぞれ、ソフトウェアタイマをスタートさせ且つキ
ャンセルする。
public timerT DtartTjmer(
runc、 arg、 expjry、 repeat
)voidT (零func) 0 : card4T arg; 1+聞eT粍則「y; tia+eT本repeat: if tigers available on rr
ee timer 1istunlink first
 timer frc* free tiger 1i
st;1se at 1ocate a new tiger rec
ord;5ave the function、 ar
gua+ent、 expiry、 and repe
atparueters ; add the current TOD to th
e explry tlwe;1ink  new  
tiger  1nto  5tarted  tiw
er  1ist  1n  5ortedorder
; return new tiger: 1 # 5tartTIser */ public boolT CancelTimer(
tiger )tiserTれimer: set return code to failed
;f’or all tigers on 5tart
ed tiger 1istif  tiger  f
ound unl ink cancel l聞timber f
ros 5tartedti■e「 ist; 1ink cancelled timer 1nto
 free tiger 1ist;set retu
rn code to 5uccess:break; 1  /*  CancelTtmer  零/インタ
ーバルタイマインタラブドはIntervajJ Ha
ndfi e rによって取扱われる。このインターバ
ルタイマは、コール、即ち呼出されるべきハンドラに対
してイネーブルされねばならない。
private vojdT IntervalHan
dler()rind rirst unexplre
d tiger on startedtiger 1
ist; process tis+ers; calculate next retry tia+
eout;reload 1nterval tlse
r;check for dispatch 1oop
 restart;1 /l IntervalHan
dler */D1例外(Except 1ons) 例外サービスは、回復可能及び回復不可能な例外を記録
(ilogging)するために使用される。
(1)警告(Warning)は、回復可能なノ\−ド
ウエア又はソフトウェア例外をログ(470g)、即ち
記録し且つCFEに報告する。該例外の理由の表示が与
えられる。
public voidT Warning (rea
son)Card4T   reason; (2)MachineCheckは、回復不可能な例外
をログ、即ち記録し且つCFHに報告する。
該例外の理由の表示が与えられる。
public voidT MachineCheck
 (reason)card4T   reason; 該例外サービス機能は、全てのPEステータス情報を共
通KDBログアウト(logout)区域内に維持する
jypede1″5truet  Jog−1reaT
reef bits!12T    log−dreg[8];b
its32T    log−areg[7];bit
s32T    Ion−ssp;bits32T  
  log−usp:bjts16T    log−
sr;bfts16T    IogJv: bits82T    log−pc;b1ts16T
    log−vec;l  log areat; public log xreaT KdbRegis
ters;public card4T   *5ta
ckTop;publlc card2T   Kdb
Status:レジスタ保存区域KdbRegiste
rsから構成されるクラッシュログ(crash  f
og)は、マシンチエツクを記録するために使用される
KDBは、又、カーネルスタックポインタ5tackT
op及びステータス情報KdbStatuSをブレーク
ポイント及びトラッキング用に必要とする。
該例外サービス機能に対する擬似コー に示す。
public voidT Warning (rea
son)cardT  reason; ドを以下 5ave warning function and
  reason:5end exception n
otification to CFE;)  /* 
Warnjng */ public voidT MachlneCheek
 (reason)cardT reason; set PE 5tate to s+achjne 
cheek;5ave  wachjne  chec
k  functjon  and  reason;
5ave all  registers;5ave 
 1ast  part or 5tack;1rno
t already machine checked
send exception notificati
on to CFE;else double mac
hine checkhalt; 1 /l MachineCheck */E、PMM
Uサポート カーネルにおいて、ページは該カーネル又はユーザタス
クの何れかに属する。PMMUサポートは、該カーネル
が、タスク変換テーブルを形成し且つ削除し、タスクに
対してページを使用可醜としたり不能としたり、且つユ
ーザページがアクセスされたか否かをチエツクすること
を可能とする。
(1)CreateTaskTTは、TCBポインタに
よって与えられるタスクがスタートされる場合に、ユー
ザ変換テーブルを初期化する。
public voldT CreateTaskTT
 (tcb)tcbT   *tcb; (2)De(l e t eTa s kTTは、TC
Bポインタによって与えられるタスクか完了するか又は
移動されると、ユーザ変換テーブルを除去する。
public voidT DeleteTaskTT
 (tcb)tcbT   *tcb: (3)InsertPageは、ページをタスクの変換
テーブル内に挿入し、従って該ページを該タスクに対し
て使用可能とする。TCBポインタ、ページ番号、ペー
ジポインタ及び書込みフラッグは引数としてバスされる
public voidT InsertPage (
tCb、 pagenuv page、 write)
tcbT   ネtcb; card4T   pagenum; pageT   本page; boolT     write: (4)RemovePageは、タスクの変換テーブル
からページを除去し、従って該ページを該タスクに対し
て使用不能とさせる。TCBポインタ及びページ番号は
引数としてバスされる。
pub目c voidT RemovePage (t
cb、 pagenum)tcb    *tcb; card4T     pagenum;(5)Was
PageUs edは、タスク変換テーブルをチエツク
して、最後のコール、即ち呼出し以来ページが使用され
たか否かを決定する。TCBポインタ及びページ番号が
引数としてバスされる。該機能は、該ページが使用され
た場合にTRUEヘリターンし、そうでなければFAL
SEである。該ページに対するPMMU使用ビットは各
コールでクリアされる。
public boolT VasPageUsed 
(tcb、 pagenus)teb      京t
cb: card4T   pagenus; PMMUサポート機能は、カーネル及びG−RTSの代
わりにPMMUを制御する。PMMUInitはスター
トアップ、即ち始動時においてPMMUを初期化する。
スーパーバイザ及びCPUアドレス空間は、直接マツプ
されており、ユーザのアドレス空間は要求によりマ・ノ
ブされる。
private voidT PMMUlnit(>i
nitialize page 5ize、 1ook
−up 1evel 、 and PC1ook−up
:mark unused address 5pac
es as 1nva11d;direct lap 
5UperViSOr and CPU 5paeeS
:r 1ush al I cache entrie
s;set root pointer regist
er;set translation contro
l register;# PMMUInit */ ユーザスペースのマツピングを管理するためにカーネル
によって四つのルーチンが使用される。
CreateTaskTTは、タスクに対するユザ変換
テーブルを初期化し、Del e t eTaskTT
はそれらを除去する。
publlc voidT CreateTaskTT
 (tcb)tcbT   零tcb: f’or user data and progra
g+ 5pacesallocate empty 1
evel A table;1  # CreateT
askTT */public vojdT Dele
teTaskTT (tcb)tcbT   *tcb
; for user data and program
 5pacesdelete all  1evel 
B table;delete 1evel  A t
able;1  /* DeleteTaskTT f
i/InsertPageはタスクの変換テーブル内に
ページを挿入し、RemovePageはそれを除去す
る。
public voidT InsertPge (t
cb、 page++ug+、 page。
tcbT    *tcb: card4T   pager+us+;pageT 
  *page; boolT    write; Write) If write protect set write protect blt;ens
ure 1evel A table exists;
if no 1evel B tablealloca
te espty 1evel B table;en
sure 1evel B table exists
;val 1date page in user t
able:] /* InsertPage if/p
ublic voidT ResovePage (t
Cb、 pagenuw+)tcbT    ttcb
; card4T   paget+ug+:ensure
 1evel A table exists;ens
ure 1evel B table exists;
1nval 1date page In +x;er
 table;If 1evel B table i
s emptydelete 1evel B tab
le+! # Res+ovePage */WasP
ageUsedは、ページ用のPMMU使用ビットをチ
エツクし且つクリアする。
public boolT WasPageUsed 
(tcb、 pagenuw)tcbT    れcb
: card4T   pagenus+ :ensure
 1evel ^table exists;ensu
re 1evel B table exists;s
et return code to true If
 used bit set otherwisefa
lse: clear usecl bit; return used bit 5tatus;1 
/*  WasPageUsed */バスエラーハン
ドラ(bus  error  hand1!er)は
、PMMUサポートの最も複雑な部分である。該ハンド
ラは、最初にエラーに対するチエツクを行ない、次いで
ページ欠陥に対してチエツクを行なう。合法的ページ欠
陥は有効なものとされる。欠陥は補正されるが、ソフト
ウェアはその欠陥を修復しない。
publ ic BERRHandlerOdetem
ne where the fault occurr
ed (data orinstruction) ; f’ind  out  wore  about  
the  fault;if illegal PMI
IU configurationmachine c
heek: if’ hard bus errormachine
 cheek; if Inval!d table entryif 
val id address 5paceif 5u
pervisor spacemachine che
ek; lse 1flegal reference ask kernel for page;5e raise addressing errorlse machine cheek: 「1ush cache entry:return 
from exception+1  /本BERRH
andler 本!F、ディスパッチ+ (Dispa
tcher)フレームワーク用の主ディスパッチループ
は、メツセージ及びタイマをカーネルヘデリバーし、ユ
ーザタスクを実行し且つ低優先度のバックグラウンド処
理を実施するために使用される。
private voidT Dispatcher(
)奮 reset rruework 5tack;enab
le 1nterrupts:ror al I re
ceived messagesconvert to
 transaction ronwat;del 1
ver  g+essage  to  kernel
 ;ror all expired tigersc
all expiry runctIon;unlin
k tiger f’ros 5tartec! tl
mer ll5t;it repeat 1nterv
al is nonzer。
calculate new expiry time
;1ink  tiger  1nto 5tarte
d  tlser  11stsorted orde
r; 1se 11nk tiger 1nto 「ree tise
r 11stIf there is a ready
 taskrestore current task
 5tatus:return to task; perf’orIbackground proces
sing;In インタラブドハンドラはCheckRestartをコ
ールして、該ディスパッチループを再スタートすること
が安全であるが否がを決定する。
private voldT CheekRestar
t()if user task executing
seve current  task 5tatus
;If user task executing o
r audItlngjump  to  top  
or dispatch  1oop;1  /* C
heckRestart */以上、本発明の具体的実
施の態様について詳細に説明したが、本発明は、これら
具体例にのみ限定されるべきものではなく、本発明の技
術的範囲を逸脱することなしに種々の変形が可能である
ことは勿論である。
【図面の簡単な説明】
第1図は並列処理システムによって使用されるメモリモ
デルを示したブロック図、第2図は本パラレル処理シス
テムのハードウェアを示したブロック図、第3図はカー
ネルの全体的な構成を示したブロック図、第4図は管理
ツリーを示した概略図、第5a図乃至第5f図は併合及
びページ形成の動作を説明する各説明図、第6図はトラ
ンザクション制御の関係を示した説明図、第7図はトラ
ンザクション制御データ流れを示した説明図、第8図は
トランザクション受給データ流れを示した説明図、第9
図はトランザクション休止データ流れを示した説明図、
第10図はフレームワークとカーネル及びハードウェア
の他の部分との間の関係を示した説明図、第11図はフ
レームワーク内のトップレベルデータ流れを示した説明
図、第12図はフレームワークトップレベル状態遷移を
示した説明図、第13図はサービスメツセージデータ流
れを示した説明図、第14図はメツセージ送給状態遷移
を示した説明図、第15図はメッセジ受給状態遷移を示
した説明図、第16図はサビスタイマデータ流れを示し
た説明図、である。 (符号の説明) 20 : 30 : 40 : 50 : 60 = プランナ ヘーンヤ フェイムマネジャ トランザクション制御 タスクマネジャ 70:情報コンポーネント 80:フレームワーク 90:Ilo

Claims (1)

  1. 【特許請求の範囲】 1、各々がプロセサとメモリとを具備する複数個の処理
    要素を持った並列処理コンピュータシステムにおいて、
    選択した処理要素によって実行されるタスクに対する情
    報ページを捜し出す方法において、タスクによって形成
    された時に各ページに対して独特のページ名称を割当て
    、ページが捜し出され且つタスクが実行中である場合に
    処理要素を管理するページ用エージェントのヒエラルキ
    を確立し、前記ヒエラルキをサーチしてタスクに対する
    ページを捜し出す、上記各ステップを有することを特徴
    とする方法。 2、特許請求の範囲第1項において、更に、ページをタ
    スクへ送給するステップを有することを特徴とする方法
    。 3、複数個の処理要素を持ったコンピュータシステムに
    おいて、タスクの実行をサブセットの処理要素へ制限す
    る方法において、プロセサ間通信距離に基づいて複数個
    のセットの処理要素をフェイム領域へ群別しフェイム領
    域をタスクに割当て、タスクページをフェイム領域に制
    限する、上記各ステップを有することを特徴とする方法
    。 4、特許請求の範囲第3項において、更に、前記タスク
    のフェイム領域を拡張するステップを有することを特徴
    とする方法。 5、複数個の処理要素がタスクを実行し且つこれらのタ
    スクに関連するメモリのページ内に結果を格納する並列
    処理コンピュータシステムにおいて、ページを併合する
    方法において、第一ページと第二ページとを比較し、差
    がある場合には第三ページ内のデータの代わりに第二ペ
    ージからのデータを第三ページ内に格納し、前記第二ペ
    ージの全てを前記第一ページと比較した後に、前記第二
    ページを廃棄する、上記各ステップを有することを特徴
    とする方法。 6、特許請求の範囲第5項において、更に、前記第一ペ
    ージを前記第三ページと置換するステップを有すること
    を特徴とする方法。 7、要素間通信を処理するために通信バスによって相互
    接続されている複数個の処理要素を有しており且つ主処
    理要素が一群の処理要素によって並列的に実施可能な選
    択した命令ステップを持ったメモリ空間からのプログラ
    ムを実行するコンピュータシステムにおいて、前記選択
    した命令ステップを並列的に実行する方法において、前
    記選択した命令ステップの前に並列命令文をプログラム
    内に挿入して前記選択した命令ステップを並列的に実施
    することが可能であることを前記主処理要素へ報告し、
    前記並列命令文を実行して前記主処理要素をして前記選
    択した命令ステップをタスクに割当て且つこれらのタス
    クをグループ間に分散させ、各タスクに対して別のメモ
    リ空間を確立する、上記各ステップを有することを特徴
    とする方法。 8、要素間通信を処理するために通信バスによって相互
    接続された複数個の処理要素を有しており且つ主処理要
    素が一群の処理要素によって並列的に実施することが可
    能な選択した命令ステップを持ったメモリ空間からのプ
    ログラムを実行するコンピュータシステムにおいて、前
    記選択した命令ステップを並列的に実行する方法におい
    て、前記選択した命令ステップの前に並列命令文をプロ
    グラム内に挿入して前記選択した命令ステップを並列的
    に実施することが可能であることを前記主処理要素へ報
    告し、前記並列命令文を実行して前記主処理要素をして
    前記選択した命令ステップをタスクに割当てると共にこ
    れらのタスクを前記一群の間で分散し、前記一群の処理
    要素の選択した一つがそのメモリ空間から情報を読取る
    ことを所望する場合に別個のメモリ空間を各タスクに対
    して確立し前記選択した一つがそのメモリ空間内に書込
    みを行なうまで前記選択した一つが前記主処理要素のア
    ドレス空間から読取ることを指示し、その後に前記選択
    した一つがそのメモリ空間から読取りを行なうことを指
    示する、上記各ステップを有することを特徴とする方法
    。 9、処理要素間通信のために通信バスによって相互接続
    されている複数個の処理要素を持っており且つ一群の処
    理要素によって並列的に実施することの可能な選択した
    命令ステップを持ったメモリ空間からの主タスクを主処
    理要素が実行するコンピュータシステムにおいて、前記
    選択した命令ステップを並列的に実行する方法において
    、前記選択した命令ステップの前に並列命令文をプログ
    ラム内に挿入して前記選択した命令ステップを並列的に
    実行することが可能であることを主処理要素へ報告し、
    前記並列命令文を実行して前記主処理要素をして前記選
    択した命令ステップをタスクへ割当て且つこれらのタス
    クを前記一群の間で分散させ、各タスクに対して別のメ
    モリ空間を確立し、前記一群に対して割当てられたタス
    クを実行し、各タスクのメモリ空間を併合し、前記タス
    クの実行が完了すると前記併合ステップが完了したか否
    かに拘らず前記主タスクの実行を再開する、上記各ステ
    ップを有することを特徴とする方法。 10、処理要素間通信のために通信バスによって相互接
    続されている複数個の処理要素を具備しており且つ一群
    の処理要素によって並列的に実施可能な選択した命令ス
    テップを持ったメモリ空間からのプログラムを主処理要
    素が実行するコンピュータシステムにおいて、前記選択
    した命令ステップを並列的に実行する方法において、前
    記選択した命令ステップの前に並列命令文を前記プログ
    ラム内に挿入して前記選択した命令ステップを並列的に
    実施することが可能であることを前記主処理要素へ報告
    し、前記並列命令文を実行して前記主処理要素をして前
    記選択した命令ステップをタスクへ割当ててこれらのタ
    スクを前記一群の間で分散させ、各タスクに対して別の
    メモリ空間を確立する、上記各ステップを有することを
    特徴とする方法。 11、各々が命令を実行するためのプロセサと情報を格
    納するためのメモリとを具備する複数個の処理要素を有
    しており且つ親プロセサが並列的に実行することが可能
    な選択した一連の命令を有する命令のストリームを実行
    し且つこの様な各処理要素に対してその処理要素内のプ
    ロセサが情報を書込むことが可能な独特のアドレス空間
    を確立する並列処理コンピュータシステムにおけるアド
    レス空間を管理する方法において、前記選択した一連の
    命令の前に前記選択した一連の命令を並列的に実行する
    ことが可能であることを表わすための命令を前記命令の
    ストリーム内に挿入し、前記選択した一連の命令を並列
    的に実行することが可能な一群のタスクへ分割し、各々
    に命令及び実行を開始すべき前記親プロセサのアドレス
    空間内のアドレスを送ることによって前記一群のタスク
    のメンバーへ別々の処理要素を割当てる、上記各ステッ
    プを有しており、最初にそれ自身のアドレス空間内に情
    報を書込むまで前記親プロセサのアドレス空間からの情
    報を最初に書込むまでこの様な各タスクが前記親プロセ
    サのアドレス空間からの情報を読取り、且つその時に親
    タスクからその中に書込まねばならない情報ページをコ
    ピーし且つその後にそのページから読取りを行なうと共
    に書込みを行なうことを特徴とする方法。 12、複数個のプロセサ要素を持った並列コンピュータ
    システムにおいて、実行すべき余分のタスクを持ったプ
    ロセサ要素からのタスクを実行すべきタスクを必要とす
    るプロセサ要素へ再分散する方法において、各プランナ
    エージェントが一団のプロセサ要素を管理するプランナ
    エージェントのヒエラルキを確立し、各プランナエージ
    ェントに対してそのプランナエージェントによって管理
    されている前記一団のプロセサ要素に関してのタスクロ
    ードに関しての情報を周期的且つ偶発的に送信し、プラ
    ンナエージェントのタスクロードに不均衡が存在する場
    合にタスク再分散操作を発動してその結果実行すべき余
    分の数のタスクを持ったプロセサ要素から実行すべきタ
    スクを必要とするプロセサ要素へタスクを転送する、上
    記各ステップを有することを特徴とする方法。 13、複数個のプロセサ要素を持った並列コンピュータ
    システムにおいて、一つのプロセサ要素から一団のタス
    クを少なくとも他の1個のプロセサ要素へ転送する方法
    において、各プランナエージェントが一団のプロセサ要
    素を管理する複数個のプランナエージェントからなるヒ
    エラルキを確立し、前記プランナエージェントのプロセ
    サ要素に関するタスクロードに関しての情報を各プラン
    ナエージェントに対して周期的且つ偶発的に送信し、前
    記プランナエージェントのヒエラルキを使用して初期的
    なプロセサ要素から少なくとも他の一つのプロセサ要素
    への一団のタスクの移動を調整し、前記プランナエージ
    ェントのヒエラルキを使用して完了したタスク情報の前
    記初期的プロセサ要素への移動を調整する、上記各ステ
    ップを有することを特徴とする方法。 14、コンピュータシステムにおいて、ケージ間で情報
    を送信するためにケージ相互接続バスによって相互接続
    されている第一組のケージ、ボード間で情報を送信する
    ためにケージバスによって相互接続されている各ケージ
    内に配設されている第一群のボード、複数個の処理要素
    、を有しており、前記各処理要素が情報を処理するため
    のプロセサと情報を格納するためのメモリとを具備して
    おり、前記処理要素が各ボード上に配設されると共に前
    記処理要素間で情報を送信するためにボードバスによっ
    て相互接続されていることを特徴とするコンピュータシ
    ステム。
JP25755690A 1989-09-29 1990-09-28 並列処理システム Pending JPH03209551A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US41499089A 1989-09-29 1989-09-29
US414,990 1989-09-29

Publications (1)

Publication Number Publication Date
JPH03209551A true JPH03209551A (ja) 1991-09-12

Family

ID=23643882

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25755690A Pending JPH03209551A (ja) 1989-09-29 1990-09-28 並列処理システム

Country Status (4)

Country Link
EP (1) EP0420142B1 (ja)
JP (1) JPH03209551A (ja)
CA (1) CA2026553A1 (ja)
DE (1) DE69033475D1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7698541B1 (en) 2006-10-31 2010-04-13 Netapp, Inc. System and method for isochronous task switching via hardware scheduling
US8239845B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Media for using parallel processing constructs
US8239844B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8255889B2 (en) 2007-02-14 2012-08-28 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
EP2297639A2 (en) * 2008-05-19 2011-03-23 The Mathworks, Inc. Method of using parallel processing constructs
CN112732466A (zh) * 2021-01-26 2021-04-30 广州衡昊数据科技有限公司 一种服务调用方法、装置和系统

Also Published As

Publication number Publication date
DE69033475D1 (de) 2000-04-13
CA2026553A1 (en) 1991-03-30
EP0420142B1 (en) 2000-03-08
EP0420142A3 (en) 1993-03-24
EP0420142A2 (en) 1991-04-03

Similar Documents

Publication Publication Date Title
CN109923523B (zh) 计算机系统及用于计算机系统的方法
US11803306B2 (en) Handling frequently accessed pages
US7783610B2 (en) Distributed database system providing data and space management methodology
Nanda et al. Decentralizing execution of composite web services
CN102365625B (zh) 用于虚拟机的虚拟非一致存储器体系结构
US5339415A (en) Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5561785A (en) System for allocating and returning storage and collecting garbage using subpool of available blocks
US20090125907A1 (en) System and method for thread handling in multithreaded parallel computing of nested threads
US20070143759A1 (en) Scheduling and partitioning tasks via architecture-aware feedback information
JPH05508043A (ja) 効率的な非仮想主メモリ管理のための方法
KR102051282B1 (ko) 선택적 리소스 이동을 이용하는 네트워크 결합 메모리
US20110153662A1 (en) Managing queries
US20040002974A1 (en) Thread based lock manager
US20140181026A1 (en) Read-only operations processing in a paxos replication system
US9886329B2 (en) Scalable RCU callback offloading
JPH09503328A (ja) 非同期に順序付けされた動作を行うコンピュータ方法及び装置
JPH03209551A (ja) 並列処理システム
US7188113B1 (en) Reducing contention by slaves for free lists when modifying data in a table partition
US6366946B1 (en) Critical code processing management
JPH0245221B2 (ja)
Drozdowski et al. Grid branch-and-bound for permutation flowshop
CA2370207A1 (en) Parallel processing system
Son et al. Approaches to design of real-time database systems
US20240211460A1 (en) Stream-based transaction processing
JPH11120147A (ja) 負荷分散制御方法