(57)【要約】【課題】  リンクリストへのマルチプロセスアクセス方法および装置を提供する。【解決手段】  リンクリストをロックする（５）こと、前記リンクリストの要素からデータを取り出し（１０）、また、ブレークポイントに遭遇しない（１５）間は後続の要素に進む（２５）こと、ブレークポイントに遭遇する（１５）と、前記リンクリストの前記後続の要素を使用中とマーキングする（３０）こと、前記後続の要素への再開参照を作成する（４０）こと、および前記リンクリストのロックを解除する（４５）こと、を含む、データを取り出す方法とする。【選択図】          図１
2005302030.tif 000002
【特許請求の範囲】
【請求項１】
リンクリストをロックする（５）こと、
前記リンクリストの要素からデータを取り出し（１０）、また、ブレークポイントに遭遇しない（１５）間は後続の要素に進む（２５）こと、
ブレークポイントに遭遇する（１５）と、前記リンクリストの前記後続の要素を使用中とマーキングする（３０）こと、
前記後続の要素への再開参照を作成する（４０）こと、および
前記リンクリストのロックを解除する（４５）こと、
を含む、データを取り出す方法。
【請求項２】
前記リンクリストをロックする（５０）こと、
前記再開参照に従って前記リンクリストの後続の要素を決定する（５５）こと、および
前記決定した後続の要素からデータを取り出す（６０）こと、
をさらに含む、請求項１に記載のデータを取り出す方法。
【請求項３】
前記後続の要素への再開参照を作成することは、
前記後続の要素へのポインタを取り出す（６５）こと、
現在のプロセスのプロセス識別子を決定する（７０）こと、および
前記ポインタを前記プロセス識別子に関連付ける（７５）こと、
を含む、請求項１に記載のデータを取り出す方法。
【請求項４】
削除される要素が使用中であるかどうかを判断する（１４０）こと、
前記要素が使用中である場合には、前記要素への再開参照を、削除される前記データ要素の後続のデータ要素を参照するように更新する（１５０）こと、および
前記要素を削除する（１５５）こと、
を含む、リンクリストから要素を削除する方法。
【請求項５】
前記要素への再開参照を更新することは、プロセス識別子に関連付けられたポインタを発見する（２００）こと、
前記ポインタと前記プロセス識別子との関連付けを解除する（２０５）こと、
後続の要素へのポインタを決定する（２１０）こと、および
前記プロセス識別子を前記新たに決定したポインタに関連付ける（２１５）こと、
を含む、請求項４に記載のリンクリストから要素を削除する方法。
【請求項６】
命令シーケンスを実行できるプロセッサ（３００）と、
命令シーケンスを記憶するメモリ（３７０）と、
データを受信する入力ユニット（３１０）と、
受信したデータ要求に従ってデータを提供する第１の出力ユニット（３２０）と、
受信したデータ要求に従ってデータを提供する１つまたは２つ以上の補助出力ユニット（３５０）と、
前記メモリに記憶された命令シーケンスであって、
データ記憶モジュール（３７５）であって、前記プロセッサ（３００）によって実行されると、最低限、前記プロセッサ（３００）に、
前記入力ユニットからデータを受け取らせ、
前記データを収容するデータ要素（４１０）を割り当てさせ、
前記データ要素への参照を作成させ、
先頭ポインタ（３７７）および先行のデータ要素に含まれる前方ポインタ（４１５）の少なくとも１つに前記参照を記憶させ、
前記データ要素に前記データを記憶させる、
データ記憶モジュールと、
データサービスモジュール（３８０）であって、前記プロセッサ（３００）によって実行されると、最低限、前記プロセッサ（３００）に、
他のすべてのデータ要求を排除して、前記第１の出力ユニット（３２０）からのデータ要求を認識させ、
データ要素参照に従ってデータ要素から前記第１の出力ユニット（３２０）にデータを提供させ、また、ブレークポイントに遭遇しない間は前記データ要素参照を後続のデータ要素へ進めさせ、
ブレークポイントに遭遇すると、後続のデータ要素を使用中とマーキングさせ（４３０）、
後続のデータ要素への再開参照を作成させ、
他のデータ要求の認識を可能にさせる、
データサービスモジュールと、
を含む命令シーケンスと、
を備える、データの記憶および取り出しを行う装置。
【請求項７】
前記データサービスモジュールは、前記プロセッサ（３００）によって実行されると、さらに、最低限、前記プロセッサ（３００）に、
他のすべてのデータ要求を排除して前記第１の出力ユニットからのデータ要求を認識させ、
前記再開参照に従ってデータ要素から前記第１の出力ユニットへデータを提供させる、
請求項６に記載のデータの記憶および取り出しを行う装置。
【請求項８】
前記データサービスモジュールは、最低限、前記プロセッサに、
現在のデータ要素の後続のデータ要素へのポインタを取り出させ、
前記第１の出力ユニットから受け取った前記データ要求に関連付けられた識別子を決定させ、
前記取り出したポインタおよび前記決定した識別子を連想形式で記憶させる、
ことによって、前記プロセッサに再開参照を作成させる、
請求項６に記載のデータの記憶および取り出しを行う装置。
【請求項９】
前記データサービスモジュールは、さらに、最低限、前記プロセッサに、
削除されるデータ要素が使用中（４３０）であるかどうかを判断させ、
前記削除されるデータ要素の後続のデータ要素を参照するように再開参照を更新させ、
受け取ったデータ削除要求に従って前記データ要素を削除させる、
ことによって、最低限、前記プロセッサに、出力ユニットからの前記データ削除要求を受け取らせる、
請求項６に記載のデータの記憶および取り出しを行う装置。
【請求項１０】
前記データサービスモジュールは、最低限、前記プロセッサに、
データ要求識別子に従ってポインタを発見させ、
前記ポインタを、前記削除されるデータ要素の後続のデータ要素へのポインタと取り替えさせる、
ことによって、前記プロセッサに再開参照を更新させる、
請求項９に記載のデータの記憶および取り出しを行う装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リンクリストへのマルチプロセスアクセス方法および装置に関する。
【背景技術】
【０００２】
コンピュータシステムは、従来、データの記憶および取り出しのために使用されてきた。データは情報を構成する生の材料である。データは、コンピュータ可読媒体に記憶されたビットおよびバイトで構成される。これらの定義はさておき、データは、特定の用途に適した任意の方法で定義することができる。情報は、一般に、データによって表される有用な材料と考えられる。例えば、株価履歴に関する報告は、この定義によると、情報である。１つまたは２つ以上の期間の間の実際の株価は、一般に、情報を構成する生のデータとみなされる。この場合も、これらの定義は、ここでは、いくつかの基本概念を示すためにのみ提示される。事実、これらの用語の実際の定義は、広く議論されてきており、おそらくこれからも広く議論され続けるであろう。
【０００３】
データまたは情報を指すのに使用される定義的格言が何であろうとも、１つの共通の目的は、依然として、データ（および／または情報）の効率的な記憶、取り出し、および管理を行うことにある。情報の記憶、取り出し、および管理は、データ構造体を操作するプログラムアルゴリズムの使用を通じて行われる。今日、これらのプログラムアルゴリズムは、コンピュータシステム上で実行および維持される。
【０００４】
データ構造体は、関係のあるデータを収集するためのメカニズムである。例えば、関連のあるデータには、特定の株式取引日の株始値および株終値が含まれ得る。関連のあるデータの別の例には、在庫ストック品目番号、その品目の説明、および在庫数量値が含まれ得る。これらの例は、ここでは、いくつかの基本概念をさらに示すために提示されたものであり、以下の詳細の説明に導入される他の概念の適用を制限するためのものではない。
【０００５】
一般に使用されるデータ構造体は、リンクリストとして知られている。リンクリストは、１つまたは２つ以上のデータ要素の集まりを備える。通常、これらのデータ要素のそれぞれは、少なくとも１つのデータコンテナ、および、別のデータ要素への少なくとも１つの参照を含む。一般に、参照される要素は、要素のチェーン、したがって用語リンクリスト、における次の要素である。用語「データ要素」（または単に「要素」）は、本明細書で使用されるように、特定の定義の単一のデータ構造体を指すことに留意すべきである。例えば、リンクリストは、１つまたは２つ以上のこのような要素を含むことになる。
【０００６】
リンクリストは、一般に、データ（または読み手の視点に従った情報）を保持するのに使用される。データがリンクリストに一旦記憶されると、必要なデータを発見するためにリンクリストを「トラバース」することはかなり簡単なタスクである。リンクリストの１つの共通の用途では、データは、まず、例えば、ハードディスクドライブまたはコンパクトディスク（ＣＤ）読み出し専用メモリ（ＲＯＭ）といった低速のコンピュータ可読媒体から取り出される。データは、低速のコンピュータ可読媒体から一旦取り出されると、リンクリストに記憶され、リンクリストからデータを高速に取り出すことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
リンクリストに関連した１つの問題は、このタイプのデータ構造体が、複数のプロセスによるアクセスに容易に対応しないということである。例えば、リンクリストが、小売店の在庫に関するデータを記憶するのに使用される状況を考える。複数の売り場専用端末がリンクリストにアクセスしたり、リンクリストを変更したりする必要がある場合、遅延がかなり大きくなるおそれがある。これは、まさにリンクリストの性質によるものである。リンクリストを使用するために、リストは、特定のアクセスセッションの間、一定の状態でなければならない。リンクリストの各要素は、先行要素によって参照されるので、リンクリストの或る任意の要素に記憶されたデータを検索する必要があるプロセスは、各要素の内容を検査する必要がある。各要素の検査は、その要素が、プロセス検索の条件を満たすのに必要なデータを有するかどうかを判断するために必要とされる。したがって、データが一旦発見されると、リンクリストの徹底的で完全な検索が必要とされている場合を除いて、その後の検査を行うことは実際的な意味がない。また、各要素の検査は、現在のリンクリストの要素に含まれる参照を経由してリンクリストの次の要素を発見するためにも必要とされる。
【０００８】
これは、マルチプロセッサ環境では極めて問題となる。特に、先行要素に含まれる参照によってリンクリストの後続の要素を発見する必要があることを考えると問題となる。或るプロセスがリンクリストのデータを検索する必要があるとき、リンクリストが変更されないように、他のすべてのプロセスを食い止めなければならない。第１のプロセスが、検索中にリンクリストの制御を手放すと、第２のプロセスが、不注意で（または、より起こりそうなこととして故意であるが悪意はなく）要素を削除したり、要素をリンクリストに追加したりすることがある。これら２つの機能のいずれも、参照チェーンを破損し、その結果、第１のプロセスは検索アクティビティを完了する必要がある。このため、プロセスは、検索中、リンクリストの制御を手放すことができない。これによって、リンクリストは、或るプロセスがそのリストを使用している場合に、利用不能期間の対象の資源となる。リストにアクセスする必要のある他のプロセスは、あらゆる待ち状態のデータ検索が完了するのを強制的に待たされる。
【課題を解決するための手段】
【０００９】
データを取り出す方法および装置は、リンクリストをロックすること、リンクリストの要素からデータを取り出すこと、ブレークポイントに遭遇しない間はリンクリストの後続の要素に進むこと、およびブレークポイントに遭遇すると、後続の要素を「使用中」とマーキングすることを含む。次に、リンクリストがロック解除される前に、後続の要素への参照が作成される。
【００１０】
以下では、添付図面および図と共にいくつかの代替的な実施の形態を説明する。添付図面および図において、同じ数表示は同じ要素を示す。
【発明を実施するための最良の形態】
【００１１】
図１は、データを取り出す一例示の方法を示すフロー図である。データがリンクリストに記憶されると、最初にリンクリストをロックし（ステップ５）、次いで、リンクリストの要素から情報を取り出す（ステップ１０）ことによって、データがリンクリストから取り出される。この例示の方法によると、リンクリストは、ブレークポイント定義に従ってアクセスされる。ブレークポイント定義は、第２のプロセスが特定のリンクリストにアクセスできるように、その特定のリンクリストを使用する第１のプロセスがそのリンクリストの制御を手放すように要求される時を定義するのに使用される。したがって、ブレークポイントに遭遇しない限り（ステップ１５）、第１のプロセスは、リンクリストからデータの取り出しを継続することができる。例えば、本方法の一変形によると、リンクリストの終端（ステップ２０）に遭遇しない限り、リンクリストの後続の要素（ステップ２５）に進むことによって、リンクリストからのデータの取り出しが続く。
【００１２】
ブレークポイントの決定は、本方法の一変形によると、単一のアクセスセッションでトラバースできるデータ要素の最大数を設定することによって行うことができる。ここで、単一のアクセスセッションは、１つのプロセスがリンクリストに排他的アクセスを行う区間として定義される。本方法のさらに別の変形によると、ブレークポイントは、単一のアクセスセッションの最大制限時間を設定することによって定義される。他のタイプのブレークポイントを使用することもでき、例示として提供する本明細書の例は、本明細書に添付した特許請求の範囲を限定するためのものではない。
【００１３】
図２は、リンクリストの制御を手放す一例の方法を示すフロー図である。ブレークポイントに遭遇すると（ステップ１５）、この例示の方法は、リンクリストの後続の要素を「使用中」とマーキングする（ステップ３０）。本方法の一変形によると、これは、リンクリストの特定の要素を使用しているプロセス数のカウント（ステップ３５）を保持することによって行われる。リンクリストの後続の要素が「使用中」とマーキングされるとすぐに、その後続の要素への参照が作成される（ステップ４０）。この参照は、「再開参照（recommencement reference）」と呼ばれる。その後、第１のプロセスは、リンクリストをロック解除することができ（ステップ４５）、それによって、第２のプロセスはリンクリストを制御する機会を得ることが可能になる。
【００１４】
図３は、リンクリストへのアクセスを再開する一例の方法を示すフロー図である。第１のプロセスは、その後、リンクリストの制御を取り戻すと、リンクリストを再びロックする（ステップ５０）。リンクリストへのアクセスを再開するために、第１のプロセスは、後続の要素を指し示す再開参照に従ってリンクリストの後続の要素を決定する（ステップ５５）。この再開参照は、（ステップ４０で説明したように）リンクリストの制御を手放す前に第１のプロセスによって作成される。後続の要素がこのようにして決定されると、データがその後続の要素から取り出される（ステップ６０）。その後、リンクリストの現在の要素に含まれる後続の要素への参照を使用して、リンクリストをさらにトラバースすることができる。
【００１５】
図４は、後続の要素への参照を作成する一例の方法を示すフロー図である。この例の方法によると、リンクリストの後続の要素への参照は、その後続の要素へのポインタを取り出して（ステップ６５）、プロセス識別子を決定し（ステップ７０）、そして、ポインタをプロセス識別子に関連付ける（ステップ７５）ことによって作成される。
【００１６】
図５は、後続の要素への参照を作成する一例の方法の適用を示す模式図である。データ要素８０は、一般にデータ１０６を含む。また、各要素８０は、一般に前方参照９５および後方参照１００も含む。例示として、各要素は、要素識別子８５によって識別される。この図に示すように、要素識別子８５は順序数を備える。データ要素の構造は、図に示すように、本方法の適用に応じて変化し得ることに留意すべきであり、データ要素８０の構造、前方参照および後方参照の使用、ならびに要素識別子の使用および外観は、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。
【００１７】
特定のプロセスが、構成データ要素８０を含むリンクリストをトラバースする際に、このプロセスは、通常、現在のデータ要素８０の前方参照９５を使用して、リンクリストに含まれる後続のデータ要素８２を発見する。プロセスがリンクリストをバックトラックする必要がある場合、後方参照１００を通じて先行のデータ要素が発見される。一例示の使用の事例によると、プロセスがリンクリストをトラバースし、ブレークポイントに遭遇するのと同様に本方法が適用される。図に示すように、プロセスは、参照符号８２によって参照される特定のデータ要素に達すると、ブレークポイントに遭遇する。本方法を適用すると、図において参照符号８４として参照される後続のデータ要素は、「使用中」であるとマーキングされる。本方法の一変形によると、データ要素は「使用中」指示子９０も含む。したがって、後続のデータ要素は、本方法のこの変形によると、第１のプロセスがリンクリストを使用していたこと、リンクリストの制御を手放したこと、および後続のデータ要素８４でリンクリストのトラバースを再開する予定であることを反映するために「使用中」指示子をインクリメントすることによって、「使用中」であるとマーキングされる。
【００１８】
さらに別の例示の使用の事例によると、後続のデータ要素８４へのポインタは、現在のデータ要素８２に含まれる前方参照９１に従って決定される。前方参照９１の値は、使用中テーブル１０５にコピーされる。したがって、使用中テーブル１０５は、後続のデータ要素８４への関連付けられた参照（例えば、ポインタ）の発見に役立つインデックスとして、プロセス識別子フィールド１１０に記憶されたプロセス識別子を使用する。プロセスは、リンクリストへのアクセスを再開すると、プロセス識別子を使用して、使用中テーブル１０５からポインタ１２０を選択することに留意すべきである。したがって、選択されたポインタ１２０は、後続のデータ要素８４を参照する。リンクリストのトラバースを継続するために、プロセスは、ポインタ１２０によって参照された後続のデータ要素８４に含まれる前方参照または後方参照のいずれかを使用する。このポインタ１２０は、プロセスが、使用中テーブル１０５に含まれるポインタフィールド１１５から取り出したものである。図に示す使用中テーブル１０５の構造は、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。さらに、図に表したあらゆるデータ、情報、プロセス識別子、またはデータ要素の構造も、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。
【００１９】
図６は、リンクリストからデータ要素を削除する一例の方法を示すフロー図である。通常、データ要素がリンクリストから削除されると、隣接する先行のデータ要素および後続のデータ要素に含まれる前方参照および後方参照が、特定のデータ要素の削除を反映するために調整される。本方法によると、データ要素が「使用中」でない場合には（ステップ１４０）、そのデータ要素は通常通り削除される（ステップ１４５）。データ要素が「使用中」である場合には（ステップ１４０）、本方法は、そのデータ要素への参照を更新する（ステップ１５０）。ここで、更新される参照は、リンクリストの制御を手放す前にプロセスが作成した後続のデータ要素への参照（すなわち、再開参照）である。参照の更新は、削除されるデータ要素の後続のデータ要素を参照するための参照を更新することによって行われる。再開参照が更新されると、データ要素を削除することができる（ステップ１５５）。
【００２０】
図７は、削除前にデータ要素への参照を更新する一例の方法を示すフロー図である。この例の方法によると、削除の対象となるデータ要素への参照が、プロセス識別子に関連付けられたデータ要素へのポインタを発見することによって行われる（ステップ２００）。このポインタは再開参照である。次に、ポインタおよびプロセス識別子が、互いの関連付けを解除される（ステップ２０５）。次に、後続のデータ要素へのポインタが決定される（ステップ２１０）。本方法の一変形によると、これは、削除の対象となるデータ要素から前方ポインタを取り出すことによって行われる。次に、後続のデータ要素へのポインタが、プロセス識別子に関連付けられる（ステップ２１５）。
【００２１】
図８は、データ要素を削除する一例の方法の適用を示す模式図である。一例示の使用の事例によると、一般のデータ要素８０は、データ１０６、前方参照９５、後方参照１００、「使用中」指示子９０、および要素識別子８５を含む。この図に示すようなデータ要素の構造は、本明細書に添付した特許請求の範囲を限定するためのものでないことに留意すべきである。本方法によると、データ要素（例えば、データ要素１６０）をリンクリストから削除する必要があり、かつ、そのデータ要素が「使用中」とマーキングされている場合、その要素への再開参照を後続のデータ要素へ更新する必要がある。この場合も、この図において参照符号１６０により識別されるデータ要素を考えると、本方法の一変形は、プロセス識別子に関連付けられたポインタ１６５を発見することに依拠する。通常、プロセス識別子との関連は、使用中テーブル１０５のエントリによって暗黙的に定義される。例えば、使用中テーブル１０５の一例の実施の形態は、プロセス識別子フィールド１１０およびポインタフィールド１１５を含む。したがって、特定のプロセスは、それ自身のプロセス識別子に従って使用中テーブル１０５のポインタを発見することになる。
【００２２】
次に、発見されたポインタ１６５は、新たなポインタ１７０と取って代わる時に、プロセス識別子との関連付けが解除される。この新たなポインタ１７０は、削除されるデータ要素の後続のデータ要素１６２へのポインタに設定される。新たなポインタ１７０は、本方法の一変形によると、削除する必要のあるデータ要素１６０に含まれる前方参照１６７を取り出すことによって得ることができる。後続のデータ要素１６２は、本方法のさらに別の変形によると、「使用中」とマーキングされる。本方法のさらに別の変形によると、これは、後続のデータ要素１６２に含まれる使用中指示子１７５をインクリメントすることによって行われる。本明細書に添付した特許請求の範囲は、使用中テーブルの暗に含まれたどの構造にも限定されるものでなく、図に示すような使用中テーブルに含まれるどのデータにも限定されるものでないことに留意すべきである。
【００２３】
図９は、データの記憶および取り出しを行う装置の一例の実施の形態のブロック図である。この例の実施の形態によると、データの記憶および取り出しを行う装置３０５は、１つまたは２つ以上のプロセッサ３００、メモリ３７０、入力ユニット３１０、および複数の出力ユニットを備える。複数の出力ユニットは、第１の出力ユニット３２０および１つまたは２つ以上の補助出力ユニット３５０と呼ばれることに留意すべきである。動作時、入力ユニット３１０によって、プロセッサはデータ３１５を受け取ることができる。出力ユニット３２０によって、プロセッサ３００はデータ要求を受け取ることができる。通常、第１の出力ユニット３２０から受け取ったデータ要求によって、データ要求が補助出力ユニット３５０のいずれかによって受け取られたときのデータへの同時アクセスが排除される。第１の出力ユニット３２０は、データ３２５の要求を受け取ることができ、さらに、その要求に応じてデータ３３０を提供することもできる。１つまたは２つ以上の補助出力ユニット３５０も、データ要求３５５を受け取ることができ、その要求に応じてデータ３６０を提供することができる。本装置の上述した機構は、バス３０７によって互いに通信接続されることに留意すべきである。
【００２４】
また、装置３０５のこの例の実施の形態には、１つまたは２つ以上の機能モジュールも含まれる。機能モジュールは、通常、命令シーケンスとして実施される。機能モジュールを実施する命令シーケンスは、一代替的な実施の形態によると、メモリ３７０に記憶される。用語「最低限、プロセッサに〜させる（minimally causes the processor）」およびその変形は、プロセッサ３００が特定の機能モジュール（すなわち、命令シーケンス）を実行する際に、プロセッサ３００によって実行される機能を制限なく列挙したものとして働くように意図されていることを読み手には助言しておく。したがって、特定の機能モジュールが、添付した特許請求の範囲に画定された機能とは別の機能をプロセッサ３００に実行させる一実施の形態は、本明細書に添付した特許請求の範囲に含まれることになる。データ３０５の記憶および取り出しを行う装置のこの例の実施の形態には、データ記憶モジュール３７５およびデータサービスモジュール３８０が含まれる。これらの双方はメモリ３７０に記憶される。また、メモリ３７０は、ブレークポイント定義３８５、リンクリストバッファ３９０、および使用中テーブル３９５の記憶も提供する。
【００２５】
図１０は、データの記憶および取り出しを行う装置の一例の実施の形態の内部オペレーションを説明するデータフロー図である。データ記憶モジュール３７５は、プロセッサ３００によって実行されると、最低限、プロセッサ３００に、入力ユニット３１０からデータを受け取らせる。プロセッサ３００は、入力ユニット３１０からデータを受け取ると、次に、そのデータを収容するデータ要素４１０を割り当て、次に、新たに割り当てられたデータ要素４１０にそのデータを記憶する。一例の代替的な実施の形態によると、データ記憶モジュール３７５は、最低限、プロセッサ３００に、新たに割り当てられたデータ要素への参照を作成させる。リンクリストの形態では、プロセッサ３００は、データ記憶モジュール３７５の実行を継続するにつれて、先頭ポインタ３７７または一般のデータ要素４１０に含まれる前方参照４１５からの少なくとも１つに、データ要素への参照を記憶する。一例示の使用の事例によると、データ要素４１０は、前方参照４１５、後方参照４２５、データストレージ４２０、および使用中指示子４３０を含む。
【００２６】
通常の動作時に、プロセッサ３００は、さらに、データサービスモジュール３８０も実行する。データサービスモジュール３８０は、プロセッサ３００によって実行されると、最低限、プロセッサ３００に、第１の出力ユニット３２０からデータ要求を受け取らせる。このようなデータ要求が待ち状態にあると、プロセッサ３００は、データサービスモジュール３８０のこの例の実施の形態の制御の下、１つまたは２つ以上の補助出力ユニット３５０からの他のすべてのデータ要求を無視する。
【００２７】
さらに、プロセッサ３００は、データサービスモジュール３８０の制御の下、最低限、受け取ったデータ要求３２５に従って第１の出力ユニット３２０にデータを提供する。プロセッサ３００は、データ要素参照に従って第１の出力ユニット３２０にデータを提供する。データ要素参照には、先頭ポインタ３７７、または、一般のデータ要素４１０に含まれる前方参照４１５のいずれかが含まれ得る。データ要素参照の管理は、一代替的な実施の形態によると、既知のリンクリスト技法と整合して行われる。データが特定のデータ要素から提供されると、プロセッサ３００は、ブレークポイントに遭遇しない限り、さらに、最低限、そのデータ要素参照を後続のデータ要素に進める。一代替的な実施の形態によると、データサービスモジュール３８０は、プロセッサ３００によって実行されると、最低限、プロセッサ３００に、メモリ３７０に記憶されたブレークポイント定義３８５を調べることによりブレークポイントを決定させる。ブレークポイント定義３８５は、プロセッサ３００が、メモリ３７０に記憶されたリンクリストバッファ３９０に保持されるリンクリストの制御を手放す前にトラバースするデータ要素の個数を反映した個数指示子を含むことができる。さらに別の代替的な実施の形態によると、ブレークポイント定義３８５は、プロセッサ３００が、メモリ３７０に記憶されたリンクリストバッファ３９０に保持されるリンクリストへのアクセスを独占できる最大時間量を表す時間指示子を備える。
【００２８】
プロセッサ３００は、データサービスモジュール３８０のこの例の実施の形態の実行を継続するにつれて、ブレークポイントに遭遇すると、後続のデータ要素を「使用中」とマーキングする。これは、データサービスモジュール３８０の一代替的な実施の形態によると、プロセッサ３００が一般のデータ要素４１０に含まれる使用カウンタ４３０をインクリメントした時に行われる。後続のデータ要素が「使用中」とマーキングされると、データサービスモジュール３８０は、プロセッサ３００によって実行されて、さらに、最低限、プロセッサ３００に、後続のデータ要素への再開参照を作成させ、次に、プロセッサ３００に、例えば１つまたは２つ以上の補助出力ユニット３５０からの他のデータ要求を認識させる。
【００２９】
プロセッサ３００は、データサービスモジュール３８０の実行を継続するにつれて、本方法の教示によるブレークポイントから復帰した後に、或るデータ要求にサービスを提供し続けることが必要な場合がある。したがって、データサービスモジュール３８０の一代替的な実施の形態は、プロセッサ３００によって実行されると、さらに、最低限、プロセッサに、他のすべてのデータ要求を排除して、第１の出力ユニット３２０からのデータ要求を再度認識させる。次に、プロセッサ３００は、プロセッサ３００が前に作成した再開参照によるデータ要素からのデータを第１の出力ユニット３２０に提供する。すでに説明したように、プロセッサ３００は、ブレークポイントを認識した後であって、メモリ３７０に記憶されたリンクリストバッファ３９０に保持されるリンクリストの制御を手放す前に、再開参照を作成する。
【００３０】
プロセッサ３００は、データサービスモジュール３８０の一代替的な実施の形態を実行するにつれて、現在のデータ要素の後続のデータ要素へのポインタを取り出すことにより、再開参照を作成する。次に、プロセッサ３００は、第１の出力ユニット３２０から受け取ったデータ要求の識別子を決定する。この識別子には、一代替的な実施の形態によると、元のデータ要求３２５に関連付けられたプロセス識別子（ＰＩＤ）３２１が含まれる。次に、プロセッサ３００は、さらに、最低限、取り出したポインタおよび決定した識別子を連想形式で記憶する。例えば、さらに別の例の代替的な実施の形態によると、データサービスモジュール３８０は、最低限、プロセッサ３００に、決定した識別子および取り出したポインタを、メモリ３７０に保持された使用中テーブル３９５に記憶させる。使用中テーブル３９５の各レコードは、プロセス識別子フィールド４００および参照フィールド４０５を含む。したがって、プロセッサ３００は、データサービスモジュール３８０を実行し続けるにつれて、さらに、最低限、決定した識別子をプロセス識別子フィールドに記憶し、取り出したポインタを参照フィールド４０５に記憶する。
【００３１】
さらに別の代替的な実施の形態によると、データの記憶および取り出しを行う装置３０５は、さらに、第１の出力ユニット３２０が受け取ったデータ削除要求に応答することができる。したがって、データサービスモジュール３８０の一代替的な実施の形態は、プロセッサ３００によって実行されると、最低限、プロセッサ３００に、削除されるデータ要素が「使用中」であるかどうかを最初に判断することによって、データ要素を削除させる。削除されるデータ要素が「使用中」である場合、プロセッサ３００は、削除されるデータ要素の後続のデータ要素を参照するように再開参照を更新する。このオペレーションは、本方法の技法および教示に従ってプロセッサ３００により行われる。例えば、データサービスモジュール３８０の一代替的な実施の形態は、プロセッサ３００によって実行されると、最低限、プロセッサ３００に、使用中テーブル３９５に記憶されたデータ要求識別子に従ってポインタを発見させる。したがって、使用中テーブル３９５に存在するポインタは、削除されるデータ要素の後続のデータ要素を指し示す新たなポインタに取り替えられる。
【００３２】
本方法によるデータの取り出しを可能にする、これまで説明した機能モジュール（すなわち、それらの対応する命令シーケンス）は、一代替的な実施の形態によると、コンピュータ可読媒体に与えられる。このような媒体の例には、ランダムアクセスメモリ、読み出し専用メモリ（ＲＯＭ）、コンパクトディスクＲＯＭ（ＣＤ  ＲＯＭ）、フロッピィ（登録商標）ディスク、ハードディスクドライブ、磁気テープ、およびデジタル多用途ディスク（ＤＶＤ）が含まれるが、これらに限定されるものではない。このようなコンピュータ可読媒体は、単独で、または、組み合わさって、スタンドアロン製品を構成することができ、汎用計算プラットフォームを、本明細書に提示した技法および教示に従ってデータを取り出すことができるデバイスに変換するのに使用することができる。したがって、本明細書に添付した特許請求の範囲は、本明細書で説明した本方法および教示のすべての実行を可能にするような命令シーケンスを与えられたこのようなコンピュータ可読媒体を含むことになる。
【００３３】
いくつかの代替的で例示の実施の形態の観点から本方法および本装置を説明してきたが、明細書を読み、図面を検討すると、当業者にはその代替物、変更、並べ替え、および等価物が明らかになると考えられる。したがって、本明細書に添付した特許請求の範囲の真の精神および範囲は、このようなすべての代替物、変更、並べ替え、および等価物を含むことが意図されている。
【図面の簡単な説明】
【００３４】
【図１】データを取り出す一例示の方法を示すフロー図である。
【図２】リンクリストの制御を手放す一例の方法を示すフロー図である。
【図３】リンクリストへのアクセスを再開する一例の方法を示すフロー図である。
【図４】後続の要素への参照を作成する一例の方法を示すフロー図である。
【図５】後続の要素への参照を作成する一例の方法の適用を示す模式図である。
【図６】リンクリストからデータ要素を削除する一例の方法を示すフロー図である。
【図７】削除前にデータ要素への参照を更新する一例の方法を示すフロー図である。
【図８】データ要素を削除する一例の方法の適用を示す模式図である。
【図９】データの記憶および取り出しを行う装置の一例の実施の形態のブロック図である。
【図１０】データの記憶および取り出しを行う装置の一例の実施の形態の内部オペレーションを説明するデータフロー図である。
【符号の説明】
【００３５】
８０，８２  データ要素
８４  後続のデータ要素
８５  要素識別子
９０  「使用中」指示子
９１  前方参照
９５  前方参照
１００  後方参照
１０５  使用中テーブル
１０６  データ
１１０  プロセス識別子フィールド
１１５  ポインタフィールド
１２０  ポインタ
１６０  データ要素
１６２  後続のデータ要素
１６５  ポインタ
１６７  前方参照
１７０  新たなポインタ
１７５  使用中指示子
【図１】
2005302030.tif 000003
【図２】
2005302030.tif 000004
【図３】
2005302030.tif 000005
【図４】
2005302030.tif 000006
【図５】
2005302030.tif 000007
【図６】
2005302030.tif 000008
【図７】
2005302030.tif 000009
【図８】
2005302030.tif 000010
【図９】
2005302030.tif 000011
【図１０】
2005302030.tif 000012