JPH064493A - 共用オブジェクトに対するアクセスを選択的に直列化する方法およびオペレーティングシステムの直列化コードを中央化する方法 - Google Patents

共用オブジェクトに対するアクセスを選択的に直列化する方法およびオペレーティングシステムの直列化コードを中央化する方法

Info

Publication number
JPH064493A
JPH064493A JP1631593A JP1631593A JPH064493A JP H064493 A JPH064493 A JP H064493A JP 1631593 A JP1631593 A JP 1631593A JP 1631593 A JP1631593 A JP 1631593A JP H064493 A JPH064493 A JP H064493A
Authority
JP
Japan
Prior art keywords
data
shared
access
data object
serialization
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
JP1631593A
Other languages
English (en)
Inventor
B Brenner Larry
ラリー、バート、ブレナー
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 JPH064493A publication Critical patent/JPH064493A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 多重処理装置システムにおける共用データオ
ブジェクトへのアクセスの直列化を選択的に可能にする
ための方法を提供する。 【構成】 オブジェクトは、多重処理環境において直列
化または制御されたアクセスを要する動作を判定するた
めに分類される。定義された最小単位動作は、許可動作
を実施するための手続き段階の集合を定義するオブジェ
クト定義を生成するために使用される。手続き段階はそ
のオブジェクトタイプのオブジェクトへのアクセスを直
列化するためのロック手段を含む。オブジェクト定義
は、特定のハードウエアプラットフォームのための中央
制御および直列化機構のコードを付与する。定義された
オブジェクトタイプのオブジェクトは、基礎となる直列
化機構を考慮することなく、使用される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、多重処理コンピュータ
システムにおける動作の直列化に関する。さらに詳しく
言えば、本発明は、コンピュータ処理装置のハードウエ
アおよびソフトウエアの構成に応じて選択的に実施され
る直列化動作に関する。
【0002】
【従来の技術および発明が解決しようとする課題】多重
処理コンピュータシステムは、そのそれぞれが命令を同
時に実行または処理できる複数のコンピュータ処理装置
(CPU)を有する。各命令は、外部装置または記憶域
からデータを読み出させたり、データを算術操作させた
り、データを記憶域または外部装置へ書き込ませたりす
ることができる。
【0003】共用記憶域多重処理装置は、共通の記憶資
源を共用する。図1に示すように、処理装置110,1
12,114および116は、すべて、記憶域120に
アクセスすることができる。共用記憶域アクセスは、複
数の処理装置が同一の記憶場所にアクセスし、変更する
ことができ、その記憶場所のデータの改変を生じるとい
う問題を呈する。例えば、データ値Nが記憶域120の
ある記憶場所122に記憶され得る。処理装置1 11
0は、Nを増分するためにその記憶場所にアクセスし、
その値N+1を記憶場所122に記憶し戻すことができ
る。処理装置2112も同様の動作を実行することがで
き、処理装置1がその値Nを読み出した後であるが、ま
だ増分した値N+1を記憶場所122に記憶し戻してい
ない時点で、記憶場所122にアクセスし得る。その結
果、処理装置1は記憶場所122に増分した値N+1を
記憶し戻し、その後さらに、処理装置2がその値を値N
+1で上書きすることになる。その予想できる意図は、
処理装置2に増分させ、値N+2を記憶させることであ
った(例えば、特定のユーザがプロセスを実行した度数
を数えている場合)。
【0004】この問題の解決策は、直列化として公知で
ある。直列化は、一度に多くて1つの処理装置によって
保持され得る、ソフトウエアまたはハードウエアによる
「ロック」として一般に実施される。ロックは、それが
解放された時にはある値を有し、取得された時には別の
値を有する、既知の記憶場所として実施することができ
る。上述の動作は、各処理装置に変数Nを増分する前に
指定のロックを取得するように求めることによって、ロ
ックを用いて直列化できよう。この場合、処理装置2が
そのロックを取得しようとした場合、処理装置2はその
ロックが保持されていることを知り、処理装置1が自己
の処理を完了しそのロックを解除するまで待機すること
になる。
【0005】割り込みを伴わずに生起しなければならな
い単純な動作は、最小単位動作と称する。最小単位動作
は、ハードウエアまたはソフトウエアにおいて実施する
ことができる。上述の説明は、変数Nの最小単位動作を
実施したことになろう。最小単位増分または最小単位更
新は、さらに広範な直列化問題の部分集合である。
【0006】直列化機構は、通常、ハードウエアに特定
的なものである。これは、所有権主張可能ソフトウエア
およびオペレーティングシステムが所有権主張可能な各
プラットフォームのために書かれたものである場合には
問題ではない。UNIXオペレーティングシステム(U
NIXはUnix Systems Labolato
ries, Inc.の商標である)、AIXオペレー
ティングシステム(AIXはIBM Internat
ional Business Machines C
orp.の商標である)またはOSF/1(OSF/1
はOpen Software Foundatio
n, Inc.の商標である)といった「オープン」シ
ステムの使用の増加は、ハードウエアプラットフォーム
間の移植性を可能にする、より柔軟な実施法を必要とす
る。
【0007】ソフトウエア直列化は、ロックの取得、処
理および解除の明示的なソフトウエア符号化を要する。
ハードウエアの相違は、ソフトウエア直列化コードの各
例がその特定の基本ハードウエアを使用するために書き
直されなければならない必要があろう。あるハードウエ
アプラットフォームは、ある集合の動作の直列化を必要
とするのに対し、他のハードウエアは異なる集合の動作
の直列化を必要とするかもしれない。これは、ソフトウ
エア効率の技術的課題を生じる。書き直しの影響を受け
たコードセグメントは、プログラマおよびコンピュータ
時間の点からコスト高となる。必要ではない場合に直列
化コードを保持することは、システム性能に不利を招
く。従って、その技術課題は、コンピュータハードウエ
ア資源を効率的に使用し、かつ、完全な書き直しを要さ
ずに他のハードウエアプラットフォームに適応できる、
直列化機構を付与することである。
【0008】コンピュータ動作の選択的直列化を可能に
するシステムが必要とされている。このシステムはま
た、そのソフトウエアの直列化部分を書き直さずに、各
種ハードウエアプラットフォームへの適応も可能にしな
ければならない。
【0009】
【課題を解決するための手段】本発明は、共用データオ
ブジェクトへのアクセスの選択的直列化を導入すること
によって上述の課題を解決する。各データオブジェクト
は、データ型に従って分類されている。そのデータ型で
の許可動作が決定され、それらの動作の部分集合が最小
単位動作であると指定される。最小単位データ型オブジ
ェクトの定義が、そのデータオブジェクトの型について
生成される。この最小単位データオブジェクト定義は、
必要な場合、最小単位動作であると指定されたそれらの
動作のための直列化機構を実施する。ただ一つのオブジ
ェクト定義だけが要求され、そのオブジェクト定義を、
その最小単位オブジェクトを参照するソフトウエアコー
ドのいずれをも変更することなくハードウエアの相違を
考慮するように修正させる。
【0010】本発明は、ソフトウエア動作の選択的直列
化を可能にするための効率的な機構を付与するという技
術的課題を解決する。この機構は、直列化が、ハードウ
エア特定直列化オプションを利用するように効率的に調
整されるようにする。
【0011】従って、本発明の第1の目的は、共用デー
タオブジェクトへのアクセスの直列化を選択的に可能に
するための方法を提供することである。
【0012】本発明の第2の目的は、ハードウエアの相
違を考慮するために容易に修正できる直列化機構を提供
することである。
【0013】本発明の第3の目的は、動作の直列化を、
最小単位データ型のオブジェクト定義として実施される
ことを可能にすることである。
【0014】上述その他の目的は、添付図面による好ま
しい実施例の詳細な説明によってさらに明白となるであ
ろう。
【0015】
【実施例】本発明の好ましい実施例は、図1において全
体として100によって図示されているような多重処理
コンピュータシステムで動作する。処理装置110,1
12,114および116はすべて、共用記憶域120
にアクセスすることができる。各処理装置は、他の機能
の中でも特に、共用記憶域120の記憶場所122に対
するアクセスを付与する命令の流れを実行している。本
発明の好ましい実施例は、共用記憶域アクセスに関して
説明するが、このアクセスが他のいずれの共用アクセス
についても適用できることは、当業者は理解されるであ
ろう。他の共用資源は、共用入出力装置または他の共用
周辺装置を含むことができよう。
【0016】共用記憶域120へのアクセスの直列化
は、その資源についてロックを確立することによって実
現される。共用記憶域へのアクセスは、対立するアクセ
スがデータの改変を生じ得る場合にのみ直列化されなけ
ればならない。直列化が要求される場合、それらの動作
は、それらが、別の処理装置によって、または、同一の
処理装置の割り込みハンドラによってデータに対するい
かなる介入アクセスも伴わずに完了まで実行されなけれ
ばならないものであることを意味する、「最小単位動
作」と称される。
【0017】実例として、直列化は、多重処理環境にお
ける単純な整数カウンタの最小単位更新に要求されるで
あろう。以下の例は、可変「カウンタ」への直列化アク
セスを行うためのロックを実施するプログラムコードの
例をC++言語で記述している。
【0018】
【表1】 この例に記載したコードは、そのカウンタへの直列化ア
クセスが望まれる場合は必ず挿入されなければならな
い。これは、困難かつ誤りを生じやすいアクティビティ
である。
【0019】選択的直列化のプロセスを、図2にさらに
一般的に示す。この動作の解析は段階202に始まる。
まず、その動作が最小単位動作であるかを判定するため
に、段階204で検査が行われなければならない。最小
単位動作が検出された場合は、段階206でロックが取
得され、段階208でその動作が実行され、段階210
でそのロックが解除される。その動作が最小単位動作で
はない場合、その動作は段階212でロックを用いずに
実行される。いずれの場合も、プロセスは段階214で
終了する。
【0020】本発明は、所定のプログラム言語がそのメ
ンバオブジェクトの基本データ型で支援するのと同じ動
作をそのメンバオブジェクトで支援する新しいオブジェ
クト指向データクラスを定義することによって、選択的
直列化を実施する。このクラスは、基礎となるデータ型
のオブジェクトで定義されたそれらの動作の保全性を保
証するために必要ないずれかの直列化オブジェクトとと
もに元のデータ型の例を含むとして定義される。あるオ
ブジェクトデータクラスは、データおよび、そのデータ
にアクセスすることができる演算子を定義する。従っ
て、演算子定義は直列化を導入することができる。後述
の通り、新しいデータクラス「最小単位整数」は、直列
化が付加されたことを除いて、「整数」データ型と同様
に作用することになる。
【0021】新しいクラスの使用は、元のデータ型の演
算子に、プログラマにとって透過であるその新しいクラ
スによって処理された直列化により、各自の元の概念機
能を実行させることができる。この透過性は、プログラ
マに、その直列化機構の物理的詳細に関心を払うことな
く「MPセーフ」データ型を使用させることができる。
(「MPセーフ」は、そのデータ型の例の使用または更
新が、多重処理(MP)環境の他の処理装置による改変
について関心を払わずにそのデータ型が生じ得ることを
意味する。)例えば、複数の処理装置によってアクセス
および更新できる「MPセーフ」カウンタを実施するこ
とが望ましい。そのようなカウンタは、「整数」データ
型の特性にもとづく特性を備えた新しいデータ型であ
る、「最小単位整数」として実施できる。C++プログ
ラム言語では、MPセーフカウンタは、以下のように定
義され使用されよう。
【0022】atomic _int counter; counter++; この方式は、2つの利点をもたらす。
【0023】1.最小単位整数を参照するコードが通常
の整数を参照するコードの外観を保持する。
【0024】2.ハードウエアプラットフォーム特定実
施例の詳細はすべて中央の位置で符号化されるので(オ
ブジェクト定義)、最小単位参照の詳細が要求される各
所のシステムに関する条件論理を伝播する必要をなく
す。
【0025】特定のシステムのための選択的直列化の実
施例は、段階302で始まる図3に示すプロセスに従っ
て動作する。そのシステムの許可された動作が、いずれ
が最小単位動作として定義されるべきかを判定するため
に、段階304で検査される。次に、目標ハードウエア
プラットフォームが段階306で定義される。その後、
段階304で識別された動作の最小単位データ型を定義
するために、オブジェクトクラスが段階308で確立さ
れる。最後に、段階310でその最小単位動作が段階3
06で識別されたハードウエアプラットフォームによる
要求に従って実施される。それによりプロセスは段階3
12で終了する。
【0026】最小単位動作として指定が考慮される動作
には、以下が含まれる。 1.構築−通常の整数にもとづく最小単位整数などのデ
ータ型の例の空間割り当ておよび選択的初期化。この動
作は通常、直列化を必要としない。 2.変換−データ型の例の値を「取り出し」、それを式
に使用可能にする。この動作はいくつかのプラットフォ
ームで直列化を必要とすることもある。 3.代入−通常の(データ型)の値を新しいデータ型に
「格納する」。この動作はいくつかのプラットフォーム
で直列化を必要とすることもある。 4.整数による増分(a+=i)−データ例に整数値を
最小単位的に加算する。この動作は好ましい実施例にお
いて直列化を要する。この例では、直列化は抽象ロック
を用いて実施されるが、これ(およびその他の増分演算
子)は、比較・スワップ動作などのプラットフォーム特
定機能を利用することができよう。(付加的な定義が、
−=,*=,/=,%=,<<=,>>=,&=,|=
および^=(排他的論理和カラット)といった他の合成
代入演算子について、付与することができよう。) 5.1によるプレフィックス増分(++a)−データ例
に1を最小単位的に加算する。この動作は、好ましい実
施例において直列化を要する。 6.1によるポストフィックス増分(a++)−原始値
をフェッチした後、データ例に1を最小単位的に加算す
る。この動作は好ましい実施例において直列化を要す
る。 7.通常データ値を最小単位データ型値で増分する−デ
ータ型からの「フェッチ」の別形式。この動作は、一部
のプラットフォームでは直列化を要することもある。
(完全性のために、必要に応じて、符号なし、短縮、符
号なし短縮などについて類似の定義が付加されよう。) 8.データ値印刷−(データ例を)表示のために変換す
る。この動作は通常、いかなる直列化も必要としない
が、ある種のプラットフォームでは直列化を要する可能
性がある。
【0027】以下の表は、上述と同様、最小単位整数の
部分集合を実施するコードをC++プログラム言語で提
示している。加算動作だけが定義されており、最小単位
整数による通常の符号付き整数の増分だけが示されてい
る。このコードは、本発明を実施する際に使用されるコ
ードを完全に定義するようには意図されておらず、例示
のためだけに示されている。直列化のための「ロック」
クラスは、このソフトウエアシステムの各所で定義され
よう。
【0028】
【表2】
【0029】
【表3】 上述のプロセスは、単純参照を取り扱っている。複合参
照も同様にして取り扱えるであろう。ロックおよびアン
ロックメンバ機能は、データオブジェクトに対して複合
参照を行う際にロック制御の全範囲を可能にするクラス
に追加されるであろう。この形式のクラスは、その最小
単位増分の実施に明示的な内部ロックを必要とするであ
ろうが、比較・スワップ命令の使用といったいかなるプ
ラットフォーム特定最適化も安全ではないであろう。こ
うしたより強力なクラスは、上述の単純参照の場合に使
用可能な性能上の利点を提供しないであろう。複合参照
は、以下の表4に示すコードのようなコードによって実
施されよう。
【0030】
【表4】 上述に定義されたような直列化されたデータ型は、段階
402に始まり、図4に示すように使用される。段階4
04で、ソフトウエアにおいて最小単位データ型が定義
される。そのデータ型の使用ごとに、段階408で、そ
の最小単位データ型定義内の演算子定義について検査が
行われる。演算子定義が見つかった場合、それは段階4
10で処理される。見つからなければ、データ型に関係
する演算子が段階412で実行される。いずれの場合
も、処理は段階414で終了する。
【0031】以上の説明から、本発明の好ましい実施例
において、その真の精神を逸脱することなく各種修正お
よび変更がなし得ることが理解されるであろう。その説
明は例示目的だけのものであり、限定的な意味で解釈さ
れるべきではないものと意図する。本発明の範囲は、添
付特許請求の範囲の言語によってのみ限定されなければ
ならない。
【0032】
【発明の効果】以上の説明によって明らかなように、本
発明によれば、共用データオブジェクトへのアクセスの
直列化を選択的に可能にするための方法を提供すること
ができる。
【図面の簡単な説明】
【図1】本発明の方法が実施される共用記憶域多重処理
システムのブロック図。
【図2】最小単位動作の選択的直列化の基本プロセスを
示す流れ図。
【図3】選択的直列化を実施するための本発明の段階を
示す流れ図。
【図4】本発明の新規なプロセスの動作を示す流れ図。
【符号の説明】
100 多重処理システム 110,112,114,116 処理装置 120 共用記憶域

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】それぞれが共用オブジェクトにアクセスで
    きる複数の処理装置を有するコンピュータシステムにお
    いて複数の共用オブジェクトの一つに対するアクセスを
    選択的に直列化する方法であり、前記処理装置は前記オ
    ブジェクトで実行され得る動作の定義された集合を有す
    るものである方法であって、 オブジェクトタイプを割り当てるために前記オブジェク
    トを分類する段階と、 前記割り当てられたデータ型での許可動作を判定する段
    階であり、前記許可動作は動作の前記定義された集合の
    部分集合である段階と、 前記許可動作の部分集合を前記割り当てられたオブジェ
    クトタイプのオブジェクトへの直列化されたアクセスを
    付与する最小単位動作として定義する段階と、 前記割り当てられたオブジェクトタイプについてオブジ
    ェクトタイプのオブジェクト定義を生成する段階であ
    り、前記オブジェクト定義は前記許可動作を実施するた
    めの手続き段階の集合を定義するものであり、前記最小
    単位動作手続き段階は前記割り当てられたオブジェクト
    タイプの前記オブジェクトへのアクセスを直列化するた
    めのロック手段を含むものである段階と、 を含むことを特徴とする共用オブジェクトに対するアク
    セスを選択的に直列化する方法。
  2. 【請求項2】請求項1記載の方法であって、前記ロック
    手段が、処理装置によって保持されている際には第1の
    値を含み、解放されている際には第2の値を含む共用デ
    ータオブジェクトであり、また、前記手続き段階が、 アクセス側処理装置のロックを取得するために前記共用
    データオブジェクトを修正する段階と、 要求された動作を実行する段階と、 前記ロックを解除し、前記データオブジェクトを取得の
    ために解放するために前記共用データオブジェクトを修
    正する段階と、 を含むことを特徴とする方法。
  3. 【請求項3】請求項2記載の方法であって、前記オブジ
    ェクトがデータオブジェクトであることを特徴とする方
    法。
  4. 【請求項4】請求項3記載の方法であって、前記オブジ
    ェクトタイプが最小単位整数であることを特徴とする方
    法。
  5. 【請求項5】複数の処理装置を有するコンピュータシス
    テムのオペレーティングシステムのための直列化コード
    を中央化する方法であって、前記コンピュータシステム
    は共用記憶域を有するものであり、そのプロセスが、 複数のデータ動作を有する1つ以上の最小単位データを
    定義する段階であり、前記データオブジェクトは前記デ
    ータ動作の1つ以上の直列化を必要とするものである段
    階と、 前記動作の1つ以上を最小単位動作として指定すること
    を含む前記データ動作のそれぞれについて手続きを定義
    する段階と、 前記最小単位データオブジェクトの使用ごとに最小単位
    データオブジェクト例を生成する段階と、 前記最小単位データオブジェクトで実行される動作を阻
    止し、それらを前記定義されたデータ動作によって処理
    する段階と、 前記定義されたデータ動作が直列化を要するかどうかを
    判定するために検査し、必要とする場合に、 前記データオブジェクトへのアクセスを制御する共用記
    憶域ロックを確立する段階と、 前記データオブジェクトを修正する前に取得された状態
    を指示するように前記ロックを修正する段階と、 前記データオブジェクトの修正が完了した後に、解放状
    態を指示するように前記ロックを修正する段階とを実行
    する段階と、 を含むことを特徴とするオペレーティングシステムの直
    列化コードを中央化する方法。
  6. 【請求項6】請求項5記載の方法であって、前記データ
    オブジェクトが整数データオブジェクトであることを特
    徴とする方法。
  7. 【請求項7】請求項5記載の方法であって、前記データ
    オブジェクトがオブジェクト指向プログラム言語を用い
    て定義されることを特徴とする方法。
JP1631593A 1992-03-31 1993-02-03 共用オブジェクトに対するアクセスを選択的に直列化する方法およびオペレーティングシステムの直列化コードを中央化する方法 Pending JPH064493A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US86141392A 1992-03-31 1992-03-31
US861413 1997-05-21

Publications (1)

Publication Number Publication Date
JPH064493A true JPH064493A (ja) 1994-01-14

Family

ID=25335722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1631593A Pending JPH064493A (ja) 1992-03-31 1993-02-03 共用オブジェクトに対するアクセスを選択的に直列化する方法およびオペレーティングシステムの直列化コードを中央化する方法

Country Status (1)

Country Link
JP (1) JPH064493A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6534775B1 (en) * 2000-09-01 2003-03-18 Axcelis Technologies, Inc. Electrostatic trap for particles entrained in an ion beam

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6534775B1 (en) * 2000-09-01 2003-03-18 Axcelis Technologies, Inc. Electrostatic trap for particles entrained in an ion beam

Similar Documents

Publication Publication Date Title
Halstead Jr Multilisp: A language for concurrent symbolic computation
US5481706A (en) System and method for creating thread-safe shared libraries
US5253344A (en) Method and apparatus for dynamically changing the configuration of a logically partitioned data processing system
US7873794B2 (en) Mechanism that provides efficient multi-word load atomicity
Russo An object-oriented operating system
US6754859B2 (en) Computer processor read/alter/rewrite optimization cache invalidate signals
US5794044A (en) System and method for runtime optimization of private variable function calls in a secure interpreter
JPH0827774B2 (ja) 修正可能な機能をサーバ上で実行する方法
WO2000023892A1 (en) System and method for synchronizing access to shared variables
JPS5911943B2 (ja) デ−タ処理装置の為のトラツプ機構
JPH1115793A (ja) 資源の保全性を保護する方法
US10318261B2 (en) Execution of complex recursive algorithms
US20100100688A1 (en) Low-level conditional synchronization support
CA3166321A1 (en) Lock-free reading of unitary value sets
WO2017127180A1 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
US10496433B2 (en) Modification of context saving functions
Hillebrand Address spaces and virtual memory: specification, implementation, and correctness
JPH064493A (ja) 共用オブジェクトに対するアクセスを選択的に直列化する方法およびオペレーティングシステムの直列化コードを中央化する方法
US11960922B2 (en) System, apparatus and method for user space object coherency in a processor
Spear et al. Alert-on-update: a communication aid for shared memory multiprocessors
US11972261B2 (en) Hardware device for enforcing atomicity for memory operations
Namashivayam et al. Openshmem as a portable communication layer for pgas models: A case study with coarray fortran
US9477696B2 (en) Serializing resource utilization using hardware built-in functions
US20240086260A1 (en) Method and apparatus for managing concurrent access to a shared resource using patchpointing
Zentner et al. Multithreading in. Net and Java: A Reality Check.