JPH0318935A - データリストに対するアクセスの直列化方式 - Google Patents

データリストに対するアクセスの直列化方式

Info

Publication number
JPH0318935A
JPH0318935A JP1153509A JP15350989A JPH0318935A JP H0318935 A JPH0318935 A JP H0318935A JP 1153509 A JP1153509 A JP 1153509A JP 15350989 A JP15350989 A JP 15350989A JP H0318935 A JPH0318935 A JP H0318935A
Authority
JP
Japan
Prior art keywords
lock
list
shared
exclusive
instruction
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
JP1153509A
Other languages
English (en)
Inventor
Atsushi Nitta
淳 新田
Shigeru Yoneda
茂 米田
Akiji Yamamoto
山本 章治
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP1153509A priority Critical patent/JPH0318935A/ja
Priority to US07/537,908 priority patent/US5287521A/en
Publication of JPH0318935A publication Critical patent/JPH0318935A/ja
Pending legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14—Handling requests for interconnection or transfer
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements 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/46—Multiprogramming arrangements
    • G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526—Mutual exclusion algorithms
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00—Indexing scheme relating to G06F9/00
    • G06F2209/52—Indexing scheme relating to G06F9/52
    • G06F2209/521—Atomic
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00—Indexing scheme relating to G06F9/00
    • G06F2209/52—Indexing scheme relating to G06F9/52
    • G06F2209/523—Mode
    • Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00—Data processing: database and file management or data structures
    • Y10S707/99931—Database or file accessing
    • Y10S707/99938—Concurrency, e.g. lock management in shared database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

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

Description

【発明の詳細な説明】 【産業上の利用分野] 本発明は、データリストに対するアクセスの直列化方式
、すなわち、電子計算機上のマルチプロセス、マルチプ
ログラミング環境において、並行処理を行うプロセス間
でデータリストを共有するためにアクセスを直列化する
方式に関し、特に、複数の命令プロセッサが主記憶装置
を共有するような密結合マルチプロセッサ環境に好適な
、共有データリストに対するアクセスの直列化方式に関
する。 〔従来の技術〕 電子計算機上のマルチプロセス、マルチプログラミング
環境においては、多数のプロセスが並行して動作するこ
とが可能である。なお、本明細書においては、「プロセ
ス」とは、オペレーティングシステムがCPUを割当て
るための仕事の単位を意味するものとする。一般には、
屡々、同じ意味で「タスク」という用語も用いられる。 プロセスは、その動作のために、cpu、メモリ、l1
0(入出力装置)等の各種資源を必要とするが、これら
の資源は複数プロセスによって共有されるものであるた
め、資源に対するアクセスにおいての競合が、屡々、生
ずる。 プログラム中では、一般に各種の資源は主記憶(仮想記
憶)装置上のデータブロックとして表現されるため、資
源に対するアクセスの競合は、これらデータブロックの
リスト(データリスト)に対するアクセスの競合として
具体化される。データリストに対するアクセスの要素的
操作は、リスト要素の付加・リスト要素の検索・リスト
要素からの削除から成り、一般の操作は上記要素的操作
の系列によって実現される。オペレーティングシステム
は、このようなデータリストに対するアクセスを直列化
するための機構を提供する必要がある。 例えば、S 、E 0Madnick他による“Ope
ratingS yste@s”(McGraw−Hi
l1社、1974年)の4.5章に示されている如く、
データリストに対するアクセスを直列化するための典型
的な機構は、〔ロック」および「アンロック」と呼ばれ
る命令系列によって実現される。この機構においては、
ロックバイトもしくはロックワードと呼ばれる状態変数
が設けられ、対応するデータリストが使用中であるかど
うかを表示する。 ロック動作においては、ロック要求プロセスは上記状態
変数を調べ、もし、使用中でなければ状態を使用中に変
更する。もし、使用中であれば、使用中でなくなるまで
待つ、アンロック動作においては、上記状態変数を使用
中から非使用中に変更し、もし、必要であれば、ロック
待ちとなっている他プロセスにロック解放を連絡する。 この方式においては、ロックを確保しているプロセスは
、データリストに対して排他的な使用権を有し、他のプ
ロセスは、ロック保有プロセスがアンロックを行うまで
、データリストにアクセスすることができない。この間
、ロック待ちプロセスは、実行を中断してサスペンド状
態となるか、もしくは、繰り返し状態変数を調べる、い
わゆるスピン状態に入るが、いずれにせよ、当該プロセ
スによるデータ処理は一時中断される。 この方式においては、上記状態変数を参照/更新するた
めに、変数値の「読取り〜比較−変更−書き込み」の動
作を不可分の一動作として実行する。 リード・モディファイ・ライト型命令と呼ばれる機械命
令を使用する。これは、あるプロセスが、状態変数が使
用中でないことを調べてから状態変数を使用中に変更す
る処理の間に、他プロセスが同じ状態変数を書き換えて
しまうことを防ぐための機構である。例えば、HITA
CM シリーズ処理装置においてはT S (Test
 and 5et)命令。 CS (Compare and Swap)命令、 
CD S (CompareDouble and S
wap)命令が、これに相当する。 上記[ロック/アンロック」機構の改良として、ロック
に複数のモードを持たせる方式がある。この方式におい
ては、共有ロックと排他ロックの二つのモードを設け、
共有ロックを確保したプロセスは、データリストの参照
動作だけを行い、排池ロック炙確保したプロセスは、デ
ータリストの参照および更新動作を行う、複数のプロセ
スが同時に参照ロックを確保することは可能であるが、
参照ロックと排他ロックおよび排他ロック同志は、背反
的である。この方式は、AiJ述のデータリストの要素
的操作のうち、複数の検索処理が競合した場合に、並行
して同時に実行できる如く構成されている点で、前述の
単純な[ロック/アンロックJ方式より優れている。し
かし、それ以外の処理の競合においては、逐次的な実行
しか許されない。 これに対して、特開昭62−92061号公報には、デ
ータリストに対する付加、検索、削除操作をすべて並行
処理可能とする方式が示されている。この方式において
は、不連続なワードを含む状態変数が設けられ、データ
リストの要素的操作は、並行動作可能な開始操作と、逐
次的にしか実行できない終了操作に分解される。 プロセスは、状態変数を変更し、データリストに関する
開始操作を実行する。この場合、他のプロセスが同時に
並行して開始操作を行っていてもよい。プロセスは、他
に競合するプロセスが存在しなければ、終了操作を実行
するが、もし、競合するプロセスが存在する場合は、終
了操作を棚上げして操作を終了してしまう。その後、競
合していたプロセスのいずれかが、この棚上げされた操
作を引き取って完了させる。 この機構は、「義務の伝達」と呼ばれ、上記状態変数の
部分的変更によって制御される。データリストの操作に
即して言えば、リスト要素の決められた一端への付加お
よび任意のリスト要素の検索については、「義務の伝達
」は不要である。リスト要素の削除に関しては、リスト
要素に無効フラグをセットする論理削除操作と、実際に
要素をポインタチェーンから外して解放する物理削除操
作とに、操作が分割され、後者が[義務の伝達」の対象
となる。ここで、「義務の伝達」は、データリストを表
現するポインタチェーンとは別に設けられた削除対象要
素をつなぐポインタチェーンへの要素の付加によって行
われる。 〔発明が解決しようとする課題〕 前述の単純なロック方式では、ロック確保要求の競合が
発生した場合に、ロックを確保できたただ一つのプロセ
スを除いては、プロセスが中断されてしまう。これは、
複数の命令プロセッサが主記憶装置を共有する如き、い
わゆる密結合マルチプロセッサ環境においては、無視で
きない性能の低下を惹きおこす、共有ロックと排他ロッ
クの二モードのロックを設けることによって、プロセス
の中断を伴なう如きロックの競合確率は幾分かは小さく
なるが、それでもまだ充分ではない。 「義務の伝達」機構を使用すれば、プロセスが中断され
ることなく、データリストの参照/更新を行うことが可
能であるが、この方式は、適用対象がある程度限定され
る。すなわち、複数プロセスにより並行動作可能な開始
処理と、逐次的に処理され、かつ、−旦、棚上げされた
後に、他のプロセスによって処理されることが可能な終
了処理にうまく分割できるような処理に適用が限られる
。 従って、例えば、リスト要素の削除要求を行ったその時
点で、要素のポインタチェーンからの取外しが完了して
いなければならないような場合には、この方式は使えな
い。データリストから削除した要素を、そのプロセスで
続いて使用するような処理が、このような場合に相当す
る。また、この方式では、並行処理度を上げるための代
償として、個々の要素処理自体のオーバヘッドは、単純
なロック方式に比べて増加している。そのため、リスト
中の要素を一括して大量かつ複雑に処理しなければなら
ないような場合には、かえって全体としての処理能力が
低下することがあり得る。このような場合には、単純に
ロックを確保して一括処理を行う方が、処理の自由度が
高く、また、オーバヘッドも抑え易い。 本発明は上記事情に鑑みてなされたもので、その目的と
するところは、従来の技術における上述の如き問題を解
消し、単純で、処理の自由度が高く、かつ、競合発生率
が充分に低いような、改良されたロック方式を提供する
こと、すなわち、単純なロック方式と同じ程度に適用範
囲が広く、同時に、「義務の伝達」方式と同じ程度に並
行処理度が高いような、データリストに対するアクセス
の直列化方式を提供することにある。 (課題を解決するための手段) 本発明の上記目的は、並行処理を行うプロセス間での共
有データリストに対するアクセスの直列化方式において
、排他モード/共有モードのニモードのロックを設け、
共有ロックを解放する場合に、もしその解放の結果ロッ
クを確保しているプロセスがなくなるのであれば、共有
ロックを解放すると同時に排他ロックを確保することを
特徴とするデータリストに対するアクセスの直列化方式
によって達成される。 より具体的には、排他ロックフラグと共有ロックカウン
タを含むロックエリアを設け、排他フラグのセット/リ
セットによって排他ロックの確保/解放を表現し、共有
ロックカウンタの加算/減算によって共有ロックの確保
/解放を表現するようにし、共有ロックカウンタの値を
減じたときにその結果がOであれば、排他ロックフラグ
をセットする動作を不可分の一動作として実行するもの
である。 (作用〕 データリスト処理の要素的操作のうち、リスト要素の付
加、検索、論理削除は、複数プロセスで並行して処理可
能であるが、物理削除はただ一つのプロセスによって排
他的に処理されなければならない。 本発明に係るデータリストに対するアクセスの直列化方
式においては、上述の、リスト要素の付加、検索、論理
削除を共有ロックを確保して行うため、これらの操作は
複数プロセスによって同時に実行され得る。一方、物理
削除操作は、付加。 検索、論理削除操作のために確保した共有ロックを解放
する時点で、他に競合するプロセスがないことを確認し
、排他ロックを確保してから行う。 もし、競合するプロセスが存在するならば、物理削除操
作を実行しないで、単に共有ロックを解放するだけで、
次の処理に移る。 論理的には、リストから削除されてはいるが、物理的に
は残っている、すなわち、削除フラグはセットされてい
るが、ポインタチェーンにつながれているリスト要素が
残ることになるが、このリスト要素は、遅かれ早かれ物
理削除操作を実行するプロセスによってポインタチェー
ンから外される。言い換えれば、複数のプロセスが同時
にデータリストにアクセスを行っている場合、最後にア
クセスを完了して共有ロックを解放するただ一つのプロ
セスが物理削除操作をまとめて行うことになる。 この方式によれば、物理削除を行うために必要な排他ロ
ックを確保するためにロック待ちが発生することがない
。この方式によってロック待ちが発生するのは、排他ロ
ックを確保して物理削除操作を行っている間に、データ
リストにアクセスしようとするプロセスが現われた場合
だけであり、その確率は、単純なロック方式においてロ
ック待ちが発生する確率に比べて、十分に小さいもので
ある。なお、リスト全体を一括して更新するような処理
、および、リスト要素の論理削除と物理削除が分離不可
能なような処理に関しては、まず、排他ロックを確保し
てから、処理を実行すればよい。この場合、ロック待ち
が発生する確率は、単純なロック方式と同程度である。 上述の如く、本方式は、単純なロック方式の自然な拡張
になっており、従来、単純なロック方式を採用していた
プログラムが、変更なしに動作できる。これは、本ロッ
ク方式における排他フラグや共有ロックカウンタは、単
純なロック方式におけるそれと完全に同じ意味を持つた
めである。 【実施例】 以下、本発明の実施例を図面に基づいて詳細に説明する
。 第2図は、本発明を実施するためのコンピュータシステ
ムの構成図である。本図においては、複数の命令プロセ
ッサIOa、fob、・・・、lOnが主記憶装置30
を共有するような密結果マルチプロセッサの構成が示さ
れている。各命令プロセッサは、キャッシャ記憶装置2
0a、20b、・・・、20nを備えていてもよい、ま
た、複数の命令プロセッサで共有されるようなキャッシ
ュ記憶装置や、多段のキャッシュ記憶装置があってもよ
い。 各命令プロセッサIOは、他命令プロセッサとの間での
命令実行の直列化を行うための特殊な命令(例えば、前
述のC8命令およびCDS命令)を実行可能である。C
8命令およびCDS命令の詳細については、後述する。 なお、本発明は、命令プロセッサ数が一つであるような
コンピュータシステムにおいても実施可能であり、マル
チプロセスによるデータリストへのアクセスを効率的に
直列化する効果を有するものである。 以下に、本発明の二つの実施例を説明する。 第一の実施例は、一般的にリスト処理に本発明を適用し
たものであり、第二の実施例は、プロセスの待ち合わせ
を管理するキュー操作への適用例である。 (1)第一の実施例:リスト操作 (l−■)概要 第3図は、本発明の第一の実施例の概要を示すコンピュ
ータシステムのブロック図である。第3図においては、
並行に動作する複数のプロセス100a、100b、・
−,100nが、リストコントロールエリア120によ
って管理されるデータリスト +30中の、複数のリス
ト要素131a、131b、−・、131nに対して、
リスト操作論理110を介してアクセスを行う例が示さ
れている。複数プロセスによるデータリストへのアクセ
スの直列化は、リスト操作論理が、リストコントロール
エリアの情報を定められた手順に従って参照/更新する
ことによって実現される。 第4図に、リスト操作論理110.リストコントロール
エリア120.およびデータリスト130の詳細な構造
を示す、リスト操作論理110は、データリスト中の任
意の位置へ、新たなリスト要素を付加する付加論理11
1.データリスト中から、指定された条件に合致するリ
スト要素を検索する検索論理II2.データリスト要素
中の任意のリスト要素を削除する削除論理113.複数
プロセスによるデータリストへのアクセスを直列化する
ロック/アンロック論理114を含む。削除論理+13
は、更に、論理削除論理と物理削除論理に分けられる。 論理削除は、リスト要素に削除フラグをセットするだけ
であり、リスト要素は、ポインタチェーンにつながれた
ままである。これに対して、物理削除では、リス:・要
素のポインタチェーンからの取外しが実行される。また
、ロック/アンロック論理114は、排他モードおよび
共有モードのニモードのロックを制御するものであり、
付加論理、検索論理、削除論理によってコールされる。 並行動作するプロセスが、これらのリスト操作論理を、
定められたインタフェースに従ってコールすることによ
り、リスト要素への直列的なアクセスが保証される。並
行動作するプロセスは、付加論理、検索論理、削除論理
をコールすることにより、高い並行処理炭を保って、デ
ータリストを操作することができる。また、並行動作す
るプロセスは、ロック/アンロック論理をコールするこ
とにより、データリストを共有もしくは占有して自由に
参照・更新することができる。このように処理の並列度
と自由度を両立させたことが本発明の顕著な効果である
。 リストコントロールエリア120は、第4図に示す如く
、主記憶(仮想記憶)上の領域であり、アンカポインタ
+21と削除カウンタ 122、および、排他フラグ1
24と共有カウンタ 125から成るロックワード12
3によって構成される。上記アシカポインタ+21.削
除カウンタ122.ロックワード123の領域は、必ず
しも隣接している必要はない。アンカポインタ+21は
、リスト要素をつなぐポインタチェーンの起点であり、
付加論理、検索論理。 削除論理によって参照・更新される。また、削除カウン
タ122は、論理的には削除されているが、物理的には
削除されていないリスト要素の数を示すカウンタであり
、削除処理によって参照・更新される。ロックワード1
23は、排他ロック、共有ロックを管理するためのエリ
アであり、ロック/アンロック論理によって参照・更新
される。 ロックワード123中の排他フラグ124は、もしそれ
がセットされている場合は、あるプロセスがデータリス
トに対する排他ロックを保持し、データリストを占有し
て、アクセスしていることを示す。共有カウンタ 12
5は、データリストに対して共有ロックを保持している
プロセスの数を示すカウンタである。従来のロック方式
では、共有ロックを保有しているプロセスは、データリ
ストに対して参照アクセスだけしか行えなかったが、本
発明では、データリストを更新する付加論理、削除論理
も共有ロックを保有して実行される。 データリスト 130中のリスト要素131 a 、 
131 b 。 ・・・・、 131 nは、リスト中での次のリスト要
素を示すネクストポインタ、リスト要素の状態を示すユ
ーザフラグ、リスト要素をアクセス中のプロセスの数を
示すユーザカウンタおよび任意内容のユーザデータによ
り構成される。上述のユーザフラグは、リスト要素の状
態を表現する任意数のフラグから成るが、本発明に関係
するのは、リスト要素が論理的には削除されたことを示
す削除フラグだけである。ユーザカウンタは、一つのリ
スト要素を同時に複数のプロセスが共有してアクセスす
るような場合に、同時アクセス中のプロセス数を示す、
リスト要素単位の共有カウンタであるが、これは必須で
はない、また、上述のユーザデータの内容は、データリ
ストの具体的な応用により異なるものであり、リスト要
素を一意的に識別するためのキー情報を含んでいてもよ
い。 (l−■)C3命令およびCDS命令 リスト操作論理の詳細に入る曲に、そこで使用される特
殊な機械命令である前述のC8命令およびCDS命令に
ついて簡単に説明しておく、 CS命令は、第一のレジ
スタと主記憶(仮想記憶)上の1語の内容とを比較し、
もし両者が等しければその1Mを第二のレジスタの内容
で書き換え、両者が異なれば、第一のレジスタにその1
語の内容をロードする動作を、不可分の一動作として実
行する、いわゆるリード・モディファイ・ライト型の命
令である。 CDS命令も、C8命令と同様の動作を実行するが、こ
ちらは、1語ではなく、倍語を操作するところが異なる
。複数の命令プロセッサが主記憶を共有する密結合マル
チプロセッサでは、あるプロセッサで実行中のプロセス
が主記憶上の状態変数の内容を変更しようとする場合、
通常のロード/コンベア/ストア命令を使用したのでは
、比較(コンベア)から書き換え(ストア)までの間に
、状態変数が他のプロセッサによって書き換えられてし
まい、処理の整合性が失われてしまうことがある得る。 このため、C8命令やCDS命令を使用して、比較と書
き換えとを一動作で行うようにするのである。 以下、リスト操作論理を、フローチャートに基づいて詳
細に説明する。 (l−■)排他ロック/アンロック 排他モードのロックは、一つのプロセスにデータリスト
を占有させるための機構である。プロセスは、排他モー
ドのロックを確保すると、データリストに対して任意の
参照・更新アクセスを行うことができる。一方、あるプ
ロセスが排他モードのロックを確保している間は、他の
プロセスはデータリストに一部アクセスできない。 排他ロックの処理の流れを、第7図に示す。まず、ロッ
クワードをC8命令で使用する第一のレジスタにロード
しくステップ+001)、排他フラグがセットされてお
らず、かつ、共有カウンタが0であるか否かを確かめる
(ステップ1002)。もしそうであれば、排他フラグ
がセットされたようなロックワード内容を、C3命令の
第二のレジスタに設定して(ステップ1003)、C8
命令でロックワードを書き換える。C8命令の比較が成
功すれば、主記憶(仮想記憶)上のロックワードに排他
フラグがセットされたことになり、コール元にリターン
する(ステップ1004)。また、もしC8命令の比較
が不一致であれば、ステップ100+でのロックワード
のロードから、ステップ1003でのC8命令実行まで
の間に、他のプロセスがロックワードを書き換えたこと
になるため、ステップ1002から処理を再試行する。 なお、この場合、C8命令の仕様により、第一のレジス
タには新たなロックワードの値がロードされているため
、ステップ+001からではなく、ステップ+002か
らの再試行となる。 ステップ1002において、既に排他フラグがセットさ
れている場合、もしくは、共有カウンタが1以上である
場合には、他のプロセスが排他ロックまたは共有ロック
を確保しているのであり、それらすべてのロックが解放
されるまで、スピンしてウェイトする(ステップ100
5)、スピンウェイトとは、ステップ!001およびス
テップ1002をその一部として含むような無限ループ
処理であり、プロセス処理の中断となる。ロックの競合
率が高くなると、スピンウェイトが長くなり、性能が著
しく低下する。 第8図は、排他ロックのアンロック処理の流れを示した
ものである。排他ロックの解放は、ロックワードの排他
フラグをリセットするだけである(ステップnol)。 この処理では、C8命令を使う必要はない、何故ならば
、排他ロックを確保しているのは、ただ一つのプロセス
であり、排他ロックのアンロック処理が他プロセスと競
合することはあり得ないからである。 (1−■)共有ロック/アンロック 共有ロックは、複数のプロセスによって同時に保有され
ることが可能であり、排他ロックとだけ競合するため、
ロック競合による性能低下の可能性が、排他ロックの場
合に比べて小さい。共有ロック処理の流れを、第9図に
示した。まず、ロックワードをレジスタにロードしくス
テップ+201)、排他フラグがセットされていないこ
とを確かめる(ステップ1202)。 排他フラグがセットされていなければ、共有カウンタを
1だけ増分したロックワード内容をC8命令でセットす
る(ステップ+203)。C8命令の比較が成功すれば
、共有ロックが確保されたことになり、コール元にリタ
ーンする(ステップ!204)。 C8命令の比較が失敗するのは、ステップ120+でロ
ックワードをロードしてから、ステップ+203でC8
命令で実行するまでの間に、他のプロセスがロックワー
ドを書き換えた場合であり、ステップ1202から処理
を再試行する。既に他のプロセスが排他ロックを確保し
ている場合には、その排他ロックが解放されるまでスピ
ンウェイトすることになる(ステップ+205)。 以上の排他ロック/アンロックおよび共有ロック処理は
、従来の排他・共有二モードロック処理でのそれと同じ
であり、特に本発明に独自のものではないが、実施例の
記述を正しく理解できるように説明を行・〕たものであ
る。 第1図は、共有アンロック処理の流れを示したものであ
る。共有アンロック処理は、本発明の中心となるもので
あり、従来のロック方式とは異なるものである。共有ア
ンロック処理では、まず、ロックワードをO8命令で使
用する第一のレジスタにロードしくステップ+301)
、共有カウンタが1である、すなわち、自プロセスが共
有ロックを解放する最後のプロセスであるかどうかを確
認する(ステップ1302)、もしそうであれば、C8
命令で使用する第二のレジスタに、共有カウンタが0で
かつ排他フラグがセットされているロックワード内容を
設定し、C8命令でロックワードを書き換える(ステッ
プ+303)。C8命令が成功すれば、そのプロセスは
、共有ロックを解放すると同時に排他ロックを確保した
ことになる(ステップ+304)。 この状態で、後述するリスト要素の物理削除処理を呼び
(ステップ+305)、排他アンロックを行って(ステ
ップ+306)からリターンする。 ステップ1302において、共有カウンタが2以上であ
ることは、自プロセスの他に共有ロックを保有している
プロセスが存在することを意味している。この場合は、
共有カウンタを1減じたロックワードをC8命令でセッ
トしくステップ1307)、C8命令が成功すれば、即
時にリターンする。ステップ1304またはステップ!
308で、C8命令による比較が失敗するのは、ステッ
プ1301でロックワードをロードしてから、ステップ
1303またはステップ1307でC8命令を実行する
までの間に、他のプロセスがロックワードを書き換えた
ためであり、ステップ1302から処理を再試行する。 このような場合は、複数プロセスによる共有アンミック
処理同志、もしくは、共有アンロック処理と共有ロック
処理とが競合したときに発生し得る。第1図において、
ステップ1302〜ステツプ1306を取り除き、ステ
ップ1301の1a後にステップ】307を持ってくれ
ば、従来の方式による共有アンロック処理になる。 前述の、付加、検索、削除というデータリストの要素的
操作のうち、排他ロックを確保して、データリストを占
有して実行しなければならないのは、リスト要素の物理
削除処理だけである。物理削除処理を行うための排他ロ
ックの確保を、最後の共有ロックの解放と同時に行うこ
とにより、排他ロック確保時のスピンウェイトの発生を
なくすることができる。本発明によるデータリストの要
素的操作でスピンウェイトが発生するのは、あるプロセ
スが、第1図のステップ2303からステップ1306
までの処理を行っている間に、別のプロセスがリスト要
素の付加、検索、削除を行おうとした場合だけであり、
従来のロック方式によるものと比較して、ロック競合に
よる並行処理度の低下が大幅に少なくなっている。また
、本発明のロック方式は、従来のニモードロック方式と
上位互換性があり、容易に既存のプログラムに組み込む
ことができる。これは、本発明が、ロックワードの意味
は従来のものを踏襲し、その使い方に工夫を加えたもの
であるためである。 (l−■)リスト要素の付加 第10図に、リスト要素の付加処理の流れを示した。ま
ず、共有ロックを確保しくステップ1401)、付加処
理要求元の指定に従って、リスト要素を付加すべきポイ
ンタチェーン上の位置を決定する(ステップ1402)
、次に、付加リスト要素のネクストポインタを設定しく
ステップ+403)、ステップ1404では、既存のポ
インタチェーンをC8命令で更新する。C3命令が成功
すれば(ステップ+405)、共有ロックを解放して(
ステップ1406)リターンする。C8命令が失敗する
のは、同じ位置に別のリスト要素を付加しようとした他
プロセスとの付加処理同志の競合が発生したためであり
、ステップ1402から処理を再試行する。 付加処理がどのように行われるかは、第5図および第6
図を参考にすれば理解し易い。第5図および第6図では
、リスト要素+32および133を含む既存のデータリ
ストに、新たにリスト要素134を付加する場合が示さ
れている。リスト要素+34をリスト要素+32とリス
ト要素133の間に付加することが決定されたら、まず
、リスト要素134のネクストポインタにリスト要素1
33のアドレスをセットする(第10図のステップ14
03参照)。リスト要素134は、この時点では、付加
しようとしているプロセスしかアクセスしないため、ネ
クストポインタのセットは、通常のストア命令によって
行うことができる。 次に、リスト要素132のネクストポインタを。 リスト要素133のアドレスがらりスト要素134のア
ドレスに変更する(第1θ図のステップ+404)。リ
スト要素+32は、共有ロックを確保している他プロセ
スによって同時にアクセスされる可能性があるので、ネ
クストポインタの設定には、cs命令を使用する。もし
他のプロセスによる同じ位置への付加処理と競合した場
合には、リスト要素132のネクストポインタは、リス
ト要素133のアドレスと異なる値になるため、第1θ
図ステップ1404のC8命令は失敗する。また、リス
ト要素+34をデータリストの先頭に付加したい場合は
、直前のリスト要素のネクストポインタの代りに、アン
カポインタ121をC8命令で更新すればよい。 上述の付加操作によれば、データリストの任意の位置に
新たなリスト要素を付加可能である。従来のロック方式
による付加処理では、第1θ図のステップ1401とス
テップ1406において、共有ロックではなく、排他ロ
ックを確保/解放し、データリストを占有して処理を行
っていたことを注意しておく。 (l−■)リスト要素の検索 リスト要素の検索処理の流れを、第1!図に示した。検
索処理では、まず、共有ロックを確保して(ステップ1
501)、指定された検索条件に合致するリスト要素を
、ポインタチェーンを辿って検索する(ステップ150
2)、検索条件に合致するリスト要素が存在し、かつ、
そのリスト要素の削除フラグがセットされていない(ス
テップ1503.1504)、すなわち論理的に削除さ
れたリスト要素ではないならば、そのリスト要素のユー
ザフラグまたはユーザカウンタをC8命令で変更してリ
スト要素を使用中状態にしくステップ1505.150
6)、共有ロックを解放してから(ステップ+507)
、リターンする。 検索条件に合致するリスト要素が存在しないか、もしく
は、そのリスト要素が既に論理的に削除されている場合
には、その旨をリターン情報に設定してエラーリターン
する。ステップ1505のC8命令が失敗するのは、他
プロセスによる削除処理と競合した場合であり、ステッ
プ1503から処理を再試行する。この検索処理は、共
有アンロック処理の内容が、本発明のものと置き換わっ
ていることを除けば、従来のロック方式によるものと同
一である。 (l−■)リスト要素の削除 リスト要素の削除は、論理削除と物理削除の二段層で実
施される。ここで、論理削除と物理削除を実行するプロ
セスは、必ずしも同一とは限らない、第12図に、リス
ト要素の論理削除処理の流れを示した。まず、ステップ
1601では、共有ロックを確保し、ステップ1602
では、削除対象リスト要素をサーチして、そのリスト要
素の削除フラグをC8命令でセットする(ステップ+6
03)、CS命令が成功すれば(ステップ+604)、
リストコントロールエリアの削除カウンタをC8命令で
カウンタアップする(ステップ1605)。このC34
を令が成功すれば(ステップ1606)、ステップ16
07で、共有ロックを解放して、リターンする。ステッ
プ1603およびステップ1605のC8命令が失敗し
た場合は、そのC8命令の処理を再試行し、フラグまた
はカウンタを更新する。 第+3図は、物理削除処理の流れを示している。 物理削除処理では、まず、ステップ1701で、削除カ
ウンタの値を調べもし1以上であれば、アンカポインタ
から順にリスト要素を走査し、削除フラグがセットされ
ているリスト要素をポインタチェーンから外して、解放
する(ステップ+702)。全リスト要素を走査し終っ
たら、削除カウンタをOに戻す(ステップ1703)。 この物理削除処理は、排他ロックを確保した状態で実行
されなければならない。 削除処理は、第14図および第15を参照すると理解し
易い。第14図は、前述のリスト要素133が論理的に
削除された状態を、また、第15図は、リスト要素+3
3が物理的に削除された状態を、それぞれ示している。 このような二段階の削除処理が有効であるのは、削除し
たリスト要素をその後のプロセスの処理で使用しない場
合である。データリストから削除したリスト要素を、そ
の後のプロセスで使用する場合には、削除処理からリタ
ーンする時点で、リスト要素のポインタチェーンからの
切り離しが完了していなければならず、排他ロックを確
保して論理削除処理と物理削除処理とを同時に行う必要
がある。本発明では、そのような場合にも柔軟に対応で
き、並行処理炭を従来と同様にできる。 以下、本発明の第二の実施例を説明する。 第一の実施例は、一般的にリスト処理に本発明を適用し
たものであったが、以下に説明する第二の実施例は、プ
ロセスの待ち合わせを管理するキュー操作への適用例で
ある。 (2)第二の実施例:キュー操作 (2−■)概要 第16図は、本発明の第二の実施例の概要を示すコンピ
ュータシステムのブロック図である。第16図において
は、並行に動作する複数のプロセス100a、100b
、・・・・、100nが、キューコントロールエリア2
20によって管理されるキュー要1231a。 231b、−,23Inを含むキュー230を、キュー
操作論理210を介してアクセスすることにより、プロ
セスの待ち合わせを実現している例が示されている。こ
こでは、複数のプロセスのうち、規定された一定数以下
のプロセスだけが実行権を得て実行可能となり、それ以
外のプロセスは先入れ先出しくF I FO)のキュー
に入って実行権の確保を待つという形で制御される。こ
のようなキューは、第一の実施例におけるデータリスト
の特別な一形態でもある。 第17図に、キュー操作論理210.キューコントロー
ルエリア220.およびキュー230の詳細な構造を示
す。キュー操作論理2】0は、プロセス実行権を確保し
、もし確保できなければ実行権が与えられるのを待つエ
ンキュー論理211.確保したプロセス実行権を返却す
るデキュー論理212.キュー要素へのアクセスの直列
化を制御するロック/アンロック論理213から成る。 なお、エンキュー論理2+1およびデキュー論理212
は、ロック/アンロック論理をコールする。 上記キューコントロールエリア220は、キュー要素の
ポインタチェーンの起点となるアンカポインタ222と
プロセス実行権の付与状況を示すラッチ223を含むア
ンカダブルワード221と、排他フラグ225および共
有カウンタ226を含むロックワード224から構成さ
れる。上記アンカダブルワード22+とロックワード2
24は、主記憶(仮想記憶)上で必ずしも隣接している
必要はない、ここで、アンカダブルワードはCDS命令
によって、ロックワードはC8命令によって更新される
。アンカポインタおよびロックワードの使い方は、第一
の実施例のそれと、基本的には同じである。 上記ラッチ223には、初期状態では、ある正の整数が
格納されている。この整数値は、付与可能なプロセス実
行権の最大値を示している。プロセスがエンキュー操作
によって実行権を得る度に、ラッチはlずつ減じられる
。ラッチがOであることは、それ以上プロセスに実行権
を付与できないことを示す。この状態でプロセスがエン
キュー操作を行うと、ラッチは負の値となり、そのプロ
セスは待ち状態となる。また、ラッチは、デキュー操作
によって1ずつ増加する。 キュー要素は、待ち状態となったプロセスを表現してお
り、ポインタチェーン上での次のキュー要素を示すネク
ストポインタ、キュー要素の状態を示すフラグおよびキ
ュー要素に対応するプロセスの情報を含むキューデータ
により構成される。 フラグのうちで本発明に関係するのは、そのキュー要素
に対応するプロセスにプロセス実行権が付与されたこと
を示す付与フラグである。この付与フラグは、第一の実
施例における削除フラグの役目を合わせ持っている。 キュー操作論理のうち、ロック/アンロック操作は、第
一の実施例のそれと同じであるため、ここでは説明を省
略する。以下の説明では、第二の実施例に特有なエンキ
ュー操作およびデキュー操作について説明する。 (2−■)エンキュー エンキュー操作の処理の流れを、第18図に示した。エ
ンキュー処理では、まず、前述のアンカダブルワードを
CDS命令で使用する第一のレジスタ(より正確には、
連続する二つのレジスタ)にロードする(ステップ18
01)。次に、レジスタにロードされたアンカダブルワ
ードを中のラッチの値を調べ(ステップ+802)、も
し1以上であれば、すなわちまだ付与可能なプロセス実
行権が残っていれば、ステップ1803で、ラッチの値
を1だけ減じたアンカダブルワードの内容を、CDS命
令で使用する第二のこれも連続する二つのレジスタに設
定し、CDS命令によってアンカダブルワードを更新す
る。 ステップ1804における、CDS命令が成功すれば、
プロセス実行権が付与されたことになり、コール元ヘリ
ターンする。ステップ1802で、ラッチが0以下、す
なわち付与可能なプロセス実行権が存在しない場合は、
待ち合わせのためのキュー要素を作成しくステップ18
05)、CDS命令によってラッチを1だけ減じると同
時に、キュー要素をキュー終端すなわちアンカポインタ
側の端に付加しくステップ+806)、ステップ180
7における、CDS命令が成功すれば、プロセスをウェ
イト状態にする(ステップ+808)、このウェイト状
態は、他プロセスのデキュー処理によってプロセス実行
権が返却されるのに伴ない、順次解除される。 ステップ1803またはステップ1806で、CDS命
令が失敗するのは、ステップ1801でアンカダブルワ
ードをロードしてから、ステップ1803またはステッ
プ1806でCDS命令を実行するまでの間に、他のプ
ロセスがアンカダブルワードを書き換えた場合、すなわ
ち、他プロセスのエンキューまたはデキュー処理とアン
カダブルワードアクセスの競合が発生した場合であり、
ステップ1802から処理を再試行する。 (2−■)デキュー 第19図(こ、デキュー操作の処理の流れを示す。 デキュー操作は、まず、ステップ1901で共有ロック
を確保し、アンカダブルワードを前述の連続する二つの
レジスタにロードする(ステップ+902)。 次に、ロードされたアンカダブルワード中のラッチの値
を調べ(ステップ1903)、ラッチが0以上である、
すなわちプロセス実行権の付与を待っているプロセスが
存在しない場合には、CDS命令によってラッチをlだ
け増加させ(ステップ+904)、共有ロックを解放し
くステップ1906)、リターンする。このバスを通る
場合は、ステップ1907の判定処理は常に偽となる。 ステップ1905で、CDS命令が失敗するのは、ステ
ップ1904でアンカダブルワードをロードしてから、
ステップ1904でCDS命令を実行するまでの間に、
アンカダブルワードが他プロセスによって書き換えられ
た、すなわち他プロセスによるエンキューまたはデキュ
ー処理との間でアンカダブルワードに対するアクセス競
合が発生した場合であ番ハステップ1903から処理を
再試行する。 ステップ+903で、ラッチがOより小さいということ
は、プロセス実行権の付与を待っているプロセスがキュ
ーに存在することを意味する。この場合は、アンカポイ
ンタからのポインタチェーンを辿ってすべてのキュー要
素を調べて、付与フラグが設定されていない最後のキュ
ー要素を決定する(ステップ1909)、キュー要素は
、アンカポインタから付加されるため、このようにして
サーチしたキュー要素は、最も古くにウェイトしたプロ
セスに対応する(FIFOによる待ちの管理の果合)。 プロセス実行権の付与対象プロセスがみつかったなら(
ステップ+910)、ステップ+911で、C8命令に
よってそのキュー要素に付与フラグをセットする。ステ
ップ1912で、このC8命令が成功したならば、CD
S命令によってラッチを1だけ増加させ(ステップ19
13)、ステップ1914で、CDS命令が成功すれば
、ステップ1906で、共有ロックを解放して、プロセ
ス実行権を付与したプロセスの待ち状態を解除する(ス
テップ1907.1908)。 ステップ1906の共有アンロック処理では、もし他に
共有ロックを保有しているプロセスが存在しない場合に
は、排他ロックを確保して、キュー中の、付与フラグが
セットされているキュー要素の物理削除を行う、すなわ
ち、第二の実施例におけるキュー要素の付与フラグは、
プロセス実行権の付与状態を制御すると同時に、第一の
実施例における削除フラグの意味をも合わせ持つ。 ステップ1909で、プロセス実行権の付与対象プロセ
スがみつからないという升態は、複数プロセスによって
デキュー処理が同時に実行され、ステップ1903で待
ちプロセスありと判断してから、ステップ1909で待
ちプロセスをサーチするまでの間に、既に他のプロセス
によって付与が完了していた場合に起こり得る。この場
合は、ステップ1913にジャンプし、ラッチの増分を
行う、同様に、ステップ1910で、付与フラグをセッ
トするC8命令が失敗するのも、複数プロセスが同一の
待ちプロセスに対して同時にプロセス実行権の付与を行
おうとして、付与フラグに対するアクセスの競合が発生
した場合であり、他に待ちプロセスがないかどうかを、
ステップl909に戻って再調査する。 ステップ1914のCDS命令が失敗するのは、他プロ
セスのエンキューもしくはデキュー処理とアンカダブル
ワードに対するアクセスが競合した場合である。この場
合、既に待ちプロセスにプロセス実行権を付与した、す
なわちキュー要素に付与フラグをセットしたのであれば
(ステップ+915)、処理をステップ1913から再
試行して、ラッチを1増分するだけでよい、もしプロセ
ス実行権を付与していなかったのならば、新たに待ちプ
ロセスが発生している可能性もあるので、ステップ+9
03から再試行する。これにより、エンキュー処理とデ
キュー処理のすれ違いによって生ずる、有効なプロセス
実行権数の低下を防止することができる。 従来のロック方式によるキューの管理では、エンキュー
/デキュー操作を、排他ロックを確保して処理していた
。しかし、本実施例によれば、排他ロックがかかるのは
、デキュー操作の共有アンロック処理(ステップ+90
6)の一部に関してのみであり、並行処理度が大幅に向
上している。 上記実施例は、いずれも本発明の一例として示したもの
であり、本発明はこれらに限定されるべきものではない
。 〔発明の効果〕 以上、詳細に説明した如く、本発明によれば、並行処理
を行うプロセス間での共有データリストに対するアクセ
スの直列化方式において、排他モード/共有モードのニ
モードのロックを設け、共有ロックを解放する場合に、
もしその解放の結果ロックを確保しているプロセスがな
くなるのであれば、共有ロックを解放すると同時に排他
ロックを確保するようにしたので、共有データリストに
対する複数プロセスのアクセスを、高い並行処理度を保
って、かつ、処理の柔軟性を失わずに実行可能な、改良
されたロック方式を実現できるという顕著な効果を奏す
るものであり、特に複数の命令プロセッサが主記憶装置
を共有する密結合マルチプロセッサ環境において効果が
大きい。また、本発明によれば、従来のロック方式から
、より並行処理炭の高いロック方式に容易に移行できる
効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例の特徴的動作を示すフローチ
ャート、第2図は実施例のコンピュータシステムの構成
図、第3図は第一の実施例を示すブロック図、第4図は
リスト操作論理、リストコントロールエリア、データリ
ストの説明図、第5図および第6図はデータリストへの
リスト要素の付加操作の説明図、第7図〜第13図はリ
スト操作論理を説明するフローチャート、第14図はリ
スト要素の論理削除操作の説明図、第15図はリスト要
素の物理削除操作の説明図、第16図は第二の実施例を
示すブロック図、第17図はキュー操作論理の説明図、
第18図、第19図は第二の実施例におけるキュー操作
論理を示すフローチャートである。 l吐命令プロセッサ、20:キャッシュ記憶装置、30
:主記憶装置、100:プロセス、110:リスト操作
論理、Ill :付加操作、112:検索操作、+13
:削除操作、114:ロックlアンロック操作、+20
 :リストコントロールエリア、121:アンカポイン
タ、122:削除カウンタ、123:ロックワード、1
24:排他フラグ、+25;共有カウンタ、130:デ
ータリスト、131〜134:リスト要素、210 :
キュー操作論理、211:エンキュー操作、212:デ
キュー操作、213:ロックlアンロック操作、220
:キューコントロールエリア、221:アンカダブルワ
ード、222:アンカポインタ、223:ラッチ、22
4:ロックワード、225:排他フラグ、226:共有
カウンタ、230:キュー、231:キュー要素。 第 図 100a 第 00b 図 00n 第 図 第 図 263 第 7 図 第 図 第 区 第 図 第 1 図 第 図 第 図 第 図 32 33 34 第 図 第 1 図 第 図 −26(

Claims (1)

  1. 【特許請求の範囲】 1、並行処理を行うプロセス間での共有データリストに
    対するアクセスの直列化方式において、排他モード/共
    有モードの二モードのロックを設け、共有ロックを解放
    する場合に、もしその解放の結果ロックを確保している
    プロセスがなくなるのであれば、共有ロックを解放する
    と同時に排他ロックを確保することを特徴とするデータ
    リストに対するアクセスの直列化方式。 2、排他ロックフラグと共有ロックカウンタを含むロッ
    クワードを設け、共有ロックカウンタの値を減じ、その
    結果が0であれば排他ロックフラグをセットすることを
    特徴とする請求項1記載のデータリストに対するアクセ
    スの直列化方式。 3、共有ロックを確保してリスト要素の論理削除を行い
    、共有ロックを解放すると同時に排他ロックを確保でき
    た場合に、リスト要素の物理削除処理を行うことを特徴
    とする請求項1または2記載のデータリストに対するア
    クセスの直列化方式。 4、前記データリストに対するアクセスが、キュー操作
    であることを特徴とする請求項1〜3のいずれかに記載
    のデータリストに対するアクセスの直列化方式。
JP1153509A 1989-06-15 1989-06-15 データリストに対するアクセスの直列化方式 Pending JPH0318935A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP1153509A JPH0318935A (ja) 1989-06-15 1989-06-15 データリストに対するアクセスの直列化方式
US07/537,908 US5287521A (en) 1989-06-15 1990-06-12 Method and apparatus for releasing and obtaining shared and exclusive locks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1153509A JPH0318935A (ja) 1989-06-15 1989-06-15 データリストに対するアクセスの直列化方式

Publications (1)

Publication Number Publication Date
JPH0318935A true JPH0318935A (ja) 1991-01-28

Family

ID=15564101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1153509A Pending JPH0318935A (ja) 1989-06-15 1989-06-15 データリストに対するアクセスの直列化方式

Country Status (2)

Country Link
US (1) US5287521A (ja)
JP (1) JPH0318935A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008067776A (ja) * 2006-09-12 2008-03-27 Good House:Kk 人形
JP2009506255A (ja) * 2005-08-25 2009-02-12 ゼネラル・エレクトリック・カンパニイ ターボ過給エンジンを作動させるためのシステム及び方法
JP2009258780A (ja) * 2008-04-11 2009-11-05 Nec Corp データ処理装置、データ処理方法、及びプログラム
US8108860B2 (en) 2002-12-20 2012-01-31 International Business Machines Corporation Method for managing message flow in a multithreaded, message flow environment
CN102385526A (zh) * 2011-11-16 2012-03-21 深圳市大赢家网络有限公司 在多进程之间共享股票数据的方法及装置
JP2016530625A (ja) * 2013-08-14 2016-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ロッキング機構を用いた効率的なタスク・スケジューリングのための方法、システム、およびプログラム

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04308961A (ja) * 1991-01-18 1992-10-30 Ncr Corp 占有されたプロセスの同期ロックの状態を通知するための手段及び装置
JP2781092B2 (ja) * 1991-11-06 1998-07-30 富士通株式会社 システム間排他制御方式
US5408653A (en) * 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
JPH06175914A (ja) * 1992-09-21 1994-06-24 Eastman Kodak Co メモリ管理装置
JPH06110846A (ja) * 1992-09-25 1994-04-22 Fujitsu Ltd 排他制御方式
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
US5594907A (en) * 1992-10-13 1997-01-14 Sony Corporation Apparatus for locking/unlocking a number of units connected to a master unit
US5469575A (en) * 1992-10-16 1995-11-21 International Business Machines Corporation Determining a winner of a race in a data processing system
WO1994011817A1 (en) * 1992-11-09 1994-05-26 Microsoft Corporation Method and system for connecting objects in a computer system
JP2711216B2 (ja) * 1993-01-26 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション オブジェクトを管理するためのシステム及び方法
US5721943A (en) * 1993-10-14 1998-02-24 International Business Machines Corporation Negotiable locks for concurrent access of control data by multiple programs
US5499359A (en) * 1994-01-18 1996-03-12 Borland International, Inc. Methods for improved referential integrity in a relational database management system
US5546579A (en) * 1994-05-02 1996-08-13 International Business Machines Corporation Page refreshing procedure using two locking granularities to ensure cache coherency in a multisystem database processing environment having a high-speed shared electronic store
US5652864A (en) * 1994-09-23 1997-07-29 Ibm Concurrent storage allocations or returns without need to lock free storage chain
US5644768A (en) * 1994-12-09 1997-07-01 Borland International, Inc. Systems and methods for sharing resources in a multi-user environment
US5659757A (en) * 1995-04-27 1997-08-19 International Business Machines Corporation Method and system for lock instrumentation in a data processing system
US5892954A (en) * 1995-07-07 1999-04-06 Sun Microsystems, Inc. Method and apparatus for refreshing file locks to minimize conflicting accesses to data files
US5734909A (en) * 1995-09-01 1998-03-31 International Business Machines Corporation Method for controlling the locking and unlocking of system resources in a shared resource distributed computing environment
US5794241A (en) * 1996-04-08 1998-08-11 Oracle Corporation Method and apparatus for dynamically disabling and enabling table locking for a database
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
US5991845A (en) * 1996-10-21 1999-11-23 Lucent Technologies Inc. Recoverable spin lock system
US5961583A (en) * 1996-11-22 1999-10-05 International Business Machines Corporation Method and system for using the event wait list anchor as a lock for events
FR2762418B1 (fr) * 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee
US5924098A (en) * 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6247025B1 (en) 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US6704766B1 (en) * 1997-09-10 2004-03-09 International Business Machines Corporation Method and apparatus for dynamically controlling the execution of a request handler on a processor resource
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment
US6078982A (en) * 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6363396B1 (en) 1998-12-21 2002-03-26 Oracle Corporation Object hashing with incremental changes
US6529905B1 (en) 2000-01-11 2003-03-04 Frontline Solutions, Inc. Method and system for allowing multiple users to edit a hierarchical data structure
US6751616B1 (en) 2000-01-28 2004-06-15 Oracle International Corp. Techniques for DLM optimization with re-mapping responsibility for lock management
US6529906B1 (en) 2000-01-28 2003-03-04 Oracle Corporation Techniques for DLM optimization with re-mastering events
US6920454B1 (en) 2000-01-28 2005-07-19 Oracle International Corporation Techniques for DLM optimization with transferring lock information
US7246120B2 (en) 2000-01-28 2007-07-17 Oracle International Corporation Techniques for achieving higher availability of resources during reconfiguration of a cluster
US6523033B1 (en) * 2000-07-13 2003-02-18 International Business Machines Corporation Apparatus and method for file locking for computer programs that use different size locks
US7249314B2 (en) * 2000-08-21 2007-07-24 Thoughtslinger Corporation Simultaneous multi-user document editing system
US6678772B2 (en) * 2000-12-19 2004-01-13 International Businesss Machines Corporation Adaptive reader-writer lock
US7430627B2 (en) * 2000-12-19 2008-09-30 International Business Machines Corporation Adaptive reader-writer lock
US20020099736A1 (en) * 2001-01-23 2002-07-25 Neo-Core, L.L.C. Method of storing a structured data document
US7418702B2 (en) * 2002-08-06 2008-08-26 Sheng (Ted) Tai Tsao Concurrent web based multi-task support for control management system
US6990560B2 (en) * 2003-01-16 2006-01-24 International Business Machines Corporation Task synchronization mechanism and method
US7222119B1 (en) * 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
US7447786B2 (en) * 2003-05-09 2008-11-04 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US7325118B2 (en) 2003-09-30 2008-01-29 Samsung Electronics, Co., Ltd. Method and apparatus for executing dynamic memory management with object-oriented program
US7555481B1 (en) * 2003-10-28 2009-06-30 Oracle Corporation Method and apparatus for increasing transaction concurrency by early release of locks in groups
US7379952B2 (en) * 2004-01-30 2008-05-27 Oracle International Corporation Techniques for multiple window resource remastering among nodes of a cluster
US8276096B2 (en) * 2004-04-02 2012-09-25 International Business Machines Corporation Multicast file viewing and editing
JP4069905B2 (ja) * 2004-06-28 2008-04-02 コニカミノルタビジネステクノロジーズ株式会社 共有ファイル管理システムおよびサーバー
US20060112121A1 (en) * 2004-11-23 2006-05-25 Mckenney Paul E Atomically moving list elements between lists using read-copy update
US20060156305A1 (en) * 2004-12-21 2006-07-13 Jaroslav Delapedraja Multiple task access to an ordered data structure
US20060200469A1 (en) * 2005-03-02 2006-09-07 Lakshminarayanan Chidambaran Global session identifiers in a multi-node system
US7209990B2 (en) * 2005-04-05 2007-04-24 Oracle International Corporation Maintain fairness of resource allocation in a multi-node environment
US8566298B1 (en) * 2005-07-28 2013-10-22 Symantec Operating Corporation Method and apparatus for sharing resource locks amongst applications
JP4124230B2 (ja) * 2005-12-28 2008-07-23 ブラザー工業株式会社 印刷装置及びプログラム
US8099538B2 (en) * 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US7861093B2 (en) * 2006-08-30 2010-12-28 International Business Machines Corporation Managing data access via a loop only if changed locking facility
JP4956292B2 (ja) * 2007-06-25 2012-06-20 パナソニック株式会社 情報セキュリティ装置およびカウンタ制御方法
US20100064280A1 (en) * 2008-09-09 2010-03-11 International Business Machines Corporation Systems and methods for implementing test applications for systems using locks
US9665413B2 (en) * 2009-05-01 2017-05-30 Microsoft Technology Licensing, Llc Shared job scheduling in electronic notebook
US20110093745A1 (en) * 2009-10-20 2011-04-21 Aviad Zlotnick Systems and methods for implementing test applications for systems using locks
US8868748B2 (en) * 2010-10-11 2014-10-21 International Business Machines Corporation Two-level management of locks on shared resources
US9002897B2 (en) * 2010-12-28 2015-04-07 Microsoft Technology Licensing, Llc Aspected interfaces and methods for synchronized containers and other data structures
FR2989801B1 (fr) * 2012-04-18 2014-11-21 Schneider Electric Ind Sas Procede de gestion securisee d'un espace memoire pour microcontroleur
US10409800B2 (en) * 2015-08-03 2019-09-10 Sap Se Priority queue for exclusive locks
DE102016012340A1 (de) * 2016-10-14 2018-04-19 Giesecke+Devrient Mobile Security Gmbh Profilzähler in einem Sicherheitselement
US10459810B2 (en) 2017-07-06 2019-10-29 Oracle International Corporation Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318182A (en) * 1974-04-19 1982-03-02 Honeywell Information Systems Inc. Deadlock detection and prevention mechanism for a computer system
DE3376590D1 (en) * 1982-04-28 1988-06-16 Int Computers Ltd Data processing system
US4473133A (en) * 1982-12-06 1984-09-25 Westinghouse Electric Corp. Elevator system
US4594657A (en) * 1983-04-22 1986-06-10 Motorola, Inc. Semaphore for memory shared by two asynchronous microcomputers
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
GB8704572D0 (en) * 1987-02-26 1987-04-01 Lundbeck & Co As H Organic compounds
EP0365728B1 (en) * 1988-10-28 1993-12-29 International Business Machines Corporation Resource access for a multiprocessing computer system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108860B2 (en) 2002-12-20 2012-01-31 International Business Machines Corporation Method for managing message flow in a multithreaded, message flow environment
JP2009506255A (ja) * 2005-08-25 2009-02-12 ゼネラル・エレクトリック・カンパニイ ターボ過給エンジンを作動させるためのシステム及び方法
JP2008067776A (ja) * 2006-09-12 2008-03-27 Good House:Kk 人形
JP2009258780A (ja) * 2008-04-11 2009-11-05 Nec Corp データ処理装置、データ処理方法、及びプログラム
CN102385526A (zh) * 2011-11-16 2012-03-21 深圳市大赢家网络有限公司 在多进程之间共享股票数据的方法及装置
JP2016530625A (ja) * 2013-08-14 2016-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ロッキング機構を用いた効率的なタスク・スケジューリングのための方法、システム、およびプログラム
US10579413B2 (en) 2013-08-14 2020-03-03 International Business Machines Corporation Efficient task scheduling using a locking mechanism

Also Published As

Publication number Publication date
US5287521A (en) 1994-02-15

Similar Documents

Publication Publication Date Title
US5287521A (en) Method and apparatus for releasing and obtaining shared and exclusive locks
US8250047B2 (en) Hybrid multi-threaded access to data structures using hazard pointers for reads and locks for updates
EP0145889B1 (en) Non-spinning task locking using compare and swap
US7975271B2 (en) System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock
US7797704B2 (en) System and method for performing work by one of plural threads using a lockable resource
US5251318A (en) Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource
US7031989B2 (en) Dynamic seamless reconfiguration of executing parallel software
US7188344B1 (en) Architecture for a read/write thread lock
US6889269B2 (en) Non-blocking concurrent queues with direct node access by threads
US5093912A (en) Dynamic resource pool expansion and contraction in multiprocessing environments
US9448856B2 (en) Lock-free dual queue with condition synchronization and time-outs
US6449614B1 (en) Interface system and method for asynchronously updating a share resource with locking facility
US8495641B2 (en) Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes
US5524247A (en) System for scheduling programming units to a resource based on status variables indicating a lock or lock-wait state thereof
US5442763A (en) System and method for preventing deadlock in multiprocessor multiple resource instructions
US8990510B2 (en) Read-copy update system and method
CN101763289B (zh) 一种基于共享内存的消息传递方法
US8473950B2 (en) Parallel nested transactions
US20020083063A1 (en) Software and data processing system with priority queue dispatching
JPH01303527A (ja) 共有資源の管理方法
US7734879B2 (en) Efficiently boosting priority of read-copy update readers in a real-time data processing system
JPS5983249A (ja) 待ち行列制御方法
JPH04155465A (ja) ファイル共用方法
JP5553685B2 (ja) 情報処理装置および情報処理方法
JP3381079B2 (ja) キャッシュメモリを用いた排他制御システム