JPH02201653A - アプリケーシヨン・プログラム・インターフエース方法 - Google Patents

アプリケーシヨン・プログラム・インターフエース方法

Info

Publication number
JPH02201653A
JPH02201653A JP1306768A JP30676889A JPH02201653A JP H02201653 A JPH02201653 A JP H02201653A JP 1306768 A JP1306768 A JP 1306768A JP 30676889 A JP30676889 A JP 30676889A JP H02201653 A JPH02201653 A JP H02201653A
Authority
JP
Japan
Prior art keywords
api
thread
application program
interface
written
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
JP1306768A
Other languages
English (en)
Inventor
Brian H Burger
ブライアン・ハワード・バーガー
Domingo Segundo Hidalgo
ドミンゴ・セグンド・ヒダルゴ
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 JPH02201653A publication Critical patent/JPH02201653A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

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

Description

【発明の詳細な説明】 A、産業上の利用分野 この発明はコンピュータ・システム・インターフェース
に関し、より具体的には複数の言語で記述きれている種
々のアプリケーションをソフトウェア・システムにイン
ターフェースするのを支援するようにしたものである。
B、従来の技術 まずこの発明が解決しようとしている問題の概要に触れ
、つぎに問題の詳細な検討および従来の試みについて述
べることにする。コンピュータ・システムにおいて複数
の言語で記述きれた種々のアプリケーションをソフトウ
ェア・システムの機能たとえばIBM社のO3/2 (
商標)オペレーティング・システムのデータ・ベース・
マネジャにインターフェースするよう支援を行うことが
望まれることがしばしばである。しかしながら異なるコ
ンピュータ言語は異なるインターフェース上の仕様を伴
い、たとえば所定の言語で記述きれているプログラムが
、他の言語で記述されている他のプログラムを呼び出す
ときには、当該他のプロ・ダラムはコンピュータ・シス
テムのプロセッサの所定のレジスタの内容を保持するよ
うに期待される。他方呼び出されるプログラムないし被
呼者(callee)たとえばデータ・ベース機能は呼
者(cal]er)が予め定められたパターンでパラメ
ータ情報を引き渡すことを予定している。
このような仕様の例は(1)所定のパラメータは、使用
に供される値であることが予定される一方、他のパラメ
ータはその値が存在するアドレスであることが予定きれ
る、(2)パラメータたとえばバイト・アレイはナル(
零)で終ることが予定される、たとえばゼロの最終バイ
トを有する、(3)値またはアドレスであるパラメータ
の順序は、予め定められたパターンで呼者が引き渡すも
のであると被呼者が予定している、たとえば値が最初に
なったり、組の順序に混在させられるとかになる。
上述のとおりコンピュータ言語はその仕様に関し異なる
ものであるから、異なる言語で記述されたアプリケーシ
ョンのインターフェースを支援するうえでの問題点は、
通常、支援されるべき各言語で表わされたデータ・ベー
ス・マネジャまたは他の機能への個別のインターフェー
スを実現することによって解決されねばならないという
点である。そうでないのであれば、各機能ごとに新しい
エントリ・ポイントを設計し、これがほとんどのコンピ
ュータ言語にとって許容可能な態様でパラメータを受は
付けることができ、現行のエントリ・ポイントの呼び出
しを準備するようにしなければならない。いずれの場合
でも、開発、維持がめんどうである等の欠点があること
は明らかである。
結局、ソフトウェアの一部を他のソフトウェア・データ
・ベース、オペレーティング・システムまたは基本人出
カサ−ビスすなわちBIO8のようなプログラミング・
サービスの単一カーネルを含んでもよい)にインターフ
ェースしアクセスする必要が生じるときには、常に、ど
のように矛盾なく通信するか、すなわちどのようにパラ
メータを渡し結果ないしコードを返すかについての規則
(コンベンション)が必要となる。規則は個々のプログ
ラム言語によって確立される。プログラム言語はそれぞ
れ異なるインターフェース仕様を有しているのである。
呼者および被呼者が同一のプログラム言語で記述されて
いるときには、単一のプログラム言語たとえばFORT
RANで記述された呼者および被呼者アプリケーション
について仕様が同一であるため、その言語でインターフ
ェースの仕様が処理されるかぎりインターフェース上の
問題はない。したがってコンパイラは、呼者に引き渡す
べきパラメータや戻すべきデータ等の結果を引き渡し返
すために実行されるべき際にサービスする。典型的なデ
ータ・ベースの例では、このデータおよびパラメータに
は、データ・ベースを生成する被呼者に引き渡すべき、
生成対象のデータ・ベースの名前や呼者に返ずべきコー
ドの結果たとえばデータ・ベースが生成されたかどうか
のコードの結果が含まれる。
アプリケーションが正しく通信を行う態様を確立するこ
れら規則のより詳細な例を説明する。たとえばC言語で
記述されているデータ・ベース・カーネルにおいては、
呼者が名前をカーネルに弓き渡して末端でナル・バイト
をアクセスできるようにし、カーネルが名前の長さまた
は末端を認識すると仮定されている。しlでがってデー
タ・ベースは絶え間なく仮定を採用してきた。たとえば
どこから来るのであっても名前(内部から来る名前もそ
うである)に関してストリング・キャラクタは常にナル
で終了するという仮定を採ってきた。
このようなことがなぜ常に重要であったかを考えよう。
実行時ライブラリを呼び出すときには、弓き渡されたス
トリングの長さを知らきれることなく機能が呼び出きれ
る。(ストリングはナルで終る)そして以上のような仮
定がなければ所望の機能は一般には正しく動作しないで
あろう。このように規則が必要とされるので、呼者を同
様にC言語で記述し、名前のキャラクタ・ストンソング
を引き渡されるときにはいつでもコンパイラが一貫し一
〇 てナルを自動的に付加してカーネルにストリングが引t
iすれるときにそれが1つのストリングとして認識され
るようにする必要があると考えられてきた。他の言語た
とえばFORTRANはストリングの終了に異なる規則
を有し、FORTRANで記述きれたアプリケーション
はそのようなナルの区切りを有しないであろう。ただし
、データ・ベース・カーネルはナルのない区切りを予定
し、プログラムは正しく動作しないであろう。
ストリングの区切りは、インターフェースを成功させる
上で異なる言語の要求仕様に関連する問題の1つの例に
すぎない。異なる言語で記述されたアプリケーションを
インターフェースする際の他の典型的な問題は値および
アドレスの引き渡しに関係していた。この問題は、言語
が1つ1つ引き渡すのみであるかぎりは、ないしは予め
定められた順序で引き渡すかぎりは、一般にもつとも困
難となる。したがって「参照による呼び出し」ないし「
値による呼び出し」の要請が、異なるプログラム言語で
記述されたアプリケーションを有効に呼び出すうえでの
障害となる他の不一致点である。順序およびパラメータ
・タイプの仕様に関連する問題を説明する具体的な例は
つぎのようなものである。すなわちC0BOLでは値に
よるすべてのパラメータが先に引き渡され、つぎに参照
のパラメータが何も伴うことなく引き渡される必要があ
り、他方FORTRANでは参照によってのみ引き渡し
が行われる。
異なる言語で記述されたアプリケーションをインターフ
ェースする際の問題は、ストリングないし値/参照呼び
出しの態様種々の言語で一貫していないという点に限定
されず、データ・ベースのような被呼者が所定のアプリ
ケーションによって呼び出きれたのち制御を引き受けた
ときにストアきれる、プロセッサの現行状態情報の量の
ような付加的なファクタを含む。1つの言語で記述きれ
た所定のアプリケーションは、アプリケーションへの復
帰時にレジスタの所定の内容が同一であると期待するこ
とがあり、もしデータ・ベース・カーネルが内容を変換
するまえにデータ・ベース・カー=8− ネルがそれを留保しておないなら、アプリケーションは
それ以降適切には動作しないであろう。これは、とくに
、プログラムの一部すなわちスレッド(thread)
を同一また他のプログラムの残りの部分と非同期で実行
するという多重スレッド・コードないし多重スレッド手
法に関連する問題である。プログラム部分の各々が実行
を行っているときマシーンの状態は異なっているであろ
うし、データ・ベース・カーネルまたは他のソフトウェ
アの同一の機能がこれら異なるコード部分により呼び出
されることもある。2番目のスレッドが具体的なアプリ
ケーション・プログラム・インターフェイスを呼び出し
たときに、メモリにストアされている先のスレッドの先
行した呼び出しに関するレジスタ状態情報は通常書き変
えられ、そのためプログラムの以降の動作が適切に動作
しなくなるであろう。
結局、異なるインターフェース上の仕様が異なるプログ
ラム言語および異なるプログラム言語で記述されたアプ
リケーションごとに存在する。データ・ベース等のソフ
トウェア・プロダクトを2以上の言語で記述された種々
アプリケーションでアクセスできるようにする必要があ
るならば、支援言語で記述されたアプリケーションの要
請を満たす方策が、それらアプリケーションが首尾良く
データ・ベースを呼び出すために必要となる。したがっ
て複数のコンピュータ言語で記述されたアプリケーショ
ンを効率良くインターフェースする手段が長い間求めら
れた。ざらに、支援きれるべき各アプリケーションの言
語ごとに個別にインターフェースを実現する必要が回避
されたシステムおよび方法が強く望まれていた。また現
行のエントリ・ポイントの呼び出しを準備するために、
複数のコンピュータ言語で許容できるパラメータを受は
取ることができるようにする、機能の各々への新しいエ
ントリ・ポイントを、デザインする必要がない、解決法
も望まれていた。また異なるインターフェース上の要請
および仕様を有する広範囲の言語で記述されたアプリケ
ーションからソフトウェア・プロダクトに外部からエン
トリ・ポイントを(を勾するうえで必要な、開発の手間
、全体のメインテナンスおよびサポートを実質的に減す
るためにも、複数のコンピュータ言語で記述きれたアプ
リケーションのインターフェースを提供する解決策が緊
急に必要とされていた。
C0発明が解決しようとする課題 この発明は以上の事情を考慮してなきれたものであり、
複数の言語で記述された種々のコンピュータ・アプリケ
ーション・プログラムをデータ・ベース マネジャのよ
うなソフトウェア・システムにインターフェースする手
法を提供することを目的としている。
01課題を解決するための手段 この発明では以上の目的を達成するために、ソフトウェ
ア・システムにより支援される複数の機能の各々に対し
て総括的アプリケーション・プログラム・インターフェ
ースないしエントリ・ポイントを用意し、このインター
フェースないしエンドす・ポイントを、当該機能を実行
するためにシステムが要求するフオームと合致したフオ
ーム(フオームの一貫性)で複数のパラメータを有する
ものとして定義する。ここでフオームの一貫性にはパラ
メータの順序、ナル区切り、値またはアドレスによる変
数の引き渡しの態様等を含む。各エントリ・ポイントは
、上述複数の言語のいずれかで記述きれたアプリケーシ
ョン・プログラムにより呼び出すことができ、このエン
トリ・ポイントが呼び出しのパラメータを一貫性のある
総括的フオームに変換しソフトウェア・システムの機能
を実行できるようにする。
スレッドに対応するプロセッザ状態が呼び出しに応じて
、すべての総括的プログラム・インターフェースにより
アクセス可能で共有されているテーブルにストアされる
。アプリケーション・プログラムによってはテーブルは
アクセスされない。つぎに背景のソフトウェア・システ
ムの機能が呼び出される。呼び出しから戻り、システム
が機能を実行するときには、プロセツザ状態が元に戻さ
れ、戻りコード情報および制御がアプリケーション・プ
ログラムに返される。この手法では、支援され=11− ている種々の手続き言語の各々で記述されたアプリケー
ションに対して個別にエントリ・ポイントを設ける必要
がない。各言語に対してエントリ・ポイントが重複して
付随的に開発量、メインテナンス、サポートの必要性が
なくなる。これは種々の言語のインターフェース仕様を
束ねて画一的な順序にすることによって実現される。
具体的な例では、エントリ・ポイントはデータ・ベース
・マネジャにより支援されている複数の機能たとえばデ
ータ・ベースの生成、破壊、付加または走査の各々に対
して定義されている。各アプリケーションにより呼び出
すことができる複数の機能に対して定義されたそのよう
な新しいエントリ・ポイントに対して、個々のデータ・
ベース機能の仕様に応じて一組のパラメータが定義され
た。
このようなパラメータはデータ・ベースと合致しており
、複数の言語で記述されたアプリケーション・プログラ
ムから呼び出し可能である。この具体的の1つのエント
リ・ポイントは、複数の種々の言語に関連するストリン
グ長の特定の仕方に由来する種々のフオームを有する、
ストリング長の表示を受は取って、データ・ベース・マ
ネジャがストリングを認識するうえで必要ときれる現行
の単一の仕様によって理解可能な画一的なフオームに変
換する。具体的には、そのエントリ・ポイントにはスト
リング長を示すパラメータが含まれ、このパラメータに
よりストリングの区切りを指示するためにナル・バイト
が自動的に付加される。
また好ましい例では、多重スレッド・コードを想定して
いる。第1のアプリケーション・プログラム・インター
フェースが呼び出されたときに、システムはオペレーテ
ィング・システムを呼び出して、呼び出しているスレッ
ドの識別番号を検索する。ここで各スレッドは固有の識
別番号を有している。バッファはプロセッサ状態情報の
すべてをストアし、IDをテーブルへのインデックスと
して用いる。個々のスレッド状態情報がセーブされると
き、この情報は、個々のスレッドにのみ割り当てられて
いるメモリ空間を更新する。
E、実施例 第1図はこの発明のコンピュータ・システムを示す機能
的なブロック図であり、この発明が解決する問題点を示
している。このシステムにおいては、通常オペレーティ
ング・システム18が設けられ、複数のオペレーティン
グ・システム・アプリケーション・プログラム・インタ
ーフェース20からのシステム呼び出しは基本的には総
括的AP I 1’4と同一の目的を持っている。たと
えば、システム呼び出しはエントリ・ポイントを供給し
、アプリケーション・プログラム16がオペレーティン
グ・システム18をアクセスして必要なサービスを得ら
れるようにする。これらサービスはたとえば、ウィンド
ウの生成、ファイルの読み出し、オーブン等である。こ
れらの機能はデータ・ベース等のプログラム10をアク
セスする際のアプリケーション16の種々の機能と類似
している。ここでこの実施例はO3/2 (商標)拡張
板コンピュータ・プログラムを基準にして開示されてい
ることに留意されたい。このプログラムはオペレーティ
ング・システムおよびデータ・ベース・マネジャ機能を
具備している。ただし、この発明を説明するうえで具体
的なオペレーティング・システムおよびプログラム・サ
ービス10を用いるといっても、それによって発明の適
用がそのような態様に限定されるわけではない。以下開
示される発明は広範囲のオペレーティング・システム1
8およびプログラム・サービス10に容易に適合化でき
ることを理解されたい。
第1図をざらに参照する。従来のシステムに関連する問
題の1つはつぎのような点であったことを思い起こされ
たい。すなわち、オペレーティング・システム18およ
びプログラム・サービス10は、アプリケーション16
が同一の言語で記述され、したがってオペレーティング
・システム18に対するAP I20のような、または
具体的なプログラム・サービス10に対するAPIたと
えばデータ・ベース・マネジャAP112のようなアプ
リケーション・プログラム・インターフェースは個別の
言語で記述されていると仮定しているのである。したが
って、APT12および20は一般的ではなかったし、
2以上のプログラム言語で記述された種々のアプリケー
ション16から呼び出きれることを予定していない。し
たがって、たとえばデータ・ベース・マネジャ・プログ
ラム・サービス10が0M語で記述されていたのであれ
ば、関連するOBM  AP112はアプリケーション
16からの呼び出し、たとえばテ゛−タ・ベースの生成
または削除のための呼び出しがC言語の呼び出しと一致
することを予定しており、アプリケーション16からの
呼び出しが異なる言語のものであれば、アプリケーショ
ン16は適切に動作しないであろう。しかし、この発明
では複数の総括的AP114をDBM  AP112や
オペレーティング・システムAPI20の元々のエント
リ・ポイントに設け、多くの予め定められた言語のうち
の任意の言語で記述きれた複数のアプリケーション16
への現行エントリを生成するようにしている。したがっ
て、この発明の総括的AP114の役割は、アプリケー
ション16が記述きれた具体的な言語によって決定され
るフォーマット(多くのフォーマットがある)で受は取
られたパラメータを、DBM  AP112およびオペ
レーティング・システムAPI20が記述された具体的
な手続き言語で決まる、DBM  AP112およびオ
ペレーティング・システムAP I20が予定する形態
に変換することである。
この発明の詳細な説明するまえに、第1図に示きれる付
加的な特徴について考える。これについても後に詳述す
る。現在のプログラム手法によれば、アプリケーション
16は多重スレッド・タイプと考えることができ、1つ
またはそれ以上のアプリケーションは、複数のスレッド
すなわちコード部分を含み、これらスレッドの各々が他
のスレッドと非同期的に実行されるようにできる。この
ようなスレッドは機能的にT+  74で示される。
この発明では、そのようなスレッドの各々がAP114
を呼び出すたびに、この発明のシステムを実行している
コンピュータ中のプロセッサの状態情報を状態保持テー
ブル17中に所定の態様で保=17 持しなければならない。この発明の1つの特徴は、個々
のスレッドが個別のスレッドIDと個別のメモリ空間な
いしロケーションをテーブル17中に有しているという
点である。各スレッドのプロセッサ状態はテーブル中の
固有の対応する位置に同期的にストアされ、同一のスレ
ッドに対応する情報を上書きする。この態様については
後に詳述する。
第2図においてこの発明のより詳細な説明を行う。ソフ
トウェア・システム42は一般的にはどのようなシステ
ムであってもよく、ただ、多くのアプリケーションにア
クセスされるものである必要がある。オペレーティング
・システム、データ・ベース機能あるいは基本人出カサ
−ビスBIO3であってよい。ソフトウェア・システム
42にはインターフェース40が提供され、これによっ
てシステム24が所定の要求を確立する。たとえばイン
ターフェース仕様34との関連でアプリケーション(第
1図の16で示すようなもの)の外部に対する予め定め
られたエントリ・ポイント36である。システム22は
したがってシステム/′42に対するインターフェース
38の仕様を確立する。
動作可能なシステムに対するインターフェース34およ
び38−40はシステム22および24か始めから存在
し、同一の言語で記述されるかぎり互換性がある。再言
するならば、この発明では現行エントリが生成され、こ
れによって、インターフェース仕様34と互換性のある
インターフェース32をシステム26に提供できる。た
だし、第2図に関連してつぎの点に留意することは重要
である。すなわちこの発明のシステム26は異なる言語
で記述された種々のアプリケーション16に対する総括
的インターフェース28を提供し、この結果ソフトウェ
ア42に対する総括的なエントリ・ポイントの集合を提
供するのである。換言すれば、この発明のシステム26
は現行のソフトウェア・システム4−2に対する一般化
を行っているのである。さらに、システム22および2
4が予め存在するので、この発明のシステム26を望み
どおりにマシン・コードやアッセンブリ言語で書くこと
ができ、このため予め存在するインターフェースを、ソ
フトウェア・システム42へ対する現行エントリ・ポイ
ントとの共通性を持たせることができる。このことはブ
ロセツザのスタックを操作することにより実現でき、こ
のため、インターフェース28および32の実質的なマ
ツピングが有益となる。このようなマツピングを実現す
るうえで、呼者の戻りアドレスはスタックから除去され
る。この点についてはフローチャート参照して後に明瞭
にする。このようにして、システム22に対して総括的
エントリ・ポイントへの呼び出しがなされる。これはあ
たかもアプリケーションから来たようになる。たとえば
その呼び出しが直接にアプリケーション16から来たか
のようにシステム22がスタックを判断する。システム
26がこのようなことを実現するために実行する1つの
機能はスタックから戻りアドレスを除去し、これにより
システム22がスタックの戻りアドレスを見るのでなく
システム26からの戻りアドレスを参照するようにする
ことである。このようにして、総括的インターフェース
28と既存エントリ・ポイント36の固有の要求を満た
すインターフェース34との間のマツピングがシステム
22と無関係に行われる(トランスペアレントである)
。以上の点は第5図〜第7図を参照して後に詳述するス
テップによって達成される。
第3図において、高レベル・コンピュータ言語で記述さ
れたデータ・ベース・アプリケーション・プログラム5
4がこの発明とともに用いられる。
このようなプログラム54は2ないしそれ以上の非同期
ユニットとして、あるいは実行のスレッドとして構成す
ることができる。これは概念的にスレッド番号1.(5
8)およびスレッド番号2(56)で示される。プログ
ラム54はデータ・ベース・マネジャ・ソフトウェア・
システム96のサービスを利用する。このシステム96
をアクセスするにはインターフェース・エントリたとえ
ば機能呼び出しを用いる。これはデータ・ベース・イン
ターフェース95により表ねされている。これらエント
リ・ポイントはシステム96と同一の言語=21− ないしアッセンブリ言語で記述されているアプリケーシ
ョンがアクセスするのに適したものである。
システム96により付与され、アプリケーション・プロ
グラム54(およびスレッド56.5.8)によってア
クセスされるサービスは、通常データ・ベース・マネジ
メント・ソフトウェア・システムたとえば上述O3/2
オペレーテイング・システムの拡張板のリリース1.0
と関連するサービスである。
システム96はオペレーティング・システム98のサー
ビスをオペレーティング・システム・インターフェース
・エントリ・ポイント97を通じてアクセスする。オペ
レーティング・システム98によって提供されシステム
96によってアクセスされるサービスはコンピュータ・
オペレーティング・システムに広く関連するサービスで
ある。
インターフェース・エントリ・ポイントは符号60およ
び62で示すように提供きれ、データ・ベース・マネジ
ャ・ソフトウェアを記述するために用いられた言語以外
で、しかもこの発明を実現するのに用いるコンピュータ
・システムで採用されているアッセンブリ言語または機
械語以外の言語で記述きれたデータ・ベース・アプリケ
ーションによって、システム96をアクセスするのに用
いられる。スレッド56および58は実行につき非同期
であるから、双方が総括的APIたとえばAPI62に
対する呼び出し92および94を同時にアクセスするこ
とが可能となる。
ざらに第3図を参照する。符号200は、コンピュータ
・メモリたとえばRAMの一部でAPI60および62
のような総括的APIによってマシーンのプロセッサ5
1のレジスタ50の内容をストアするために保持され共
用される部分を示す。
プロセッサ・レジスタ50すべでの組の内容が任意の時
点でプロセッサの状態として知られ一般に52によって
表わされる。メモリ、より具体的にはレジスタ保持テー
ブル200は、アプリケーションにおいてオペレーティ
ング・システム98により許容されるスレッドの最大数
と等しい多数のプロセッサの状態ないしテーブルのエン
トリをス−23= トアするに足る数のバイトを保持する。メモリ部分20
0については第4図を参照して後に詳述する。符号48
は能動すなわち現に実行しているスレッド用の情報スタ
ックとして用いる。コンピュータの化メモリの一部を示
す。オペレーティング・システム98はそのような実行
中のスレッド用に個々にスタックを要求する。呼び出し
94のような呼び出しにより活動状態になると、API
は矢印70で示すようにプロセッサ51のレジスタ52
の状態を読み出して現行スレッドのスタック48に矢印
46に示すようにストアする。これはAPIがプロセッ
サの状態を変更するまえに行う。
AP I 62は呼び出し100および101を行って
呼び出しスレッドの各々に対して識別子を得る。
すでに触れたように各識別子番号は個々のスレッドにオ
ペレーティング・システム98により固有に割り当てら
れ、またこの識別子番号はオペレーティング・システム
98によって定義された有限集合の要素である。
一旦API62が呼び出し94に対するスレッド識別子
番号を取ると、API62は矢印72に示すようにプロ
セッサの状態44をスタック48から呼び出し94のス
レッド識別子番号に対応するテーブル200のエントリ
に転送する。これはスレッド58から来たものである。
つぎにAPI62はパラメータを確定するように進む。
このアルゴリズムは第5図〜第7図に示される。このの
ちAPI62は呼び出し94Aをデータ・ベース・マネ
ジャ・インターフェース95に対してなす。
AP I 62がこのようなことを行えるのは、API
62がアッセンブリ言語で記述され、したがってインタ
ーフェース95をアクセスできるからである。呼び出し
94Aから制御を受けたとキ、API62は矢印86に
示すように呼び出し94に対する識別子番号に対応する
テーブル200のエントリを読み出し、こののち矢印7
1に示すようにプロセッサ51のレジスタ52の内容を
再ストアする。このステップは制御を呼者58に戻す直
前に行われる。
既述したAPI62によるプロセッサ状態の読み出しお
よびストアならびに呼び出し]00および]0]を行っ
て識別子番号を得るステップはスレッド56による呼び
出し92にも適用でき、また呼び出し94に関連して説
明したステップと同時に起こり得る。スレッドの識別子
番号は固有のものであるから、レジスタ52にプロセッ
サの状態をストアするのに用いるテーブル200のエン
トリもまた固有のものである。このため、アプリケーシ
ョン・プログラム54が多重実行スレッドを用いるかど
うかにかかわらずプロセッサの状態を保持できる。テー
ブル200の同一メモリ空間をAP I 62と共有す
る個々の総括的ポイント60はAPI62に対する呼び
出し94がスレッド58に実行の制御を戻したのちにの
みスレッド58によって呼び出すことができる。このよ
うな制約は、実行スレッドのコードを含むマシーン・イ
ンストラクションを順次的に実行する態様において特有
のものである。同一メモリ空間を共有する個々の総括的
エントリ・ポイント60の当該ステップにより、テーブ
ル200で表わきれるメモリを共有する総括的A、PI
はいずれも同一スレッドから同一時点で1度しか呼び出
されないことが保障される。さらにこねによイ′)任意
の所定の呼び出しに対してヨビ72が裏付されてから再
ストア86が実行されるまでの間テーブル200のエン
トりにストアされるデータの保持が保障される。
第4図において、符号]60によって一般的、模式的に
示されるフォーマットがコンピュータの主メモリの予約
部分に割り当てられ、データ・ベース・マネジメント・
ソフトウェア・システムへの一組の総括的エン1.1ノ
・ポイントへの呼び出しの間、プロセッサ51の状態情
報を一時的にストアするのに用いられる。第3図に関連
する説明はフォーマツl−160の使用についての情報
を提供する。フォーマット160は複数のエントリたと
えば符号152.154.156および158で示され
るエントリに分割される。フォーマット160の1つの
エントリはマシーンの主プロセツサの各々しかも任意の
レジスタの内容をストアするのに用いる空間を表わす。
多数のエントリはポック=27− ス156および158によって示すように有限であり、
マシーンのオペレーティング・システム98によって割
り当てられる。Nはアプリケーション・プロセスあたり
に許容された実行スレッドの上限の数に対応する。エン
トリはスレッドの識別子番号により一対−の関係で特定
され、スレッドの識別子番号をフォーマット160中の
対応するエントリを特定するのに用いられるようになっ
ている。
第5図はこの発明を具現化するソフトウェア・プロダク
トのフローチャートである。フローは第1図の所定のア
プリケーション・プログラム16中のスレッドから続い
てブロック100で開始される。第1図のアルゴリズム
を詳細に説明するまえにそのアルゴリズムにより実行さ
れる機能の概要について説明を行うことは有益である。
第5図のステップはこの発明の総括的APIが、−膜化
されたインターフェースを用い呼び出し時にコンピュー
タ・システムのプロセッサの状態を保持するアプリケー
ション・プログラムから呼び出しを最初に受は取るのに
用いるアルゴリズムを示す。
ず。このアルゴリズムはパラメータを調整して、現行A
PIの異なる言語で記述されている背景の機能の要求に
適合化させる。現行APIはつぎに呼び出され、プロセ
ッサの状態が、アプリケーションに返された情報の結果
とともに再ストアされる。総括的アプリケーション6ま
たとえば第3図に示される第1のアプリケーションは矢
印46で示されるように部分的なプロセッサ状態に現行
スレッド・スタック48にストアする。この状態は第3
図の符号44で示すようにストアされる。プロセッサ状
態をストア(第5図のステップ100)したのち、プロ
セッサのレジスタがステップ102でセット・アップさ
れ、API62が現行スレッド・スタック48をアクセ
スできるようにする。
ステップ104において同様の手続きがデータ・セグメ
ントをセット・アップし、現行API62がレジスタ保
持テーブル200のグローバル・データをアクセスでき
るようにする。これらセット・アップ手続102および
]04に関連して、ここでの実現例ではセグメント・ア
ドレス・モードを用いるプロセッサを採用している。た
だしこの発明はそのように限定されるものではない。各
APIは保持テーブル200中に所定量のメモリを所有
しており、また結合プロセスによって各APIに割り振
られる基底アドレスを有している。「セット・アップ」
ステップは各APIに対応するデータ・セグメント中に
、そのAPIに対応するテーブル200のメモリ空間の
基底アドレスをロードすることを指す。
ステップ106において、オペレーティング・システム
98の情報、より具体的にはオペレーティング・システ
ムが現行プロセスに関する情報たとえば現行呼者ないし
実行中のアプリケーションのスレッドIDをストアする
メモリのブロックをアクセスすることに関するテストを
実行する。このスレッドIDは現行アプリケーションに
より呼び出された第1のAPIにより当初付与きれる必
要がある。ところでAPIたとえば60および62はす
べてパッケージ化されていることがわかる。
各APIは背景のオペレーティング・システム・ソフト
ウェア93によって提供きれる種々のサービスの各々に
対するインターフェースを提供するものと考えることが
できる。ここでは「パッケージ化」とはそのようなAP
 I 60−62のすべてがグローバル・データを所有
し、ざらに重要なことであるが、プロセス情報ブロック
をストアする空間に加えてレジスタ保持テーブルを所有
することを1旨す。このようにしてAP I 60−6
2の1つが現行のプロセス情報ブロックを読み出したと
き、同一パッケージの異なるAPIに対する後続の呼び
出しはブロックを読み出す必要がなく、簡単にアクセス
を行える。ブロックがパッケージ内のすべてのAPIに
よって共有されるメモリ空間内にあることから、ステッ
プ104でグローバル・アドレスを設定するようにして
いるのは、以上の点に由来する。
ざらにステップ106を参照する。すべてのAP l6
O−62はこのテストを実行して当該ブロックが読み出
きれたかどうかを決定する。読み出−31= されていなければ、オペレーティング・システム98を
呼び出して、オペレーティング・システムが当該ブロッ
クを読み出して個々のAPIに属するメモリ空間に転送
するように要求する。そのような情報はブロック中に残
され、オペレーティング・システムのみが更新する。い
つの時点でもスレッドIDは現行のものであるからであ
る。API60−62はブロック自体をストアするので
なく、ブロックのアドレスをストアする。ブロック自体
はオペレーティング・システムに属するからである。こ
の結果、APIが共有するものは、アドレスすなわちオ
ペレーティング・システムのみが更新するブロックへの
ポインタを含むメモリ・ロケーションである。ブロック
内の唯−APIが関連する部分情報は現行スレッドID
である。
ブロック110においてオペレーティング・システムに
呼び出しがなきれてブロックのアドレスが取り出され、
APIがスレッドIDをどこから取るべきかを知ったの
ち、オペレーティング・システムが読み出しを成功裡に
実行したかどうかのテスト112が行われる。ステップ
112でエラーが検出されるとステップ116で戻りコ
ードがセット中アップされ、アプリケーション54にア
プリケーション54からの呼び出しが成功裡に完了しな
かったことを通知し、またシステム・エラーのため制御
が呼者に戻される(ステップ142)。
ステップ112でエラーが検出されないならば、ステッ
プ114が実行きれ、ここでプロセス情報ブロックのア
ドレスがセーブきれてAPIがどのような時点でもオペ
レーティング・システムを呼び出す必要をともなうこと
なくブロックをアクセスできるようになる。ステップ1
08において情報ブロックを用いて現行呼者のスレッド
ID番号を取り出す。とくに重要なことは先に述べたよ
うに、呼び出しているスレッドとの呼者のスレッドID
番号が、スレッドおよびプロセスの間でプロセッサが分
割されるとき、オペレーティング・システム98によっ
て更新きれるということである。
ステップ118において当該スレッドID番号を状態保
持テーブルへのインデックスに用いて当該スレッドID
に対応する領域をアクセスする。状態保持テーブルはす
べてのレジスタないしプロセス情報を保持する領域であ
るエントリを含む。アプリケーション・プログラムが保
持することができるすべての実現可能なスレッドは状態
保持テーブルへの予め割り振られたエントリを有する。
このことは状態保持テーブルが静的な予め割り振られた
テーブルであることを示す。さらにステップ118にお
いて、ステップ108で得られたスレッドID番号を用
いてテーブルにインデックスを付与し、呼び出しを行っ
ているスレッドのID番号に対応するエントリを見出す
。ステップ100でセーブされた部分プロセッサ状態情
報および今の時点で不変な他のプロセッサの状態はすべ
て状態保持テーブルへの当該エントリにセーブされる。
つぎらアルゴリズムはステップ120に進み、ここでは
基本的にスタックから呼者の戻りアドレスを除去する。
このステップの目的は背景の機能ないしAPIに呼び出
しを行えるようにすることである。これはパラメータを
操作する必要がない場合にのみ重要である。場合によっ
ては、API61〜62で実行されるサービスのみが状
態保持であることがあり、この場合パラメータは同一で
あろう。換言すればパラメータをアプリケーションが引
き渡すときにそのパラメータが背景の機能にとって適当
であろう。このような場合、効率の点から、総括的AP
 l6O−62が実行すべきことは、ステップ120に
おいて戻りアドレスを除去することのみである。そして
アルゴリズムはステップコア28に進む。
ステップ122においてストリング・パラメータがある
かどうかのチエツクを行う。この場合、つぎの点に留意
することは有益である。すなわち第5図に示されるアル
ゴリズムはエヌスキューション・アルゴリズムでなくイ
ンプレメンテ−ジョン・アルゴリズムであって、アルゴ
リズムの具体例は各総体的APIに対してコード化でき
、所定のAPIはアルゴリズムのすべての要素を含む必
要がないのである。たとえばステップ122はストリン
グ・パラメータを調整するためにAPIのコードを含む
べきかどうかを決定する。アルゴリズムに対してコーデ
ィングを行う時点でインターフェースがストリング・パ
ラメータを有するかどうかがわかるであろう(ステップ
122)。もし有するのであれば、ステップ124に示
されるようにナルずなわぢゼロ値のバイトをストリング
の終端に加えてコードへの付加がなされ、この結果、統
合パラメータによりストリングの終端が見出される。こ
れは−膜化プロセスの一部である。ナルはストリングの
一部として引き渡されねばならないから、ストリング中
のバイト数すなわちストリングの長さも引きaきれねば
ならない。アルゴリズムをコンピュータ処理に適合化さ
せるために、ステップ1.22−124を、ステップ1
22の判別を行うことなしに任意のストリング長のパラ
メータにゼロ値のバイトを付加するステップに置き換え
ている。
ステップ126においてアルゴリズムは総括的APIに
対するパラメータ・フレーム(パラメータの順序や大き
さによって決定きれる)を識別し、そのスタック・フレ
ームを背景の機能のそれと比較する。同一であればステ
ップ128に進む。背景の機能が同一のスタック・フレ
ームを持っていなければ、ステップ130においてコー
ドが提供されて、総括的APIに渡されたスタック・ク
レームを用いて背景の機能用にその仕様にしたがったス
タック・クレームを生成する。つぎにステップ130は
基本的にパラメータの再マツピングを行う。いずれの場
合も、アルゴリズムはステップ128に進み、背景の機
能を呼び出す。背景の機能から戻るときにはアルゴリズ
ムはステップ132に進み背景機能からの一時的な戻り
コードをスタックに保持する。一般的にはこの戻りコー
ドはレジスタ52の1つに返されてステップ132はス
タックにレジスタをストアするのに等しい。同一のレジ
スタが通常第5図のステップで変更される。
ステップ134においてグローバル・データはもう一部
ステップ104の場合のようにセット・アップされる。
なぜならレジスタが背景の機能により修正されているか
もしれないからである。プアー ロセス情報から呼び出しスレッドのID番号を取り出す
際にステップ136が実行される。これは基本的にステ
ップ108と同じである。アルゴリズムはステップ13
8に進み、ここでステップ136で得た呼び出しスレッ
ドのID番号を用いてステップ118で先にセーブした
プロセッサ状態情報を再度見つける。すなわち当該情報
をプロセッサ・レジスタ52にコピーして戻し、これに
よりプロセッサ状態を、機能が最初に開始された時点の
状態に戻す。ステップ140において、ステップ120
で得た呼者の戻りアドレスをスタック48に再ストアし
なおし、またステップ142で制御を呼者に戻す。
F1発明の詳細 な説明したように、この発明によればソフトウェア・シ
ステムの各機能ごとに総括的なアプリケーション・プロ
グラム・インターフェースを用意し、これによって、種
々の言語で記述されたアプリケーションとソフトウェア
・システムとの間のインターフェースを簡易に行うこと
ができる。
【図面の簡単な説明】 第1図はこの発明の一実施例を示すブロック図、第2図
は第1図例を模式的に示すブロック図、第3図は第1図
例におけるシステム・プロセッサ・レジスタとメモリと
の間のやりとりを説明する図、第4図は第1図例の要部
を示す図、第5図〜第7図は第1図例の動作を説明する
フローチャートである。 10・・・・プログラム・サービス、12・・・・デー
タ・ベース・マネジメント・アプリケーション・プログ
ラム・インターフェース、14・・・・総括的アプリケ
ーション・プログラム・インターフェース、16・・・
・アプリケーション・プログラム、17・・・・状態保
持テーブル、18・・・・オペレーティング・システム
、20・・・・オペレーティング・システム・アプリケ
ーション・プログラム・インターフェース 第1図 竿2図 スレッド111からの呼び出し用の プロセッサ状態 スレッド1112からのll’l”び出し用のプロセッ
サ状態 スレ・ンドII Nからの呼び出し用のプロセッサ状態 第4図

Claims (1)

  1. 【特許請求の範囲】 異なるコンピュータ言語で記述されている複数のアプリ
    ケーション・プログラムをコンピュータ・ソフトウェア
    ・システムにインターフェースする方法において、 上記アプリケーション・プログラムからのプログラム呼
    び出しに応じて対応する総括的アプリケーション・プロ
    グラム・インターフェースを生成するステップと、 上記アプリケーション・プログラムからのプログラム呼
    び出しに応じて対応する総括的アプリケーション・プロ
    グラム・インターフェースから呼び出しを生成させるス
    テップと、 上記総括的アプリケーション・プログラム・インターフ
    ェースからの呼び出しに応じて上記コンピュータ・ソフ
    トウェア・システムの機能を実行するステップとを有す
    ることを特徴とするアプリケーション・プログラム・イ
    ンターフェース方法。
JP1306768A 1988-11-29 1989-11-28 アプリケーシヨン・プログラム・インターフエース方法 Pending JPH02201653A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US277372 1988-11-29
US07/277,372 US5097533A (en) 1988-11-29 1988-11-29 System and method for interfacing computer application programs written in different languages to a software system

Publications (1)

Publication Number Publication Date
JPH02201653A true JPH02201653A (ja) 1990-08-09

Family

ID=23060572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1306768A Pending JPH02201653A (ja) 1988-11-29 1989-11-28 アプリケーシヨン・プログラム・インターフエース方法

Country Status (5)

Country Link
US (1) US5097533A (ja)
EP (1) EP0371941B1 (ja)
JP (1) JPH02201653A (ja)
BR (1) BR8906001A (ja)
DE (1) DE68926775T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005129027A (ja) * 2003-10-23 2005-05-19 Microsoft Corp アプリケーションプログラミングインターフェース(api)の設計

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01277934A (ja) * 1988-04-29 1989-11-08 Nec Corp パラメータリスト参照方法の切換え方式
EP0419064A3 (en) * 1989-09-22 1992-08-05 International Business Machines Corporation Computer system having apparatus for providing pointing device independent support in an operating environment
JP2826857B2 (ja) * 1989-12-13 1998-11-18 株式会社日立製作所 キャッシュ制御方法および制御装置
JPH03229352A (ja) * 1990-02-05 1991-10-11 Hitachi Ltd プログラム変更方法
EP0456249B1 (en) * 1990-05-10 1998-12-09 Hewlett-Packard Company System for integrating application programs in a heterogeneous network enviroment
US5423023A (en) * 1990-06-25 1995-06-06 Prime Computer, Inc. Method and apparatus for providing a user configurable system which integrates and manages a plurality of different task and software tools
US5297291A (en) * 1991-03-07 1994-03-22 Digital Equipment Corporation System for linking program units by binding symbol vector index in the symbol table into calling image to obtain current value of the target image
TW313282U (en) * 1991-03-07 1997-08-11 Digital Equipment Corp Apparatus for automatically interfacing call conventions between two dissimilar program units
US5652869A (en) * 1991-03-07 1997-07-29 Digital Equipment Corporation System for executing and debugging multiple codes in a multi-architecture environment using jacketing means for jacketing the cross-domain calls
US5339421A (en) * 1991-03-22 1994-08-16 International Business Machines Corporation General data stream parser for encoding and decoding data and program interface for same
JPH0750434B2 (ja) * 1991-03-30 1995-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション ユーザ・インターフェースを指定し開発する方法およびコンピュータ・システム
US5452449A (en) * 1991-07-03 1995-09-19 Itt Corporation Interactive multi-module source code analyzer that matches and expands call and entry statement parameters
JPH0831041B2 (ja) * 1991-09-06 1996-03-27 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラム条件処理方法およびコンピュータ・システム
GB9126289D0 (en) * 1991-12-10 1992-02-12 Int Computers Ltd Computer system
JPH07104791B2 (ja) * 1991-12-18 1995-11-13 インターナショナル・ビジネス・マシーンズ・コーポレイション タスク状態構築方法
JPH05233326A (ja) * 1991-12-19 1993-09-10 Internatl Business Mach Corp <Ibm> コンピュータシステムにおいて事象を取り扱う方法及びシステム
US6199117B1 (en) * 1992-03-30 2001-03-06 International Business Machines Corporation Generalized control for starting of tasks (processes and threads)
US5437036A (en) * 1992-09-03 1995-07-25 Microsoft Corporation Text checking application programming interface
US5548745A (en) * 1993-01-19 1996-08-20 Canon Kabushiki Kaisha Method and apparatus for designating context in a windowing environment
US5487158A (en) * 1993-04-06 1996-01-23 International Business Machines Corporation Method and procedure call mechanism for calling 16-bit functions from 32-bit functions
CA2093451C (en) * 1993-04-06 2000-03-14 David M. Mooney Method and mechanism for calling 32-bit functions from 16-bit functions
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
JPH0765540A (ja) * 1993-08-27 1995-03-10 Olympus Optical Co Ltd 光カードの情報管理装置
US5581769A (en) * 1993-12-29 1996-12-03 International Business Machines Corporation Multipurpose program object linkage protocol for upward compatibility among different compilers
EP0667574A3 (en) * 1994-02-14 1997-02-12 Ibm Computer system.
JPH07262025A (ja) * 1994-03-18 1995-10-13 Fujitsu Ltd 実行制御システム
US5754855A (en) * 1994-04-21 1998-05-19 International Business Machines Corporation System and method for managing control flow of computer programs executing in a computer system
AU3372095A (en) * 1994-08-24 1996-03-14 Arcada Software, Inc. Application program interface (api) for a medium changer
US5732270A (en) * 1994-09-15 1998-03-24 Visual Edge Software Limited System and method for providing interoperability among heterogeneous object systems
US5619685A (en) * 1994-11-04 1997-04-08 Ball Corporation Run-time dynamically adaptive computer process for facilitating communication between computer programs
US5623663A (en) * 1994-11-14 1997-04-22 International Business Machines Corp. Converting a windowing operating system messaging interface to application programming interfaces
KR100221374B1 (ko) 1995-01-19 1999-09-15 포만 제프리 엘 이벤트를 효율적으로 처리하는 데이타 처리 시스템 및 그의 방법과 저장장치
US5740469A (en) * 1995-04-24 1998-04-14 Motorola Inc. Apparatus for dynamically reading/writing multiple object file formats through use of object code readers/writers interfacing with generalized object file format interface and applications programmers' interface
US5903753A (en) * 1995-08-18 1999-05-11 International Business Machines Corporation Name space registry with backward compatibility for older applications
JPH10501086A (ja) * 1995-11-02 1998-01-27 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 記憶プレーン編成及びそれに基づく記憶システム
US5905860A (en) * 1996-03-15 1999-05-18 Novell, Inc. Fault tolerant electronic licensing system
US5815703A (en) * 1996-06-28 1998-09-29 Microsoft Corporation Computer-based uniform data interface (UDI) method and system using an application programming interface (API)
US6253257B1 (en) * 1997-07-31 2001-06-26 Bea Systems, Inc. Software Interface for dynamic API mapping
US6038538A (en) * 1997-09-15 2000-03-14 International Business Machines Corporation Generating process models from workflow logs
US6021410A (en) * 1997-09-25 2000-02-01 International Business Machines Corporation Extensible digital library
US6691118B1 (en) * 1997-10-31 2004-02-10 Oracle International Corporation Context management system for modular software architecture
US5950006A (en) * 1997-11-05 1999-09-07 Control Technology Corporation Object-oriented programmable controller
US6321374B1 (en) 1997-11-07 2001-11-20 International Business Machines Corporation Application-independent generator to generate a database transaction manager in heterogeneous information systems
US6256636B1 (en) 1997-11-26 2001-07-03 International Business Machines Corporation Object server for a digital library system
US5963947A (en) * 1998-01-27 1999-10-05 International Business Machines Corporation Technique of dynamically adding functionality from a client to manipulated data at a server
IL123512A0 (en) * 1998-03-02 1999-03-12 Security 7 Software Ltd Method and agent for the protection against hostile resource use access
US6601110B2 (en) * 1998-03-17 2003-07-29 Sun Microsystems, Inc. System and method for translating file-level operations in a non-door-based operating system to door invocations on a door server
US6532472B1 (en) * 1998-09-29 2003-03-11 Apple Computer, Inc. Persistent state database for operating system services
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6826760B1 (en) * 1999-06-16 2004-11-30 Microsoft Corporation Methods of factoring operating system functions, methods of converting operating systems, and related apparatus
US7334235B2 (en) 1999-06-16 2008-02-19 Microsoft Corporation Operating system application programming interfaces and methods of using operating systems
US6725456B1 (en) * 1999-11-29 2004-04-20 Lucent Technologies Inc. Methods and apparatus for ensuring quality of service in an operating system
US6591417B1 (en) * 1999-12-30 2003-07-08 International Business Machines Corporation Method of and system for testing compatibility with an external API upgrade
US7102765B1 (en) * 2000-02-01 2006-09-05 Zoran Corporation Apparatus and method for automated testing of print drivers in a computer system
US6753885B2 (en) 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US20010048448A1 (en) 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US7130261B1 (en) 2000-05-31 2006-10-31 Siemens Communications, Inc. Hierarchical dependability for open distributed environments
US6691302B1 (en) 2000-05-31 2004-02-10 Siemens Information & Communications Networks, Inc. Interfacing a service component to a native API
US7627865B2 (en) * 2000-07-10 2009-12-01 Microsoft Corporation Method and apparatus for accessing instrumentation data from within a managed code environment
US6996809B2 (en) * 2000-07-10 2006-02-07 Microsoft Corporation Method and apparatus for providing instrumentation data to an instrumentation data source from within a managed code environment
US7454746B2 (en) * 2001-07-24 2008-11-18 The Mathworks, Inc. Function call translation
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US7171022B2 (en) * 2001-12-05 2007-01-30 Lockheed Martin Corporation Common method for communicating area information
US7113937B2 (en) 2001-12-18 2006-09-26 International Business Machines Corporation Systems, methods, and computer program products to improve performance of ported applications, such as a database, operating on UNIX system services for the OS/390
US6877045B2 (en) 2001-12-18 2005-04-05 International Business Machines Corporation Systems, methods, and computer program products to schedule I/O access to take advantage of disk parallel access volumes
US6754734B2 (en) 2001-12-18 2004-06-22 International Business Machines Corporation Systems, methods, and computer program products to improve performance of ported applications, such as a database
KR20040099442A (ko) * 2002-04-19 2004-11-26 컴퓨터 어소시에이츠 싱크, 인코포레이티드 운영 체제 옵션 값을 관리하는 시스템 및 방법
US6895409B2 (en) * 2002-06-17 2005-05-17 Adaptik Corporation Method and apparatus for creating an adaptive application
US7363313B2 (en) * 2003-08-07 2008-04-22 International Business Machines Corporation Method, system, and program product for rebasing an application
US8166101B2 (en) * 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US7555497B2 (en) * 2003-08-21 2009-06-30 Microsoft Corporation Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
CA2540935A1 (en) * 2003-10-01 2005-04-14 Cash Systems, Inc. Multi-function cashless gaming atm
US8321506B2 (en) 2003-10-23 2012-11-27 Microsoft Corporation Architecture for an extensible real-time collaboration system
US7721254B2 (en) 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7720948B2 (en) 2003-11-12 2010-05-18 International Business Machines Corporation Method and system of generically specifying packet classification behavior
US7325239B2 (en) * 2003-11-12 2008-01-29 International Business Machines Corporation Method and system of generically managing tables for network processors
US20050160414A1 (en) * 2004-01-21 2005-07-21 Nokia Corporation System and method for dynamically adding features to software applications
US7437741B2 (en) 2004-03-08 2008-10-14 International Business Machines Corporation Method, system, and program for invoking methods between computer languages
US7503052B2 (en) * 2004-04-14 2009-03-10 Microsoft Corporation Asynchronous database API
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US8214754B2 (en) * 2005-04-15 2012-07-03 Microsoft Corporation Registration of applications and complimentary features for interactive user interfaces
US9274974B1 (en) 2005-10-21 2016-03-01 Vmware, Inc. Isolating data within a computer system using private shadow mappings
JP2007304840A (ja) * 2006-05-11 2007-11-22 Matsushita Electric Ind Co Ltd コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム
US8607013B2 (en) 2007-10-30 2013-12-10 Vmware, Inc. Providing VMM access to guest virtual memory
US9740637B2 (en) 2007-10-30 2017-08-22 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8825685B2 (en) 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8943483B2 (en) * 2010-11-11 2015-01-27 International Business Machines Corporation Application programming interface naming using collaborative services
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
WO2013100992A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Context-state management
US8843676B2 (en) 2012-06-27 2014-09-23 International Business Machines Corporation Optimizing an operating system I/O operation that pertains to a specific program and file
US20140101045A1 (en) * 2012-10-09 2014-04-10 Bank Of America Corporation Payment Action Page Queue for a Mobile Device
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US10834109B2 (en) * 2014-12-23 2020-11-10 Mcafee, Llc Determining a reputation for a process
US10579238B2 (en) 2016-05-13 2020-03-03 Sap Se Flexible screen layout across multiple platforms
US10353534B2 (en) 2016-05-13 2019-07-16 Sap Se Overview page in multi application user interface
US9952844B1 (en) * 2016-10-24 2018-04-24 International Business Machines Corporation Executing optimized local entry points and function call sites
US10108406B2 (en) 2016-10-24 2018-10-23 International Business Machines Corporation Linking optimized entry points for local-use-only function pointers
US10108407B2 (en) 2016-10-24 2018-10-23 International Business Machines Corporation Loading optimized local entry points for local-use-only function pointers
US10108404B2 (en) 2016-10-24 2018-10-23 International Business Machines Corporation Compiling optimized entry points for local-use-only function pointers
US10169011B2 (en) 2016-10-24 2019-01-01 International Business Machines Corporation Comparisons in function pointer localization
US10169016B2 (en) 2016-10-24 2019-01-01 International Business Machines Corporation Executing optimized local entry points
US10534593B2 (en) 2016-10-24 2020-01-14 International Business Machines Corporation Optimized entry points and local function call tailoring for function pointers
US10360005B2 (en) * 2016-10-24 2019-07-23 International Business Machines Corporation Local function call tailoring for function pointer calls
CN115794169A (zh) * 2022-12-22 2023-03-14 浪潮通信信息系统有限公司 一种掌上平台微应用管理方法及系统
CN116112577B (zh) * 2023-02-13 2025-05-06 上海零念科技有限公司 基于微控制单元与片上系统的中间通信方法、系统及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE758813A (fr) * 1969-11-28 1971-04-16 Burroughs Corp Structures de programme pour la mise en oeuvre de systemes de traitement d'information, communes a des langages de programme de niveau plus eleve
US4493027A (en) * 1981-05-22 1985-01-08 Data General Corporation Method of performing a call operation in a digital data processing system having microcode call and return operations
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
US4905138A (en) * 1985-10-17 1990-02-27 Westinghouse Electric Corp. Meta-interpreter
US4787035A (en) * 1985-10-17 1988-11-22 Westinghouse Electric Corp. Meta-interpreter
US4961133A (en) * 1987-11-06 1990-10-02 Visystems, Inc. Method for providing a virtual execution environment on a target computer using a virtual software machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005129027A (ja) * 2003-10-23 2005-05-19 Microsoft Corp アプリケーションプログラミングインターフェース(api)の設計

Also Published As

Publication number Publication date
EP0371941A2 (en) 1990-06-06
US5097533A (en) 1992-03-17
EP0371941A3 (en) 1992-09-02
EP0371941B1 (en) 1996-07-03
DE68926775T2 (de) 1997-01-23
BR8906001A (pt) 1990-06-19
DE68926775D1 (de) 1996-08-08

Similar Documents

Publication Publication Date Title
JPH02201653A (ja) アプリケーシヨン・プログラム・インターフエース方法
US5146593A (en) Procedure call interface
US6119145A (en) Multithreaded client application storing a separate context for each transaction thus allowing threads to resume transactions started by other client threads
EP0647902A1 (en) A data processing system
JPH0728676A (ja) 転送ディジタルデータの変換方法および装置
JPH0687222B2 (ja) アプリケーションとデータベース管理システム間の相互通信システム及び方法
JPH1063568A (ja) マルチスレッド環境におけるメモリの割り当て方法及びシステム
JPH0283627A (ja) インタプリタ
US6092079A (en) Apparatus and method for updating an object without affecting the unique identity of the object
US6598037B1 (en) Data table object interface for datastore
US7058656B2 (en) System and method of using extensions in a data structure without interfering with applications unaware of the extensions
EP0474436A2 (en) Method for communications between processors of a multi-processor system
JP2582992B2 (ja) 汎用制御インターフェースを含むデータ処理システム
US6105073A (en) Method for packing/unpacking C operations to/from RPC compatible format using the RPC protocol to operate remotely with an object-oriented repository
JP3019915B2 (ja) 手続き呼出し方法
JPH0656581B2 (ja) オブジェクト指向プログラミング方式
CA2365731C (en) Support for concurrent active sql statements having shared sql context information
JPH0833856B2 (ja) 通番管理方式
JP3177671B2 (ja) 電子交換機のファイル更新におけるアドレス変換方法
JP2663600B2 (ja) 制御表再配置処理方式
JPS62171033A (ja) サブル−チン管理方式
JPH1040118A (ja) クライアント/サーバシステム及びクライアント端末装置
JPS6143743B2 (ja)
Moons et al. Persistence in Open Distributed Systems: The COMET Approach
JPH036753A (ja) ファイル退避方式