JP2005302030A - リンクリストへのマルチプロセスアクセス方法および装置 - Google Patents

リンクリストへのマルチプロセスアクセス方法および装置 Download PDF

Info

Publication number
JP2005302030A
JP2005302030A JP2005113248A JP2005113248A JP2005302030A JP 2005302030 A JP2005302030 A JP 2005302030A JP 2005113248 A JP2005113248 A JP 2005113248A JP 2005113248 A JP2005113248 A JP 2005113248A JP 2005302030 A JP2005302030 A JP 2005302030A
Authority
JP
Japan
Prior art keywords
data
processor
subsequent
pointer
linked list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005113248A
Other languages
English (en)
Other versions
JP4177833B2 (ja
Inventor
David Hsing Lin
デービッド・シン・リン
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2005302030A publication Critical patent/JP2005302030A/ja
Application granted granted Critical
Publication of JP4177833B2 publication Critical patent/JP4177833B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 リンクリストへのマルチプロセスアクセス方法および装置を提供する。
【解決手段】 リンクリストをロックする(5)こと、前記リンクリストの要素からデータを取り出し(10)、また、ブレークポイントに遭遇しない(15)間は後続の要素に進む(25)こと、ブレークポイントに遭遇する(15)と、前記リンクリストの前記後続の要素を使用中とマーキングする(30)こと、前記後続の要素への再開参照を作成する(40)こと、および前記リンクリストのロックを解除する(45)こと、を含む、データを取り出す方法とする。
【選択図】 図1

Description

本発明は、リンクリストへのマルチプロセスアクセス方法および装置に関する。
コンピュータシステムは、従来、データの記憶および取り出しのために使用されてきた。データは情報を構成する生の材料である。データは、コンピュータ可読媒体に記憶されたビットおよびバイトで構成される。これらの定義はさておき、データは、特定の用途に適した任意の方法で定義することができる。情報は、一般に、データによって表される有用な材料と考えられる。例えば、株価履歴に関する報告は、この定義によると、情報である。1つまたは2つ以上の期間の間の実際の株価は、一般に、情報を構成する生のデータとみなされる。この場合も、これらの定義は、ここでは、いくつかの基本概念を示すためにのみ提示される。事実、これらの用語の実際の定義は、広く議論されてきており、おそらくこれからも広く議論され続けるであろう。
データまたは情報を指すのに使用される定義的格言が何であろうとも、1つの共通の目的は、依然として、データ(および/または情報)の効率的な記憶、取り出し、および管理を行うことにある。情報の記憶、取り出し、および管理は、データ構造体を操作するプログラムアルゴリズムの使用を通じて行われる。今日、これらのプログラムアルゴリズムは、コンピュータシステム上で実行および維持される。
データ構造体は、関係のあるデータを収集するためのメカニズムである。例えば、関連のあるデータには、特定の株式取引日の株始値および株終値が含まれ得る。関連のあるデータの別の例には、在庫ストック品目番号、その品目の説明、および在庫数量値が含まれ得る。これらの例は、ここでは、いくつかの基本概念をさらに示すために提示されたものであり、以下の詳細の説明に導入される他の概念の適用を制限するためのものではない。
一般に使用されるデータ構造体は、リンクリストとして知られている。リンクリストは、1つまたは2つ以上のデータ要素の集まりを備える。通常、これらのデータ要素のそれぞれは、少なくとも1つのデータコンテナ、および、別のデータ要素への少なくとも1つの参照を含む。一般に、参照される要素は、要素のチェーン、したがって用語リンクリスト、における次の要素である。用語「データ要素」(または単に「要素」)は、本明細書で使用されるように、特定の定義の単一のデータ構造体を指すことに留意すべきである。例えば、リンクリストは、1つまたは2つ以上のこのような要素を含むことになる。
リンクリストは、一般に、データ(または読み手の視点に従った情報)を保持するのに使用される。データがリンクリストに一旦記憶されると、必要なデータを発見するためにリンクリストを「トラバース」することはかなり簡単なタスクである。リンクリストの1つの共通の用途では、データは、まず、例えば、ハードディスクドライブまたはコンパクトディスク(CD)読み出し専用メモリ(ROM)といった低速のコンピュータ可読媒体から取り出される。データは、低速のコンピュータ可読媒体から一旦取り出されると、リンクリストに記憶され、リンクリストからデータを高速に取り出すことができる。
リンクリストに関連した1つの問題は、このタイプのデータ構造体が、複数のプロセスによるアクセスに容易に対応しないということである。例えば、リンクリストが、小売店の在庫に関するデータを記憶するのに使用される状況を考える。複数の売り場専用端末がリンクリストにアクセスしたり、リンクリストを変更したりする必要がある場合、遅延がかなり大きくなるおそれがある。これは、まさにリンクリストの性質によるものである。リンクリストを使用するために、リストは、特定のアクセスセッションの間、一定の状態でなければならない。リンクリストの各要素は、先行要素によって参照されるので、リンクリストの或る任意の要素に記憶されたデータを検索する必要があるプロセスは、各要素の内容を検査する必要がある。各要素の検査は、その要素が、プロセス検索の条件を満たすのに必要なデータを有するかどうかを判断するために必要とされる。したがって、データが一旦発見されると、リンクリストの徹底的で完全な検索が必要とされている場合を除いて、その後の検査を行うことは実際的な意味がない。また、各要素の検査は、現在のリンクリストの要素に含まれる参照を経由してリンクリストの次の要素を発見するためにも必要とされる。
これは、マルチプロセッサ環境では極めて問題となる。特に、先行要素に含まれる参照によってリンクリストの後続の要素を発見する必要があることを考えると問題となる。或るプロセスがリンクリストのデータを検索する必要があるとき、リンクリストが変更されないように、他のすべてのプロセスを食い止めなければならない。第1のプロセスが、検索中にリンクリストの制御を手放すと、第2のプロセスが、不注意で(または、より起こりそうなこととして故意であるが悪意はなく)要素を削除したり、要素をリンクリストに追加したりすることがある。これら2つの機能のいずれも、参照チェーンを破損し、その結果、第1のプロセスは検索アクティビティを完了する必要がある。このため、プロセスは、検索中、リンクリストの制御を手放すことができない。これによって、リンクリストは、或るプロセスがそのリストを使用している場合に、利用不能期間の対象の資源となる。リストにアクセスする必要のある他のプロセスは、あらゆる待ち状態のデータ検索が完了するのを強制的に待たされる。
データを取り出す方法および装置は、リンクリストをロックすること、リンクリストの要素からデータを取り出すこと、ブレークポイントに遭遇しない間はリンクリストの後続の要素に進むこと、およびブレークポイントに遭遇すると、後続の要素を「使用中」とマーキングすることを含む。次に、リンクリストがロック解除される前に、後続の要素への参照が作成される。
以下では、添付図面および図と共にいくつかの代替的な実施の形態を説明する。添付図面および図において、同じ数表示は同じ要素を示す。
図1は、データを取り出す一例示の方法を示すフロー図である。データがリンクリストに記憶されると、最初にリンクリストをロックし(ステップ5)、次いで、リンクリストの要素から情報を取り出す(ステップ10)ことによって、データがリンクリストから取り出される。この例示の方法によると、リンクリストは、ブレークポイント定義に従ってアクセスされる。ブレークポイント定義は、第2のプロセスが特定のリンクリストにアクセスできるように、その特定のリンクリストを使用する第1のプロセスがそのリンクリストの制御を手放すように要求される時を定義するのに使用される。したがって、ブレークポイントに遭遇しない限り(ステップ15)、第1のプロセスは、リンクリストからデータの取り出しを継続することができる。例えば、本方法の一変形によると、リンクリストの終端(ステップ20)に遭遇しない限り、リンクリストの後続の要素(ステップ25)に進むことによって、リンクリストからのデータの取り出しが続く。
ブレークポイントの決定は、本方法の一変形によると、単一のアクセスセッションでトラバースできるデータ要素の最大数を設定することによって行うことができる。ここで、単一のアクセスセッションは、1つのプロセスがリンクリストに排他的アクセスを行う区間として定義される。本方法のさらに別の変形によると、ブレークポイントは、単一のアクセスセッションの最大制限時間を設定することによって定義される。他のタイプのブレークポイントを使用することもでき、例示として提供する本明細書の例は、本明細書に添付した特許請求の範囲を限定するためのものではない。
図2は、リンクリストの制御を手放す一例の方法を示すフロー図である。ブレークポイントに遭遇すると(ステップ15)、この例示の方法は、リンクリストの後続の要素を「使用中」とマーキングする(ステップ30)。本方法の一変形によると、これは、リンクリストの特定の要素を使用しているプロセス数のカウント(ステップ35)を保持することによって行われる。リンクリストの後続の要素が「使用中」とマーキングされるとすぐに、その後続の要素への参照が作成される(ステップ40)。この参照は、「再開参照(recommencement reference)」と呼ばれる。その後、第1のプロセスは、リンクリストをロック解除することができ(ステップ45)、それによって、第2のプロセスはリンクリストを制御する機会を得ることが可能になる。
図3は、リンクリストへのアクセスを再開する一例の方法を示すフロー図である。第1のプロセスは、その後、リンクリストの制御を取り戻すと、リンクリストを再びロックする(ステップ50)。リンクリストへのアクセスを再開するために、第1のプロセスは、後続の要素を指し示す再開参照に従ってリンクリストの後続の要素を決定する(ステップ55)。この再開参照は、(ステップ40で説明したように)リンクリストの制御を手放す前に第1のプロセスによって作成される。後続の要素がこのようにして決定されると、データがその後続の要素から取り出される(ステップ60)。その後、リンクリストの現在の要素に含まれる後続の要素への参照を使用して、リンクリストをさらにトラバースすることができる。
図4は、後続の要素への参照を作成する一例の方法を示すフロー図である。この例の方法によると、リンクリストの後続の要素への参照は、その後続の要素へのポインタを取り出して(ステップ65)、プロセス識別子を決定し(ステップ70)、そして、ポインタをプロセス識別子に関連付ける(ステップ75)ことによって作成される。
図5は、後続の要素への参照を作成する一例の方法の適用を示す模式図である。データ要素80は、一般にデータ106を含む。また、各要素80は、一般に前方参照95および後方参照100も含む。例示として、各要素は、要素識別子85によって識別される。この図に示すように、要素識別子85は順序数を備える。データ要素の構造は、図に示すように、本方法の適用に応じて変化し得ることに留意すべきであり、データ要素80の構造、前方参照および後方参照の使用、ならびに要素識別子の使用および外観は、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。
特定のプロセスが、構成データ要素80を含むリンクリストをトラバースする際に、このプロセスは、通常、現在のデータ要素80の前方参照95を使用して、リンクリストに含まれる後続のデータ要素82を発見する。プロセスがリンクリストをバックトラックする必要がある場合、後方参照100を通じて先行のデータ要素が発見される。一例示の使用の事例によると、プロセスがリンクリストをトラバースし、ブレークポイントに遭遇するのと同様に本方法が適用される。図に示すように、プロセスは、参照符号82によって参照される特定のデータ要素に達すると、ブレークポイントに遭遇する。本方法を適用すると、図において参照符号84として参照される後続のデータ要素は、「使用中」であるとマーキングされる。本方法の一変形によると、データ要素は「使用中」指示子90も含む。したがって、後続のデータ要素は、本方法のこの変形によると、第1のプロセスがリンクリストを使用していたこと、リンクリストの制御を手放したこと、および後続のデータ要素84でリンクリストのトラバースを再開する予定であることを反映するために「使用中」指示子をインクリメントすることによって、「使用中」であるとマーキングされる。
さらに別の例示の使用の事例によると、後続のデータ要素84へのポインタは、現在のデータ要素82に含まれる前方参照91に従って決定される。前方参照91の値は、使用中テーブル105にコピーされる。したがって、使用中テーブル105は、後続のデータ要素84への関連付けられた参照(例えば、ポインタ)の発見に役立つインデックスとして、プロセス識別子フィールド110に記憶されたプロセス識別子を使用する。プロセスは、リンクリストへのアクセスを再開すると、プロセス識別子を使用して、使用中テーブル105からポインタ120を選択することに留意すべきである。したがって、選択されたポインタ120は、後続のデータ要素84を参照する。リンクリストのトラバースを継続するために、プロセスは、ポインタ120によって参照された後続のデータ要素84に含まれる前方参照または後方参照のいずれかを使用する。このポインタ120は、プロセスが、使用中テーブル105に含まれるポインタフィールド115から取り出したものである。図に示す使用中テーブル105の構造は、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。さらに、図に表したあらゆるデータ、情報、プロセス識別子、またはデータ要素の構造も、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。
図6は、リンクリストからデータ要素を削除する一例の方法を示すフロー図である。通常、データ要素がリンクリストから削除されると、隣接する先行のデータ要素および後続のデータ要素に含まれる前方参照および後方参照が、特定のデータ要素の削除を反映するために調整される。本方法によると、データ要素が「使用中」でない場合には(ステップ140)、そのデータ要素は通常通り削除される(ステップ145)。データ要素が「使用中」である場合には(ステップ140)、本方法は、そのデータ要素への参照を更新する(ステップ150)。ここで、更新される参照は、リンクリストの制御を手放す前にプロセスが作成した後続のデータ要素への参照(すなわち、再開参照)である。参照の更新は、削除されるデータ要素の後続のデータ要素を参照するための参照を更新することによって行われる。再開参照が更新されると、データ要素を削除することができる(ステップ155)。
図7は、削除前にデータ要素への参照を更新する一例の方法を示すフロー図である。この例の方法によると、削除の対象となるデータ要素への参照が、プロセス識別子に関連付けられたデータ要素へのポインタを発見することによって行われる(ステップ200)。このポインタは再開参照である。次に、ポインタおよびプロセス識別子が、互いの関連付けを解除される(ステップ205)。次に、後続のデータ要素へのポインタが決定される(ステップ210)。本方法の一変形によると、これは、削除の対象となるデータ要素から前方ポインタを取り出すことによって行われる。次に、後続のデータ要素へのポインタが、プロセス識別子に関連付けられる(ステップ215)。
図8は、データ要素を削除する一例の方法の適用を示す模式図である。一例示の使用の事例によると、一般のデータ要素80は、データ106、前方参照95、後方参照100、「使用中」指示子90、および要素識別子85を含む。この図に示すようなデータ要素の構造は、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。本方法によると、データ要素(例えば、データ要素160)をリンクリストから削除する必要があり、かつ、そのデータ要素が「使用中」とマーキングされている場合、その要素への再開参照を後続のデータ要素へ更新する必要がある。この場合も、この図において参照符号160により識別されるデータ要素を考えると、本方法の一変形は、プロセス識別子に関連付けられたポインタ165を発見することに依拠する。通常、プロセス識別子との関連は、使用中テーブル105のエントリによって暗黙的に定義される。例えば、使用中テーブル105の一例の実施の形態は、プロセス識別子フィールド110およびポインタフィールド115を含む。したがって、特定のプロセスは、それ自身のプロセス識別子に従って使用中テーブル105のポインタを発見することになる。
次に、発見されたポインタ165は、新たなポインタ170と取って代わる時に、プロセス識別子との関連付けが解除される。この新たなポインタ170は、削除されるデータ要素の後続のデータ要素162へのポインタに設定される。新たなポインタ170は、本方法の一変形によると、削除する必要のあるデータ要素160に含まれる前方参照167を取り出すことによって得ることができる。後続のデータ要素162は、本方法のさらに別の変形によると、「使用中」とマーキングされる。本方法のさらに別の変形によると、これは、後続のデータ要素162に含まれる使用中指示子175をインクリメントすることによって行われる。本明細書に添付した特許請求の範囲は、使用中テーブルの暗に含まれたどの構造にも限定されるものでなく、図に示すような使用中テーブルに含まれるどのデータにも限定されるものでないことに留意すべきである。
図9は、データの記憶および取り出しを行う装置の一例の実施の形態のブロック図である。この例の実施の形態によると、データの記憶および取り出しを行う装置305は、1つまたは2つ以上のプロセッサ300、メモリ370、入力ユニット310、および複数の出力ユニットを備える。複数の出力ユニットは、第1の出力ユニット320および1つまたは2つ以上の補助出力ユニット350と呼ばれることに留意すべきである。動作時、入力ユニット310によって、プロセッサはデータ315を受け取ることができる。出力ユニット320によって、プロセッサ300はデータ要求を受け取ることができる。通常、第1の出力ユニット320から受け取ったデータ要求によって、データ要求が補助出力ユニット350のいずれかによって受け取られたときのデータへの同時アクセスが排除される。第1の出力ユニット320は、データ325の要求を受け取ることができ、さらに、その要求に応じてデータ330を提供することもできる。1つまたは2つ以上の補助出力ユニット350も、データ要求355を受け取ることができ、その要求に応じてデータ360を提供することができる。本装置の上述した機構は、バス307によって互いに通信接続されることに留意すべきである。
また、装置305のこの例の実施の形態には、1つまたは2つ以上の機能モジュールも含まれる。機能モジュールは、通常、命令シーケンスとして実施される。機能モジュールを実施する命令シーケンスは、一代替的な実施の形態によると、メモリ370に記憶される。用語「最低限、プロセッサに〜させる(minimally causes the processor)」およびその変形は、プロセッサ300が特定の機能モジュール(すなわち、命令シーケンス)を実行する際に、プロセッサ300によって実行される機能を制限なく列挙したものとして働くように意図されていることを読み手には助言しておく。したがって、特定の機能モジュールが、添付した特許請求の範囲に画定された機能とは別の機能をプロセッサ300に実行させる一実施の形態は、本明細書に添付した特許請求の範囲に含まれることになる。データ305の記憶および取り出しを行う装置のこの例の実施の形態には、データ記憶モジュール375およびデータサービスモジュール380が含まれる。これらの双方はメモリ370に記憶される。また、メモリ370は、ブレークポイント定義385、リンクリストバッファ390、および使用中テーブル395の記憶も提供する。
図10は、データの記憶および取り出しを行う装置の一例の実施の形態の内部オペレーションを説明するデータフロー図である。データ記憶モジュール375は、プロセッサ300によって実行されると、最低限、プロセッサ300に、入力ユニット310からデータを受け取らせる。プロセッサ300は、入力ユニット310からデータを受け取ると、次に、そのデータを収容するデータ要素410を割り当て、次に、新たに割り当てられたデータ要素410にそのデータを記憶する。一例の代替的な実施の形態によると、データ記憶モジュール375は、最低限、プロセッサ300に、新たに割り当てられたデータ要素への参照を作成させる。リンクリストの形態では、プロセッサ300は、データ記憶モジュール375の実行を継続するにつれて、先頭ポインタ377または一般のデータ要素410に含まれる前方参照415からの少なくとも1つに、データ要素への参照を記憶する。一例示の使用の事例によると、データ要素410は、前方参照415、後方参照425、データストレージ420、および使用中指示子430を含む。
通常の動作時に、プロセッサ300は、さらに、データサービスモジュール380も実行する。データサービスモジュール380は、プロセッサ300によって実行されると、最低限、プロセッサ300に、第1の出力ユニット320からデータ要求を受け取らせる。このようなデータ要求が待ち状態にあると、プロセッサ300は、データサービスモジュール380のこの例の実施の形態の制御の下、1つまたは2つ以上の補助出力ユニット350からの他のすべてのデータ要求を無視する。
さらに、プロセッサ300は、データサービスモジュール380の制御の下、最低限、受け取ったデータ要求325に従って第1の出力ユニット320にデータを提供する。プロセッサ300は、データ要素参照に従って第1の出力ユニット320にデータを提供する。データ要素参照には、先頭ポインタ377、または、一般のデータ要素410に含まれる前方参照415のいずれかが含まれ得る。データ要素参照の管理は、一代替的な実施の形態によると、既知のリンクリスト技法と整合して行われる。データが特定のデータ要素から提供されると、プロセッサ300は、ブレークポイントに遭遇しない限り、さらに、最低限、そのデータ要素参照を後続のデータ要素に進める。一代替的な実施の形態によると、データサービスモジュール380は、プロセッサ300によって実行されると、最低限、プロセッサ300に、メモリ370に記憶されたブレークポイント定義385を調べることによりブレークポイントを決定させる。ブレークポイント定義385は、プロセッサ300が、メモリ370に記憶されたリンクリストバッファ390に保持されるリンクリストの制御を手放す前にトラバースするデータ要素の個数を反映した個数指示子を含むことができる。さらに別の代替的な実施の形態によると、ブレークポイント定義385は、プロセッサ300が、メモリ370に記憶されたリンクリストバッファ390に保持されるリンクリストへのアクセスを独占できる最大時間量を表す時間指示子を備える。
プロセッサ300は、データサービスモジュール380のこの例の実施の形態の実行を継続するにつれて、ブレークポイントに遭遇すると、後続のデータ要素を「使用中」とマーキングする。これは、データサービスモジュール380の一代替的な実施の形態によると、プロセッサ300が一般のデータ要素410に含まれる使用カウンタ430をインクリメントした時に行われる。後続のデータ要素が「使用中」とマーキングされると、データサービスモジュール380は、プロセッサ300によって実行されて、さらに、最低限、プロセッサ300に、後続のデータ要素への再開参照を作成させ、次に、プロセッサ300に、例えば1つまたは2つ以上の補助出力ユニット350からの他のデータ要求を認識させる。
プロセッサ300は、データサービスモジュール380の実行を継続するにつれて、本方法の教示によるブレークポイントから復帰した後に、或るデータ要求にサービスを提供し続けることが必要な場合がある。したがって、データサービスモジュール380の一代替的な実施の形態は、プロセッサ300によって実行されると、さらに、最低限、プロセッサに、他のすべてのデータ要求を排除して、第1の出力ユニット320からのデータ要求を再度認識させる。次に、プロセッサ300は、プロセッサ300が前に作成した再開参照によるデータ要素からのデータを第1の出力ユニット320に提供する。すでに説明したように、プロセッサ300は、ブレークポイントを認識した後であって、メモリ370に記憶されたリンクリストバッファ390に保持されるリンクリストの制御を手放す前に、再開参照を作成する。
プロセッサ300は、データサービスモジュール380の一代替的な実施の形態を実行するにつれて、現在のデータ要素の後続のデータ要素へのポインタを取り出すことにより、再開参照を作成する。次に、プロセッサ300は、第1の出力ユニット320から受け取ったデータ要求の識別子を決定する。この識別子には、一代替的な実施の形態によると、元のデータ要求325に関連付けられたプロセス識別子(PID)321が含まれる。次に、プロセッサ300は、さらに、最低限、取り出したポインタおよび決定した識別子を連想形式で記憶する。例えば、さらに別の例の代替的な実施の形態によると、データサービスモジュール380は、最低限、プロセッサ300に、決定した識別子および取り出したポインタを、メモリ370に保持された使用中テーブル395に記憶させる。使用中テーブル395の各レコードは、プロセス識別子フィールド400および参照フィールド405を含む。したがって、プロセッサ300は、データサービスモジュール380を実行し続けるにつれて、さらに、最低限、決定した識別子をプロセス識別子フィールドに記憶し、取り出したポインタを参照フィールド405に記憶する。
さらに別の代替的な実施の形態によると、データの記憶および取り出しを行う装置305は、さらに、第1の出力ユニット320が受け取ったデータ削除要求に応答することができる。したがって、データサービスモジュール380の一代替的な実施の形態は、プロセッサ300によって実行されると、最低限、プロセッサ300に、削除されるデータ要素が「使用中」であるかどうかを最初に判断することによって、データ要素を削除させる。削除されるデータ要素が「使用中」である場合、プロセッサ300は、削除されるデータ要素の後続のデータ要素を参照するように再開参照を更新する。このオペレーションは、本方法の技法および教示に従ってプロセッサ300により行われる。例えば、データサービスモジュール380の一代替的な実施の形態は、プロセッサ300によって実行されると、最低限、プロセッサ300に、使用中テーブル395に記憶されたデータ要求識別子に従ってポインタを発見させる。したがって、使用中テーブル395に存在するポインタは、削除されるデータ要素の後続のデータ要素を指し示す新たなポインタに取り替えられる。
本方法によるデータの取り出しを可能にする、これまで説明した機能モジュール(すなわち、それらの対応する命令シーケンス)は、一代替的な実施の形態によると、コンピュータ可読媒体に与えられる。このような媒体の例には、ランダムアクセスメモリ、読み出し専用メモリ(ROM)、コンパクトディスクROM(CD ROM)、フロッピィ(登録商標)ディスク、ハードディスクドライブ、磁気テープ、およびデジタル多用途ディスク(DVD)が含まれるが、これらに限定されるものではない。このようなコンピュータ可読媒体は、単独で、または、組み合わさって、スタンドアロン製品を構成することができ、汎用計算プラットフォームを、本明細書に提示した技法および教示に従ってデータを取り出すことができるデバイスに変換するのに使用することができる。したがって、本明細書に添付した特許請求の範囲は、本明細書で説明した本方法および教示のすべての実行を可能にするような命令シーケンスを与えられたこのようなコンピュータ可読媒体を含むことになる。
いくつかの代替的で例示の実施の形態の観点から本方法および本装置を説明してきたが、明細書を読み、図面を検討すると、当業者にはその代替物、変更、並べ替え、および等価物が明らかになると考えられる。したがって、本明細書に添付した特許請求の範囲の真の精神および範囲は、このようなすべての代替物、変更、並べ替え、および等価物を含むことが意図されている。
データを取り出す一例示の方法を示すフロー図である。 リンクリストの制御を手放す一例の方法を示すフロー図である。 リンクリストへのアクセスを再開する一例の方法を示すフロー図である。 後続の要素への参照を作成する一例の方法を示すフロー図である。 後続の要素への参照を作成する一例の方法の適用を示す模式図である。 リンクリストからデータ要素を削除する一例の方法を示すフロー図である。 削除前にデータ要素への参照を更新する一例の方法を示すフロー図である。 データ要素を削除する一例の方法の適用を示す模式図である。 データの記憶および取り出しを行う装置の一例の実施の形態のブロック図である。 データの記憶および取り出しを行う装置の一例の実施の形態の内部オペレーションを説明するデータフロー図である。
符号の説明
80,82 データ要素
84 後続のデータ要素
85 要素識別子
90 「使用中」指示子
91 前方参照
95 前方参照
100 後方参照
105 使用中テーブル
106 データ
110 プロセス識別子フィールド
115 ポインタフィールド
120 ポインタ
160 データ要素
162 後続のデータ要素
165 ポインタ
167 前方参照
170 新たなポインタ
175 使用中指示子

Claims (10)

  1. リンクリストをロックする(5)こと、
    前記リンクリストの要素からデータを取り出し(10)、また、ブレークポイントに遭遇しない(15)間は後続の要素に進む(25)こと、
    ブレークポイントに遭遇する(15)と、前記リンクリストの前記後続の要素を使用中とマーキングする(30)こと、
    前記後続の要素への再開参照を作成する(40)こと、および
    前記リンクリストのロックを解除する(45)こと、
    を含む、データを取り出す方法。
  2. 前記リンクリストをロックする(50)こと、
    前記再開参照に従って前記リンクリストの後続の要素を決定する(55)こと、および
    前記決定した後続の要素からデータを取り出す(60)こと、
    をさらに含む、請求項1に記載のデータを取り出す方法。
  3. 前記後続の要素への再開参照を作成することは、
    前記後続の要素へのポインタを取り出す(65)こと、
    現在のプロセスのプロセス識別子を決定する(70)こと、および
    前記ポインタを前記プロセス識別子に関連付ける(75)こと、
    を含む、請求項1に記載のデータを取り出す方法。
  4. 削除される要素が使用中であるかどうかを判断する(140)こと、
    前記要素が使用中である場合には、前記要素への再開参照を、削除される前記データ要素の後続のデータ要素を参照するように更新する(150)こと、および
    前記要素を削除する(155)こと、
    を含む、リンクリストから要素を削除する方法。
  5. 前記要素への再開参照を更新することは、プロセス識別子に関連付けられたポインタを発見する(200)こと、
    前記ポインタと前記プロセス識別子との関連付けを解除する(205)こと、
    後続の要素へのポインタを決定する(210)こと、および
    前記プロセス識別子を前記新たに決定したポインタに関連付ける(215)こと、
    を含む、請求項4に記載のリンクリストから要素を削除する方法。
  6. 命令シーケンスを実行できるプロセッサ(300)と、
    命令シーケンスを記憶するメモリ(370)と、
    データを受信する入力ユニット(310)と、
    受信したデータ要求に従ってデータを提供する第1の出力ユニット(320)と、
    受信したデータ要求に従ってデータを提供する1つまたは2つ以上の補助出力ユニット(350)と、
    前記メモリに記憶された命令シーケンスであって、
    データ記憶モジュール(375)であって、前記プロセッサ(300)によって実行されると、最低限、前記プロセッサ(300)に、
    前記入力ユニットからデータを受け取らせ、
    前記データを収容するデータ要素(410)を割り当てさせ、
    前記データ要素への参照を作成させ、
    先頭ポインタ(377)および先行のデータ要素に含まれる前方ポインタ(415)の少なくとも1つに前記参照を記憶させ、
    前記データ要素に前記データを記憶させる、
    データ記憶モジュールと、
    データサービスモジュール(380)であって、前記プロセッサ(300)によって実行されると、最低限、前記プロセッサ(300)に、
    他のすべてのデータ要求を排除して、前記第1の出力ユニット(320)からのデータ要求を認識させ、
    データ要素参照に従ってデータ要素から前記第1の出力ユニット(320)にデータを提供させ、また、ブレークポイントに遭遇しない間は前記データ要素参照を後続のデータ要素へ進めさせ、
    ブレークポイントに遭遇すると、後続のデータ要素を使用中とマーキングさせ(430)、
    後続のデータ要素への再開参照を作成させ、
    他のデータ要求の認識を可能にさせる、
    データサービスモジュールと、
    を含む命令シーケンスと、
    を備える、データの記憶および取り出しを行う装置。
  7. 前記データサービスモジュールは、前記プロセッサ(300)によって実行されると、さらに、最低限、前記プロセッサ(300)に、
    他のすべてのデータ要求を排除して前記第1の出力ユニットからのデータ要求を認識させ、
    前記再開参照に従ってデータ要素から前記第1の出力ユニットへデータを提供させる、
    請求項6に記載のデータの記憶および取り出しを行う装置。
  8. 前記データサービスモジュールは、最低限、前記プロセッサに、
    現在のデータ要素の後続のデータ要素へのポインタを取り出させ、
    前記第1の出力ユニットから受け取った前記データ要求に関連付けられた識別子を決定させ、
    前記取り出したポインタおよび前記決定した識別子を連想形式で記憶させる、
    ことによって、前記プロセッサに再開参照を作成させる、
    請求項6に記載のデータの記憶および取り出しを行う装置。
  9. 前記データサービスモジュールは、さらに、最低限、前記プロセッサに、
    削除されるデータ要素が使用中(430)であるかどうかを判断させ、
    前記削除されるデータ要素の後続のデータ要素を参照するように再開参照を更新させ、
    受け取ったデータ削除要求に従って前記データ要素を削除させる、
    ことによって、最低限、前記プロセッサに、出力ユニットからの前記データ削除要求を受け取らせる、
    請求項6に記載のデータの記憶および取り出しを行う装置。
  10. 前記データサービスモジュールは、最低限、前記プロセッサに、
    データ要求識別子に従ってポインタを発見させ、
    前記ポインタを、前記削除されるデータ要素の後続のデータ要素へのポインタと取り替えさせる、
    ことによって、前記プロセッサに再開参照を更新させる、
    請求項9に記載のデータの記憶および取り出しを行う装置。
JP2005113248A 2004-04-14 2005-04-11 リンクリストへのマルチプロセスアクセス方法および装置 Expired - Fee Related JP4177833B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/823,845 US8977651B2 (en) 2004-04-14 2004-04-14 Method and apparatus for multi-process access to a linked-list

Publications (2)

Publication Number Publication Date
JP2005302030A true JP2005302030A (ja) 2005-10-27
JP4177833B2 JP4177833B2 (ja) 2008-11-05

Family

ID=35097552

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005113248A Expired - Fee Related JP4177833B2 (ja) 2004-04-14 2005-04-11 リンクリストへのマルチプロセスアクセス方法および装置

Country Status (2)

Country Link
US (1) US8977651B2 (ja)
JP (1) JP4177833B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035988B1 (en) * 2003-03-17 2006-04-25 Network Equipment Technologies, Inc. Hardware implementation of an N-way dynamic linked list
US20100030802A1 (en) * 2004-10-21 2010-02-04 Access Co., Ltd. System and method tha allows relational data to be modeled efficiently and synchronized without creating dangling references
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8874535B2 (en) * 2012-10-16 2014-10-28 International Business Machines Corporation Performance of RCU-based searches and updates of cyclic data structures
CN104239564B (zh) * 2014-09-28 2018-02-09 深圳市锐明技术股份有限公司 一种文件索引组织及修复的方法及装置
CN114780325B (zh) * 2022-06-21 2022-09-30 新华三信息技术有限公司 一种PCIe设备检测方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151688A (en) * 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5924098A (en) 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6345313B1 (en) * 1997-08-22 2002-02-05 Sun Microsystems, Inc. Recovery of synchronization constructs
US6785888B1 (en) * 1997-08-29 2004-08-31 International Business Machines Corporation Memory allocator for a multiprocessor computer system
US6449614B1 (en) * 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
JP2000315162A (ja) 1999-04-30 2000-11-14 Matsushita Electric Ind Co Ltd 制御ブロック処理装置及び制御ブロック処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US6735760B1 (en) * 2000-11-08 2004-05-11 Sun Microsystems, Inc. Relaxed lock protocol
US7213244B2 (en) * 2003-03-13 2007-05-01 International Business Machines Corporation Apparatus and method for distribution of work on a doubly linked list among processing threads

Also Published As

Publication number Publication date
JP4177833B2 (ja) 2008-11-05
US20050234933A1 (en) 2005-10-20
US8977651B2 (en) 2015-03-10

Similar Documents

Publication Publication Date Title
US8341128B1 (en) Concurrency control using an effective change stack and tenant-based isolation
JP4313323B2 (ja) サーチ可能なアーカイブ
US8010499B2 (en) Database staging area read-through or forced flush with dirty notification
US20070118547A1 (en) Efficient index versioning in multi-version databases
US20210303566A1 (en) Data storage using a bi-temporal index
JP4177833B2 (ja) リンクリストへのマルチプロセスアクセス方法および装置
EP3242227B1 (en) Page querying method and data processing node in oltp cluster database
US20140320498A1 (en) Terminal device, information processing method, and computer program product
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
EP1850250A1 (en) Method and system for renewing an index
CN113157600A (zh) 一种叠瓦式硬盘的空间分配方法、文件存储系统及服务器
US8332595B2 (en) Techniques for improving parallel scan operations
KR101656077B1 (ko) 암시적 타임 칼럼값을 이용한 시간 기반 파티셔닝 시스템 및 방법
CN108694219B (zh) 一种数据处理方法及装置
JP2005234945A (ja) 同時実行制御方法及び装置
JP6688433B2 (ja) 計算機システム
US20050108205A1 (en) Data access and retrieval mechanism
US20240193186A1 (en) Database layered filtering
JP2000148548A (ja) 不要レコード削除装置
JP2843748B2 (ja) 排他制御方式
JP3585264B2 (ja) データベースシステム及びデータ検索方法
JP4623917B2 (ja) データベース構築方法およびデータベース構築システム
JP2838988B2 (ja) 外部記憶装置におけるファイル格納システム
JP4623644B2 (ja) 大容量長期保存データに対する全文検索処理システム
JP2641399B2 (ja) フアイル管理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080808

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080822

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130829

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350