JP2004054933A - メモリ割当ての延期方法及び装置 - Google Patents
メモリ割当ての延期方法及び装置 Download PDFInfo
- Publication number
- JP2004054933A JP2004054933A JP2003182256A JP2003182256A JP2004054933A JP 2004054933 A JP2004054933 A JP 2004054933A JP 2003182256 A JP2003182256 A JP 2003182256A JP 2003182256 A JP2003182256 A JP 2003182256A JP 2004054933 A JP2004054933 A JP 2004054933A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- application thread
- application
- memory allocation
- deferred
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- Multi Processors (AREA)
Abstract
【解決手段】アプリケーション・スレッド(131)にある量のメモリ(106)を割り当てる試みが行われる。メモリを割り当てる試みが失敗した場合及びアプリケーション・スレッドが延期されたメモリ割当てのために指定された場合に、アプリケーション・スレッドを保留待ち行列(129)に格納する。アプリケーション・スレッドが保留待ち行列に格納されている間、アプリケーション・スレッドに対するある量のメモリの再割り当てが周期的に試みられる。
【選択図】図1
Description
【発明の属する技術分野】
本発明は、メモリ割当ての延期に関する。
【0002】
【従来の技術】
現在、ラップトップ、デスクトップ、ワークステーション、携帯情報端末(PDA)やその他のシステム等の様々なコンピュータ・システムは、そのコンピュータ・システム上で実行される多くのアプリケーションを含むことができる。そのようなアプリケーションには、例えば、ワード・プロセッサ、スプレッドシート、カレンダ、タスク追跡システム及びその他のアプリケーションがある。
【0003】
【発明が解決しようとする課題】
既存のコンピュータ・システム上で実行可能な様々なアプリケーションのサイズが大きくなっているので、様々なアプリケーション及びこれらアプリケーションによって生成された様々なアプリケーション・スレッドの実行のために割当て可能なメモリが十分でない場合がある。これは特に、ユーザがコンピュータ・システム上でいくつかのアプリケーションを同時に実行する場合に発生する。ユーザが特定のアプリケーションの実行やメモリの割当てを必要とする他の操作を行おうと試みるときに追加のメモリが利用できないと、コンピュータ・システムは、メモリが使用不可能であるというメッセージを出すことによって応答することがある。このような場合は、試みられた実行は中止され、フラストレーションが生じ、またコンピュータ・システムの有用性が制限されることになる。
【0004】
【課題を解決するための手段】
本発明は、延期されたメモリ割当てを提供する方法を開示する。この方法は、アプリケーション・スレッドのためにある量のメモリを割り当てる試みを行い、前記ある量のメモリを割り当てる試みが失敗した場合と、前記アプリケーション・スレッドが延期されたメモリ割当てのために指定された場合に、前記アプリケーション・スレッドを保留待ち行列に記憶し、前記アプリケーション・スレッドが前記保留待ち行列に記憶されている間、前記アプリケーション・スレッドに対する前記ある量のメモリの再割当てを周期的に試みることを含む。
【0005】
【発明の実施の形態】
図1は、本発明の実施形態に従ったコンピュータ・システム100を示す。コンピュータ・システム100は、プロセッサ103とメモリ106を有するプロセッサ回路を含み、その両方ともローカル・インタフェース109に結合される。コンピュータ・システム100は、例えば、汎用コンピュータ、携帯情報端末、ラップトップ、ワークステーション、または類似の機能を有する他の装置である。
【0006】
1つまたは複数のアプリケーション113、メモリ・ステータス・アプリケーション・プログラム・インタフェース(API)116、いくつかの実行時ライブラリ関数119及びオペレーティング・システム123を含むいくつかのソフトウエア・コンポーネントがメモリ106に記憶され、プロセッサ103によって実行可能である。アプリケーション113は、数百万でないとしても実質上数千のアプリケーションが作成されたとすると、例えば、ワード・プロセッサ・プログラム、スプレッドシート・プログラム、ブラウザ、または任意の他のアプリケーションである。メモリ・ステータスAPI116は、待ち行列マネージャ126と保留待ち行列129を含む。保留待ち行列129には、対応する1つまたは複数のアプリケーション113によって生成された1つまたは複数のアプリケーション・スレッド131が記憶される。メモリ・ステータスAPI116、待ち行列マネージャ126及び保留待ち行列129の動作は、後述するような延期された(deferred、遅延ともいう)メモリ割当てを提供する。また、オペレーティング・システム123は、メモリ106の割当てを制御するように動作するメモリ管理API133を含む。
【0007】
メモリ106は、本明細書において、揮発性、不揮発性両方のメモリ及びデータ記憶コンポーネントとして定義される。揮発性のコンポーネントとは、電力がないときにデータ値を保持しないものである。不揮発性のコンポーネントとは、電力がないときにデータを保存するものである。従って、メモリ106は、例えば、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、ハード・ディスク・ドライブ、関連するフロッピー・ディスク・ドライブによってアクセスされるフロッピー・ディスク、コンパクト・ディスク・ドライブによってアクセスされるコンパクト・ディスク、適切なテープ・ドライブによってアクセスされる磁気テープ、及び/または他のメモリコンポーネント、あるいはこれらのメモリコンポーネントの任意の2つ以上の組み合わせを含む。さらに、RAMは、例えば、スタティック・ランダム・アクセス・メモリ(SRAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、磁気ランダム・アクセス・メモリ(MRAM)、その他のそのような装置を含む。ROMは、例えば、プログラム可能な読み出し専用メモリ(PROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、その他の類似のメモリ装置を含む。
【0008】
さらに、プロセッサ103は、複数のプロセッサを表すこともあり、メモリ106は、並列に動作する複数のメモリを表すことがある。このような場合、ローカル・インタフェース109は、複数のプロセッサのうちいずれか2つのプロセッサの間、任意のプロセッサと任意のメモリとの間、またはメモリのうちいずれか2つのメモリの間の通信を容易にする適切なネットワークで良い。プロセッサ103は、本質的に、電気的、分子的、または光学的なものでも良い。
【0009】
オペレーティング・システム123は、メモリ、処理時間、周辺装置などのコンピュータ・システム100内のハードウェア資源の割当て及び使用を制御するために実行される。このように、オペレーティング・システム123は、当業者によって一般に知られているように、アプリケーションが依存する基礎としてはたらく。オペレーティング・システム123の特定のメモリ割当て機能は、オペレーティング・システム123のメモリ管理API133やその他の部分によって実行される。
【0010】
次に、本発明の実施形態によるコンピュータ・システム100の動作の概要を説明する。以下の説明の文脈を提供するために、アプリケーション113のうちの1つまたは複数が、プロセッサ103によって実行され、その実行を容易にするために、例えばランダム・アクセス・メモリや仮想メモリなどのメモリ106の一部分に記憶されると仮定する。また、コンピュータ・システム100のユーザが、既に実行されているアプリケーションに加えてさらに他のアプリケーション113を実行したい場合があると仮定する。このように、新しいアプリケーション113は、メモリ・ステータスAPI116に適用されるメモリまたはアプリケーション・スレッド131の要求を生成する。代替として、ユーザは、さらに他のアプリケーション113を実行するのではなく、追加メモリの割当てを必要とする現在実行されているアプリケーション113の機能を利用することができる。
【0011】
アプリケーション・スレッド131は、メモリ・ステータスAPI116を呼び出してメモリを割り当てる。次に、メモリ・ステータスAPI116は、実行時ライブラリ関数119のうちの適切な実行時ライブラリ関数を呼び出して、新しいアプリケーション113を実行するためにメモリの割当てを試みる。1つの環境において、アプリケーション113の実行を容易にするために使用されるメモリ106の一部分は、新しいアプリケーション・スレッドを収容するのに十分な使用可能なメモリを含むことができる。従って、メモリ管理API133は、必要とされるメモリを割り当て、メモリ・ポインタを実行時ライブラリ関数119に返す。実行時ライブラリ関数119は、メモリ・ポインタをメモリ・ステータスAPI116に返し、今度はその情報をメモリの割当てを要求している新しいアプリケーションまたは既存のアプリケーション113に提供する。その後で、新しいアプリケーション113または現在実行されているアプリケーション113の追加機能が、操作用にメモリ・ポインタによって識別されたメモリを使用して実行される。この場合、メモリ・ステータスAPI116は、実行時ライブラリ関数119にメモリ割当て要求を渡すだけである。
【0012】
しかしながら、いくつかの環境では、アプリケーション・スレッド131を収容するのに必要となるメモリ106の部分が十分にないことがある。従って、メモリ管理API133は、メモリ割当ての失敗を実行時ライブラリ関数119に提供し、実行時ライブラリ関数119は、そのメモリ割当ての失敗をメモリ・ステータスAPI116に提供する。次に、メモリ・ステータスAPI116は、アプリケーション・スレッド131が延期されたメモリ割当てのために指定されているか否かを判断する。アプリケーション・スレッド131がこのように指定されている場合は、そのアプリケーション・スレッド131を保留待ち行列129に格納して、新しいアプリケーション113を収容するメモリ106の部分を再割り当てするさらなる試みを待つことができる。
【0013】
アプリケーション・スレッド131が延期されたメモリ割当てのために指定されている場合、メモリ・ステータスAPI116は、アプリケーション・スレッド131を保留待ち行列129に入れる。アプリケーション・スレッド131の延期メモリ割当てのための指定は、複数の形態のうちのいずれかを取ることができる。例えば、1つの例において、アプリケーション・スレッド131は、所定の期間保留待ち行列129内に保持されるように指定されることがある。代替として、アプリケーション・スレッド131を、メモリが利用可能になるまで無制限に保持するように指定することができる。アプリケーション・スレッド131が所定の期間保留待ち行列129に記憶される場合は、元のアプリケーション113によって、アプリケーション・スレッド131を保留待ち行列129に記憶することができる最長期間を示す記憶ターンアウトをアプリケーション・スレッド131と関連付ける。アプリケーション・スレッド131が保留待ち行列129内の不特定の記憶のために指定された場合は、アプリケーション・スレッド131は、その実行のためのメモリが割り当てられるまで保留待ち行列129に保持される。
【0014】
記憶タイムアウト(storage timeout)を関連付けることによって、アプリケーション・スレッド131が保留待ち行列129内における一時的な記憶のために指定された場合は、アプリケーション・スレッド131は、所定の記憶タイムアウトのために保留待ち行列129に記憶される。記憶タイムアウトの終了時に、アプリケーション・スレッド131は保留待ち行列129から取り出され、アプリケーション・スレッド131のためのメモリ量の割当ての失敗がそれぞれのアプリケーション113に返される。
【0015】
さらに、これは、アプリケーション113が非延期のメモリ割当てのためにアプリケーション・スレッド131を指定する場合にも当てはまることがある。この場合、メモリ・ステータスAPI116が、実行時ライブラリ関数119からそのようなアプリケーション・スレッド131のメモリ割当ての失敗を受け取った場合、メモリ・ステータスAPI116は、アプリケーション・スレッド131のメモリ割当ての失敗を、アプリケーション・スレッド131を作り出したそれぞれのアプリケーション113に返す。従って、必要なメモリ割当てのためのアプリケーション・スレッド131を生成する際に、アプリケーション113は、延期されたメモリ割当てを使用すべきか否かの指示をアプリケーション・スレッド131に指定する。これは、例えば、延期されたメモリ割当てを適用するか否かを表すアプリケーション・スレッド131と関連した1つまたは複数のフラグを設定することによって行うことができる。さらに、一時的なメモリ割当てを使用する場合、アプリケーション113は記憶タイムアウトをそれに対して指定する。
【0016】
待ち行列マネージャ126は保留待ち行列129を維持するように動作する。具体的には、待ち行列マネージャ126は、メモリ・ステータスAPI116の「バックグラウンド」で動作し、記憶されているアプリケーション・スレッド131のメモリの再割当てを試みる。待ち行列マネージャ126は、メモリが首尾よく割り振られたときに、保留待ち行列129からアプリケーション・スレッド131を取り出す。さらに、待ち行列マネージャ126は、保留待ち行列129内に保持された任意のアプリケーション・スレッド131と関連付けられたすべての記憶タイムアウトのカウントダウンを追跡し、記憶タイムアウトが終了したとき、保留待ち行列129からそのようなアプリケーション・スレッド131を取り出す。記憶タイムアウトが終了したときも、待ち行列マネージャ126は、有効期限切れになったアプリケーション・スレッド131用のメモリ割当ての失敗を適切なアプリケーション113に返す。
【0017】
次に図2を参照すると、特定のアプリケーション・スレッド131(図1)についてアプリケーションから受け取ったメモリ割当ての呼出しを処理する際のメモリ・ステータスAPI116の動作のフローチャートを示す。代替的に、図2のフローチャートを、延期されたメモリ割当てを容易に行うためにコンピュータ・システム100(図1)で実施される方法のステップを示すものと見ることもできる。
【0018】
最初にボックス153で、メモリ・ステータスAPI116は、特定のアプリケーション・スレッド131からのメモリ割当ての呼び出しを受け取るのを待つ。そのような呼び出しを受け取った場合は、ボックス156で、メモリ・ステータスAPI116は、メモリを割り当てるために実行時ライブラリ関数119(図1)内のヒープ・マネージャ関数を呼び出す。ボックス159で、メモリ・ステータスAPI116は、メモリが現在のアプリケーション・スレッド131に首尾よく割り振られたか否かを判断する。この判断は、例えば、メモリ・ステータスAPI116によって呼び出された実行時ライブラリ関数119から返される応答に基づいて行われる。メモリが首尾よく割り振られた場合、メモリ・ステータスAPIはボックス163に進み、ここで割り振られたメモリのメモリ・ポインタが要求アプリケーションに返され、その結果、アプリケーション・スレッド131を実行することができる。その後で、メモリ・ステータスAPI116の動作が終了する。
【0019】
一方、ボックス159で判断されたとき、メモリが首尾よく割り当てられていない場合は、メモリ・ステータスAPI116はボックス166に進み、アプリケーション・スレッド131が延期されたメモリ割当てに指定されているか否かを判断する。これは、例えばそのような指示を提供するアプリケーション・スレッド131と関連したフラグを調べることによって行うことができる。その後、ボックス169で、アプリケーション・スレッド131が延期されたメモリ割当てに指定されていない場合は、メモリ・ステータスAPI116はボックス173に進み、ここでメモリの割当ての失敗が要求アプリケーション116に返される。その後、メモリ・ステータスAPI116の動作が終了する。
【0020】
しかしながら、ボックス169で、アプリケーション・スレッド131が延期されたメモリ割当てに指定されていた場合は、メモリ・ステータスAPI116はボックス176に進み、そこでアプリケーション・スレッド131が保留待ち行列129に入れられる。その後、メモリ・ステータスAPI116の動作が終了する。このように、メモリ・ステータスAPI116は、適切なアプリケーション・スレッド131を保留待ち行列129(図1)に入れて、指定されたアプリケーション・スレッド131の延期されたメモリ割当てを容易にする。
【0021】
次に図3に移り、本発明の実施形態による待ち行列マネージャ126の動作の例を提供する例示的なフローチャートを示す。待ち行列マネージャ126は、メモリ・ステータスAPI116のバックグラウンドで連続的に動作して保留待ち行列129(図1)を維持する。代替として、図3のフローチャートは、保留待ち行列129を維持するためにコンピュータ・システム100(図1)において実施される方法のステップを示すと見なすことができる。
【0022】
最初にボックス203で、待ち行列マネージャ126は、保留待ち行列129が空か否かを判断する。空の場合、待ち行列マネージャ126はボックス206に進み、時間遅延(delay)を所定の期間だけ実施する。1つの実施形態において、この時間遅延は長さが約10ミリ秒であるが、任意の時間長を使用することができる。その後、待ち行列マネージャ126はボックス203に戻る。
【0023】
ボックス203で保留待ち行列が空でないと仮定すると、待ち行列マネージャ126はボックス209に進む。ボックス209で、保留待ち行列129内の一番上のアプリケーション・スレッド131(図1)が、その後の処理のために指定される。その後、ボックス213で、待ち行列マネージャ126は実行時ライブラリ関数119(図1)に含まれるヒープ・マネージャ関数を呼び出して、指定されたアプリケーション・スレッド131のためにメモリを割り当てる。次に、ボックス216で、待ち行列マネージャ126は、実行時ライブラリ関数119からのメモリを割り当てるメモリ・ポインタまたは失敗が返されることに基づいて、メモリが首尾よく割り振られたか否かを判断する。ボックス216でメモリが首尾よく割り振られた場合、待ち行列マネージャ126はボックス219に進み、割り振られたメモリのメモリ・ポインタを、指定されたアプリケーション・スレッド131を生成した要求アプリケーション113に返す。次に、待ち行列マネージャ126はボックス223に進み、指定されたアプリケーション・スレッド131が保留待ち行列129から取り出される。
【0024】
アプリケーション・スレッド131が保留待ち行列129から取り出されると、待ち行列マネージャ126はボックス226に進み、保留待ち行列129内の最後のアプリケーション・スレッド131が処理されたか否かを判断する。保留待ち行列129内にリストされた最後のアプリケーション・スレッド131の処理が完了していない場合は、待ち行列マネージャ126はボックス229に進み、保留待ち行列内の次のアプリケーション・スレッド131を処理するように指定する。その後、待ち行列マネージャ126はボックス213に戻る。一方、ボックス226で、保留待ち行列129内の最後のアプリケーション・スレッド131が処理された場合、待ち行列マネージャ126はボックス206に戻る。
【0025】
ボックス216を再び参照し、指定されたアプリケーション・スレッド131にメモリが首尾よく割り当てられた場合、待ち行列マネージャ126はボックス233に進み、アプリケーション・スレッド131を保留待ち行列129内に無制限に保持すべきか否かを判断する。保持する場合は、待ち行列マネージャ126はボックス226に進む。このアプリケーション・スレッド131は、そのアプリケーション・スレッド131にメモリを割り当てる試みが成功するまで保留待ち行列129内に留まる。アプリケーション・スレッド131を保留待ち行列129内に無期限に保持すべきか否かを判断するために、待ち行列マネージャ126は、そのような情報を提供するアプリケーション・スレッド131自身の適切なフラグやその他の特性を調べることができる。
【0026】
ボックス233で、アプリケーション・スレッド131が保留待ち行列129内に無期限に保持されないと仮定すると、待ち行列マネージャ126はボックス236に進み、アプリケーション・スレッド131と関連した記憶タイムアウトが終了したか否かを判断する。記憶タイムアウトが終了した場合は、ボックス239で、待ち行列マネージャ126が、それぞれのアプリケーション・スレッド131のメモリの割当ての失敗を、アプリケーション・スレッド131を作り出したそれぞれのアプリケーション113(図1)に返す。その後、待ち行列マネージャ126はボックス223に進み、指定されたアプリケーション・スレッド131が保留待ち行列129から取り出される。
【0027】
しかしながら、ボックス236で記憶タイムアウトが終了していない場合は、ボックス243で、待ち行列マネージャ126は、指定されたアプリケーション・スレッド131の残り時間を所定の時間だけ減少させる。このように、待ち行列マネージャ126がメモリを再割当てしようとする試みをするたびに、値がゼロになるまで記憶タイムアウトは減少され、これによって記憶タイムアウトが終了したことが示される。ボックス243において記憶タイムアウトが減少されると、待ち行列マネージャ126はボックス226に進む。
【0028】
このように、それぞれのアプリケーション・スレッド131の適切なメモリ割当ての失敗が元のアプリケーション113に報告されるか、またはそれぞれのアプリケーション・スレッド131についてメモリが首尾良く割り当てられるまで、待ち行列マネージャ126は、保留待ち行列129内のアプリケーション・スレッド131に対してメモリを再割当てする試みが繰り返し行われる連続ループを提供する。
【0029】
次に、図4に移り、特定のアプリケーション・スレッド113に延期されたメモリ割当てを行うか否かを指定するために実施される、アプリケーション113の一部分であるアプリケーション部分113aのフローチャートの一例である。代替的に、図4のフローチャートは、延期されたメモリ割当てのためにアプリケーション・スレッド131を適切に指定するためにコンピュータ・システム100(図1)において実施される方法のステップを示すと見ることもでき、この方法には、適切なフラグをセットし適切な記憶タイムアウトを割り当てることが含まれる。
【0030】
最初にボックス253で、アプリケーション部分113aの部分が、アプリケーション・スレッド131を延期されたメモリ割当てに指定すべきか否かを判断する。プリケーション・スレッド131を延期されたメモリ割当てに指定すべき場合は、ボックス256で、アプリケーション・スレッド131に、アプリケーション・スレッド131が延期されたメモリ割当てに支配されるか否かを示す適切なフラグがセットされる。その後、ボックス259で、アプリケーション・スレッド131が保留待ち行列129(図1)内に一時的に記憶される場合は、記憶タイムアウトがアプリケーション・スレッド131と関連付けられる。次に、ボックス263で、アプリケーション・スレッド131にメモリ・ステータスAPI116(図1)を呼び出させて、メモリを割り当てるプロセスを開始する。その後、アプリケーション部分113aの動作が終了する。
【0031】
メモリ・ステータスAPI116とアプリケーション部分113aは、前述のような汎用ハードウェアによって実行されるソフトウェアまたはコードで実現され、代替的に、専用ハードウェアで実施されるか、あるいはソフトウェア、汎用ハードウェア及び専用ハードウェアの組み合せで実現することもできる。専用ハードウェアで実現される場合、メモリ・ステータスAPI116とアプリケーション部分113aは、いくつかの技術のいずれか1つまたはその組み合わせを使用する回路または状態機械として実現することができる。これらの技術は、1つまたは複数のデータ信号の印加に応じて様々な論理関数を実現する論理ゲートを有する個別の論理回路、適切な論理ゲート、プログラム可能なゲート・アレイ(PGA)、フィールドプログラム可能なゲート・アレイ(FPGA)、その他のコンポーネントを有する特定用途向けICを含むことができるが、これらに限定されない。そのような技術は、一般に当業者に周知であり、本明細書で詳細に説明しない。
【0032】
図2〜図4のフローチャートは、メモリ・ステータスAPI116とアプリケーション部分113aの実施態様のアーキテクチャ、機能、及び動作を示す。ソフトウェアで実現される場合、各ブロックは、指定された論理関数を実施するプログラム命令を含むコードのモジュール、セグメントまたは部分を表すことがある。プログラム命令は、コンピュータ・システムや他のシステム内のプロセッサ等の適切な実行システムによって認識可能な数値命令を含むプログラム言語またはマシン・コードで書き込まれた人間が可読のステートメントを含むソース・コードの形で実施されてもよい。マシン・コードは、ソース・コードなどから変換することができる。ハードウェアで実現される場合、各ブロックは、指定された論理機能を実現するために1つの回路またはいくつかの相互接続された回路を表すことができる。
【0033】
図2〜図4のフローチャートは特定の実行順序を示しているが、実行順序は図示した順序と異なってもよいことを理解されたい。例えば、複数のブロックの実行順序は図示した順序と異なっていても良い。また、図2〜図4に連続的に示した2つもしくはそれ以上のブロックは、並列にまたは部分的に並列に実行することができる。さらに、実用性の向上、経理、性能測定、故障診断の支援の提供などのために、任意の数のカウンタ、状態変数、警告セマフォまたはメッセージを本明細書に示した論理フローに追加することができる。そのような変更はすべて本発明の範囲内にあることを理解されたい。
【0034】
また、メモリ・ステータスAPI116とアプリケーション部分113aがソフトウェアまたはコードを含む場合、そのようなソフトウェアまたはコードは、例えばコンピュータ・システムや他のシステム内のプロセッサ等の命令実行システムによってまたはそれらと関連して使用されるコンピュータ可読媒体で実現することができる。その意味で、ロジックは、例えば、コンピュータ可読媒体から取り出し命令実行システムによって実行可能な命令及び宣言を含むステートメントを含むことができる。本発明の文脈において、「コンピュータ可読媒体」は、命令実行システムによってまたはそれと関連して使用されるメモリ・ステータスAPI116とアプリケーション部分113aを含み、記憶し、または維持することができる任意の媒体でよい。コンピュータ可読媒体は、例えば電子的、磁気的、光学的、電磁気的な媒体、赤外または半導体媒体など、多数の物理媒体のうちのいずれも含むこともできる。適切なコンピュータ可読媒体のより具体的な例には、磁気テープ、磁気フロッピー・ディスケット、磁気ハードディスクまたはコンパクト・ディスクがあるがこれらに限定されない。また、コンピュータ可読媒体は、例えば、スタティック・ランダム・アクセス・メモリ(SRAM)とダイナミック・ランダム・アクセス・メモリ(DRAM)、または磁気ランダム・アクセス・メモリ(MRAM)を含むランダム・アクセス・メモリ(RAM)でもよい。さらに、コンピュータ可読媒体は、読み出し専用メモリ(ROM)、プログラム可能な読み出し専用メモリ(PROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、その他のタイプのメモリ装置でよい。
【0035】
本発明をいくつかの実施形態に関して説明したが、本明細書を読み理解することによって等価物と改良品を作成することができることは当業者には明らかであろう。本発明は、そのような等価物及び改良品をすべて含む。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る例示的なメモリ・ステータス・アプリケーション・プログラミング・インタフェース(API)を使用するコンピュータ・システムの概略図である。
【図2】図1のメモリ・ステータスAPIの動作を説明する例示的なフローチャートである。
【図3】図1のメモリ・ステータスAPIの一部として動作するメモリ・ステータス・スレッドの動作を示す例示的なフローチャートである。
【図4】図1のメモリ・ステータスAPIからのメモリ割当てを要求するアプリケーションの一部の動作を示す例示的なフローチャートである。
【符号の説明】
103 プロセッサ
106 メモリ
113 アプリケーション
116 延期されたメモリ割当てロジック
129 保留待ち行列
131 アプリケーション・スレッド
Claims (10)
- 延期されたメモリ割当てを提供する方法であって、
アプリケーション・スレッドのためにある量のメモリを割り当てる試みを行い、
前記ある量のメモリを割り当てる試みが失敗した場合と、前記アプリケーション・スレッドが延期されたメモリ割当てのために指定された場合に、前記アプリケーション・スレッドを保留待ち行列に記憶し、
前記アプリケーション・スレッドが前記保留待ち行列に記憶されている間、前記アプリケーション・スレッドに対する前記ある量のメモリの再割当てを周期的に試みることを含む、メモリ割当ての延期方法。 - アプリケーション・スレッドにある量のメモリを割り当てる試みが失敗した場合に、前記アプリケーション・スレッドを前記延期されたメモリ割当てのために指定するか否かを判断することをさらに含む、請求項1に記載のメモリ割当ての延期方法。
- ある量のメモリの割当てが成功したときに、前記アプリケーション・スレッドと関連付けられたアプリケーションにメモリ・ポインタを返すことをさらに含む、請求項1に記載のメモリ割当ての延期方法。
- ある量のメモリを割り当てる試みが失敗した場合と、アプリケーション・スレッドを前記延期されたメモリ割当てのために指定しない場合に、前記アプリケーション・スレッドを作成したアプリケーションに前記ある量のメモリの割当ての失敗を返すことをさらに含む、請求項1に記載のメモリ割当ての延期方法。
- 前記アプリケーション・スレッドを前記延期されたメモリ割当てのために指定することをさらに含み、前記アプリケーション・スレッドを前記保留待ち行列に記憶することができる最大期間を示す記憶タイムアウトが前記アプリケーション・スレッドと関連付けられている、請求項1に記載のメモリ割当ての延期方法。
- プロセッサとメモリを有するプロセッサ回路と、
前記メモリに記憶されかつ前記プロセッサによって実行可能な延期メモリ割当てロジックを含み、
前記延期メモリ割当てロジックは、
アプリケーション・スレッドにある量のメモリを割り当てることを試みるロジックと、
前記ある量のメモリを割り当てる試みが失敗した場合と、前記アプリケーション・スレッドが延期されたメモリ割当てのために指定された場合に、前記アプリケーション・スレッドを保留待ち行列内に記憶するロジックと、
前記アプリケーション・スレッドが前記保留待ち行列に記憶されている間、前記アプリケーション・スレッドに対する前記ある量のメモリの再割当てを周期的に試みるロジックと、
を含む、延期されたメモリ割当てを提供する装置。 - 前記延期されたメモリ割当てロジックが、前記アプリケーション・スレッドに前記ある量のメモリを割り当てる試みが失敗した場合に、前記アプリケーション・スレッドを前記延期されたメモリ割当てのために指定するか否かを判断するロジックをさらに含む、請求項6に記載の装置。
- 前記延期されたメモリ割当てロジックが、前記ある量のメモリを割り当てる試みが失敗した場合と前記アプリケーション・スレッドを前記延期されたメモリ割当てのために指定されていない場合に、前記アプリケーション・スレッドを作成したアプリケーションに前記ある量のメモリの割当ての失敗を返すロジックをさらに含む、請求項6に記載の装置。
- 前記延期されたメモリ割当てロジックが、前記アプリケーション・スレッドを前記延期されたメモリ割当てのために指定するロジックをさらに含み、前記アプリケーション・スレッドを前記保留待ち行列に記憶することができる最大期間を示す記憶タイムアウトが前記アプリケーション・スレッドと関連付けられている、請求項6に記載の装置。
- 前記延期されたメモリ割当てロジックが、前記アプリケーション・スレッドを前記延期されたメモリ割当てのために指定するロジックをさらに含み、前記延期されたメモリ割当てが、前記保留待ち行列内の不特定の記憶域の指定をさらに含む、請求項6に記載の装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/184,863 US7069396B2 (en) | 2002-06-27 | 2002-06-27 | Deferred memory allocation for application threads |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004054933A true JP2004054933A (ja) | 2004-02-19 |
JP2004054933A5 JP2004054933A5 (ja) | 2006-06-01 |
Family
ID=29717980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003182256A Pending JP2004054933A (ja) | 2002-06-27 | 2003-06-26 | メモリ割当ての延期方法及び装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7069396B2 (ja) |
EP (1) | EP1376354A3 (ja) |
JP (1) | JP2004054933A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010120376A (ja) * | 2008-08-29 | 2010-06-03 | Konica Minolta Systems Lab Inc | フレームバッファ管理のシステム及び方法 |
US8782371B2 (en) | 2008-03-31 | 2014-07-15 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for memory management for rasterization |
US8854680B2 (en) | 2008-09-11 | 2014-10-07 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimal memory allocation units |
US8861014B2 (en) | 2008-09-30 | 2014-10-14 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimized printer throughput in a multi-core environment |
JP2015022756A (ja) * | 2013-07-16 | 2015-02-02 | 株式会社日立製作所 | 資源割り当て方法及び資源割り当てシステム |
JPWO2013021441A1 (ja) * | 2011-08-05 | 2015-03-05 | 富士通株式会社 | データ処理システム、およびデータ処理方法 |
JPWO2013051154A1 (ja) * | 2011-10-07 | 2015-03-30 | 富士通株式会社 | メモリ割り当て制御方法、プログラムおよび情報処理装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4144609B2 (ja) * | 2004-09-29 | 2008-09-03 | ソニー株式会社 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
US7689794B2 (en) * | 2004-10-22 | 2010-03-30 | Scientific-Atlanta, Llc | System and method for handling memory allocation failures through reserve allocation of event data |
JP2006221476A (ja) * | 2005-02-10 | 2006-08-24 | Fujitsu Ltd | 管理装置、データ受信装置、操作端末及び情報処理装置 |
US20070091088A1 (en) * | 2005-10-14 | 2007-04-26 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
US8144149B2 (en) | 2005-10-14 | 2012-03-27 | Via Technologies, Inc. | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units |
US7636829B2 (en) * | 2006-05-02 | 2009-12-22 | Intel Corporation | System and method for allocating and deallocating memory within transactional code |
US20090189896A1 (en) * | 2008-01-25 | 2009-07-30 | Via Technologies, Inc. | Graphics Processor having Unified Shader Unit |
US8356308B2 (en) * | 2008-06-02 | 2013-01-15 | Microsoft Corporation | Blocking and bounding wrapper for thread-safe data collections |
US9218206B2 (en) * | 2011-06-20 | 2015-12-22 | Microsoft Technology Licensing, Llc | Memory management model and interface for new applications |
US9558040B2 (en) * | 2011-06-20 | 2017-01-31 | Microsoft Technology Licensing, Llc | Memory manager with enhanced application metadata |
WO2013051154A1 (ja) * | 2011-10-07 | 2013-04-11 | 富士通株式会社 | メモリ割り当て制御方法、プログラムおよび情報処理装置 |
US9384711B2 (en) | 2012-02-15 | 2016-07-05 | Microsoft Technology Licensing, Llc | Speculative render ahead and caching in multiple passes |
US9177533B2 (en) | 2012-05-31 | 2015-11-03 | Microsoft Technology Licensing, Llc | Virtual surface compaction |
US9230517B2 (en) * | 2012-05-31 | 2016-01-05 | Microsoft Technology Licensing, Llc | Virtual surface gutters |
US9235925B2 (en) | 2012-05-31 | 2016-01-12 | Microsoft Technology Licensing, Llc | Virtual surface rendering |
US9286122B2 (en) | 2012-05-31 | 2016-03-15 | Microsoft Technology Licensing, Llc | Display techniques using virtual surface allocation |
US9772888B2 (en) * | 2013-04-10 | 2017-09-26 | Wind River Systems, Inc. | Semaphore with timeout and lock-free fast path for message passing architectures |
US9307007B2 (en) | 2013-06-14 | 2016-04-05 | Microsoft Technology Licensing, Llc | Content pre-render and pre-fetch techniques |
US9904337B2 (en) | 2015-06-25 | 2018-02-27 | International Business Machines Corporation | Affinity-aware parallel zeroing of pages in non-uniform memory access (NUMA) servers |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2136154C (en) * | 1994-11-18 | 1999-08-24 | Jay William Benayon | User control of multiple memory heaps |
US6088764A (en) * | 1997-07-14 | 2000-07-11 | International Business Machines Corporation | Method and apparatus for reducing space allocation failures in storage management systems |
US6230247B1 (en) * | 1997-10-29 | 2001-05-08 | International Business Machines Corporation | Method and apparatus for adaptive storage space allocation |
US6233666B1 (en) * | 1998-09-17 | 2001-05-15 | International Business Machines Corporation | Deferred disk drive space allocation for virtual memory pages with management of disk address recording in multipage tables without external process interrupts for table for input/output to memory |
AU2001236989A1 (en) | 2000-02-16 | 2001-08-27 | Sun Microsystems, Inc. | An implementation for nonblocking memory allocation |
US6629227B1 (en) * | 2000-05-04 | 2003-09-30 | Scientific-Atlanta, Inc. | System and method for a communication terminal to manage memory and maintain a current application version for multiple applications |
-
2002
- 2002-06-27 US US10/184,863 patent/US7069396B2/en not_active Expired - Lifetime
-
2003
- 2003-06-05 EP EP03253561A patent/EP1376354A3/en not_active Withdrawn
- 2003-06-26 JP JP2003182256A patent/JP2004054933A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782371B2 (en) | 2008-03-31 | 2014-07-15 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for memory management for rasterization |
JP2010120376A (ja) * | 2008-08-29 | 2010-06-03 | Konica Minolta Systems Lab Inc | フレームバッファ管理のシステム及び方法 |
US8854680B2 (en) | 2008-09-11 | 2014-10-07 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimal memory allocation units |
US8861014B2 (en) | 2008-09-30 | 2014-10-14 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for optimized printer throughput in a multi-core environment |
JPWO2013021441A1 (ja) * | 2011-08-05 | 2015-03-05 | 富士通株式会社 | データ処理システム、およびデータ処理方法 |
US9405470B2 (en) | 2011-08-05 | 2016-08-02 | Fujitsu Limited | Data processing system and data processing method |
JPWO2013051154A1 (ja) * | 2011-10-07 | 2015-03-30 | 富士通株式会社 | メモリ割り当て制御方法、プログラムおよび情報処理装置 |
JP2015022756A (ja) * | 2013-07-16 | 2015-02-02 | 株式会社日立製作所 | 資源割り当て方法及び資源割り当てシステム |
Also Published As
Publication number | Publication date |
---|---|
EP1376354A3 (en) | 2005-07-06 |
EP1376354A2 (en) | 2004-01-02 |
US7069396B2 (en) | 2006-06-27 |
US20040003188A1 (en) | 2004-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004054933A (ja) | メモリ割当ての延期方法及び装置 | |
US7962707B2 (en) | Apparatus and method for deterministic garbage collection of a heap memory | |
US4812981A (en) | Memory management system improving the efficiency of fork operations | |
US7328438B2 (en) | Deallocation of computer data in a multithreaded computer | |
US20050086656A1 (en) | Methods and systems for inter-process copy sharing of data objects | |
US8185895B2 (en) | Method, apparatus and program storage device for providing an anchor pointer in an operating system context structure for improving the efficiency of accessing thread specific data | |
US11620215B2 (en) | Multi-threaded pause-less replicating garbage collection | |
JP4056491B2 (ja) | 論理的に区画化されたコンピュータにおける区画管理操作に関する非同期通知の選択的生成 | |
JPH08227403A (ja) | スペース効率に優れたプロセス間通信方法及び装置 | |
US20050066302A1 (en) | Method and system for minimizing thread switching overheads and memory usage in multithreaded processing using floating threads | |
US20070198998A1 (en) | Method, apparatus and program storage device for preserving locked pages in memory when in user mode | |
US20080134199A1 (en) | Method and Apparatus for Allowing Restarted Programs to Use Old Process Identifications and thread identifications | |
JP7304119B2 (ja) | ポーズレスなガベージ・コレクションのための活性化フレームを表す方法および装置 | |
US7882285B2 (en) | Buffer cache management to prevent deadlocks | |
US10318340B2 (en) | NVRAM-aware data processing system | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
US10824424B2 (en) | Efficient lock-free multi-word compare-and-swap | |
US9507637B1 (en) | Computer platform where tasks can optionally share per task resources | |
US20110191508A1 (en) | Low-Contention Update Buffer Queuing For Large Systems | |
US8010963B2 (en) | Method, apparatus and program storage device for providing light weight system calls to improve user mode performance | |
US10417121B1 (en) | Monitoring memory usage in computing devices | |
US6981244B1 (en) | System and method for inheriting memory management policies in a data processing systems | |
WO2000062160A2 (en) | Method and system for dynamic injection of execution logic into a windowed operating system | |
WO2022242777A1 (zh) | 一种调度方法、装置、系统和计算设备 | |
Reinhardt | Tempest interface specification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060330 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080527 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080827 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080924 |