JP3660173B2 - 空きバッファ管理方法 - Google Patents
空きバッファ管理方法 Download PDFInfo
- Publication number
- JP3660173B2 JP3660173B2 JP28019299A JP28019299A JP3660173B2 JP 3660173 B2 JP3660173 B2 JP 3660173B2 JP 28019299 A JP28019299 A JP 28019299A JP 28019299 A JP28019299 A JP 28019299A JP 3660173 B2 JP3660173 B2 JP 3660173B2
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- chain
- memory
- management table
- standby
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
本発明は、オンライン情報処理システムのホストコンピュータなどにおいて、動的にメモリの割り当て/解放を行うために、メモリの空きバッファをチェイン状にリンクして管理する空きバッファ管理方法に関し、特に捕捉したバッファのバッファサイズの範囲を超えたエリアへの不正なメモリアクセスの検出、解放済みバッファへの不正なメモリアクセスの検出、さらには解放済みバッファの二重解放の検出などが容易に可能な空きバッファ管理方法に関する。
【0002】
【従来の技術】
従来、動的なメモリ割り当て要求、割り当てられたメモリへのアクセス要求や解放要求などを含むユーザプログラムが動作するコンピュータにおいて、動的に割り当てられたメモリへユーザプログラムの不具合によるアクセスが行われたことを自動的に検出する方法としては、例えば、特開平7−319735号公報(特許第275777号)に記載の方法がある。
【0003】
この方法では、PMMU(Page Memory Management Unit)と割込みハンドラを利用し、次のようにして動的割り当てメモリに関するアクセスだけに限定した不正アクセスの検出を可能にしている。即ち、ユーザプログラムでアクセスされる仮想アドレスはアクセス不可であるように予めページ管理テーブルを構成しておく。ユーザプログラムの実行でメモリアクセスがあると、PMMUはページ管理テーブルでアクセス不可を知る。そこで、PMMUはCPUに割込みをかけ、割込みハンドラを起動させる。この割込みハンドラの割込処理の中でアクセス対象アドレスの正否を調べ、アクセス可能な仮想アドレスへの変換を行い、これをPMMUへ再度与える。PMMUは、この仮想アドレスを物理アドレスに変換し、ユーザプログラムに制御を戻す。
【0004】
【発明が解決しようとする課題】
上記従来の方法では、メモリへの書き込みあるいは読み込みのアクセスが発生するたびに、割込みハンドラでアクセスの正当性をチェックすることができるため、動的に割り当てたメモリの範囲を超えたメモリアクセスの検出、動的に割り当てたメモリへの書き込み命令実行前の読み込み命令実行の検出、さらに、解放済み動的割り当てメモリへのアクセスの検出などが可能となる。
【0005】
しかしながら、メモリへの読み出しあるいは書き込みのアクセスが有るたびに、割込みハンドラが起動されて不正アクセスのチェックが行なわれるため、処理のオーバヘッドが非常に大きいことから、ソフトウェア開発ツール、不具合調査ツール、品質検査/向上ツールといった分野での適用には有効であるが、運用システムに適用する場合には、処理能力を十分に検討する必要がある。
【0006】
また、オンライン情報処理システムなどにおいて、ホストコンピュータが通信制御で送受信データを一時的に格納するために、動的に割り当てて使用される複数のバッファを対象に、上記従来方法を適用しようとすると、デバッグ期間中はともかく、運用システムでの適用は処理能力的に非常に困難である。
【0007】
本発明の目的は、オンライン情報処理システムのホストコンピュータなどにおいて、捕捉したバッファのバッファサイズの範囲を超えたエリアへの不正なメモリアクセスの検出、あるいは解放済みバッファへの不正なメモリアクセスの検出、さらにはあるいは解放済みバッファの二重解放の検出などを、処理のオーバヘッドを極力抑えたかたちで実現でき、しかもデバッグ期間中のみならず、運用システムへの適用も可能な、空きバッファ管理方法を提供することにある。
【0008】
【課題を解決するための手段】
空きバッファはチエイン状にリンクしてバッファチエインとして管理される。本発明は、メモリ保護の設定・解除単位と同一、またはその整数倍のバッファサイズを有する複数のバッファから構成される連続したバッファ領域を、優先的に使用する運用バッファと、該運用バッファが全て使用されているときに使用する待機バッファとに分割し、さらに、連続したバッファ領域のなかで、運用バッファと待機バッファとがアドレス的に交互に出現するように分割して、運用バッファチェインと待機バッファチェインの2つのバッファチェインを組み、どちらかのバッファチェインにつながれている間は、該当するバッファにメモリ保護を設定しておく。そして、バッファ捕捉要求に伴うどちらかのバッファチェインからのとりはずし時に、捕捉するバッファのメモリ保護を解除し、バッファ解放要求に伴うどちらかのバッファチェインへのつなぎこみ時に、解放するバッファのメモリ保護を設定する。
【0009】
これにより、運用バッファの前後に、メモリ保護の設定された待機バッファが存在することになり、捕捉したバッファ以外のエリアへの不正なメモリ書き込みを検出することが可能となる。また、解放済みバッファにはメモリ保護が設定されるため、当該解放済みのバッファへの不正メモリ書き込みの検出も可能となる。
【0010】
さらに、本発明では、バッファ解放要求に伴うバッファチェインへのつなぎこみ時に、解放するバッファ内の任意のメモリの内容を読み出し、該読み出した内容を再び同じメモリに書き込んでから、メモリ保護を設定する。これにより、メモリへの再書き込みの際に、バッファの2重解放を検出することが可能となる。
【0011】
【発明の実施の形態】
以下、本発明を図示する実施例に基づき詳細に説明する。
図1は、本発明の一実施例を示し、これは通信回線103を介して端末装置102と接続されるホストコンピュータ101に適用した場合の全体的システム構成を示す図である。ホストコンピュータ101には、一般に多数の端末装置が接続されるが、便宜上、図1では一台の端末装置のみを示している。
【0012】
図において、ホストコンピュータ101は、通信制御部104、バッファ捕捉部105、バッファ解放部106、バッファ管理情報初期設定部107の各処理部、及び、主記憶108から構成される。主記憶108は、バッファが複数個確保されているバッファ領域112と、バッファ領域112に確保された複数のバッファを管理するバッファ管理テーブル111と、複数のバッファを運用空きバッファチェインと待機空きバッファチェインに大別して管理するための、運用空きバッファチェイン管理テーブル109と待機空きバッファチェイン管理テーブル110を有している。
【0013】
通信制御部104は、端末装置102との通信を制御するもので、該通信制御部104が端末装置102とデータの送受信を行う際に送受信データを一時的に格納するために、主記憶108のバッファ領域112に確保されているバッファが使用される。通信制御部104では、新しくバッファを使用する場合、バッファ捕捉要求をバッファ捕捉部105へ出し、使用中のバッファを解放する場合、バッファ解放要求をバッファ解放部106へ出す。
【0014】
バッファ捕捉部105は、通信制御部104からバッファ捕捉要求を受け取ると、運用/待機空きバッファチェイン管理テーブル109,110、バッファ管理テーブル111を参照して、運用/待機空きバッファチェインからのバッファ捕捉処理を実行する。この時、捕捉したバッファのメモリ保護を解除する。バッファ解放部106は、通信制御部104からバッファ解放要求を受け取ると、解放されるバッファがつながっていたバッファチェインに対応する運用/待機空きバッファチェイン管理テーブルを対象にバッファ解放処理を実行する。この時、解放するバッファのメモリ保護を設定する。
【0015】
バッファ管理情報初期設定部107は、各種バッファ管理情報を初期設定する。具体的動作は後述するが、このバッファ管理情報初期設定部107にて、メモリ保護の設定・解除単位と同一、またはその整数倍のバッファサイズを有する複数のバッファから構成される連続したバッファ領域112を運用バッファとに待機バッファと分割し、さらに、この連続したバッファ領域112のなかで、運用バッファと待機バッファとがアドレス的に交互に出現するように分割して、運用バッファチェインと待機バッファチェインの2つのバッファチェインを組み、運用/待機空バッファチェイン管理テーブル109,110及びバッファ管理テーブル111の内容を初期設定する。さらに、この初期設定時、運用待機バッファチェインにつながる各バッファにメモリ保護を設定しておく。
【0016】
図2は、運用空きバッファチェイン管理テーブル109の構成例を示す説明図である。運用空きバッファチェイン管理テーブル109は、運用空きバッファチェインの先頭につながれているバッファ情報を示す先頭バッファ管理テーブルポインタ(F_B_MNG_P)201と、該チェインの最後につながれているバッファ情報を示す最終バッファ管理テーブルポインタ(L_B_MNG_P)202とから構成される。
【0017】
図3は、待機空きバッファチェイン管理テーブル110の構成例を示す説明図である。待機空きバッファチェイン管理テーブル110は、待機空きバッファチェインの先頭につながれているバッファ情報を示す先頭バッファ管理テーブルポインタ(F_B_MNG_P)301と、該チェインの最後につながれているバッファ情報を示す最終バッファ管理テーブルポインタ(L_B_MNG_P)302とから構成される。
【0018】
図4は、バッファ管理テーブル111の構成例を示す説明図である。ここで、管理対象のバッファ領域112は、図5に示すように、バッファサイズが4キロバイトのバッファ7個から構成され、それぞれのバッファの先頭アドレスが、バッファ(0)500がH'0000番地、バッファ(1)501がH'1000番地、バッファ(2)502がH'2000番地、バッファ(3)503がH'3000番地、バッファ(4)504がH'4000番地、バッファ(5)505がH'5000番地、バッファ(6)506がH'6000番地であるとする。
【0019】
図4において、バッファ管理テーブル111はテーブル400〜406からなり、それぞれ図5のバッファ500〜506に対応している。具体的には、バッファ(0)500を管理するバッファ管理テーブル0(B_MNB0)400は、運用空きバッファチェインあるいは待機空きバッファチェインを組むための、次リンクテーブルポインタ(N_LNK_P)407と、当該バッファ(0)500の先頭アドレスを格納するバッファポインタ(BUF_P)408とから構成される。ここでは、バッファポインタ408には、具体的な先頭アドレスとしてH'0000が設定される。バッファ(1)501からバッファ(6)506を管理する、バッファ管理テーブル1
(B_MNB1)401からバッファ管理テーブル6(B_MNB6)406も同様な構成である。
【0020】
図5のバッファ(0)500からバッファ(6)506は、運用/待機のどちらかのバッファチェインにつながれている間は、当該バッファにメモリ保護が設定される。メモリ保護機能には、プロセッサアーキテクチャにより、キー方式、リング方式、アクセス権方式の各種が存在し、保護の範囲も、プロセッサアーキテクチャや仮想メモリ方式に依存して、ページ単位やセグメント単位といった各種の形態が存在している。本発明は、メモリ保護機能を実現する方式には左右されないが、メモリ保護範囲に左右されるものであり、例えばメモリ保護範囲が1キロバイト単位である場合には、バッファサイズを1キロバイトの整数倍(1キロバイト、2キロバイト、…)、また、メモリ保護範囲が2キロバイト単位の場合には、バッファサイズを2キロバイトの整数倍(2キロバイト、4キロバイト、…)にする必要がある。図5の具体的実施例では、メモリ保護範囲が4キロバイト単位のアーキテクチャからなるプロセッサで実現する場合の実施例であり、プロセッサアーキテクチャでメモリ保護単位が8キロバイトの場合には、本実施例の2倍のバッファ領域112を確保する必要がある。
【0021】
以下に、バッファ管理情報初期設定部107、バッファ捕捉部105及びバッファ解放部106の動作について説明する。なお、バッファ領域112は図5に示した構成をとるとする。
【0022】
図6に、バッファ管理情報初期設定部107で実行される、バッファ管理情報初期設定処理の処理フローを示す。このバッファ管理情報初期設定処理は、例えばシステムの立上げ時などに実行される。
【0023】
バッファ管理情報初期設定処理では、まず、領域サイズが7キロバイトのバッファ領域112を捕捉し(ステップ601)、捕捉したバッファ領域112の全領域にメモリ保護を設定する(ステップ602)。次に、捕捉したバッファ領域112を、バッファサイズがそれぞれ1キロバイトの7つのバッファ、即ち、図5に示したバッファ(0)500、バッファ(1)501、バッファ(2)502、バッファ(3)503、バッファ(4)504、バッファ(5)505、バッファ(6)506に分割し、図4に示したように、バッファ管理テーブル111のそれぞれの管理テーブル400〜406の各バッファポインタ(BUF_P)408,410,412,146,148,420に当該バッファ500〜506の先頭アドレスを設定する(ステップ603)。次に、本実施例では、奇数番目のバッファ、即ち、バッファ(1)501、バッファ(3)503、バッファ(5)505を運用バッファとして運用空きバッファチェイン管理テーブル109につなぎこみ(ステップ604)、偶数番目のバッファ、即ち、バッファ(0)500、バッファ(2)502、バッファ(4)504、バッファ(6)506を待機バッファとして待機空きバッファチェイン管理テーブル110につなぎこみ(ステップ605)、バッファ管理情報初期設定処理を終了する。
【0024】
図7は、バッファ管理情報初期設定部107がバッファ管理情報初期設定処理を実行した直後の、運用空きバッファチェイン管理テーブル109、待機空きバッファチェイン管理テーブル110、及び、バッファ管理テーブル111内の各バッファ500〜506に対応するバッファ管理テーブル(0)400、バッファ管理テーブル(1)401、バッファ管理テーブル(2)402、バッファ管理テーブル(3)403、バッファ管理テーブル(4)404、バッファ管理テーブル(5)405、バッファ管理テーブル(6)406の具体的構成を示したものである。この時点で、バッファ領域112の各バッファ500〜506は、すべてメモリ保護が設定される。
【0025】
図8に、バッファ捕捉部105で実行される、バッファ捕捉処理の処理フローを示す。このバッファ捕捉処理は通信制御部104からバッファ捕捉要求を受けるごとに実行される。
【0026】
バッファ捕捉処理では、まず、運用空きバッファチェイン管理テーブル109から、先頭バッファ管理テーブルポインタ(F_B_MNG_P)201を抽出し(ステップ801)、抽出したポインタがNULLPかを判定する(ステップ802)。ステップ802の判定で、NULLPでない、つまり運用空きバッファチェインに空きバッファがあると判定されると、運用空きバッファチェイン管理テーブル109から、先頭のバッファを取り外し(ステップ803)、該捕捉したバッファのメモリ保護を解除し(ステップ804)、バッファ捕捉結果=成功として、捕捉したバッファのポインタを捕捉要求元へ返却し(ステップ805)、即ち、本実施例では通信制御部104へ返却し、バッファ捕捉処理を終了する。ステップ802の判定で、NULLPつまり運用空きバッファチェインに空きバッファが無いと判定されると、待機空きバッファチェイン管理テーブル110から、先頭バッファ管理テーブルポインタ(F_B_MNG_P)301を抽出し(ステップ806)、抽出したポインタがNULLPかを判定する(ステップ807)。ステップ807の判定で、NULLPでない、つまり待機空きバッファチェインに空きバッファがあると判定されると、待機空きバッファチェイン管理テーブル110から、先頭のバッファを取り外し(ステップ808)、ステップ804,805の処理を実行する。ステップ807で、NULLPつまり待機空きバッファチェインにも空きバッファが無いと判定されると、バッファ捕捉結果=失敗として捕捉要求元へ返却し(ステップ809)、バッファ捕捉処理を終了する。
【0027】
図9は、図7の初期状態で、図8のバッファ捕捉処理が実行され、運用空きバッファチェインの先頭につながれていたバッファ(1)501が捕捉された後の、運用空きバッファチェイン管理テーブル109、待機空きバッファチェイン管理テーブル110、及び、バッファ管理テーブル111内のバッファ(1)501を除く各バッファ500,502〜506に対応するバッファ管理テーブル(0)400バッファ管理テーブル(2)402、バッファ管理テーブル(3)403、バッファ管理テーブル(4)404、バッファ管理テーブル(5)405、バッファ管理テーブル(6)406の具体的構成を示したものである。
【0028】
図9に着目するに、バッファ領域112のバッファ(1)501の領域(運用バッファ領域)のみが、メモリ保護が解除されており、この前後に、メモリ保護の設定されたバッファ500,502の領域(待機バッファ領域)が存在する。したがって、捕捉したバッファ(1)501のバッファサイズの範囲を超えたエリア、即ち、バッファ500,502の領域への不正なメモリ書込みなどのメモリアクセスが行われた場合、メモリ保護違反が発生し、該不正なメモリアクセスを容易に検出することが可能となる。
【0029】
なお、図8のバッファ捕捉処理では、ステップ802で運用空きバッファチェインに空きバッファが無いと判定された場合、待機空きバッファチェインから空きバッファを捕捉するため、運用空きバッファチェインのバッファ(1)501、バッファ(3)503、バッファ(5)505に続いて、待機空きバッファチェインに組み込まれているバッファ(0)500、バッファ(2)502、バッファ(4)504、バッファ(6)506が使用されると、その使用されている間は、連続するバッファ領域のメモリ保護が解除されてしまい、捕捉したバッファのバッファサイズの範囲を超えた領域への不正なメモリアクセスを検出できなくなる。本実施例は、このようなことは非常に稀れであるとして許容するものであるが、これは次のようにして回避することが可能である。即ち、図8のステップ802で、運用空きバッファチェインに空きバッファが無いと判定された場合、待機空きバッファチェインから空きバッファを捕捉するのではなく、ステップ809の処理を実行して、バッファ捕捉結果=失敗を補足要求元へ返却するようにする。これにより、待機空きバッファチェインに組み込まれている、バッファ2502、バッファ4504、バッファ6506が常にメモリ保護がかかっていることとなり、図8で説明した処理フローをとる場合より、バッファの不法アクセス検出能力が向上する。
【0030】
また、バッファ捕捉処理の入力パラメータとして、バッファ捕捉要求元が必要とするバッファサイズを通知するようにし、捕捉したバッファの先頭ではなく最終アドレスから捕捉要求バッファサイズ分を差し引いたアドレスを、捕捉バッファの先頭アドレスとして捕捉要求元に返却する処理としてもよい。この場合、捕捉要求元が必要と考えているバッファサイズよりも大きい範囲で誤って使用している場合、捕捉したバッファの次には、待機バッファとしてメモリ保護がかかっているため、メモリ保護違反を検出できる可能性が高まる。
【0031】
図10に、バッファ解放部106で実行される、バッファ解放処理の処理フローを示す。このバッファ解放処理は通信制御部104からバッファ解放要求を受けるごとに実行される。
【0032】
バッファ解放処理では、まず、解放要求のあったバッファの先頭メモリの内容を読み取り(ステップ1001)、読み取った値を、解放要求のあったバッファの先頭メモリに書き込む処理を実行する(ステップ1002)。次に、解放要求のあったバッファのメモリ保護を設定する(ステップ1003)。次に、解放要求のあったバッファのつなぎこむバッファチェインを判定し(ステップ1004)、運用空きバッファチェインの場合は、運用空きバッファチェイン管理テーブル109の最後に解放要求のあったバッファをつなぎこみ(ステップ1005)、待機空きバッファチェインの場合は、待機空きバッファチェイン管理テーブル110の最後に解放要求のあったバッファをつなぎこんで(ステップ1006)、バッファ解放処理を終了する。
【0033】
図10において、ステップ1001および1002で、解放要求のあったバッファの先頭メモリの読み取り及び書き込みを実施する目的は、バッファの二重解放を検出するためである。即ち、バッファが既に解放されている場合には、ステップ1003に示したように、メモリ保護が設定されており、このため、既に解放したバッファに対してさらに解放要求が行われた場合、ステップ1002のメモリへの書き込み処理で、メモリ保護違反が発生し、バッファの二重解放バグなどを容易に検出することが可能となる。なお、ステップ1001,1002では、解放要求のあったバッファの先頭メモリに対してリード/ライトを実行するとしたが、特に先頭メモリである必要はない。
【0034】
図10のステップ1002で、メモリ保護違反を検出した場合、例えば従来機能による割り込み処理ルーチンの中で、システムの部分初期設定あるいは関連処理の部分初期設定といった処理を行い、バッファの二重解放をガードするとともに、解放したバッファをしばらく使い続けてしまうバグがシステムに及ぼす影響を小さくするなど、バグの影響範囲を局所化することが可能となる。
【0035】
図11は、図9の状態で、図10のバッファ解放処理が実行されて、図8のバッファ捕捉処理で捕捉されたバッファ(1)501が解放された後の、運用空きバッファチェイン管理テーブル109、待機空きバッファチェイン管理テーブル110、及び、バッファ管理テーブル111内の各バッファ500〜506に対応するバッファ管理テーブル(0)401、バッファ管理テーブル(1)401、バッファ管理テーブル(2)402、バッファ管理テーブル(3)403、バッファ管理テーブル(4)404、バッファ管理テーブル(5)405、バッファ管理テーブル(6)406具体的構成を示したものである。
【0036】
図11に示すように、解放されたバッファ(1)501には、メモリ保護が設定されるため、該解放済みバッファ(1)501への不正なメモリ書込みなどのメモリアクセスが行われた場合、メモリ保護違反が発生し、該不正メモリアクセスを容易に検出することが可能となる。また、該解放済みバッファ(1)501に対してさらに解放要求が行われた場合も、上記ステップ1002の実行で2重解放を検出することが可能となる。バッファの二重解放が発生すると、空バッファチェイン破壊の原因となるため、バッファ二重解放は極力防止する必要がある。
【0037】
以上説明してきた具体的実施例は、実記憶のみのシステムにも、また、実記憶のほかに仮想記憶を持つシステムのどちらにも適応可能であるが、実記憶のほかに仮想記憶を持つシステムに対しては、論理空間(仮想記憶)には運用バッファと待機バッファの双方を生成するが、物理空間(実記憶)には運用バッファのみを生成することで、実施例で説明した場合と同じ作用効果をあげることが出来る。この場合、運用空きバッファがなくなった時に、待機空きバッファチェインからの捕捉を行わないのは言うまでもない。さらに、待機空きバッファチェインそのものも不要である。
【0038】
【発明の効果】
以上説明したように、本発明では、空きバッファをチェイン状にリンクして管理する空きバッファ管理において、複数のバッファから構成される連続したバッファ領域を、優先的に使用する運用バッファと、該運用バッファが全て使用されているときに使用する待機バッファとに分割し、かつ、運用バッファと待機バッファとがアドレス的に交互に出現するように分割して、運用バッファチェインと待機バッファチェインの2つのバッファチェインを組み、どちらかのバッファチェインにつながれている間は、該当するバッファにメモリ保護を設定しておき、バッファ捕捉要求に伴うどちらかのバッファチェインからのとりはずし時に、捕捉するバッファのメモリ保護を解除し、バッファ解放要求に伴うどちらかのバッファチェインへのつなぎこみ時に、解放するバッファのメモリ保護を設定する。これにより、運用バッファの前後に、メモリ保護の設定された待機バッファが存在することになり、捕捉したバッファ以外のエリアへの不正なメモリ書き込みなどのメモリアクセスを検出することが可能となり、しかも、解放済みバッファはメモリ保護が設定されるため、当該解放済みのバッファへの不正メモリ書き込みの検出も可能となる。
【0039】
また、本発明では、バッファ解放要求に伴うバッファチェインへのつなぎこみ時に、解放するバッファ内の任意のメモリの内容を読み出し、読み出した値を再び同じメモリに書き込んでから、メモリ保護を設定することにより、バッファの2重解放を検出することが可能となる。
【0040】
さらには、バッファ捕捉要求において、運用バッファが全て使用中の時は、待機バッファの捕捉は行わず、捕捉要求元にバッファ捕捉失敗を返却するようにすれば、待機空きバッファチェインに組み込まれているバッファは常にメモリ保護にかかっていることなるため、不正アクセス検出能力が向上する。
【図面の簡単な説明】
【図1】本発明を適用したシステムの一実施例を示す図である。
【図2】図1における運用空きバッファチェイン管理テーブルの構成例を示す図である。
【図3】図1における待機空きバッファチェイン管理テーブルの構成例を示す図である。
【図4】図1におけるバッファ管理テーブルの具体的構成例を示す図である。
【図5】図1におけるバッファ領域の具体的構成例を示す図である。
【図6】図1におけるバッファ管理情報初期設定部の処理フローを示す図である。
【図7】バッファ管理情報初期設定処理が実行された後の各管理テーブルとバッファ領域の具体的構成例を示す図である。
【図8】図1におけるバッファ捕捉部の処理フローを示す図である。
【図9】バッファ捕捉処理が実行された後の各管理テーブルとバッファ領域の具体的構成例を示す図である。
【図10】図1におけるバッファ解放部の処理フローを示す図である。
【図11】バッファ解放処理が実行された後の、各管理テーブルとバッファ領域の具体的構成例を示す図である。
【符号の説明】
101 ホストコンピュータ
102 端末装置
104 通信制御部
105 バッファ捕捉部
106 バッファ解放部
107 バッファ管理情報初期設定部
109 運用空きバッファチェイン管理テーブル
110 待機空きバッファチェイン管理テーブル
111 バッファ管理テーブル
112 バッファ領域
400〜406 バッファ管理テーブル
500〜506 バッファ
Claims (3)
- 空きバッファをチェイン状にリンクして管理する空きバッファ管理方法であって、
複数のバッファから構成される連続したバッファ領域を、優先的に使用する運用バッファと、該運用バッファが全て使用されているときに使用する待機バッファとに分割し、かつ、運用バッファと待機バッファとがアドレス的に交互に出現するように分割して、運用バッファチェインと待機バッファチェインのそれぞれのバッファチェインを組み、
運用バッファチェインと待機バッファチェインのどちらかにつながれているバッファにメモリ保護を設定しておき、
バッファ捕捉要求に伴うどちらかのバッファチェインからのとりはずし時に、捕捉するバッファのメモリ保護を解除し、
バッファ解放要求に伴うどちらかのバッファチェインへのつなぎこみ時に、解放するバッファのメモリ保護を設定する、
ことを特徴とする空きバッファ管理方法。 - 請求項1記載の空きバッファ管理方法において、バッファ解放要求に伴うバッファチェインへのつなぎこみ時に、解放するバッファ内の任意のメモリの内容を読み出し、該内容を再び同一メモリに書き込んでから、メモリ保護を設定することを特徴とする空きバッファ管理方法。
- 請求項1、2記載の空きバッファ管理方法において、運用バッファが全て使用中の時は、待機バッファの捕捉は行なわずに、捕捉要求元にバッファ捕捉失敗を返却することを特徴とする空きバッファ管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28019299A JP3660173B2 (ja) | 1999-09-30 | 1999-09-30 | 空きバッファ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28019299A JP3660173B2 (ja) | 1999-09-30 | 1999-09-30 | 空きバッファ管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001101080A JP2001101080A (ja) | 2001-04-13 |
JP3660173B2 true JP3660173B2 (ja) | 2005-06-15 |
Family
ID=17621593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28019299A Expired - Fee Related JP3660173B2 (ja) | 1999-09-30 | 1999-09-30 | 空きバッファ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3660173B2 (ja) |
-
1999
- 1999-09-30 JP JP28019299A patent/JP3660173B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001101080A (ja) | 2001-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7000225B2 (en) | Method for inserting global breakpoints | |
US7996686B2 (en) | Branch trace methodology | |
EP0730230B1 (en) | Method for prioritizing and handling errors in a computer system | |
US7594139B2 (en) | Extracting log and trace buffers in the event of system crashes | |
US7975260B1 (en) | Method of direct access and manipulation of debuggee memory from debugger | |
US9122597B2 (en) | Information processing apparatus, information processing method and medium storing program | |
US20040205399A1 (en) | System and method for self-diagnosing system crashes | |
US6081664A (en) | Method for monitoring a BIOS | |
US6658519B1 (en) | Bus bridge with embedded input/output (I/O) and transaction tracing capabilities | |
US5933848A (en) | System for managing the caching of data of a mass storage within a portion of a system memory | |
MX2007002204A (es) | Aparato, sistema y metodo para reinicio de serializacion de sistema de archivos. | |
US20100082929A1 (en) | Memory protection method, information processing apparatus, and computer-readable storage medium that stores memory protection program | |
CN112464221A (zh) | 内存访问行为的监控方法及系统 | |
US7281163B2 (en) | Management device configured to perform a data dump | |
EP0452243A2 (en) | Method of tracing for application program operation | |
JP3660173B2 (ja) | 空きバッファ管理方法 | |
CN112463286A (zh) | 用于虚拟机操作系统的异常事件监控方法及系统 | |
CN112463287A (zh) | 基于插桩的访问请求处理方法及系统 | |
CN112463288A (zh) | 基于插桩的行为监控方法及系统 | |
CN112464231A (zh) | 基于虚拟机的威胁检测方法及系统 | |
US6944792B2 (en) | Method for verifying user memory validity in operating system | |
JP3419392B2 (ja) | メモリアクセス監視装置、メモリアクセス監視方法およびメモリアクセス監視用プログラムを記録した記録媒体 | |
JP2000339189A (ja) | 不正なメモリアクセスを検出する方法、デバッグ装置および記録媒体 | |
JPH11212836A (ja) | 障害処理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
Johnson | Writing linux device drivers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050310 |
|
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: 20050315 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050316 |
|
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: 20080325 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140325 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |