JPH05216692A - プログラム実行を管理する方法およびシステム - Google Patents

プログラム実行を管理する方法およびシステム

Info

Publication number
JPH05216692A
JPH05216692A JP4201449A JP20144992A JPH05216692A JP H05216692 A JPH05216692 A JP H05216692A JP 4201449 A JP4201449 A JP 4201449A JP 20144992 A JP20144992 A JP 20144992A JP H05216692 A JPH05216692 A JP H05216692A
Authority
JP
Japan
Prior art keywords
enclave
thread
execution
threads
enclaves
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.)
Granted
Application number
JP4201449A
Other languages
English (en)
Other versions
JP2520543B2 (ja
Inventor
Tsuneo Horiguchi
ツネオ、ホリグチ
Stephen Sherman Miller
スティーブン、シャーマン、ミラー
Alfred William Shannon
アルフレッド、ウイリアム、シャノン
William David Wallace
ウイリアム、デイビッド、ウォレース
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05216692A publication Critical patent/JPH05216692A/ja
Application granted granted Critical
Publication of JP2520543B2 publication Critical patent/JP2520543B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Abstract

(57)【要約】 (修正有) 【目的】 プロセスが予想可能で順序だてた方式で協同
し動作することが可能な呼出し可能実行時支援サービス
の集合で実施コンピュータプログラムの実行管理方法と
システムの提供。 【構成】 プログラム実行構成要素を次の通り定義す
る。プロセスはプログラム実行の最高レベルの構成要素
で、1つまたは複数のエンクレーブで構成される。エン
クレーブは高級言語で定義された実行意味の範囲を定義
し、アプリケーション終了の範囲及びに共有データ、フ
ァイル、プロシージャー用の名前解決の範囲が含まれ
る。エンクレーブは1つまたは複数のスレッドから構成
される。1つのスレッドはプロシージャーの連続呼出し
から構成され他のスレッドと同時に実行される。プロシ
ージャーは異なる高級言語で書かれている。呼出し可能
サービスは構成要素を作成し終了する手段を備え、プロ
セスの終了要求でプロセス中のすべてのエンクレーブ
(スレッドを含む)が終了する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、本出願人によってなさ
れた米国特許出願第07/755708号(「METHOD A
ND SYSTEM FOR REPRESENTING AND SIGNALING RUN-TIME
PROGRAM CONDITIONS(実行時プログラム状態を表現し合
図を送る方法及びシステム)」)ならびに米国特許出願
第07/755706号(「PROGRAM CONDITION HANDLI
NG(プログラム状態処理)」)と称される同じ日に出願
された発明に関連しており、コンピュータシステムにお
いてプログラム実行を管理する方法とシステムに関す
る。
【0002】
【従来の技術及び発明が解決しようとする課題】コンピ
ュータプログラミング用の様々な高級言語(C, COBOL,
FORTRAN, PL/I)はすべて、アプリケーションプログラ
ムの実行に応じて異なる定義とモデルを備えている。こ
れらのモデルはソフトウェアアプリケーションの実行時
の意味を定義する。首尾一貫してない上に、これらのモ
デルは、全体が1つのプログラム言語で書かれているア
プリケーションにあてはまるだけである。コンピュータ
産業における様々なオペレーティングシステムの環境に
は、アプリケーションプログラム実行の多様なモデルが
ある。たとえば、IBM MVS, VM/CMS, OS/2, CICS および
OS/400などのオペレーティングシステムでは、プログラ
マーはまったく異なる環境でアプリケーションを実行す
ることになる。結果として、複数の環境で使用できるよ
うにアプリケーションプログラムを構造化し記述する際
にさまざまな問題が発生する。
【0003】様々な産業基準でこうした問題の多くの解
説が試みられてきた、しかし、産業基準はおもに単一言
語または単一オペレーティングシステム環境に適用され
るものであり、複数の言語とオペレーティングシステム
環境を同時に統一するよう試みられてはいない。たとえ
ば、次のようなプログラム言語基準がある。 ・情報システム−プログラム言語COBOL の米国基準、X
3.23-1985 ・情報システム−プログラム言語FORTRAN の米国基準、
X3.9-1990 ・情報システム−プログラム言語Cの米国基準、 X3.1
59-1990
【0004】動作環境 ・コンピュータ環境のIEEE基準ポータブルオペレー
ティングシステムインターフェース、IEEE基準100
3.1-1988 (POSIX としても知られている) ・X/オープン共通アプリケーション環境 従来技術が必要とするが提供してないものは、様々な高
級言語とオペレーティングシステム基準によるまったく
異質のモデルを統一する、プログラム実行の管理方法と
手段である。以下に記載する本発明は、複数のプログラ
ム部分要素から構成され、複数のプログラム言語で書か
れ、2以上のオペレーティングシステム環境で使用で
き、一貫しかつ十分に定義された動作で動くアプリケー
ションを実行するモデルを定義する。
【0005】用語 本明細書で使用される用語は以下の通りである。活動化(Activation) プログラム活動化とは、実行準備中のプログラムの実行
例を指す(実際にプログラムを実行することとは異な
る。これは「呼出し(invocation) 」の定義を参照のこ
と)。高級言語プログラムは共有部分と非共有部分を備
えている。通常は、共有部分は、命令と定数などで、非
共有部分−各活動化毎に異なる−静的データなどであ
る。活動化とは非共有記憶部の物理的割当てだけでなく
その中の値も示す。すなわち、初めてエンクレーブ内で
プログラムが実行されると、そのプログラム固有の記憶
部分が割り当てられ初期化されるまでその静的記憶部の
活動化は行なわれない。状態重大度コード(Condition Severity Codes) 0から4に渡り、0が最も重大度が低い。状態マネージャ(Condition Manager ) この状態マネージャはある状態が発生するとコンピュー
タシステムの制御を握り、様々なシステムおよび/また
はユーザアプリケーションルーチンを実行することによ
りその状態の処理を管理するプログラムまたは手段であ
る。オペレーティングシステム、実行時環境またはアプ
リケーションプログラムの一部でもよい。カーソル(Cursor) 実行可能命令を示すアドレスポインタである。ハンドルカーソル(Handle Cursor ) ハンドラが呼び出されるハンドルルーチンとスタックフ
レームの両方を示すカーソルである。ヒープ記憶部(Heap Storage) 1つのプロセス内で実行中のプログラムに関連する、無
秩序に発生したプログラム記憶領域のグループである。
すなわち、特定の型のプログラム記憶領域は、それらの
発生に論理的な方向づけのないヒープとして考えられ、
ヒープ内のプログラム記憶領域の発生は、その領域が最
も適切な場所に定まる。呼出し(Invocation) 呼出しとは、論理呼出し/戻し機構により制御を受け取
ったコード「プロシージャー」の実行のことである。呼
出しは活動化とは異なる。所定の活動化に対してプロシ
ージャーは複数回呼び出されるし、プロシージャー自体
を再帰的に呼び出すことさえある。プラットフォーム(Platform) 複数のプログラムが実行可能なオペレーティングシステ
ムとコンピュータハードウェアの組合せである。プロシージャー(Procedure ) コンパイラー、すなわち、コンパイル単位の発動出力で
ある。コンパイル単位は、意味を変えることなく、個別
にコンパイル可能な最小のソース列に対応する。再開カーソル(Resume Cursor ) アプリケーション中の実行が再開可能な点を指定するカ
ーソルである。再開(Resume) 状態処理の終了であり、再開カーソルによって示される
命令及びスタックフレームに対する制御権の移動であ
る。スタック(Stack ) プロシージャー呼出し(呼出し/戻し)を支持する概念
上の構造である。「スタック要素」として知られる後入
れ、先出し要素から構成される。スタックフレーム(Stack Frame ) スタックフレームはスタックの1要素である。スタック
フレームは、プロシージャーが呼び出される度に作成さ
れ、プロシージャーがその呼び出しにたいして戻るとき
に削除される。プロシージャー呼出し、実行および戻し
に関連した資源を管理するのに使用される。スタックフレームゼロ(Stack Frame Zero) 最初のルーチンで、スタックフレームの直前の概念上の
スタックフレームである。スレッドまたはタスクが初期
化され、最初のプロシージャーが呼び出され、終了が起
動される理論上の場所である。状態処理のために、ゼロ
番目のスタックフレームは、ある言語の省略時アクショ
ンが適用されるフレームとなる。静的記憶部(Static Storage) プログラムが1つのエンクレーブ内で初めて実行される
ときに新しい割当てを獲得し、プログラムが戻るときに
も割当てが自動的に解除されることはないプログラムの
作業用記憶部である。静的記憶部は、1つのエンクレー
ブ内でプログラムを多重に実行しても不変である。
【0006】
【課題を解決するための手段及び作用】本発明は、単一
または複数の言語で書かれた複数のアプリケーションが
予測可能かつ順序だてて協同し動作することができる呼
出し可能実行時支援サービスの集合を定義し供給するこ
とにより、コンピュータシステムにおけるプログラム実
行を管理する方法とシステムに関する。本発明は、エン
クレーブ(enclave )の概念を、プロセス(process )
やスレッド(thread)とは異なる高級言語の意味上の範
囲として定義し、これらの構成物を使用して、異なる高
級言語で書かれたプロシージャーの集合を管理する実行
時サービスの集合を実現する。1つのエンクレーブは、
プロシージャーのグループの実行を支援する論理的実行
時構造として定義される。エンクレーブ内で呼び出され
る最初のプロシージャーは、「主」プロシージャーとな
り、他のプロシージャーは「従属」プロシージャーとな
る。そのエンクレーブは、共有記憶部、終了および状態
処理を含む高級言語の意味の範囲を制限する。1つのエ
ンクレーブは1つまたは複数のスレッドからなる。1つ
のプロセスは、特徴が実行時環境により記述されている
最も外側の実行時構造である。プロセスの間には階層的
関係はない。むしろ、各プロセスは、個別かつ非同期
に、複数のシステム資源を競うが、他のシステム資源、
特に論理的に区別された「アドレス空間」を所有する。
1つのプロセスは、1つまたは複数のエンクレーブから
なる。呼出し可能サービスは、1つのプロセス内で複数
のエンクレーブを起動したり止めたりする手段を備えて
いる。1つのエンクレーブを終了しても、実行を継続可
能な他のエンクレーブには影響はない。呼出し可能サー
ビスは、複数の独立したプロセスを開始したり止めたり
する手段を備えている。そのプロセスを終了するよう要
求を実行すると、そのサービスは自動的にそのプロセス
で始まったすべてのエンクレーブを終了することにな
る。終了の他の方法は、終了を実行する前に終了状態を
合図するものであり、定義された終了ハンドラを実行す
る。エンクレーブは複数のスレッドをもつことが認めら
れている。1つのスレッドは、本発明の実行環境プログ
ラムモデル内での実行の基本的な単位である。スレッド
が所有する資源は、マシン状態、スタック、論理的に区
別された状態マネジャーである。各スレッドは、非同期
に実行を競う。意味上の範囲が制限されることによる1
つの影響は、アプリケーションの終了を要求する高級言
語ステートメントのコードを実行すると、エンクレーブ
だけが終了することになる。1つの例は、COBOLの
STOP RUNステートメントである。
【0007】
【実施例】本発明は、複数の高級言語(HLL)で記述
できるアプリケーションプログラムの共通実行環境(C
EE)と呼ばれる共通実行時環境の一部として実施され
る。CEEは、状態マネージャを含む共通状態ハンドラ
(CCH)を含む。本発明の焦点は2つの主要な領域に
おかれる。第1に、混合言語アプリケーション用に実行
時意味を定義することである。これは、従来の言語基準
を拡大して、複数の言語で書かれた構成要素によりアプ
リケーションの動作を定義する。第2に、複数の部分構
成要素プログラムからアプリケーションを構築するモデ
ルを定義し、部分構成要素プログラム間での制御権の移
動とそれらの間の相互作用を重視する。
【0008】本発明は、個別にコンパイルされたオブジ
ェクト(コンパイル単位またはプロシージャー)が、一
貫した意味に基づく異なる計算環境において統合され実
行されるプログラム実行アーキテクチャを定義する。こ
のアーキテクチャは、直列、マルチタスキングおよびト
ランザクション指向アプリケーションを備えている。こ
のアーキテクチャは、IBMのCICSなどのトランザ
クション処理システムのマルチ実行単位概念やOS/2
オペレーティングシステムのマルチスレッディング支援
のような、目標プラットフォームで支援されている重要
なアプリケーションの特徴に分解する。このアーキテク
チャは、従来の言語上の意味を支援するが、一貫した自
然な方法でそれらの意味を拡大して、マルチ言語、マル
チアドレス空間/ノード、マルチ実行単位とマルチスレ
ッドアプリケーションを支援する。
【0009】異なるプラットフォーム上でプログラム管
理アーキテクチャを実施すると、アプリケーションプロ
グラムの相互システム意味一貫性(CSC)が現われ
る。 ・高級言語ソースステートメントは複数のプラットフォ
ーム上で同一である。 ・アプリケーションライターインターフェース(AW
I)はすべてのプラットフォーム上で同一である。 ・アプリケーション結合、活動化、およびネームスコー
ピングは、すべてのプラットフォームで同じ結果を達成
する。 ・プログラム実行データ(局所と外部静的、自動的)は
すべてのプラットフォームで同じように動作する。 ・スタックとヒープ記憶部は、協同環境下ですべての言
語により供給され、すべてのプラットフォーム上で一貫
性をもって動作する。
【0010】プログラムモデル プログラム管理は、1つのアプリケーションのプログラ
ム実行構成要素とこうした構成要素の管理に関連する意
味を定義するものである。3つの主要プログラム管理構
成要素、プロセス、エンクレーブおよびスレッドが、こ
うしたアプリケーションを支援するように定義されてい
る。1つのアプリケーションは1つまたは複数のプロセ
スから構成される。複数のプロセスが資源を共有するこ
とはなく、アドレス空間またはシステム境界を横切って
分配できるアプリケーションの構成要素となるよう意図
されている。1つのプロセスは1つまたは複数のエンク
レーブから構成される。エンクレーブは、構成要素のプ
ロシージャーのために、言語の意味の範囲を定義する。
たとえば、FORTRAN、COMMONまたはCOB
OLのものや外部オブジェクトなどの言語名分析の範囲
または主プロシージャーを定義する範囲及び関連する言
語意味を定義するものである。1つのエンクレーブは、
1つまたは複数のスレッドから構成される。図1、2及
び3はその関係を示す。スレッドは同期実行の基本単位
である。スレッドは他のスレッドと同時に実行する。ス
レッドは、動作中の同期プロシージャーの呼出しを反映
している関連するスタックを所有する。関連する状態マ
ネージャも所有している。
【0011】プログラム管理構成要素 プロセス プロセス−プログラムモデルの最高位の構成要素−は、
少なくとも1つのエンクレーブを含む資源−コードもデ
ータも−の集合である。他のプロセスのアドレス空間か
ら論理的に分離されている関連するアドレス空間も備え
られている。1つのプロセスには1つまたは複数のエン
クレーブが含まれることがある。すべてのプロセスは互
いに独立しており、互いに等価である。特に、プロセス
は階層的に関連づけられていることはない。1つのプロ
セスが作成されると、文字列引数が、コマンド線上で渡
されるものと同様の実行時オプションを含むプロセスに
渡される場合がある。パラメータをプロセスに渡す規約
はプラットフォームにより異なる。1つのプロセスが他
のプロセスを作成する場合がある。アプリケーション中
の複数のプロセスは、プラットフォーム上で利用できる
任意のプロセス間通信(IPC)により相互通信可能で
ある。IPC機構以外には、他のいかなる資源もプロセ
ス間で共有されることはない。プラットフォーム毎に特
定されるために共有可能になる可能性のある資源を活用
すべきではない、というのは、アプリケーションが非標
準で非ポータブルになるからである。1つのプロセスが
他のプロセスを作成するときには、その作成するプロセ
スは、CEEが、作成されたプロセスが終了したこと
を、その作成したプロセスに伝えるべきであると示すこ
とができる。これは、標準CEEプロセス間通信機能に
より実行される。
【0012】エンクレーブ エンクレーブとは、プロシージャーの活動化の集まり
(活動化集合)の実行を支援する論理上の実行時構造の
ことである。「環境」という用語が無条件に使用されて
いれば、通常は、エンクレーブレベルでの高級言語の実
行環境のことを指す。エンクレーブは、高級言語の意味
の範囲を定義する。特に、 ・主プロシージャーと従属プロシージャーの定義の範囲 エンクレーブで呼び出された最初のプロシージャーは、
「主プロシージャー(MAIN)」と指定される。他の
プロシージャーはすべて「従属プロシージャー(SU
B)」として呼び出される。(「主プロシージャー」を
含むスレッドは、エンクレーブが終了されたときに終了
される最後のスレッドである。) エンクレーブで呼び出された最初のプロシージャーは、
そのプロシージャーが書かれた言語の規則によりMAI
N(主)となる。そのエンクレーブで呼び出された他の
プロシージャーはすべて、そのプロシージャーが書かれ
た言語の規則によりSUB(従)となる。このプロシー
ジャーには、たとえば、連結規則やソース言語または言
語のコンパイラ指示仕様規則が含まれる。
【0013】注意すべきことは、MAINまたはSUB
としてプロシージャーが呼び出され、言語の規則により
再帰呼出しが認められていれば、そのエンクレーブ内で
複数の呼出しがそのプロシージャーに関して行なわれる
場合があり、その呼出しの1つが主プロシージャーで他
が従属プロシージャーである。 ・外部データ(たとえば、COBOLまたはPL/Iの
外部データ、FORTRAN COMMON)の共有の
範囲 ・外部ファイル(たとえば、COBOLまたはPL/I
の外部ファイル)の共有の範囲 ・言語として知られている最外方プログラム単位の実行
を終了する言語ステートメント(たとえば、PL/I
STOP、 COBOL STOP RUN)は、制御
を現エンクレーブの主プロシージャーの呼出しプログラ
ムに戻す。
【0014】戻すまえに、そのエンクレーブの範囲のプ
ロシージャーにより獲得された資源が開放され(少なく
とも論理的に)、オープンファイルが閉じられる。 ・ブロックからのGOTOの目標は、エンクレーブの現
スレッド内になければならない。 ・以下の型のデータの範囲と可視性 −自動データ:範囲と可視性はプロシージャーの呼出し
である。 −静的局所データ:範囲は閉鎖エンクレーブで、可視性
はエンクレーブ内の関連プロシージャーの呼出しであ
る。 −静的外部データ:範囲は閉鎖エンクレーブで、可視性
はエンクレーブ内のプロシージャーの呼出しである。静
的記憶部は、エンクレーブが生きている間の最終的に使
用された状態を保持する。 ・ヒープ記憶部は、エンクレーブにおけるすべてのプロ
シージャー(したがって、すべてのスレッド)内で共有
される。1つの言語で書かれたプログラムにより割り当
てられたヒープ記憶部は、他の言語のプログラムにより
開放される。1つのスレッドにより割り当てられたヒー
プ記憶部は、開放されるか又はエンクレーブが終了する
まで維持される。どのスレッドも記憶部を開放できる。
多重スレッデドエンクレーブにおいて、共通実行環境が
ヒープの管理を序列化する。アプリケーションプログラ
ムによる明確な序列化は必要ない。 ・状態管理意味の外部エンクレーブ状態管理意味の範囲
はそれぞれエンクレーブ内でスレッディング(つながれ
る)される。
【0015】1つのスレッド内のプロシージャーの呼出
しは、CALLステートメントを介して実施される。新
しいスレッドを開始するプロシージャーの呼出しは、ス
レッド作成サービスを介して実施される。標準CALL
ステートメント、関数呼出し、COBOL CALL識
別子およびCALLプロシージャー_変数は意味上は等
価呼出しである。エンクレーブは、制御権を他のエンク
レーブに転送できる。CEEは、EXEC CICS
LINKとEXEC CICS XCTLが実行され自
動的に適切な新しいエンクレーブを開始するときを検出
する。呼出し可能サービスCEECRENは、(CIC
Sではない任意の環境における)新しいエンクレーブを
開始するのに必要な直接機構である。その結果、新しい
エンクレーブで1つのスレッドの同期呼出しが行なわれ
る。すなわち、新しいエンクレーブを作成するスレッド
は、新しいエンクレーブの実行中に実行を「一時停止」
する。作成エンクレーブの他のスレッドは影響を及ぼさ
れることはない。目標エンクレーブのMAINプロシー
ジャーが受け取ることができるなら、エンクレーブは仮
パラメータを参考のために渡す場合がある。アプリケー
ションの実行に関連するデータの他の共有は認められな
い。
【0016】1つのエンクレーブが多重スレッドをもつ
こともある。エンクレーブが終了すると(たとえば、S
TOPステートメントにより)、すべてのスレッドが終
了する。エンクレーブの初期スレッドを除いて、スレッ
ドが終了される順序は特定されてない。アプリケーショ
ンは終了の特定の順序に依存することはない。エンクレ
ーブの初期スレッドは、エンクレーブの終了時の最後に
終了される。大域ネーミング規則または相互エンクレー
ブ引数受渡しを介して、ファイルは複数のエンクレーブ
で共有される。1つのエンクレーブ内で開かれたファイ
ルは、エンクレーブ終了時にそれらのファイルが開かれ
ていても必ず閉じられる。この暗示閉鎖は、ファイルが
定義され開かれているプロシージャーの構成言語の終了
出口ルーチンにより実行される。メッセージファイルの
使用はCEEにより調整される。メッセージファイル名
が作成側と新しい環境で同じ場合には、メッセージファ
イルは閉じられない。
【0017】スレッド スレッドとは、同期呼出しと呼出し単位(プロシージャ
ーを含む)の終了からなる実行構成要素である。それ
は、システムがその状態と共に実行経路に発送する基本
プログラム単位である、たとえば、命令カウンタやレジ
スタなどである。スレッドは、他のスレッドと同時に実
行できる。1つのスレッドは、エンクレーブ内のすべて
のメモリにアドレス指定するが、自分自身のメモリは所
有していない。スレッドは自身の個別スタックを所有し
ており、状態管理意味の範囲を定義する。エンクレーブ
内のすべてのスレッドは、互いに独立しており等しい。
特に、それらのスレッドは階層的に関連づけられてはい
ない。
【0018】以下に、資源の所有権と共有の点から、プ
ロセス、エンクレーブおよびスレッド間の関係が示され
る。図2は、マルチタスクを行なわないSAという名の
プロシージャーを実行する単純な場合を示す。点線のボ
ックスは、論理エンティティを示し、実線のボックスは
ユーザコードの実行場所を示す。 ・プロシージャーがコマンドレベルから実行されると、
プロセス、エンクレーブ及び初期スレッドがすべて暗黙
に作成される。 ・これらの図は論理所有権を示す。実際の制御ブロック
結合はシステムに依存し、しばしば性能により左右され
る。 ・スレッドSAで実行中のプロシージャーは、様々な時
点、事前実行結合、ロード時の結合または呼出し時の結
合で外部名と例示的静的記憶部を解決するコンパイル単
位から構成できる。結合の型はどんなものでもよい。 多重エンクレーブをもつ同期実行:ここでの要求は、ス
レッドSAが、SAのプロシージャーとQAのそれらの
間の完全な独立を維持してQAを起動することである。
QA(SA同様)は、コマンドレベルから実行可能であ
る。
【0019】図4を参照すると、スレッドSAは、エン
クレーブQ1を作成し、スレッドQAと命名し実行す
る。オペレーティングシステムの視点から、スレッドS
AとQAは、「実行のスレッド」と同じであるが、しか
し、論理的には、それらは独立しており、Q1が完了す
るまでS1が待機するという点において同期している。
【0020】S1に属している静的データは、Q1に属
しているデータとは異なる名前で離れており、したがっ
て、「charlie 」とよばれる静的外部変数が両方にある
場合には、各プログラムは、「charlie 」のそれ自体の
コピーをもつ。Q1の静的データは、Q1が作成される
ときに論理的に裏付けられて、エンクレーブQ1が終了
するとき再請求される。エンクレーブQ1で必要な静的
データは、エンクレーブが作成されるときに初期化され
る。したがって、エンクレーブQ1が終了しスレッドS
Aは新しいエンクレーブを再度作成し、スレッドQAと
命名すると、静的データの新しいコピーが得られる(す
なわち、それは、前のエンクレーブ例から最後に使用さ
れた状態にはない)。
【0021】エンクレーブQ1が作成され終了すると、
ユーザとメンバーの出口ルーチンがエンクレーブS1の
場合と同様に行なわれる。新しい実行オプションとユー
ザ引数がS1からQ1に渡され、Q1がコマンドレベル
から実行される場合も同じである。
【0022】ユーザ戻りコードと帰還コードのプロセス
は、エンクレーブS1の場合とエンクレーブQ1の場合
とが同じである。エンクレーブQ1が終了すると、帰還
コードと戻りコードがQ1からスレッドSAに戻され
る。一般に、スレッドQAで発生する状態は、スレッド
SAで設定された状態ハンドラからは独立している。帰
還トークンとコマンドレベルで戻される対応する戻りコ
ードは、エンクレーブQ1が終了するときにスレッドS
1に利用可能になる。
【0023】スレッドQAが、STOP RUNまたは
CALL EXITのような終了を行なうための言語構
成要素を発行する場合、エンクレーブQ1だけが終了す
る。スレッドSAが、エンクレーブQ1が終了する方法
を示す帰還コードを受け取る。
【0024】スレッドQAの任意のコードからスレッド
QA以外の位置へのブロックから外へのGOTOは違法
である。すべての多重エンクレーブまたはスレッドの場
合には、ファイル同期はCEEでは行なわれず、ユーザ
は基本オペレーティングシステムのもつ機能に依存す
る。すなわち、SAとQAが同じファイルにアクセスす
る場合、望ましい効果が得られたことを確認するのはユ
ーザまたはシステムの責任である。
【0025】エンクレーブ内の多重スレッドの実行:軽
量スレッドを実行するための(FORTRANT並列実
行におけるような)要件で、データを容易に共有し単一
タスクを複数のセクションに分割し、それらを同時に異
なるプロセッサで実行する。しかし、メモリは、スレッ
ド間で共有可能でなければならない。これらの軽量スレ
ッドは、プロセッサのオーバーヘッドの点からは、作成
し発送するのが容易でなければならない。図5を参照の
こと。
【0026】複数のスレッドは静的データの単一コピー
を共有可能で、スタックデータはポインタとパラメータ
を介して共有される場合があることに注意すべきであ
る。モデルは、混合言語アプリケーションの高級言語意
味の効果の定義とトランザクション処理と多重スレッデ
ィングのプログラムモデルへの統合を試みるものとして
開発されたものである。コンセプトは、単一スレッディ
ングアプリケーションのために開発され、マルチスレッ
ディング用に拡張されたものである。
【0027】CICSトランザクション処理は、実行中
のCICSスレッドでエンクレーブを結合する。1つの
エンクレーブが制御権を他のエンクレーブに転送すると
きには、参照のためパラメータを渡し、ポインタを備え
る場合がある。この意味することは、複数のエンクレー
ブはアプリケーションでメモリを共有することが可能で
なければならないということである。
【0028】アプリケーションは、アドレス指定可能な
メモリを共有しない部分から構成される場合もある。こ
れは、ハードウェアまたはオペレーティングシステムが
多重アドレス空間を準備するときに起こる。それは、ア
プリケーションがシステムネットワークの多重ノードに
分散されるときにも行なわれる。したがって、いくつか
のアプリケーションにおける複数のエンクレーブがメモ
リを共有するという要件と1つのアプリケーションの構
成部分が分散可能であるという要件を持つことになる。
プロセスは、分散可能なアプリケーション内の単位であ
る。プロセス内では、複数のエンクレーブが、それらが
渡す引数によりメモリを共有可能である。
【0029】スレッドは、並列処理を支援している。ア
プリケーションは実行中の複数の並列経路に分割可能で
あり、経過実行時を改善することも可能である。非同期
事象に依存するプログラム(デバイスドライバなど)を
構成する便利な方法も備えられている。独立スタックと
例外ハンドラによりスレッドは互いから独立して実行可
能である。スレッド作成、終了および相互作用は迅速で
なければならない。アプリケーションが並列処理を利用
可能な程度は、並列化の管理に関連するオーバーヘッド
に直接依存する。スレッド管理は、FORTRAN D
Oループの並列実行におけるような、アプリケーション
の小さな区域内で並列化の探求ができるほど効率的でな
ければならない。スレッドはエンクレーブの資源を共有
するので、資源、コード又はデータの新しいコピーを選
択的に作成(活動化)する必要なく、資源を作成可能で
ある。その意図は、新しいスレッドを初期化するのに必
要な作業の量を最小にすることである。
【0030】多重スレッドが導入されるときに、伝統的
な高級言語意味は拡張される。プログラムモデルは、混
合言語意味を多重スレッディングアプリケーションに拡
張する。拡張は、単一スレッディング意味といくつかの
言語のマルチタスキング意味と一貫している。多くの言
語コンセプトは、最初に、エンクレーブ上の効果により
定義されたものである。マルチスレッディングに拡張さ
れるとき、スタックや状態マネージャなど、エンクレー
ブ以外の閉鎖スレッドに影響を及ぼすよう修正される。
他の場合には、STOPステートメントのように、効果
の範囲はエンクレーブであるが、その意味は、エンクレ
ーブのすべてのスレッドを終了するように拡張される。
マルチスレッディングは、それらを変更するよりも意味
を拡張する。単一スレッディングアプリケーションで
は、スレッドにより範囲を定められた意味は、エンクレ
ーブにより範囲を定められるようであるが、それは、単
一スレッドの範囲がエンクレーブのそれと同じためであ
る。
【0031】呼出し可能サービス 呼出し可能サービスは、アプリケーションプログラム
が、元来のプログラム言語の構文の機能を拡張するプロ
グラムモデルの構成部分を利用することができるよう定
義される。以下のインターフェースの定義はC言語を使
用する。以下で使用されたタイプの定義は、本明細書で
は特に定義されない、というのはそれらの定義は各実施
例毎に変化し、本発明を実施するのには重要ではないか
らである。呼出しルーチンは、互換性パラメータタイプ
と、規約を呼出し可能サービスにより予期されたものに
渡すパラメータを使用する必要がある。
【0032】CEECRPR−プロセスの作成 新しいプロセスを作成し、その主エンクレーブ内で実行
する初期スレッドを開始する。 void CEECRPR(program_name, run _opts. process _id.[fc]) VSTRING *program _name; VSTRING *run_opts; INT4 *process_id; FEED _BACK*fc; ただし、 program _nmae(入力) 新しいプロセスの初期エンクレーブで、活動化し、初期
化し、呼び出す主プロシージャーの名前である。 run _opts(入力) プロセスの新しい環境を制御する実行時のオプションで
ある。 process _id(出力) 新しいプロセスのプロセス識別子 fc(出力/オプション) 新しいプロセスを作成するときに成功の程度を示す帰還
コードである。 注意事項: 1.新しいプロセスが作成される。新しいエンクレーブ
が、所定の実行のオプションrun _optsによりプロセス
で初期化される。初期スレッドは、メインプログラムと
なるprogram _nameで実行を開始するエンクレーブで作
成される。 2.サービスにより戻されたプロセス識別子は、他のサ
ービス呼出しで新しく作成されたプロセスを参照するた
めに使用される。任意の他の使用は定義されてない。 3.新しいプロセスは、作成プロセスと非同期に実行す
る。
【0033】CEEEXPR−現プロセスを脱出。現プ
ロセスのすべてのエンクレーブを終了し、現プロセスを
終了する。 void CEEEXPR 注意事項: 1.プロセスにおけるすべてのエンクレーブが通知なし
に即座に終了される。 2.プロセスにおけるすべての資源が開放される。
【0034】CEETRPR−プロセスを終了する。指
示されたプロセスのすべてのエンクレーブを終了し、プ
ロセスを終了する。 void CEETRPR(process_id.[fc]) INT4 *process _id; FEED_BACK *fc; ただし、 process _id(出力) 終了のためのプロセスの識別子である。 fc(出力/オプション) プロセスを終了するときの成功の程度を示す帰還コード
である。 注意事項: 1.指示されたプロセスのすべてのエンクレーブは、通
知なしに直接終了される。 2.指示されたプロセスのすべての資源は、開放され
る。
【0035】CEECREN−エンクレーブを作成する 新しいエンクレーブを作成し、その内で主プロシージャ
ーを活動化し、呼び出す。 void CEECREN(name, run_opts, user_arg, encl _fc, [fe]) CEE_ENTRY *name; VSTRING *run_opts; void *user_arg; FEED_BACK *encl _fc; FEED _BACK *fc; ただし、 name(入力) 「活動化集合」に追加され主プロシージャーとしてエン
クレーブ内で呼び出されるプロシージャーを参照する入
力定数である。 run _opts(入力) エンクレーブ内でプログラムの実行に適応可能なCEE
実行時オプションを含む文字列である。 user_arg (入力) エンクレーブの第1(主)プロシージャーに渡される引
数である。 encl_fc (出力) 現呼出しにより作成されたエンクレーブの(主プロシー
ジャーの)実行により作成された帰還コードである。 fc(出力/オプション) 呼出し可能サービス帰還コードが入力されるオプション
パラメータである。 注意事項: 1.エンクレーブの実行により作成された帰還コードの
形式と内容はプラットフォームに依存している。 2.ユーザの脱出は、もしあれば、エンクレーブ初期化
および終了中に行なわれる。 3.現スレッドは、新しいエンクレーブを待機し、実行
を終了し、制御権をそれに戻す。 4.オプションがrun _optsで渡されない場合、新しい
エンクレーブのオプションを作成する省略時の動作が取
られる。 5.CEEメッセージファイルは、省略時またはrun _
optsでMSGFILE オプションを指定することにより、メッ
セージファイル名が同じ場合にプロセスにおいてエンク
レーブ間で共有可能である。 6.ユーザ引数user_arg は参照のため渡される。それ
はどんなタイプでもよい。ユーザが多重項目を渡す場合
には、エンクレーブで実行される主プログラムにより予
期される引数に応じて、アレイまたは構造が渡される。
【0036】CEETREN−現エンクレーブを終了す
る。CEETRENサービスの機能は、現エンクレーブ
ですべてのスレッドを終了させ、現エンクレーブを終了
させることである。CEETRENサービスの呼出しの
結果は以下のような動作となる。 1.各能動スレッドに対して1度CEETRDサービスを呼び
出す。(「主」を含むスレッドは終了した最後のスレッ
ドである。)CEETRTD サービスの動作は以下の通りであ
る。 a.現スレッドの各スタックフレーム上で、最初にユー
ザが次にHLLが、登録されたスタックフレーム終了ル
ーチンをすべて実行する。 b.スレッドレベル構成要素終了出口ルーチン(もしあ
れば)を実行する。 c.信号がスレッド作成時に要求される場合、スレッド
が終了したことを示すスレッドの作成部に非同期信号を
選択的に供給する。 2.エンクレーブレベル制御領域における供給パラメー
タおよび/またはユーザ戻りコードフィールドからエン
クレーブ戻りコードを計算する。 void CEETREN([cel _rc_mod],[user_rc]) INT4 *cel_rc_mod: INT4 *user _rc: ただし、 cel _rc_mod (入力/オプション) 0、1、2、または3である。省略されたり上記の集合
の範囲外である場合、0に設定される。 user_rc (入力/オプション) エンクレーブ戻りコードのユーザ部分を表す数である。 注意事項: 1.このサービスは決してその呼出し元に戻らない。 2.エンクレーブにより所有されたすべての資源が開放
される。 3.user_rc パラメータが供給されない場合、 CEET
REN サービスは、エンクレーブレベル制御領域のユーザ
戻りコードフィールドの内容を使用する。供給される
と、以前設定された値より優位におかれる。 4.cel _rc_mod の値1、2、3は、言語に応じて予
約される。
【0037】CEETREC−信号終了_緊急および終
了エンクレーブ CEETREC サービスの機能は以下のとおりである。 1.現スレッドで終了_緊急状態を合図し、再開カーソ
ルが移動しない場合や再開が要求されない場合、処理は
以下のように続く。 2.現エンクレーブのすべてのスレッドを終了する。 3.現エンクレーブを終了する。 CEETREC サービスへの呼出しの結果は以下の動作とな
る。 1.CEESGLを呼び出し、現スレッドで終了_緊急状態を
合図すること。再開カーソルが移動せず、再開が要求さ
れない場合、処理は以下のように続く。 2.各能動スレッドに1度CEETRTD サービスを呼び出
す。(「主」を含むスレッドは、終了した最後のスレッ
ドである)CEETRTD サービスの動作は以下の通りであ
る。 a.現スレッドの各スタックフレームで、ユーザが最初
で、HLLが次に、すべての登録スタックフレーム終了
ルーチンを実行する。 b.スレッドレベル構成要素終了出口ルーチンを実行す
る(もしあれば)。 c.スレッド作成時に信号が要求される場合、スレッド
の作成側にスレッドが終了したことを示す非同期信号を
選択的に供給する。 3.エンクレーブ制御領域の供給パラメータおよび/ま
たはユーザ戻りコードフィールドからエンクレーブ戻り
コードを計算する。 4.エンクレーブが終了したことを示すエンクレーブの
作成側に非同期信号を選択的に供給する。 void CEETREC([cel _rc_mod],[user_rc]) INT4 *cel_rc_mod; INT4 *user _rc; だたし、 cel _rc_mod (入力/オプション) 0、1、2、または3である。省略されたり上記の集合
外にある場合、0となる。 user_rc (入力/オプション) エンクレーブ戻りコードのユーザ部分を表す数である。 注意事項: 1.このサービスは決してその呼出し元に戻らない。 2.エンクレーブにより所有されたすべての資源が開放
される。 3.高級言語STOPステートメントにより、エンクレ
ーブの通常の終了は、CEETREC サービスを呼び出すこと
により実施される。このサービスは、STOPステートメン
トを発行したスレッドに「終了_緊急」状態を引き起こ
す。このため、エンクレーブの順番どおりの終了が可能
になる。 4.user_rc パラメータが供給されてない場合、CEET
REC サービスは、エンクレーブレベル制御領域のユーザ
戻りコードフィールドの内容を使用する。供給される場
合、以前に設定された値より優位にたつ。 5.cel _rc_mod の値1、2、3は、使用言語に応じ
て、予約される。
【0038】CEECRTD−スレッドの作成 エンクレーブにある新しいスレッドを作成しその実行を
開始する。 void CEECRTD(name, event_name, thread_id.[stack _size],[arg],[fc]) CEE _ENTRY *name; struct CEESTOK *event _name; INT4 *thread _id; INT4 *stack _size; void *arg; FEED_BACK *fc; ただし、 name(入力) 新しいスレッドが実行を開始するルーチンである。 event _name(入力) スレッドが終了するときに共通実行環境により合図され
る信号トークンである。この引数は空文字またはブラン
クからのみ構成される場合、どんな事象の合図もない。 thread_id (出力) 他の共通実行環境サービスにおける新しいスレッドを参
照するのに使用される共通実行環境により生成された固
有の識別子である。 stack _size(入力) 新しいスレッドが省略されるかブランクである場合その
実行時スタックの非否定初期サイズであり、実行時オプ
ションにより指定されたサイズが使用される。 arg (入力、出力、in/out) アドレスでコードに渡される引数。そのタイプは、アド
レスで呼ばれるコードの要件により決定される。 fc(出力/オプション) サービスにより戻された帰還コード。それは、新しいス
レッドを作成するときに成功の程度を示す。 注意事項: 1.新しいスレッドが、nameで与えられた外部プロシー
ジャーにおいて実行を開始する。 2.スレッドはエンクレーブのすべての資源を共有す
る。 3.CEEは新しいスタックを備えている。 4.ユーザは、共有された資源、たとえば、外部データ
の使用を順序づけなければならない。 5.ルーチンが受け取ることを宣言した場合には引数が
その実行すべきルーチンに渡される。出力引数と入出力
引数が渡される場合がある。スレッドは作成スレッドと
非同期に走行するので、参考のために渡された引数は、
共有変数になり、それらの使用は、必要なら、順序づけ
られるべきである。スレッドはその作成元に戻らないの
で、値に応じて戻された出力引数が失われる。 6.CEEはスレッドの状態マネージャを備えている。 7.thread_id は、他のサービスへの入力としてスレ
ッドを参照するために使用される。thread_id の他の
使用は認められない。 8.スレッド作成の成功はfcにより報告される。これ
は、新しいスレッドの共通実行環境初期化の成功時に報
告されることも、スレッドでのコードの実行が首尾よく
いったときに報告されることもない。
【0039】CEEEXTD−現スレッドを終了する。
CEEEXTD サービスの機能は、現スレッドを脱出(終了)
することである。これは、特定の順序で以下のステップ
を介して実行される。 1.現スレッドの各スタックフレームで、すべての登録
されたスタックフレーム終了ルーチンを、最初にユーザ
が、次いでHLLが、実行する。 2.スレッドレベル構成要素終了出口ルーチンを実行す
る(もしあれば)。 3.スレッドの作成元に、スレッドが終了したことを示
す非同期信号を選択的に供給する、ただしスレッド作成
時に信号が要求された場合である。 void CEEEXTD 注意事項: 1.このサービスはその呼出し元に戻ることはない。
【0040】CEETRTD−特定のスレッドを終了す
る。CEETRTDサービスの機能は、特定のスレッド
を終了することである。これは、特定の順序で以下のス
テップで実行される。 1.特定のスレッドの各スタックフレームで、すべての
登録されたスタックフレーム終了ルーチンを、最初にユ
ーザが、次にHLLが実行する。 2.特定のスレッドでスレッドレベルの構成要素終了出
口ルーチンを実行する(もしあれば)。 3.スレッドの作成元に、スレッドが終了したことを示
す非同期信号を選択的に供給する、ただしスレッド作成
時に要求された場合である。 void CEETRTD(thread _id.[fc]) INT4 *thread_id; FEED_BACK *fc; ただし、 thread_id (入力) 終了するスレッドの識別子である。 fc(出力/オプション) スレッドを終了する際に成功の程度を示すオプションの
状態トークンである。 注意事項: このサービスから戻るとき、目標のスレッ
ドがすでに終了を完了したかどうかは未定である。
【0041】CEETRTC−終了_緊急を合図してス
レッドを終了する。CEETRTC サービスの機能は、終了_
緊急状態を合図した後で現スレッドを終了する便利のよ
い方法を提供することである。すなわち、CEETRT
Cサービスへの呼出しの結果以下の動作となる。 1.指定されたFEED_BACKコードによりCEE
SGLサービスが呼び出されて、終了_緊急状態を合図
する。 2.再開カーソルが修正されない場合、CEEEXTD
サービスが呼び出されて、現スレッドを終了する。 void CEETRTC 注意事項:このサービスはその呼出し元に戻ることはな
い。
【0042】スレッド終了に関する注意事項:終了され
たスレッドが「主」ルーチンを含むスレッドである場
合、CEETRENサービスを呼び出すことにより、C
EEはエンクレーブ終了を強制する。CEETRENサ
ービスは、エンクレーブレベル制御領域のユーザ戻りコ
ードフィールドを利用することにより適切な戻りコード
を生成する。CEETRENへの呼出しは、パラメータ
なしに行なわれる。 終了_緊急(I_I)状態:終了_緊急状態は、アプリ
ケーションまたは任意の構成要素により、スレッドを終
了する意図を示すよう合図される(CEESGLを呼び
出すことにより)CEE定義重大度1状態である。 T_I状態は、通常の状態として処理される。未処理の
スタックフレーム0に到達すると、CEE省略時動作
(重大度1状態で、再開する)が適用される。
【0043】混合言語意味 エンクレーブの主プロシージャーは、エンクレーブの制
御権を受信する第1プロシージャーである。エンクレー
ブで呼び出された最初のプロシージャーは、そのプロシ
ージャーが書かれた言語の規則によりMAIN(主)で
あることが可能となる。これには、たとえば、結合規則
やソース言語またはその言語のコンパイラ指示仕様規則
が含まれる。エンクレーブで呼び出される他のすべての
プロシージャーが、そのプロシージャーが書かれる言語
の規則に応じて従属プロシージャーとなることが可能と
なる。注意すべきことは、言語の中には、プロシージャ
ーの同じ活動化が主および従属として呼び出されるもの
もあるし、主/従属指定がコンパイルまたは連結時に明
瞭に指定される必要があるものもあることである。
【0044】外部データ項目は、エンクレーブ内の名前
により共有される。以下の言語構成要素はすべて、Xと
名付けられた同じ外部データ領域を参照するものであ
る。 COBOL 01 X EXTERNAL... FORTRAN COMMON /X/... PL/I DCL 1 X EXTERNAL... C external int X エンクレーブ中のすべてのプロシージャーは、外部デー
タが同じ長さとなるよう宣言しなければならない。初期
化は、エンクレーブ中の1つのプロシージャーの言語構
成要素を介して実行可能である。初期化は、外部データ
を最初に使用する前に達成されなければならない。
【0045】プロシージャー間の呼出し/戻しは、すべ
ての言語および言語間で同一に動作する。呼び出された
プロシージャーに対する引数は、アーキテクチャ全体に
対して記述された任意の規約に応じて、それが書かれた
言語から独立して渡すことができる。標準CALLステ
ートメント、関数呼出し、COBOL CALL識別
子、入力変数のCALLおよびC言語やPASCALに
おけるような暗黙呼出しは、意味的には、同等の呼出し
である。特に、呼び出されたユニット間で共有する外部
データの意味は、呼び出されたプロシージャーが静的に
または動的に結合されるかどうかに関わらず、維持され
る。呼出しの意味は結合方法から独立している。言語間
CALLは、ネストされた内部プロシージャーではなく
外部プロシージャーのみを参照する。
【0046】言語は、主プロシージャーの呼出し元に制
御権を戻す効果をもつステートメントを備えている。こ
うしたステートメントを、本明細書では便宜上STOP
ステートメントと呼ぶが、影響範囲を備え、その範囲は
エンクレーブである。STOPを発行すると、エンクレ
ーブのすべてのスレッドを終了し、すべての資源を開放
し、現エンクレーブの主プロシージャーの呼出し元に戻
る。 明示「エンクレーブ終了」言語の例: FORTRAN STOP PL/I STOP COBOL STOP RUN STOPは、主プロシージャーからの制御権の戻りや、
最後のENDステートメントであるCOBOL GOB
ACKまたはPL/I処理としても示されることがあ
る。
【0047】言語構文によりもたらされたりCEE呼出
し可能サービスにより合図されたりしても、すべての状
態は等価である。状態を処理する明示構文をもつすべて
の言語は、他の言語によりもたらされた状態やCEE呼
出し可能サービスを認識し働きかけることができること
になる。状態マネージャの基本的な範囲はスレッドであ
る。PL/IとC言語の両方とも、スタックフレーム境
界を横切る枝(branch)を支援し、スキップされたフレ
ームを順序通りに壊してくように概念を備えている。従
来の言語意味の制限内で、任意の言語のプログラムは、
こうした「GOTO」を、同じ言語で書かれたプロシー
ジャーの位置に発行可能である。「GOTO」の目標
は、「GOTO」を実行する同じスレッドになければな
らない。
【0048】関連発明米国特許第07/755706号
の要約 この関連発明は、複数のコンピュータプログラム言語で
書かれたプログラムを処理可能な共通状態処理用の方法
を提供するものである。呼出し可能ルーチンの集合がコ
ンパイルされて、共通状態処理(CCH)機能を実施す
る。コンパイラーは、CCHと相互作用するよう修正さ
れ、CCHと相互作用するコードを作成する。CCH
は、本発明の好ましい実施例で使用される。それは、多
重言語アプリケーションで備えられたすべての言語によ
る状態処理のための共通で、一貫したフレームワークを
備えている。CCHルーチンは、アプリケーションプロ
グラムが結合可能である外部または入力変数として宣言
される呼出し可能入力ポイントを有する。次に、アプリ
ケーションプログラムは、プログラムの実行中にCCH
の入力点を呼び出すことにより状態処理プロセスと相互
作用可能である。CCHは、コンピュータシステムの標
準状態処理手段を初期化して、選択された状態が発生す
るとコンピュータシステムの制御をCCHに向ける。プ
ログラムが書かれた言語用の言語支援プログラムは、そ
のコンピュータプログラム言語に特定の言語状態処理ル
ーチンをもつよう修正するのが好ましい。その言語で書
かれたプログラムプロシージャーまたはサブルーチンが
入力されると、CCHは、後入れ先出し(LIFO)待
ち行列または等価手段を用いてその事実を記録して、言
語特定ハンドラ(LSH)を現スタックフレームに関連
づける。すなわち、複数のネストされたルーチンが処理
されると、CCHは、特定の状態の発生時にどのLSH
が実行されるかを判定できるようにLSHの順序づけら
れたリストを作成する。アプリケーションプログラム
は、CCHの外部入力点の1つを呼び出すことにより選
択的にユーザハンドラを登録する。ユーザハンドラもL
IFO待ち行列で、現スタックフレームに関連する。状
態が検出されると、最後に登録されたLSH、すなわ
ち、待ち行列の頂部のものが、状態の使用可能性を検査
する要求とともに実行される。LSHは、その点で状態
を処理することはない。LSHが状態が使用不可能であ
ることを示す情報を戻すと、CCHにより、プログラム
の実行が状態の発生場所で再開される。状態が使用可能
であると、最後の登録ユーザハンドラが実行されること
になる。ユーザハンドラと他のハンドラは、3つの型の
要求の1つでCCHに応答する。すなわち、再開、浸
透、促進である。再開要求は、状態が処理されさらなる
処理の必要はないことを示す。ユーザハンドラが状態を
浸透または促進する場合、CCHは待ち行列上の次のユ
ーザハンドラを実行する。ユーザハンドラがすべて実行
されると、最後に入力されたLSHが実行される。その
LSHは3つの要求の1つに応答することもできる。ス
タックフレームに関連したハンドラがすべて実行され、
どれも状態を処理しなかった場合、次の最も古いスタッ
クフレームのハンドラが実行されることになる。関連す
るLSHを備える論理スタックフレームゼロが維持され
る。CCHは、スタックフレームゼロに関連した自身の
状態ハンドラを備えている。ルーチンが完了すると、そ
のスタックフレームが開放され、関連ハンドラは待ち行
列から取り除かれる。
【0049】促進要求は、状態が他の状態として再定義
されるよう要求する。浸透要求は、状態が第2の状態処
理ルーチンにより再処理されるよう要求する。再開要求
は、状態が処理されたので、実行が再開カーソルにより
示された点でコード中で再開されるよう要求する。次
に、CCHが、要求動作を実行することにより促進、浸
透または再開要求を処理する。さらに、再開カーソル
は、ハンドラの要求時に移動(変更)され、維持され
る。脱出ハンドラを登録する個別の手段が備えてあるの
で、状態マネジャーは、通常の脱出処理と自身を関連づ
けることはない。この分離により、従来の言語要件を満
たすことが可能になると同時に、より強力で頑丈な機構
の実施が可能になる。特に、脱出処理を区分すること
で、「ロールバック」の基礎を備え、データの保全性を
回復することができる。ハンドラは、CCHのルーチン
を呼び出すことによりスレッド、エンクレーブ、プログ
ラムの終了を要求できる。
【0050】関連発明「米国特許第07/755708
号」の要約 この関連発明は、多言語で書かれたプログラムを処理す
る状態マネージャをもつコンピュータシステムにおいて
プログラム実行中に発生する状態を処理する一般的な方
法とシステムの改良である。この方法は、Pascal, FORT
RAN, CおよびCOBOL などの外部呼出しを支援する言語で
書かれたアプリケーションプログラムに結合する外部入
力点のオブジェクトコードをもつ汎用合図ルーチンの生
成と使用を含む。プログラムにより呼ばれると、合図ル
ーチンが、状態マネージャに状態を合図して、呼出し元
に戻る。合図ルーチンはプログラムにより使用され、適
切な状態を状態マネージャに自動的に合図するようサブ
ルーチンをコード化することによりサブルーチンから戻
りコードを検査するステップを除去する。この状態マネ
ージャは、以前に登録されたユーザ定義状態ハンドラを
実行して、状態に適切に応答するものである。帰還トー
クンとして動作可能な汎用状態トークンは、状態識別
子、状態識別子の形式コード、その状態の重大性コー
ド、機能識別子の制御コード、機能識別子、例に依存す
る情報を識別するオプション処理から構成されるよう定
義される。合図ルーチンと帰還トークンは、選択的に帰
還トークンが記憶可能なアドレスを渡すことができるサ
ブルーチンにより使用可能である。実行中に、サブルー
チンは状態を監視する。検出状態の重大性コードがしき
い値より大きい場合、サブルーチンは状態マネージャに
状態を合図するか、または渡されたアドレスに帰還トー
クンを記憶する。
【0051】
【発明の効果】上記の仕様を使用すると、本発明は標準
プログラム技術により実施可能である。その結果作成さ
れたプログラムは、ディスク、ディスケット、メモリカ
ード、ROMまたは任意の記憶装置に記憶できる。実行
のためには、プログラムはコンピュータのRAMにコピ
ーできる。中間結果はRAMに記憶される。コンピュー
タ科学の分野の専門家は、記載されたように作成された
ソフトウェアを適切な汎用目的またはシステムを作成す
る専用目的コンピュータハードウェアに組み込むことが
容易に可能になる。
【図面の簡単な説明】
【図1】本発明で使用されているプロセス、エンクレー
ブ、およびスレッド間の関係を示す図。
【図2】本発明で使用されているプロセス、エンクレー
ブ、及びスレッド間の関係を示す図。
【図3】単純プロセスの実行時にプロセス、エンクレー
ブ及びスレッド間の関係を示す図。
【図4】ネストされたエンクレーブ間の関係を示す図。
【図5】並列スレッド間の関係を示す図。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スティーブン、シャーマン、ミラー アメリカ合衆国カリフォルニア州、サンノ ゼ、ローン、パイン、レーン、1172 (72)発明者 アルフレッド、ウイリアム、シャノン アメリカ合衆国カリフォルニア州、モーガ ン、ヒル、ラ、クロッス、ドライブ、830 (72)発明者 ウイリアム、デイビッド、ウォレース アメリカ合衆国カリフォルニア州、サンノ ゼ、リリアン、ウェイ、6201

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】コンピュータシステムにおいて、 (1)プロセス、このプロセス内のエンクレーブ、およ
    びこのエンクレーブ内の実行初期スレッドを作成するよ
    う高級アプリケーションプログラムの呼出しを初期化す
    るステップと、 (2)前記初期スレッドからの1つまたは複数の要求を
    実行し、前記エンクレーブ内の他のスレッドと同時に実
    行する追加スレッドを作成するステップと、 (3)1つの所有スレッドから1つまたは複数の要求を
    実行し、前記プロセスの追加エンクレーブを作成し、各
    追加エンクレーブ内の実行の最初のスレッドを作成する
    ステップを備え、2つまたはそれ以上の関連エンクレー
    ブによりプロセスを作成することを特徴とするプログラ
    ム実行を管理する方法。
  2. 【請求項2】1つのエンクレーブが複数の高級言語で書
    かれたプロシージャーを含む請求項1記載の方法。
  3. 【請求項3】コンピュータシステムにおいて、 (1)初期プロセス、前記プロセス内の初期エンクレー
    ブ、前記初期エンクレーブ内の実行の初期スレッドを作
    成するように高級言語アプリケーションプログラムの呼
    出しの初期化を要求するステップと、 (2)前記初期エンクレーブ中の1つまたは複数の追加
    スレッドの初期化を要求するステップと、 (3)各追加エンクレーブ内の実行の第1スレッドを作
    成するように前記プロセス内の1つまたは複数の追加エ
    ンクレーブの初期化をスレッドの範囲以内から要求する
    ステップとを備え、2つまたはそれ以上の関連エンクレ
    ーブにより1つのプロセスを作成することを特徴とする
    プログラム実行を管理する方法。
  4. 【請求項4】前記ステップ(3)がさらに外部サービス
    ルーチンを呼び出し追加エンクレーブを識別するパラメ
    ータで渡すステップを含む請求項3記載の方法。
  5. 【請求項5】(1)プロセスと、前記プロセス内のエン
    クレーブと、前記初期エンクレーブ内の実行用初期スレ
    ッドを作成するよう高級言語アプリケーションプログラ
    ムの呼出しを初期化する手段と、 (2)前記エンクレーブ内の他のスレーブと同時に実行
    する追加スレッドを作成するために初期スレッドからの
    1つ又は複数の要求を実行する手段と、 (3)前記プロセスの追加エンクレーブを作成し、各追
    加エンクレーブ内の実行用第1スレッドを作成する所有
    スレッドから1つまたは複数の要求を実行する手段と、 を備えている、コンピュータシステムにおいてプログラ
    ム実行を管理するシステム。
  6. 【請求項6】追加スレッドからの1つ又は複数の要求を
    実行し他のスレッドを作成する手段をさらに備えた請求
    項5記載のシステム。
  7. 【請求項7】実行する関連エンクレーブとスレッドによ
    り第2のプロセスを作成するよう要求を実行する手段を
    さらに備えた請求項5記載のシステム。
  8. 【請求項8】前記プロセスを終了させる要求を実行し、
    それにより前記プロセスにおけるすべてのエンクレーブ
    とスレッドを終了させる手段をさらに備えた請求項5記
    載のシステム。
  9. 【請求項9】前記手段(3)はさらに、 (1)所有スレッドの実行を一時的に中断させる手段
    と、 (2)前記追加エンクレーブの主ルーチンに制御権を転
    送し、現エンクレーブに制御を行う手段と、を備えた請
    求項5記載のシステム。
  10. 【請求項10】エンクレーブが複数の高級言語で書かれ
    たプロシージャーを含む請求項5記載のシステム。
JP4201449A 1991-09-06 1992-07-28 プログラムの実行を管理する方法及びシステム Expired - Lifetime JP2520543B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US75588791A 1991-09-06 1991-09-06
US755887 1991-09-06

Publications (2)

Publication Number Publication Date
JPH05216692A true JPH05216692A (ja) 1993-08-27
JP2520543B2 JP2520543B2 (ja) 1996-07-31

Family

ID=25041091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4201449A Expired - Lifetime JP2520543B2 (ja) 1991-09-06 1992-07-28 プログラムの実行を管理する方法及びシステム

Country Status (3)

Country Link
US (2) US5666533A (ja)
EP (1) EP0531107A3 (ja)
JP (1) JP2520543B2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2520543B2 (ja) * 1991-09-06 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの実行を管理する方法及びシステム
US6769119B1 (en) * 1994-03-24 2004-07-27 International Business Machines Corporation System, method, and computer program product for scoping operating system semantics in a computing environment supporting multi-enclave processes
US6061519A (en) * 1994-09-28 2000-05-09 Sun Microsystems, Inc. Embedding multiple (non embedded) high level languages into an assembler code
GB2296351A (en) * 1994-12-23 1996-06-26 Ibm Calling functions from programs running in another environment
US6292820B1 (en) * 1996-07-29 2001-09-18 At& T Corp. Porting POSIX-conforming operating systems to Win32 API-conforming operating systems
US6622155B1 (en) * 1998-11-24 2003-09-16 Sun Microsystems, Inc. Distributed monitor concurrency control
US6330528B1 (en) * 1998-12-16 2001-12-11 Compaq Computer Corp. Method of terminating temporarily unstoppable code executing in a multi-threaded simulated operating system
US6434594B1 (en) 1999-03-09 2002-08-13 Talk2 Technology, Inc. Virtual processing network enabler
US7337437B2 (en) * 1999-12-01 2008-02-26 International Business Machines Corporation Compiler optimisation of source code by determination and utilization of the equivalence of algebraic expressions in the source code
JP2001344142A (ja) * 2000-05-31 2001-12-14 Nec Corp マルチプログラム処理装置及びそれに用いるファイルのロールバック方式
US8176108B2 (en) * 2000-06-20 2012-05-08 International Business Machines Corporation Method, apparatus and computer program product for network design and analysis
US6883170B1 (en) * 2000-08-30 2005-04-19 Aspect Communication Corporation Method and system to maintain a hierarchy of instantiated application objects and to enable recovery from an applications failure
US6948161B2 (en) * 2001-04-20 2005-09-20 International Business Machines Corporation Method, computer system and computer program product for determining the equivalence of two blocks of assignment statements
US7406542B2 (en) * 2002-03-01 2008-07-29 Google Inc. Method and system for assured denotation of application semantics
US20040015684A1 (en) * 2002-05-30 2004-01-22 International Business Machines Corporation Method, apparatus and computer program product for scheduling multiple threads for a processor
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US20050091535A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Application identity for software products
US7640540B2 (en) * 2003-10-24 2009-12-29 Microsoft Corporation Mechanism for providing extended functionality to command line instructions
US7340735B2 (en) * 2003-10-30 2008-03-04 Sprint Communications Company L.P. Implementation of distributed and asynchronous processing in COBOL
US7171544B2 (en) * 2003-12-15 2007-01-30 International Business Machines Corporation Run-time parallelization of loops in computer programs by access patterns
US7454477B2 (en) * 2005-05-16 2008-11-18 Microsoft Corporation Zero-copy transfer of memory between address spaces
US8286158B2 (en) 2006-02-06 2012-10-09 Imation Corp. Method and system for installing portable executable applications
US20080244538A1 (en) * 2007-03-26 2008-10-02 Nair Sreekumar R Multi-core processor virtualization based on dynamic binary translation
US20090172657A1 (en) * 2007-12-28 2009-07-02 Nokia, Inc. System, Method, Apparatus, Mobile Terminal and Computer Program Product for Providing Secure Mixed-Language Components to a System Dynamically
US20090307304A1 (en) * 2008-06-10 2009-12-10 International Business Machines Corporation Method for Server Side Aggregation of Asynchronous, Context - Sensitive Request Operations in an Application Server Environment
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US20140189246A1 (en) * 2012-12-31 2014-07-03 Bin Xing Measuring applications loaded in secure enclaves at runtime
US9087202B2 (en) * 2013-05-10 2015-07-21 Intel Corporation Entry/exit architecture for protected device modules
US10044695B1 (en) 2014-09-02 2018-08-07 Amazon Technologies, Inc. Application instances authenticated by secure measurements
US9246690B1 (en) 2014-09-03 2016-01-26 Amazon Technologies, Inc. Secure execution environment services
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US10079681B1 (en) 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US9491111B1 (en) 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
US9754116B1 (en) 2014-09-03 2017-09-05 Amazon Technologies, Inc. Web services in secure execution environments
US9577829B1 (en) 2014-09-03 2017-02-21 Amazon Technologies, Inc. Multi-party computation services
US9584517B1 (en) * 2014-09-03 2017-02-28 Amazon Technologies, Inc. Transforms within secure execution environments
US11405177B2 (en) 2017-01-24 2022-08-02 Microsoft Technology Licensing, Llc Nested enclave identity

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6385828A (ja) * 1986-09-30 1988-04-16 Anritsu Corp 高級言語処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4694396A (en) * 1985-05-06 1987-09-15 Computer X, Inc. Method of inter-process communication in a distributed data processing system
US5047925A (en) * 1985-05-06 1991-09-10 Motorola, Inc. Logical ring in a virtual single machine
US5014192A (en) * 1985-05-06 1991-05-07 Motorola Computer X, Inc. System for locating a file in a logical ring by sequentially forwarding access request with file system name and file name
US5060150A (en) * 1987-01-05 1991-10-22 Motorola, Inc. Process creation and termination monitors for use in a distributed message-based operating system
US5165018A (en) * 1987-01-05 1992-11-17 Motorola, Inc. Self-configuration of nodes in a distributed message-based operating system
US5063500A (en) * 1988-09-29 1991-11-05 Ibm Corp. System for executing segments of application program concurrently/serially on different/same virtual machine
JP2520543B2 (ja) * 1991-09-06 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの実行を管理する方法及びシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6385828A (ja) * 1986-09-30 1988-04-16 Anritsu Corp 高級言語処理方法

Also Published As

Publication number Publication date
US5666533A (en) 1997-09-09
JP2520543B2 (ja) 1996-07-31
EP0531107A2 (en) 1993-03-10
US6073157A (en) 2000-06-06
EP0531107A3 (en) 1993-11-10

Similar Documents

Publication Publication Date Title
JP2520543B2 (ja) プログラムの実行を管理する方法及びシステム
JP4791461B2 (ja) ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
JP4837660B2 (ja) ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
EP1442372B1 (en) Providing isolation through process attachable virtual machines
Adya et al. Cooperative Task Management Without Manual Stack Management.
KR100898315B1 (ko) 인핸스드 런타임 호스팅
US7039911B2 (en) Hybrid threads for multiplexing virtual machine
US20020046230A1 (en) Method for scheduling thread execution on a limited number of operating system threads
JP2007538325A (ja) ランタイムシステムの共有プログラム、方法、装置
JPH0687222B2 (ja) アプリケーションとデータベース管理システム間の相互通信システム及び方法
US6470346B2 (en) Remote computation framework
US7559063B2 (en) Program flow control in computer systems
WO2006069484A1 (en) Methods and apparatuses to maintain multiple execution contexts
JPH0855035A (ja) マイクロカーネル・データ処理システム用の伝送制御の分離の方法および装置
JP2986073B2 (ja) プロセス間通信方法並びにプロセス間通信用のサブシステムおよびシステム
Duell et al. Requirements for linux checkpoint/restart
US8490115B2 (en) Ambient state for asynchronous methods
JP2888420B2 (ja) マルチタスク・アーキテクチャにおけるプロセス間通信方法
Kale et al. Threads for interoperable parallel programming
Doeppner et al. C++ on a parallel machine
JPH0855037A (ja) プロセス間通信方法およびプロセス間通信用のシステム
JPH0822395A (ja) マイクロカーネル・アーキテクチャ・データ処理システムにおけるプロセス間通信方法およびシステム
Hildebrand A microkernel POSIX OS for realtime embedded systems
JPH07219789A (ja) 複数スレッド・システムにおける外部事象を処理する方法
Gupta et al. Operating system