JP2520543B2 - プログラムの実行を管理する方法及びシステム - Google Patents

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

Info

Publication number
JP2520543B2
JP2520543B2 JP4201449A JP20144992A JP2520543B2 JP 2520543 B2 JP2520543 B2 JP 2520543B2 JP 4201449 A JP4201449 A JP 4201449A JP 20144992 A JP20144992 A JP 20144992A JP 2520543 B2 JP2520543 B2 JP 2520543B2
Authority
JP
Japan
Prior art keywords
enclave
thread
initial
execution
program
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.)
Expired - Lifetime
Application number
JP4201449A
Other languages
English (en)
Other versions
JPH05216692A (ja
Inventor
ツネオ、ホリグチ
スティーブン、シャーマン、ミラー
アルフレッド、ウイリアム、シャノン
ウイリアム、デイビッド、ウォレース
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

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータ・システ
ムにおけるアプリケーション・プログラムの実行を管理
する方法及びシステムに係る。なお、本発明は、米国特
許出願第755708号(特願平4−222640号に
対応)及び同第755706号(特願平4−22265
2号に対応)の発明と関連している。これらの関連出願
の要約は、本明細書の末尾に記載されている。
【0002】
【従来の技術及び発明が解決しようとする課題】プログ
ラミング用の全ての高級言語(C、COBOL、FOR
TRAN、PL/I等)は、アプリケーション・プログ
ラムの実行時の異なる定義とモデルを有している。かか
るモデルは、アプリケーション・プログラムの実行時の
意味(セマンティクス)を定義する。しかし、これらの
モデルは、整合性がない上に、全体として1つの言語で
書かれているアプリケーション・プログラムに適用する
ことができるに過ぎない。幾つかのオペレーティング・
システム環境も、アプリケーション・プログラム実行用
の種々のモデルを有している。例えば、IBM社が提供
するMVS、VM/CMS、OS/2、CICS及びO
S/400等のオペレーティング・システムは、プログ
ラマに対し、アプリケーション・プログラムの実行用の
全く異なる操作環境を与える。その結果、複数の操作環
境内で使用することができるように諸アプリケーション
・プログラムを構造化し且つ記述する際に、種々の問題
が発生することがある。
【0003】従来の標準規格は、これらの問題のうち多
くのものを解決することに向けられてきた。しかし、こ
れらの標準規格は、主として単一の言語又は単一オペレ
ーティング・システムの環境に適用されるものであっ
て、複数の言語と複数の操作環境とを同時に統一するこ
とを、全く意図していない。例えば、プログラム言語の
米国標準規格については、次のようなものがある。 ・プログラム言語COBOL(X3.23-1985) ・プログラム言語FORTRAN(X3.9-1990) ・プログラム言語C(X3.159-1990)
【0004】また、操作環境の標準規格については、次
のようなものがある。 ・コンピュータ環境の移植性のあるオペレーティング・
システム・インタフェース、IEEE標準規格 1003.1-
1988(POSIX としても知られている) ・X/Openプロジェクトの標準仕様であるCAE
(Common Application Environment) 必要とされているが従来技術が提供してないものは、種
々の高級言語と標準的なオペレーティング・システムが
提供する全く異質のモデルを統一する処の、プログラム
の実行を管理する方法及び手段である。本発明は、複数
のアプリケーション・プログラムが、複数のサブコンポ
ーネント・プログラムから構成され、潜在的に複数のプ
ログラム言語で書かれ、しかも整合性があり且つ明確に
定義された振る舞いを行うべく2つ以上のオペレーティ
ング・システム環境内で使用されるように、かかるアプ
リケーション・プログラムの実行用のモデルを定義す
る。
【0005】用語 本明細書で使用する主要な用語は、次の通りである。起動(Activation) プログラムの起動とは、実行の準備を完了している当該
プログラムの実行インスタンスである(実際に当該プロ
グラムを実行することは、別個のステップである。この
点については、以下の「呼び出し」の定義を参照のこ
と。)。高級言語のプログラムは、共用部分及び非共用
部分を有することがある。例えば、共用部分が、命令及
び定数を含むのに対し、各起動に特有の非共用部分は、
静的データ等を含んでいる。起動は、非共用記憶部の物
理的な割付を指示するだけでなく、その内部の値をも指
示する。かくて、一のプログラムが一のエンクレーブ
(enclave)内で初めて実行される場合、そのプログラ
ムに特有の記憶部が割り当てられ且つ初期化されるま
で、その静的記憶部の起動は行われない。条件の重大度コード(Condition Severity Codes) 0〜4の有効範囲にあって、0が最も重大度が低い。条件マネージャ(Condition Manager) 一の条件が発生するときに、コンピュータ・システムの
制御権を獲得し、種々のシステム又はアプリケーション
・プログラムのルーチンを実行して、その条件の処理を
管理する処の、任意のプログラム又は手段である。条件
マネージャは、オペレーティング・システム、実行時環
境又はアプリケーション・プログラムの一部とすること
ができる。カーソル(Cursor) 実行可能な命令を指定するアドレス・ポインタである。処理カーソル(Handle Cursor) 処理用のルーチン(ハンドラ)及び当該ハンドラが呼び
出されるスタック・フレームの両方を指定するカーソル
である。ヒープ記憶部(Heap Storage) 一のプロセス内で実行中の諸プログラムに関連し得る処
の、無秩序に発生したプログラム記憶域のグループであ
る。即ち、特定の型のプログラム記憶域を一のヒープと
して見ることができるのは、それらの発生に論理的な順
序付けがなく、また当該ヒープにおける一のプログラム
記憶域の発生を、このプログラム記憶域が最も良好に適
合する位置によって決定することができる場合である。呼び出し(Invocation) 論理的な呼び出し/戻り機構により制御権を獲得した
「プロシージャ」の実行インスタンスである。この呼び
出しは、起動とは異なる。所与の起動について、一のプ
ロシージャを複数回呼び出すことが可能であり、プロシ
ージャがそれ自体を再帰的に呼び出すことも可能であ
る。プラットフォーム(Platform) 複数のプログラムを実行可能な、オペレーティング・シ
ステム及びコンピュータ・ハードウェアの組み合わせで
ある。プロシージャ(Procedure) コンパイラを1回呼び出すときの出力(コンパイル単
位)である。コンパイル単位は、意味を変えることな
く、個別にコンパイル可能な最小のソース・シーケンス
に対応する。再開カーソル(Resume Cursor) 実行を再開可能なアプリケーション・プログラム内の点
を指定するカーソルである。再開(Resume) 条件の処理を終了して、再開カーソルによって指定され
た命令及びスタック・フレームに制御権を渡すことであ
る。スタック(Stack) プロシージャ呼び出し(呼び出し/戻り)をサポートす
る処の、概念上の構造体である。スタックは、「スタッ
ク・フレーム」として知られている、後入れ先出し式の
要素から構成される。スタック・フレーム(Stack Frame) スタックの1つの要素である。スタック・フレームは、
プロシージャが呼び出される度に作成され、このプロシ
ージャがその呼び出しについて戻るときに削除される。
スタック・フレームは、プロシージャの呼び出し、実行
及び戻りに関連する諸資源を管理するために使用され
る。スタック・フレーム・ゼロ(Stack Frame Zero) 最初のルーチン用のスタックの直前にある、概念上のス
タック・フレームである。スタック・フレーム・ゼロ
は、理論上の場所であって、そこでスレッド又はタスク
が初期化され、そこから最初のプロシージャが呼び出さ
れ、そこから終了が開始されるようなものである。条件
を処理するという目的については、ゼロ番目のスタック
・フレームは、一の言語についての省略時アクションが
適用されるようなフレームである。静的記憶部(Static Storage) 一のプログラムが一のエンクレーブ内で初めて実行され
るときに新しく割り付けられ、当該プログラムが戻って
も割付を自動的に解除されない処の、当該プログラムの
作業用記憶部である。静的記憶部は、一のエンクレーブ
内にあるプログラムの複数回の実行にわたって持続す
る。
【0006】
【課題を解決するための手段及び作用】本発明は、単一
又は複数の言語で書かれた諸アプリケーション・プログ
ラムが予測可能な及び順序付けられた態様で協調し且つ
動作することを可能にする処の、呼び出し可能な1組の
実行時サポート・サービスを定義し且つこれを提供する
ことによって、コンピュータ・システム内のプログラム
の実行を管理する方法及びシステムに向けられている。
本発明は、「プロセス」や「スレッド」とは別個に、高
級言語の意味の有効範囲(semantic scope)を定義する
処の、「エンクレーブ」の概念を定義し、これらの構造
体(construct)を使用することによって、互いに異な
る高級言語で書かれた諸プロシージャの集合を管理する
ための1組の実行時サポート・サービスを実現する。エ
ンクレーブは、諸プロシージャのグループの実行をサポ
ートする処の、論理的な実行時構造体として定義され
る。エンクレーブ内で呼び出される最初のプロシージャ
は、メイン・プロシージャとして知られており、他のプ
ロシージャは、サブ・プロシージャである。エンクレー
ブは、(共用記憶部や、終了及び条件の処理を含む)高
級言語の意味の有効範囲を制限する。一のエンクレーブ
は、1つ以上のスレッドから成る。プロセスとは、その
諸特性が実行時環境によって記述される処の、最外部の
実行時構造体である。プロセス同士の間には、如何なる
階層的関係も存在しない。むしろ、各プロセスは、幾つ
かのシステム資源を独立的に且つ非同期的に競合する
が、他のシステム資源、特に論理的に別個の「アドレス
空間」については、これを所有する。一のプロセスは、
1つ以上のエンクレーブから成る。呼び出し可能サービ
スは、一のプロセス内の複数のエンクレーブを開始させ
たり停止させるための手段を提供する。1つのエンクレ
ーブを終了しても、他のエンクレーブは影響されないか
ら、後者のエンクレーブは実行を継続することができ
る。呼び出し可能サービスは、複数の独立したプロセス
を開始させたり停止させるための手段を提供する。プロ
セスを終了するための一の要求を実行すると、呼び出し
可能サービスは、当該プロセスで開始された全てのエン
クレーブを自動的に終了させる。終了の他の代替方法
は、終了を実行する前に終了条件を信号することによっ
て、定義された出口ハンドラの実行を可能にする、とい
うものである。諸エンクレーブは、複数のスレッドを有
することが許容されている。スレッドとは、本発明に従
ったプログラム・モデル内の実行の基本単位である。ス
レッドが所有する諸資源は、一のマシン状態、一のスタ
ック及び論理的に別個の条件マネージャである。各スレ
ッドは、非同期的に実行を競合する。意味の有効範囲を
制限することによる1つの効果は、アプリケーション・
プログラムの終了を要求する処の、高級言語ステートメ
ント用のコードを実行すると、エンクレーブだけが終了
される、ということにある。1つの例は、COBOLの
「STOP RUN」ステートメントである。
【0007】
【実施例】本発明は、複数の高級言語(HLL)で書く
ことができる諸アプリケーション・プログラム用の、共
通実行環境(以下「CEE」と略記)と呼ばれる共通の
実行時環境の一部として実現される。CEEは、一の条
件マネージャから成る、一の共通条件ハンドラ(CC
H)を含んでいる。本発明の中心は、2つの主要な側面
に置かれている。第1の側面は、混合言語で書かれたア
プリケーション・プログラム用の実行時の意味を定義す
る、ということである。このことは、複数の言語で書か
れたコンポーネントを有する諸アプリケーション・プロ
グラムの動作を定義するように、既存言語の標準規格を
拡張することにつながる。第2の側面は、複数のサブコ
ンポーネント・プログラム間の制御権の移転とこれらの
サブコンポーネント・プログラム間の相互作用に重点を
置きつつ、これらのサブコンポーネント・プログラムか
ら諸アプリケーション・プログラムを構築するための一
のモデルを定義する、ということである。
【0008】本発明が定義するプログラム実行アーキテ
クチャは、別個にコンパイルされた諸オブジェクト(コ
ンパイル単位又はプロシージャ)が、整合性のある意味
を有するように、種々の計算環境内で有界化され且つ実
行されることを可能にする。このアーキテクチャは、直
列、多重タスキング及びトランザクション指向のアプリ
ケーション・プログラムの必要性を満たしている。この
アーキテクチャは、IBM社が提供するCICS等のト
ランザクション処理システムの多重実行単位の概念や、
OS/2オペレーティング・システムの多重スレッド・
サポートのような、目標プラットフォーム内でサポート
されている重要なアプリケーション・プログラムの特性
を考慮に入れている。このアーキテクチャは、既存の言
語の意味をサポートしつつ、多重言語、多重アドレス空
間/ノード、多重実行単位及び多重スレッドのアプリケ
ーション・プログラムをサポートするように、それらの
意味を整合性のある自然な方法で拡張する。
【0009】異なるプラットフォーム上で当該プログラ
ム管理アーキテクチャを実現すると、諸アプリケーショ
ン・プログラムの複数システム間意味整合性(CSC:
Cross System Semantic Consistency)が、次のような
形態で与えられる。 ・高級言語の諸ソース・ステートメントが、複数のプラ
ットフォーム上で同一に留まる。 ・アプリケーション・ライタ・インタフェース(AW
I)が、全てのプラットフォーム上で同一となる。 ・アプリケーション・プログラムの結合、起動及び名前
の有効範囲の限定が、全てのプラットフォーム上で同一
の結果を与える。 ・(局所及び外部の静的、自動的)プログラム実行デー
タが、全てのプラットフォーム上で同じように振る舞
う。 ・スタック及びヒープ記憶部が、一の協調環境内で全て
の言語によって共用され、そして全てのプラットフォー
ム上で整合的に振る舞う。
【0010】プログラム・モデル プログラム管理は、一のアプリケーション・プログラム
の実行時構造体と、これらの構造体の管理に関連する意
味を定義する。プログラム管理の3つの主要な構造体
(プロセス、エンクレーブ、スレッド)は、アプリケー
ション・プログラムをサポートするように定義されてい
る。一のアプリケーション・プログラムは、1つ以上の
プロセスから構成することができる。プロセスは、諸資
源を共用せず、そして諸アドレス空間又は諸システム境
界を越えて分散させることができる処の、アプリケーシ
ョン・プログラムの構造体であるように意図されてい
る。一のプロセスは、1つ以上のエンクレーブから構成
される。エンクレーブは、諸プロシージャについて、言
語上の意味の有効範囲を定義する。例えば、エンクレー
ブは、FORTRANの「COMMON」又はCOBO
Lの外部オブジェクト等の言語名分解の有効範囲を定義
し、又はメイン・プロシージャ及び関連する言語の意味
を定義する有効範囲を定義するものである。一のエンク
レーブは、1つ以上のスレッドから構成される。図1〜
図3には、これらの構造体間の関係が示されている。ス
レッドは、同期実行の基本単位である。一のスレッド
は、他のスレッドと同時に実行することができる。一の
スレッドは、活動的な同期プロシージャの呼び出しを反
映する処の、関連するスタックを所有する。また、一の
スレッドは、関連する条件マネージャも所有している。
【0011】プログラム管理の構造体 プロセス プロセスは、プログラム・モデルの最高レベルの構成要
素であって、少なくとも1つのエンクレーブを含む処
の、諸資源(コード及びデータ)の集合である。一のプ
ロセスは、これに関連するアドレス空間を有しており、
このアドレス空間は、他のプロセスのアドレス空間から
論理的に分離されている。一のプロセスは、1つ以上の
エンクレーブから構成することができる。全てのプロセ
スは、互いに独立していて、互いに同等である。特に、
これらのプロセス同士の間には、如何なる階層的な関係
も存在しない。一のプロセスが作成される場合、コマン
ド行で渡されるものと同様に、一の文字列引数を、実行
時オプションを含む当該プロセスに渡すことができる。
諸パラメータを諸プロセスに渡すための規約は、それぞ
れのプラットフォームに特有のものである。一のプロセ
スは、他のプロセスを作成することができる。一のアプ
リケーション・プログラム内にある諸プロセスは、プラ
ットフォーム上で利用可能な任意のプロセス間通信(I
PC)機構を使用して、通信を行うことができる。IP
C機構を除くと、他の如何なる資源もプロセス間で共用
されることはない。プラットフォームに特有の実現形態
に起因して共用可能になっている諸資源は、これを利用
すべきではない。なぜなら、これを利用すると、非標準
的で、非移植性のアプリケーション・プログラムが生ず
ることになるからである。一のプロセスが他のプロセス
を作成する場合、後者のプロセスが終了したことを、前
者のプロセスに通信すべき旨を、前者のプロセスからC
EEに指示することができる。これは、標準のCEEプ
ロセス間通信機能によって行われる。
【0012】エンクレーブ エンクレーブとは、プロシージャ起動の集合(起動集
合)の実行をサポートする処の、論理的な実行時構造体
である。「環境」という用語が無条件的に使用される場
合、これは、エンクレーブ・レベルにおける高級言語用
の実行環境のことを指すのが普通である。エンクレーブ
は、高級言語の意味の有効範囲、特に次の事項を定義す
る。 ・メイン・プロシージャ及び諸サブ・プロシージャの定
義の有効範囲一のエンクレーブ内で呼び出される最初の
プロシージャは、「メイン・プロシージャ(MAI
N)」と指定される。他の全てのプロシージャは、「サ
ブ・プロシージャ(SUB)」として呼び出される(メ
イン・プロシージャを含むスレッドは、当該エンクレー
ブが終了する際に終了される最後のスレッドである)。
当該エンクレーブ内で呼び出される最初のプロシージャ
は、そのプロシージャが書かれた言語の規則に従って、
MAINとならなければならない。当該エンクレーブ内
で呼び出される他の全てのプロシージャは、これらのプ
ロシージャが書かれた言語の規則に従って、SUBとな
らなければならない。このことは、例えば、結合規則
や、ソース言語又は言語のコンパイラ指示仕様規則を含
んでいる。
【0013】注意すべきは、もし、一のプロシージャを
MAIN又はSUBとして呼び出すことができ、また言
語の規則に従って再帰呼び出しが許容されていれば、当
該プロシージャは、そのエンクレーブ内で複数の呼び出
しを有することができ、その呼び出しの1つがメイン・
プロシージャとなり、他の呼び出しがサブ・プロシージ
ャとなることがある、という点である。 ・外部データ(例えば、COBOL又はPL/Iの外部
データ、FORTRANのCOMMON)の共用の有効
範囲 ・外部ファイル(例えば、COBOL又はPL/Iの外
部ファイル)の共用の有効範囲 ・言語に対し知られている最外部プログラム単位の実行
を終了する言語ステートメント(例えば、PL/IのS
TOP、COBOLのSTOP RUN)は、現エンク
レーブのメイン・プロシージャの呼び出し元に制御権を
戻す。
【0014】戻りの前に、このエンクレーブの有効範囲
内にある諸プロシージャにより獲得されていた諸資源が
(少なくとも論理的に)解放され、任意のオープン・フ
ァイルが閉じられる。 ・ブロックからのGOTOの目標は、当該エンクレーブ
の現スレッド内に存在しなければならない。 ・次に掲げる型のデータの有効範囲及び可視性 −自動データ:有効範囲及び可視性は、プロシージャの
呼び出しである。 −静的な局所データ:有効範囲は封入(enclosing)エ
ンクレーブであり、可視性は当該エンクレーブ内の関連
するプロシージャの呼び出しである。 −静的な外部データ:有効範囲は封入エンクレーブであ
り、可視性は当該エンクレーブ内の諸プロシージャの呼
び出しである。静的記憶部は、エンクレーブが生存する
間、その最終使用状態を保持する。 ・ヒープ記憶部は、一のエンクレーブ内の全てのプロシ
ージャ(従って、全てのスレッド)間で共用される。1
つの言語で書かれた一のプログラムによって割り付けら
れたヒープ記憶部は、他の言語で書かれた一のプログラ
ムによって解放することができる。1つのスレッドによ
って割り付けられたヒープ記憶部が維持されるのは、こ
れが解放されるか又は当該エンクレーブが終了するまで
である。どのスレッドも、ヒープ記憶部を解放すること
ができる。多重スレッドを有するエンクレーブでは、C
EEがヒープ記憶部の管理を直列化する。アプリケーシ
ョン・プログラマによる明示的な直列化は不要である。 ・条件管理の意味の外部限界。条件管理の意味の有効範
囲は、当該エンクレーブ内の各スレッドである。
【0015】一のスレッド内の諸プロシージャの呼び出
しは、CALLステートメントを介して行われる。新し
いスレッドを開始させる一のプロシージャ呼び出しは、
スレッド作成サービスを介して行われる。標準のCAL
Lステートメント、機能呼び出し、COBOLのCAL
L識別子及びCALLプロシージャ 変数は、意味上は
呼び出しに同等である。一のエンクレーブは、制御権を
他のエンクレーブに渡すことができる。CEEは、EX
EC CICS LINK及びEXEC CICS X
CTLが実行され且つ適切な新しいエンクレーブを自動
的に開始させるような場合を検出する。呼び出し可能サ
ービスのCEECRENは、(単なるCICSではな
い、任意の環境内で)新しいエンクレーブを開始させる
のに使用可能な、一の直接機構である。その結果、この
新しいエンクレーブ内の一のスレッドの同期呼び出しが
行われる。即ち、この新しいエンクレーブの実行中、こ
の新しいエンクレーブを作成するスレッド(作成スレッ
ド)は、その実行を中断する。作成エンクレーブ内の他
のスレッドは、影響されない。もし、目標エンクレーブ
のMAINプロシージャが仮パラメータを受理すること
ができれば、諸エンクレーブは、参照によって当該仮パ
ラメータを渡すことができる。アプリケーション・プロ
グラムの実行に関連するデータの他の如何なる共用も、
許容されていない。
【0016】一のエンクレーブは、多重スレッドを有す
ることができる。一のエンクレーブが(例えば、STO
Pステートメントによって)終了する場合、全てのスレ
ッドが終了される。これらのスレッドが終了される順序
は、当該エンクレーブの初期スレッドを除いて、指定さ
れないし、一のアプリケーション・プログラムが、終了
の特定の順序に依存することもない。一のエンクレーブ
の初期スレッドは、当該エンクレーブが終了する際に、
最後に終了される。諸ファイルは、大域命名規則又はエ
ンクレーブ間の引数受け渡しを介して、複数のエンクレ
ーブ間で共用される。一のエンクレーブ内で開かれたフ
ァイルは、これらのファイルが当該エンクレーブの終了
時に開かれたままになっていれば、暗黙的に閉じられ
る。この暗黙的な閉鎖は、これらのファイルが定義され
且つ開かれたプロシージャのメンバ言語の終了出口ルー
チンによって行われる。メッセージ・ファイルの使用
は、CEEにより調整される。もし、メッセージ・ファ
イル名が、その作成元と新しい環境とで同じであれば、
このメッセージ・ファイルは閉じられない。
【0017】スレッド スレッドとは、同期呼び出しと、呼び出し単位(諸プロ
シージャを含む)の終了とから成る実行時構造体であ
る。スレッドは、システムがそれ自体の実行経路の状態
(命令カウンタやレジスタ等)とともにディスパッチす
る処の、基本プログラム単位である。一のスレッドは、
他のスレッドと同時に実行することができる。一のスレ
ッドは、当該エンクレーブ内の全てのメモリをアドレス
可能であるが、それ自体のメモリは所有していない。一
のスレッドは、それ自体の個別スタックを所有してお
り、条件管理の意味の有効範囲を定義する。一のエンク
レーブ内の全てのスレッドは、互いに独立していて、互
いに同等である。特に、これらのスレッド同士の間に
は、如何なる階層的な関係も存在しない。
【0018】以下では、資源の所有権及び共用という観
点から、プロセスと、エンクレーブと、スレッドとの間
の関係を説明する。図2及び図3には、多重タスクを有
さない、SAという名前のプロシージャを実行する簡単
なケースが示されている。点線のボックスは、論理的な
エンティティを表し、実線のボックスは、ユーザ・コー
ドの実行場所を表す。 ・一のプロシージャがコマンド・レベルから実行される
場合、一のプロセス、一のエンクレーブ及び一の初期ス
レッドの全てが、暗黙的に作成される。 ・これらの図面は、論理的な所有権を示している。実際
の制御ブロック・リンクは、システムに依存しており、
性能上の見地によって左右されることが多い。 ・スレッドSA内で実行中の諸プロシージャは、諸外部
名を分解し且つ種々の時点で(例えば、実行前の結合、
ロード時の結合又は呼び出し時の結合を行う際に)静的
記憶部をインスタンス化する処の、複数のコンパイル単
位から構成することができる。結合の型はどんなもので
もよい。 〈多重エンクレーブを有する同期実行〉: 図4を参照する。ここでの要件は、スレッドSAについ
て、スレッドSA内の諸プロシージャとスレッドQA内
の諸プロシージャとの間の完全な独立性を維持しつつ、
スレッドQAを開始させることである。スレッドQAは
(スレッドSAと同様に)、コマンド・レベルから実行
することができる。
【0019】スレッドSAは、スレッドQAの実行を指
定する処の、エンクレーブQ1を作成する。オペレーテ
ィング・システムの観点からすれば、スレッドSA及び
スレッドQAは、互いに同じ「実行のスレッド」となる
ことがある。しかし、論理的には、それらは互いに独立
していて、エンクレーブQ1が完了するまでエンクレー
ブS1が待機するという点で、同期している。
【0020】エンクレーブS1に属している静的データ
は、エンクレーブQ1に属しているデータとは異なる名
前空間内に存在する。かくて、「charlie」と命名され
た静的な一の外部変数が両方の内部に存在すれば、各プ
ログラムは、「charlie」のそれ自体のコピーを有す
る。エンクレーブQ1用の静的データは、エンクレーブ
Q1が作成されるときに論理的にインスタンス化され、
エンクレーブQ1が終了するときに再利用される。エン
クレーブQ1内で必要とされる静的データは、このエン
クレーブが作成されるときに初期化される。かくて、エ
ンクレーブQ1が終了し、そしてスレッドSAが、スレ
ッドQAを指定する処の新しいエンクレーブを再び作成
すれば、静的データの新しいコピーが得られる(即ち、
それは、以前のエンクレーブ・インスタンスからの最終
使用状態にはない)。
【0021】エンクレーブQ1が作成され且つ終了され
る場合、ユーザ及びメンバの出口ルーチンは、エンクレ
ーブS1の場合と同様に起動される。新しい実行オプシ
ョン及びユーザ引数は、恰もエンクレーブQ1がコマン
ド・レベルから実行されたかのように、エンクレーブS
1からエンクレーブQ1に渡される。
【0022】ユーザの戻りコード及び帰還コードの処理
は、エンクレーブS1とエンクレーブQ1については同
じである。エンクレーブQ1が終了する場合、帰還コー
ド及び戻りコードは、エンクレーブQ1からスレッドS
Aに渡される。一般に、スレッドQA内で発生する諸条
件は、スレッドSA内で確立される条件ハンドラからは
独立している。一の帰還トークン及びこれに対応し且つ
コマンド・レベルで戻されるような戻りコードは、エン
クレーブQ1が終了するときにエンクレーブS1に利用
可能になる。
【0023】もし、スレッドQAが、STOP RUN
又はCALL EXITのような終了を行なうための一
の言語構造体を発行すれば、エンクレーブQ1だけが終
了される。この場合、スレッドSAは、エンクレーブQ
1がどのようにして終了されたかを指示する処の、一の
帰還コードを受け取ることになる。
【0024】スレッドQA内の任意のコードからスレッ
ドQA内にない位置への、ブロックからのGOTOは違
法である。全ての多重エンクレーブ又は多重スレッドの
ケースでは、CEE内でファイル同期が提供されないか
ら、ユーザは、基本オペレーティング・システム内の機
能に依存する。かくて、スレッドSAとスレッドQAが
同じファイルをアクセスする場合、望ましい結果が得ら
れたことを確認するのは、ユーザ又はシステムの責任で
ある。
【0025】〈エンクレーブ内の多重スレッドの実
行〉: データを容易に共用し且つ単一のタスクを異なるプロセ
ッサ上で同時に実行可能な複数のセクションに分割する
処の、諸軽量スレッドの実行については、(FORTR
ANの並列実行の場合のように)一の要件が存在する。
しかし、メモリは、これらのスレッド間で共用可能でな
ければならない。これらの軽量スレッドは、プロセッサ
のオーバヘッドの観点からすれば、これを作成し且つデ
ィスパッチするのが容易でなければならない。この点に
ついては、図5を参照されたい。
【0026】注意すべきは、複数のスレッドが静的デー
タの単一のコピーを共用することがあり、そしてスタッ
ク・データが諸ポインタ及び諸パラメータを介して共用
される場合がある、ということである。このモデルが開
発された意図は、混合言語で書かれたアプリケーション
・プログラム内の高級言語の意味の効果を定義するとと
もに、トランザクション処理及び多重スレッディングを
プログラム・モデルへ統合することを試みる点にある。
単一スレッドのアプリケーション・プログラム用の概念
が開発され、これが多重スレッドのアプリケーション・
プログラム用に拡張された。
【0027】CICSトランザクション処理は、CIC
Sスレッドを実行する際、複数のエンクレーブを組み合
わせる。1つのエンクレーブが制御権を他のエンクレー
ブに渡す場合、前者のエンクレーブは、参照によって諸
ポインタを含む諸パラメータを渡すことができる。これ
が暗示するのは、一のアプリケーション・プログラムに
おいて、複数のエンクレーブがメモリを共用可能でなけ
ればならないということである。
【0028】諸アプリケーション・プログラムは、アド
レス可能なメモリを共用しない複数の部分から構成され
ることもある。これが生ずるのは、例えば、ハードウェ
ア又はオペレーティング・システムの何れかが多重アド
レス空間を許容する場合や、一のアプリケーション・プ
ログラムが一のシステム・ネットワークの多重ノード間
で分散される場合である。かくて、幾つかのアプリケー
ション・プログラム内の複数のエンクレーブがメモリを
共用するという要件と、一のアプリケーション・プログ
ラムを構成する複数の部分が分散可能であるという要件
が残される。プロセスは、分散可能なアプリケーション
・プログラム内の単位である。一のプロセス内では、複
数のエンクレーブが、それらが渡す引数を介してメモリ
を共用可能である。
【0029】諸スレッドは、並列処理用のサポートを提
供する。これらのスレッドは、一のアプリケーション・
プログラムを複数の同時的な実行経路に分割して、経過
実行時間を改善することができる。また、これらのスレ
ッドは、複数の非同期事象に依存する処の、一のプログ
ラム(例えば、デバイス・ドライバ)を構成するための
便利な方法を提供する。互いに独立的な諸スタック及び
諸例外ハンドラは、これらのスレッドを互いに独立的に
実行することを可能にする。スレッドの作成、終了及び
相互作用は、非常に高速でなければならない。なぜな
ら、一のアプリケーション・プログラムが並列処理の利
点を活用することができる程度は、並列性の管理に要す
るオーバヘッドに直接的に依存するからである。スレッ
ドの管理は、例えばFORTRANのDOループの並列
実行に見られるように、一のアプリケーション・プログ
ラムの小さな領域内で並列性の利点を活用するのに十分
な程度に効率的でなければならない。諸スレッドは、当
該エンクレーブの諸資源を共用し、かくて諸資源、コー
ド又はデータの新しいコピーを選択的に作成(起動)す
る必要なしに、これらのスレッドを作成することが可能
である。その意図は、新しいスレッドを初期化するのに
必要な作業量を最小にすることである。
【0030】多重スレッドが導入される場合、伝統的な
高級言語の意味は拡張されなければならない。このプロ
グラム・モデルは、混合言語の意味を、多重スレッドの
アプリケーション・プログラムに拡張する。この拡張
は、単一スレッドの意味と整合性があり、また幾つかの
言語における多重タスクの意味とも整合性がある。多く
の言語の概念は、先ず、エンクレーブに関するそれらの
影響又は効果によって定義された。多重スレッディング
に拡張される場合、これらの概念の幾つかのものは、エ
ンクレーブではなく、封入スレッド(例えば、スタック
や条件マネージャ等)に影響を及ぼすように修正され
た。STOPステートメントのような他のケースでは、
影響の有効範囲はエンクレーブに留まるが、その意味
は、エンクレーブ内の全てのスレッドを終了させるよう
に拡張される。多重スレッディングは、意味を変更する
のではなく、意味を拡張するものである。単一スレッド
を有するアプリケーション・プログラムでは、スレッド
によって有効範囲の限界を定められた意味は、依然とし
てエンクレーブによって有効範囲の限界を定められてい
るように見える。その唯一の理由は、単一スレッドがそ
のエンクレーブと同じ有効範囲を有するからである。
【0031】呼び出し可能サービス 呼び出し可能サービスは、ネイティブ言語の構文の機能
を拡張するようなプログラム・モデルの諸構造体を、諸
アプリケーション・プログラムが利用することを可能に
するものとして定義される。以下のインタフェースの定
義は、C言語を使用している。以下で使用される型(タ
イプ)の定義は、本明細書では特に定義されない。なぜ
なら、それらの定義は、各実施例ごとに変化し、本発明
を実現するのには重要ではないからである。勿論、諸呼
び出しルーチンは、呼び出し可能サービスによって予測
されるものと互換性のある、パラメータの型及びパラメ
ータ引き渡し用の規約を使用しなければならない。
【0032】CEECRPR−プロセスの作成 新しいプロセスを作成し、その初期エンクレーブ内の一
の初期スレッドの実行を開始させる。 void CEECRPR(program_name, run_opts. process_id.[f
c]) VSTRING *program_name; VSTRING *run_opts; INT4 *process_id; FEED_BACK *fc; 但し、 program_name(入力) 当該新しいプロセスの初期エンクレーブ内で、起動し、
初期化し、呼び出すべきメイン・プロシージャの名前で
ある。 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(入力) 当該エンクレーブ内のプログラムの実行に適用可能なC
EEの実行時オプションを含む文字列である。 user_arg(入力) 当該エンクレーブ内の最初(メイン)のプロシージャに
渡されるべき引数である。 encl_fc(出力) この呼び出しにより作成されたエンクレーブの(メイン
・プロシージャの)実行により作成された帰還コードで
ある。 fc(出力/オプション) 呼び出し可能サービスの帰還コードが入力される処の、
オプション・パラメータである。 注意事項: 1.当該エンクレーブの実行により作成された帰還コー
ドの形式及び内容は、プラットフォームに特有のもので
ある。 2.もし、ユーザの出口ルーチンがあれば、これは、エ
ンクレーブの初期化及び終了中に起動される。 3.現スレッドは、新しいエンクレーブがその実行を終
了し且つ制御権をそれに戻すのを待機する。 4.もし、(run_opts)内で、如何なるオプションも渡
されなければ、新しいエンクレーブ用のオプションを作
成すべく省略時アクションが取られる。 5.CEEメッセージ・ファイルは、そのメッセージ・
ファイル名が同じであれば、省略時又は(run_opts)内
のMSGFILEオプションを指定することによって、
当該プロセス内の複数のエンクレーブ間で共用可能であ
る。 6.ユーザ引数(user_arg)は、参照によって渡され
る。この引数はどんな型でもよい。もし、ユーザが、複
数の項目を渡すことを必要としていれば、当該エンクレ
ーブ内の実行すべきメイン・プログラムにより予測され
る引数に依存して、一の配列又は構造体を渡すことがで
きる。
【0036】CEETREN−現エンクレーブを終了 CEETRENサービスの機能は、現エンクレーブ内の
全てのスレッドを終了させて、現エンクレーブを終了さ
せることである。CEETRENサービスの呼び出しの
結果は、次のようなアクションとなる。 1.活動スレッドの各々ごとに、CEETRTDサービ
スを1度呼び出す(メイン・プロシージャを含むスレッ
ドは、終了される最終スレッドである)。CEETRT
Dサービスのアクションは、次の通りである。 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である。もし、これが省略されたり又
は前記集合の有効範囲外にあれば、これはゼロであると
仮定される。 user_rc(入力/オプション) 当該エンクレーブの戻りコードのユーザ部分を表す数で
ある。 注意事項: 1.このサービスは、決してその呼び出し元に戻らな
い。 2.当該エンクレーブにより所有された全ての資源が解
放される。 3.もし、(user_rc)パラメータが供給されなけれ
ば、CEETREN サービスは、エンクレーブ・レベ
ルの制御領域内にあるユーザ戻りコード・フィールドの
内容を使用する。もし、これが供給されると、その値
は、以前に設定された値に優先する。 4.(cel_rc_mod)の値1〜3は、言語に特有の用途の
ために予約される。
【0037】CEETREC−緊急条件終了を信号及び
エンクレーブを終了 CEETREC サービスの機能は、次の通りである。 1.現スレッドの緊急条件終了を信号する。もし、再開
カーソルが移動されず且つ一の再開が要求されるのであ
れば、処理は次のように進行する。 2.現エンクレーブ内の全てのスレッドを終了させる。 3.現エンクレーブを終了させる。 CEETRECサービスへの呼び出しの結果は、次のア
クションとなる。 1.CEESGLを呼び出し、現スレッド上の緊急条件
終了を信号する。もし、再開カーソルが移動されず且つ
一の再開が要求されるのであれば、処理は次のように進
行する。 2.活動スレッドの各々ごとに、CEETRTDサービ
スを1度呼び出す(メイン・プロシージャを含むスレッ
ドは、終了される最終スレッドである)。CEETRT
Dサービスのアクションは、次の通りである。 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である。もし、これが省略されたり又
は前記集合の有効範囲外にあれば、これはゼロであると
仮定される。 user_rc(入力/オプション) 当該エンクレーブの戻りコードのユーザ部分を表す数で
ある。 注意事項: 1.このサービスは、決してその呼び出し元に戻らな
い。 2.当該エンクレーブにより所有された全ての資源が解
放される。 3.高級言語のSTOPステートメントによる当該エン
クレーブの通常の終了は、CEETRECサービスを呼
び出すことによって実現される。このサービスは、当該
STOPステートメントを発行したスレッド内の「緊急
終了」条件を引き起こす。これは、当該エンクレーブの
順序付けられた終了を可能にする。 4.もし、(user_rc )パラメータが供給されなけれ
ば、CEETRENサービスは、エンクレーブ・レベル
の制御領域内にあるユーザ戻りコード・フィールドの内
容を使用する。もし、これが供給されると、その値は、
以前に設定された値に優先する。 5.(cel_rc_mod)の値1〜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(入力) 当該スレッドが終了するとき、CEEによって信号され
る信号トークンである。もし、この引数が空又はブラン
クからのみ構成されるのであれば、如何なる事象も信号
されない。 thread_id(出力) CEEによって生成される固有の識別子であって、他の
CEEサービスにおいて当該新しいスレッドを参照する
のに使用される。 stack_size(入力) 当該新しいスレッド用の実行時スタックの初期サイズ
(正)である。もし、これが省略されるか又はブランク
であれば、実行時オプションによって指定されたサイズ
が使用される。 arg(入力、出力、入出力) アドレスにおけるコードに渡される引数。その型は、ア
ドレスにおいて呼び出される当該コードの要件によって
決定される。 fc(出力/オプション) 当該サービスにより戻される帰還コード。これは、当該
新しいスレッドを作成する際の成功の程度を指示する。 注意事項: 1.当該新しいスレッドは、(name)内で与えられた外
部プロシージャにおいて実行を開始させる。 2.当該スレッドは、当該エンクレーブの全ての資源を
共用する。 3.CEEは、一の新しいスタックを提供する。 4.ユーザは、共用された資源(例えば、外部データ)
の使用を直列化しなければならない。 5.もし、実行すべきルーチンが諸引数を受理するもの
と宣言されるのであれば、これらの引数を当該ルーチン
に渡すことができる。出力引数と入出力引数を渡すこと
ができる。当該スレッドはその作成元のスレッドと非同
期に走行し、参照によって渡された引数が共用変数とな
るから、必要に応じて、それらの使用を直列化しなけれ
ばならない。当該スレッドはその作成元に戻らないか
ら、値によって戻された出力引数は失われることにな
る。 6.CEEは、当該スレッド用の条件マネージャを提供
する。 7.(thread_id)は、他のサービスへの入力として当
該スレッドを参照するため に使用される。(thread
_id)の他の使用は、許容されない。 8.スレッド作成の成功は、(fc)により報告される。
但し、これは、当該新しいスレッド内のCEEの初期化
が成功した時に報告を行わないし、当該スレッド上のコ
ードの実行が成功した時にも報告を行わない。
【0039】CEEEXTD−現スレッドを脱出 CEEXTD サービスの機能は、現スレッドを脱出
(終了)することである。これは、次のステップを指定
された順序で実行することによって達成される。 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(出力/オプション) 当該スレッドを終了する際の成功の程度を指示するオプ
ションの条件トークンである。 注意事項: 1.このサービスから戻るとき、目標のスレッドがすで
に終了を完了したか否かは未定である。
【0041】CEETRTC−緊急条件終了を信号及び
スレッドを終了 このCEETRTCサービスの機能は、緊急条件終了を
信号した後で、現スレッドを終了させるための便利な方
法を提供することである。かくて、CEETRTCサー
ビスへの呼び出しの結果は、次のアクションとなる。 1.(FEED BACK)コードを指定してCEES
GLサービスが呼び出されると、緊急条件終了が信号さ
れる。 2.もし、再開カーソルが修正されなければ、CEEE
XTDサービスが呼び出されて、現スレッドが終了され
る。 void CEETRTC 注意事項: 1.このサービスは、決してその呼び出し元に戻らな
い。
【0042】〈スレッドの終了に関する注意事項〉: もし、終了中のスレッドがメイン・ルーチンを含むスレ
ッドであれば、CEEは、CEETRENサービスを呼
び出すことによって、エンクレーブの終了を強制する。
このCEETRENサービスは、エンクレーブ・レベル
の制御領域内にあるユーザの戻りコード・フィールドを
利用することによって、適切な戻りコードを生成する。
CEETRENへの呼び出しは、パラメータなしで行わ
れる。 緊急終了条件:この緊急終了条件は、CEEによって定
義された重大度が1の条件であり、当該スレッドを終了
させる意図を指示するために、一のアプリケーション・
プログラム又は任意のメンバ製品によって(CEESG
Lを呼び出すことにより)信号される。この緊急終了条
件は、通常の条件として処理される。もし、これが未処
理のスタック・フレーム0に到達すれば、CEEの省略
時アクション(重大度1の条件については、再開するこ
と)が適用される。
【0043】混合言語の意味 エンクレーブのメイン・プロシージャは、当該エンクレ
ーブ内の制御権を受け取るべき最初のプロシージャであ
る。当該エンクレーブ内で呼び出される最初のプロシー
ジャは、当該プロシージャが書かれた言語の規則に従っ
て、メイン(MAIN)となることができなければなら
ない。これは、例えば、結合規則並びにソース言語又は
そのコンパイラ指示仕様規則を含んでいる。当該エンク
レーブ内で呼び出されるべき他の全てのプロシージャ
は、当該プロシージャが書かれた言語の規則に従って、
サブ(SUB)となることができなければならない。注
意すべきは、言語の中には、一のプロシージャの同じ起
動がメイン及びサブとして呼び出されるものもあるし、
メイン/サブ指定がコンパイル又は結合時に明示的に指
定される必要があるものもあることである。
【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は、(例えば、COBOLのGOBACKや、
PL/Iの最終ENDステートメントの処理のような)
メイン・プロシージャからの制御権の戻りのように、暗
示することもできる。
【0047】全ての条件は、これが言語の構文により提
示されるか、又はCEEの呼び出し可能サービスにより
信号されるかに拘わりなく、互いに同等である。諸条件
を処理するための明示的な構文を有する全ての言語は、
他の任意の言語又はCEEの呼び出し可能サービスによ
り提示された条件を認識し且つこれらの条件についてア
クションを取ることができなければならない。条件マネ
ージャの基本的な有効範囲は、スレッドである。PL/
IとCの両言語は、スキップされた諸フレームを順序通
りに縮小又は崩壊させつつ、スタック・フレーム境界を
越える分岐をサポートする処の、表記法を有している。
既存言語の意味の制限内で、任意の言語で書かれた一の
プログラムは、同じ言語で書かれた一のプロシージャの
位置に対し、かかる「GOTO」を、発行することがで
きる。「GOTO」の目標は、この「GOTO」を実行
する同じスレッド内に存在しなければならない。
【0048】本発明に関連する米国特許出願第7557
06号の要約 この関連発明は、複数の言語で書かれた諸アプリケーシ
ョン・プログラムを処理することができる、共通条件処
理方法に向けられている。呼び出し可能ルーチンの集合
がコンパイルされて、共通条件処理(CCH)機能を実
現する。諸コンパイラはそれぞれ修正されていて、CC
Hと相互作用し且つCCHと相互作用すべきコードを作
成するようになっている。CCHは、本発明の好ましい
実施例で使用される。これは、一の多重言語アプリケー
ション・プログラム内に存在する全ての言語による条件
処理のための、共通で、整合性のあるフレームワークを
提供する。CCHの諸ルーチンは、外部又は入力変数と
して宣言される処の、呼び出し可能な複数の入力点を有
しており、諸アプリケーション・プログラムがこれらの
入力点にリンクされることを可能にする。かくて、諸ア
プリケーション・プログラムは、その実行中にCCH内
の入力点を呼び出すことにより、条件処理プロセスと相
互作用を行うことができる。CCHは、コンピュータ・
システム内にある標準の条件処理手段を初期化して、選
択された条件が発生するとき、コンピュータ・システム
の制御権をCCHに渡すようにさせる。当該アプリケー
ション・プログラムが書かれた言語用の各言語サポート
・プログラムは、当該言語に特有の言語条件処理ルーチ
ンを有するように、それぞれ修正されるのが好ましい。
この言語で書かれたプログラム、プロシージャ又はサブ
ルーチンが入力される場合、CCHは、その事実を記録
するため、後入れ先出し(LIFO)式の待ち行列又は
これと同等の手段を用いて、言語特有ハンドラ(LS
H)を現スタック・フレームと関連付ける。かくて、複
数のネストされたルーチンが処理される場合、CCH
は、指定された条件の発生時にどのLSHが実行される
べきかを決定することができるように、諸LSHの順序
付けられたリストを作成する。アプリケーション・プロ
グラムは、CCHの外部入力点の1つを呼び出すことに
より、ユーザ・ハンドラを選択的に登録する。また、こ
れらのユーザ・ハンドラは、LIFO式に待ち行列化さ
れ、現スタック・フレームと関連付けられる。一の条件
が検出される場合、最後に登録されたLSH、即ち待ち
行列の最上部にあるものが、当該条件の使用可能性の検
査要求に応じて実行される。このLSHは、その時点で
当該条件を処理しない。もし、LSHが、当該条件が使
用可能にされていないことを指示する情報を戻すのであ
れば、CCHは、当該条件の発生場所で当該プログラム
の実行を再開させる。他方、当該条件が使用可能にされ
ていれば、登録済みの最後のユーザ・ハンドラが実行さ
れる。このユーザ・ハンドラ及び他のハンドラは、3つ
の型の要求(再開、回復機能委任、プロモート)の1つ
でCCHに応答する。再開要求は、当該条件が処理され
たこと及びそれ以上の処理が必要ないことを指示する。
もし、ユーザ・ハンドラが当該条件を回復機能委任又は
プロモートするのであれば、CCHは、待ち行列上の次
のユーザ・ハンドラを実行する。一旦、全てのユーザ・
ハンドラが実行されてしまうと、最後に入力されたLS
Hが実行される。そのLSHは、3つの要求の1つで応
答することもできる。もし、一のスタック・フレームに
関連する全てのユーザ・ハンドラが実行され且つそのど
れもが当該条件を処理しなかったのであれば、次の最も
古いスタック・フレームに関連するユーザ・ハンドラが
実行されることになる。論理的なスタック・フレーム・
ゼロが維持される。このスタック・フレーム・ゼロは、
これに関連する一のLSHを有することができる。CC
Hは、スタック・フレーム・ゼロに関連する処の、それ
自体の条件ハンドラを有する。一のルーチンが完了する
場合、そのスタック・フレームが解放され、関連するユ
ーザ・ハンドラが待ち行列から取り除かれる。
【0049】プロモート要求は、当該条件が他の条件と
して再定義されることを要求する。回復機能委任要求
は、当該条件が第2の条件処理ルーチンにより再処理さ
れることを要求する。再開要求は、当該条件が既に処理
されているために、再開カーソルにより指示されたコー
ド内の点で、実行が再開されることを要求する。かく
て、CCHは、要求されたアクションを遂行することに
より、プロモート、回復機能委任又は再開要求を処理す
る。さらに、再開カーソルが維持され、これをユーザ・
ハンドラの要求に応じて移動(変更)させることができ
る。諸脱出ハンドラを登録するための別個の手段が設け
られているから、条件マネージャは、通常の脱出処理を
考慮する必要はない。かかる分離は、既存の言語の諸要
件を満足することを可能にすると同時に、一層強力で頑
丈な機構を実現することを可能にする。特に、脱出処理
を分離することは、「ロールバック」及びデータの完全
性を回復するための基礎を与える。一のハンドラは、C
CH内の一のルーチンを呼び出すことにより、当該条件
が生じたスレッド、エンクレーブ、プログラムの終了を
要求することができる。
【0050】本発明に関連する米国特許出願第7557
08号の要約 この関連発明は、コンピュータ・システム内のプログラ
ム実行中に発生する条件を処理するための一般的な方法
及びシステムを改良することを目的として、複数の言語
で書かれた諸アプリケーション・プログラムを処理する
条件マネージャを設けるようにしている。この方法は、
外部呼び出しをサポートする任意の言語(例えば、PA
SCAL、FORTRAN、C及びCOBOL)で書か
れたアプリケーション・プログラムにリンクするのに適
当な外部入力点用のオブジェクト・コードを有する、汎
用的な信号ルーチンを生成し且つこれを使用することに
向けられている。一のプログラムによって呼び出される
場合、この信号ルーチンは、条件マネージャに一の条件
を信号した後、呼び出し元に戻る。諸プログラムは、こ
の信号ルーチンを使用して、諸サブルーチンからの戻り
コードを検査するステップを除去することができる。そ
うするには、サブルーチンをコード化して、適正な条件
を条件マネージャに自動的に信号させるようにすればよ
い。この場合、条件マネージャは、当該条件に適正に応
答するように、以前に登録されたユーザ定義条件ハンド
ラを実行する。一の帰還トークンとして作用する汎用的
な条件トークンは、条件識別子と、当該条件識別子用の
フォーマット・コードと、当該条件の重大度コードと、
ファシリティ識別子用の制御コードと、ファシリティ識
別子と、オプションとしてのインスタンスに特有のハン
ドル識別情報とから構成されるように定義される。諸サ
ブルーチンは、前記信号ルーチン及び前記帰還トークン
を使用して、一の帰還トークンを記憶可能な一のアドレ
スを選択的に渡すことができる。実行中に、サブルーチ
ンは、諸条件を監視する。もし、検出された一の条件の
重大度コードが一のスレッショルドよりも大きければ、
当該サブルーチンは、当該条件を条件マネージャに信号
するか、又は渡されたアドレスに一の帰還トークンを記
憶する。
【0051】
【発明の効果】前述の仕様を使用すると、本発明は、標
準のプログラム技術により実現することができる。その
結果として作成されたプログラムは、ディスク、ディス
ケット、メモリ・カード、ROM又は任意の記憶装置内
に記憶することができる。実行時には、このプログラム
は、コンピュータのRAMにコピーすることができる。
中間的な結果は、RAMに記憶される。当業者であれ
ば、前述のようにして作成されたソフトウェアを、適当
な汎用又は専用コンピュータ・ハードウェアを組み合わ
せて、一のシステムを容易に作成することができる筈で
ある。
【図面の簡単な説明】
【図1】本発明で使用されているプロセスと、エンクレ
ーブと、スレッドの間の関係を示す図である。
【図2】本発明で使用されているプロセスと、エンクレ
ーブと、スレッドの間の関係を示す図である。
【図3】簡単な一のプロセスを実行する場合の、プロセ
スと、エンクレーブと、スレッドの間の関係を示す図で
ある。
【図4】ネストされた諸エンクレーブ相互間の関係を示
す図である。
【図5】並列スレッド相互間の関係を示す図である。
フロントページの続き (72)発明者 アルフレッド、ウイリアム、シャノン アメリカ合衆国カリフォルニア州、モー ガン、ヒル、ラ、クロッス、ドライブ、 830 (72)発明者 ウイリアム、デイビッド、ウォレース アメリカ合衆国カリフォルニア州、サン ノゼ、リリアン、ウェイ、6201 (56)参考文献 特開 昭63−85828(JP,A) 日経バイト,No.37、1987.9、日 経マグロウヒル社、「OS/2の全貌第 5部タスク管理」、P.152−159

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムにおいて、 (1)高級言語で書かれた一のアプリケーション・プロ
    グラムの呼び出しを初期化して、一のプロセスと、当該
    プロセス内の一のエンクレーブであって、高級言語の意
    味の有効範囲を定義する論理的な実行時構造体であるエ
    ンクレーブと、当該エンクレーブ内の実行すべき一の初
    期スレッドを作成するステップと、 (2)前記初期スレッドからの1つ以上の要求を実行し
    て、前記エンクレーブ内の他のスレッドと同時に実行す
    べき追加スレッドを作成するステップと、 (3)前記エンクレーブ内の一のスレッドからの1つ以
    上の要求を実行して、前記プロセス内の追加エンクレー
    ブを作成し、当該各追加エンクレーブ内の実行すべき一
    の初期スレッドを作成するステップとから成ることを特
    徴とする、プログラムの実行を管理する方法。
  2. 【請求項2】一のエンクレーブが複数の高級言語で書か
    れた複数のプロシージャを含むことを特徴とする、請求
    項1記載のプログラムの実行を管理する方法。
  3. 【請求項3】コンピュータ・システムにおいて、 (1)高級言語で書かれた一のアプリケーション・プロ
    グラムの呼び出しの初期化を要求して、一の初期プロセ
    スと、当該初期プロセス内の一の初期エンクレーブであ
    って、高級言語の意味の有効範囲を定義する論理的な実
    行時構造体である初期エンクレーブと、当該初期エンク
    レーブ内の実行すべき一の初期スレッドを作成するステ
    ップと、 (2)前記初期エンクレーブ内の1つ以上の追加スレッ
    ドの初期化を要求するステップと、 (3)前記初期エンクレーブ内の一のスレッドから前記
    初期プロセス内の1つ以上の追加エンクレーブの初期化
    を要求して、当該各追加エンクレーブ内の実行すべき一
    の初期スレッドを作成するステップとから成ることを特
    徴とする、プログラムの実行を管理する方法。
  4. 【請求項4】前記ステップ(3)が、一の外部サービス
    ・ルーチンを呼び出し且つ前記追加エンクレーブを識別
    するパラメータを渡すステップを含むことを特徴とす
    る、請求項3記載のプログラムの実行を管理する方法。
  5. 【請求項5】コンピュータ・システムにおいて (1)高級言語で書かれた一のアプリケーション・プロ
    グラムの呼び出しを初期化して、一のプロセスと、当該
    プロセス内の一のエンクレーブであって、高級言語の意
    味の有効範囲を定義する論理的な実行時構造体であるエ
    ンクレーブと、当該エンクレーブ内の実行すべき一の初
    期スレッドを作成する手段と、 (2)前記初期スレッドからの1つ以上の要求を実行し
    て、前記エンクレーブ内の他のスレッドと同時に実行す
    べき追加スレッドを作成する手段と、 (3)前記エンクレーブ内の一の作成元スレッドからの
    1つ以上の要求を実行して、前記プロセス内の追加エン
    クレーブを作成し、当該各追加エンクレーブ内の実行す
    べき一の初期スレッドを作成する手段とを備えたことを
    特徴とする、プログラムの実行を管理するシステム。
  6. 【請求項6】一の前記追加スレッドからの1つ以上の要
    求を実行して他のスレッドを作成する手段をさらに備え
    たことを特徴とする、請求項5記載のプログラムの実行
    を管理するシステム。
  7. 【請求項7】一の要求を実行して、関連する一のエンク
    レーブ及び実行すべきスレッドを有する第2のプロセス
    を作成する手段をさらに備えたことを特徴とする、請求
    項5記載のプログラムの実行を管理するシステム。
  8. 【請求項8】一の要求を実行して前記プロセスを終了さ
    せることにより、前記プロセス内の全てのエンクレーブ
    及びスレッドを終了させる手段をさらに備えたことを特
    徴とする、請求項5記載のプログラムの実行を管理する
    システム。
  9. 【請求項9】前記手段(3)が、 前記作成元スレッドの実行を一時的に中断させる手段
    と、 前記追加エンクレーブのメイン・ルーチンに制御権を渡
    して、当該追加エンクレーブを現エンクレーブとする手
    段と、 を備えたことを特徴とする、請求項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 JPH05216692A (ja) 1993-08-27
JP2520543B2 true 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
AU2003216472A1 (en) * 2002-03-01 2003-09-16 Green Border Technologies 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
US20050091535A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Application identity for software products
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
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
US9491111B1 (en) 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
US10079681B1 (en) 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US9584517B1 (en) * 2014-09-03 2017-02-28 Amazon Technologies, Inc. Transforms within secure execution environments
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US9246690B1 (en) 2014-09-03 2016-01-26 Amazon Technologies, Inc. Secure execution environment services
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
US11405177B2 (en) 2017-01-24 2022-08-02 Microsoft Technology Licensing, Llc Nested enclave identity

Family Cites Families (9)

* 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
JPH0820962B2 (ja) * 1986-09-30 1996-03-04 アンリツ株式会社 高級言語処理方法
US5165018A (en) * 1987-01-05 1992-11-17 Motorola, Inc. Self-configuration of nodes in a distributed message-based operating system
US5060150A (en) * 1987-01-05 1991-10-22 Motorola, Inc. Process creation and termination monitors for use 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 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの実行を管理する方法及びシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
日経バイト,No.37、1987.9、日経マグロウヒル社、「OS/2の全貌第5部タスク管理」、P.152−159

Also Published As

Publication number Publication date
JPH05216692A (ja) 1993-08-27
US6073157A (en) 2000-06-06
EP0531107A2 (en) 1993-03-10
US5666533A (en) 1997-09-09
EP0531107A3 (en) 1993-11-10

Similar Documents

Publication Publication Date Title
JP2520543B2 (ja) プログラムの実行を管理する方法及びシステム
US5784613A (en) Exception support mechanism for a threads-based operating system
Dolan et al. Concurrent system programming with effect handlers
Anderson et al. Scheduler activations: Effective kernel support for the user-level management of parallelism
JP4709469B2 (ja) スレッドを明示的に中断することなく整合状態とする方法及び装置
US6170018B1 (en) Remote procedure calling using an existing descriptor mechanism
KR100898315B1 (ko) 인핸스드 런타임 호스팅
US20020046230A1 (en) Method for scheduling thread execution on a limited number of operating system threads
US7039911B2 (en) Hybrid threads for multiplexing virtual machine
US7559063B2 (en) Program flow control in computer systems
US6470346B2 (en) Remote computation framework
US6349322B1 (en) Fast synchronization for programs written in the JAVA programming language
US6948170B2 (en) Computer and computer-readable storage medium for command interpretation
JPH0855035A (ja) マイクロカーネル・データ処理システム用の伝送制御の分離の方法および装置
JPH0831041B2 (ja) プログラム条件処理方法およびコンピュータ・システム
Marlow et al. Extending the Haskell foreign function interface with concurrency
US8490115B2 (en) Ambient state for asynchronous methods
US5970250A (en) System, method, and computer program product for scoping operating system semanticis in a computing environment supporting multi-enclave processes
Holt Structure of computer programs: a survey
Doeppner et al. C++ on a parallel machine
JP2888420B2 (ja) マルチタスク・アーキテクチャにおけるプロセス間通信方法
EP2176761B1 (en) Object model for transactional memory
US6769119B1 (en) System, method, and computer program product for scoping operating system semantics in a computing environment supporting multi-enclave processes
Goldstein Lazy threads: compiler and runtime structures for fine-grained parallel programming
Holt et al. A short discussion of interprocess communication in the sue/360/370 operating system