JPH07319735A - メモリの不正アクセス検出方法及びシステム - Google Patents

メモリの不正アクセス検出方法及びシステム

Info

Publication number
JPH07319735A
JPH07319735A JP6112872A JP11287294A JPH07319735A JP H07319735 A JPH07319735 A JP H07319735A JP 6112872 A JP6112872 A JP 6112872A JP 11287294 A JP11287294 A JP 11287294A JP H07319735 A JPH07319735 A JP H07319735A
Authority
JP
Japan
Prior art keywords
address
access
area
memory
dynamic memory
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
JP6112872A
Other languages
English (en)
Other versions
JP2757777B2 (ja
Inventor
Katsuhiko Noda
勝彦 野田
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.)
Nippon Steel Corp
Original Assignee
Sumitomo Metal Industries 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 Sumitomo Metal Industries Ltd filed Critical Sumitomo Metal Industries Ltd
Priority to JP6112872A priority Critical patent/JP2757777B2/ja
Priority to US08/447,704 priority patent/US5604864A/en
Publication of JPH07319735A publication Critical patent/JPH07319735A/ja
Application granted granted Critical
Publication of JP2757777B2 publication Critical patent/JP2757777B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 動的割当メモリについての不正アクセス検出
を効率的に行わせるデバッグツールの提供。 【構成】 ユーザプログラムの実行で動的メモリの割当
要求があると、アクセス不可領域を作成し、またこれと
対をなす実メモリ領域を獲得し、さらに、アドレス変換
テーブルを作成する。ユーザプログラムでアクセスされ
る仮想アドレスは正常なアクセスであると、これがアク
セス不可領域に該当し、PMMU2、ページ管理テーブ
ルの働きでアクセス不可となる。これでCPU1に割込
がかかり、アクセスアドレスの正否チェック、及び該ア
ドレスから、実メモリ領域へのアクセスを可能とする仮
想アドレスを得るためのアドレス変換をアドレス変換テ
ーブルを用いて行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータプログラム
のデバッグ等に用いる、メモリの不正アクセス検出方法
及びシステムに関し、より詳しくは、ユーザプログラム
が処理上必要に応じて動的にメモリの割り当て/解放を
行う機能を提供されているコンピュータシステム上で動
作する、ソフトウエア開発ツール、不具合調査ツール、
品質検査/向上ツールなどにおいて、動的に割り当てら
れたメモリへユーザプログラムの不具合による不正アク
セスが行われたことを自動的に検出することを可能とし
た動的割当メモリへの不正アクセス検出方法及びシステ
ムを提案するものである。
【0002】
【従来の技術】従来は、プログラム記述言語としてFort
ran 言語、Cobol 言語などの言語が主流であったが、最
近では、C 言語、C ++言語などが多く利用されるよう
になってきた。これらの新しい言語の特徴は、システム
のサービスを直接的に呼び出したり、メモリの操作など
を直接的に記述できるなどの点にあり、非常に柔軟性が
高い。しかし、システムのサービスを直接的に呼び出し
たり、メモリの操作などを直接的に行うことは、使用法
が誤っていたり、プログラムに不具合が存在する場合に
は、非常に危険である。このような危険を回避するため
にプログラムのデバッグが不可欠であることは言うまで
もないが、コンピュータの演算速度の向上、記憶装置の
大容量化などから、ソフトウエアの規模は大きくなる傾
向にあり、不具合を検出することはより困難になりつつ
ある。
【0003】メモリの使用法の不具合の検出に関して述
べると、プログラムに割り当てられていないページに対
する参照などの不当アクセスは、PMMU(Page Memor
y Management Unit) によって自動的に検出が可能とな
っている。PMMUは、一定の単位(ページ)に分割さ
れたプロセッサのアドレス空間につき、ページ単位のア
クセス権の設定、並びに仮想メモリ使用時における仮想
メモリに対する物理メモリの割り当て状況の管理、及び
仮想論理アドレスから物理アドレスへの変換などを行う
デバイスであり、プロセッサに内蔵されている場合もあ
る。そして、必要に応じてプログラムにメモリを割り当
てるための動的メモリ割り当て機能はこのPMMUを利
用して実装される。また、オペレーティングシステムが
PMMUを制御するために、各ページの物理メモリの割
り当て状況及び各ページのアクセス権の設定を保持する
ページ管理テーブルが使用される。
【0004】ところでこのPMMUでは、プログラムに
割り当てられているページ内での不当アクセスの検出は
困難である。この不当アクセスの例としては、配列型デ
ータの範囲を超えた参照、及び動的に割り当てたメモリ
領域より大きなデータのコピーなどが挙げられ、これら
の不当アクセスは、他のデータが破壊されるなどの二次
的な不具合の原因となる。
【0005】以下に、メモリの使用法に関する不具合の
例を詳しく説明する。 (1)動的に割り当てたメモリの範囲を超えたメモリア
クセス 動的に割り当てたメモリの範囲を超えたアクセスは、例
えば10バイトのメモリを1000番地に動的に割り当てたと
すると、999 番地への書き込みは、前方の別なデータを
破壊することになる。1011番地への書き込みは、後方の
データを破壊することになる。それぞれ、読み込みは、
予期せぬデータの読み込みとなり、読み込まれたデータ
を元に別な命令を実行することによる二次的不具合の原
因となる。
【0006】(2)動的に割り当てたメモリへの書き込
み命令実行前の読み込み命令の実行 動的に割り当てたメモリは、割り当てた時点で、その内
容は不定である。動的割り当てメモリへ書き込みを行う
以前に読み込みを行った場合には、不定データの読み込
みとなり、読み込まれたデータを元に別な命令を実行す
ることによる二次的不具合の原因となる。
【0007】(3)解放済み動的割り当てメモリへのア
クセス プログラムは、処理上必要になった時点で、動的メモリ
の割り当てを行い、必要がなくなった時点で解放する。
そして、解放後にアクセスすることは、原則的に禁止さ
れているにもかかわらず、解放済みのメモリにアクセス
したり、解放済みのメモリに対して二重の解放要求を発
行したるすると、予期せぬ事態が発生する。
【0008】ところでプログラムが使用するメモリの種
類を大分類すると、命令域とデータ域とに分類される
が、通常、命令域は読み取り専用であり、プログラムの
不具合による命令域の破壊を考慮する必要はない。プロ
グラムの不具合によるメモリの破壊が問題になるのは、
データ域に関してである。プログラムが使用するデータ
を分類すると、以下の3種類となる。 静的データ スタックデータ 動的割り当てデータ
【0009】このうち、静的データは常に割り当てられ
るアドレスが固定である。また、スタックデータは、各
関数(サブルーチン)の呼び出し順に割り当てられるた
め、関数の呼び出し順が同じであれば同じ場所に割り当
てられる。また、静的データ/スタックデータとして定
義されたデータは、宣言された順で割り当てられ、メモ
リ上にも割り当て順で並ぶ。このことから、もし、ある
静的データ/スタックデータ内のデータが破壊されたこ
とが判明した場合には、その前後のデータ(前後に定義
したデータ)を操作している命令を追跡することによ
り、データを破壊している命令を比較的容易に特定でき
る。
【0010】一方、動的割り当てデータは、処理上必要
に応じて割り当てられるため、データのサイズ又は動作
環境など、様々な条件によって割り当てられる場所が異
なる。また、割り当てられるメモリ上の位置も、割り当
ての順に並ぶ保証はない。従って、ある動的割り当てデ
ータ内のデータが破壊されたことが判明した場合、その
前後のデータを操作している命令を追跡するためには、
まず、前後のデータが何であるかを特定する必要があ
り、データを破壊している命令を特定することは、より
難しいと言える。
【0011】そこでこのようなメモリの使用法に関する
不具合の検出を目的とした発明が米国特許519318号によ
って提案されている。この米国特許は、対象プログラム
中のメモリアクセス命令を検索し、全てのメモリアクセ
ス命令の前後に、アクセス対象のアドレスをチェックす
るための命令列を挿入する手段、メモリ上のそれぞれデ
ータ間にダミーデータを挿入しアクセス可能領域を非連
続にする手段、チェックを行うための管理情報の作成手
段、該管理情報によるアクセスの正当性の評価手段、及
び前記命令列の挿入及びダミーデータの挿入による非参
照アドレスのずれを整合する手段を備えることを主な特
徴としている。
【0012】
【発明が解決しようとする課題】ところで、前述のよう
に静的データ及びスタックデータ内のデータ破壊の調査
は、動的割り当てデータ内の調査と比較すると、比較的
容易である。しかし、前記米国尾特許は全てのメモリア
クセスのチェックを行うものであるから、動的割り当て
データ内のチェックのみを行ってチェック時間を節減し
たいというプログラム開発者の要求には応え得ない。そ
して前記米国特許には、動的割り当てメモリに関するア
クセスだけに限定して、チェックを行いたい場合の手段
に関しては、述べられていない。これは、該特許が再配
置可能オブジェクトファイルまたは実行可能ファイル内
のメモリアクセス命令を静的に検索しているためであ
る。
【0013】本発明はこのような技術的背景のもとにな
されたものであって、PMMUを巧みに利用することに
よって動的割り当てメモリに関するアクセスだけに限定
した不正アクセスの検出を可能とした不正アクセス検出
方法及びシステムを提供することを目的とする。
【0014】
【課題を解決するための手段及び作用】本発明は、ユー
ザプログラム中の動的メモリの割当要求に対しアクセス
不可領域の作成及びこれに対応する実メモリ領域の獲得
をすると共に、アクセス不可領域のアドレスから実メモ
リ領域のアドレスへの変換をするためのアドレス変換テ
ーブルを作成しておき、ユーザプログラム実行時に、該
ユーザプログラム中の動的メモリへのアクセスのための
アドレス、アクセス不可領域のアドレス及びアドレス変
換テーブルに基づいて前記アドレスによるアクセスの正
/不正を判定することを主たる特徴とする。以下、本発
明を図面に従って説明する。本発明の実施にはPMMU
が利用される。そこで本発明の理解を助けるためにまず
PMMUの一般的な作用について説明する。
【0015】図1は従来のメモリアクセスの概念図であ
り、1はCPU,2はPMMUを示している。ユーザプ
ログラム中の動的割当メモリへのアクセス命令(1) の実
行時に仮想メモリ空間上のアドレス10010がCPU
1のアドレスバスから送出されたものとする。PMMU
2は仮想アドレス10010を受け取り(2) 、これが属
するページ(先頭アドレスが10000)のエントリを
ページ管理テーブル(メモリの適宜領域に記憶)で検索
する(3) 。この検索で仮想アドレス10010が属する
ページが物理アドレス200番地からのページにマッピ
ングされていることを示すエントリをみつけたとする
(4) 。そうすると、仮想アドレス10010を物理アド
レス210に変換し(5) 、ここにアクセスする。そして
それ以降の命令を実行する。
【0016】本発明ではユーザプログラムでアクセスさ
れる仮想アドレスはアクセス不可であるように予めペー
ジ管理テーブルを構成しておく。ユーザプログラムの実
行でメモリアクセスがあるとPMMUはページ管理テー
ブルでアクセス不可を知ることになる。そこでPMMU
はCPUに割込をかけ割込ハンドラを起動させる。この
割込処理の中でアクセス対象アドレスの正否を調べ、ア
クセス可能な仮想アドレスへの変換を行い、これをPM
MUへ再度与えることとして、これを物理アドレスに変
換せしめる。
【0017】図2、3は本発明の概念図であり、特にア
クセス命令の実行の関連について詳しく説明したもので
ある。ユーザプログラムの実行で動的メモリの割当要求
があると(1) 、アクセス不可領域を作成する。また、ア
クセス不可領域と対をなす実メモリ領域(通常の動的割
当メモリの領域)もあわせて獲得する。ページ管理テー
ブルはこれらに基づいて作成され、ユーザプログラムで
アクセスされる仮想アドレスはページ管理テーブルでア
クセス不可となるようにする。実メモリ領域は割込ハン
ドラで使用される仮想アドレスに対応して割り当てる。
次にユーザプログラム中のアクセス対象アドレスの正否
及び該アドレスから前記仮想アドレスを得るためのアド
レス変換テーブルが作成される。これらアクセス不可領
域の作成及びこれと対をなす実メモリ領域の獲得、並び
にアドレス変換テーブルの作成及び内容については後述
する。
【0018】さて、ユーザプログラム中の動的割当メモ
リへのアクセス命令(2) の実行時に仮想メモリ空間上の
アドレス10010がCPU1のアドレスバスから送出
されたものとする。PMMU2は仮想アドレス1001
0を受け取り(3) 、これが属するページ(先頭アドレス
が10000)のエントリをページ管理テーブルで検索
する(4) 。そうすると、この発明ではアクセス不可を示
すエントリを見つけることになる(5) 。
【0019】PMMU2はCPU1に不当ページアクセ
スのハードウエア割込をかける(6)。この割込機能自体
は従来のPMMUが通常有している機能である。CPU
1はこの割込に対応する割込ハンドラを割込ベクタから
検索する(7) 。該当する割込ハンドラが見つかると(8)
、これに制御を移す(9) 。割込ハンドラ(10)では、ア
ドレス変換テーブルでアクセス対象のアドレス1001
0を検索し、その正当性をチェックし、不正である場合
は警告を発する。正当である場合は、アドレス変換テー
ブルによってアドレス10010を実際に割り当てられ
た仮想アドレス、例えば20010へ変換する。このア
ドレスがCPU1のアドレスバスから送出される(11)。
PMMU2は仮想アドレス20010を受け取り(12)、
これが属するページ(先頭アドレスは20000)のエ
ントリをページ管理テーブルで検索する(13)。この検索
で仮想アドレス20010が属するページが物理アドレ
ス200番地からのページにマッピングされていること
を示すエントリをみつけたとする(14)。そうすると、仮
想アドレス20010を物理アドレス210に変換し(1
5)、ここにアクセスする。そしてユーザプログラムに制
御を戻し(16)、それ以降の命令を実行する(17)。
【0020】以上のような処理の過程で不当アドレスへ
のアクセスは割込ハンドラの中で、具体的にはアドレス
変換テーブルの参照で検出できることになる。
【0021】本発明方法の実施には以下のような機能実
現手段が必要である。 (1)動的メモリ割り当て/解放機能置換手段 コンピュータに用意されている通常のシステムライブラ
リの動的メモリ割り当て機能では上述のアクセス不可領
域の作成などは行われない。したがって、本発明に依っ
てユーザプログラムのデバッグをするコンピュータで、
通常の動的メモリ割り当て機能が働かず、本発明のよう
な割当が行えるようにライブラリの置換を行う必要があ
る。対応する解放機能も同様である。この手段はそのよ
うな置換をするものである。
【0022】(2)動的メモリ割り当て手段 ユーザプログラムからの動的メモリの割り当て要求に対
して、以下に説明するアドレス変換テーブル作成手段及
びアクセス不可領域アドレス通知手段を行使して動的メ
モリ割り当てを行う。
【0023】(3)アドレス変換テーブル作成手段 動的メモリ割り当て要求に対し、アクセス不可領域の作
成と、実メモリ領域の獲得を対で行い、アクセス不可領
域のアドレスから実メモリ領域のアドレスへ変換するた
めのアドレス変換テーブルを作成する。
【0024】(4)アクセス不可領域アドレス通知手段 動的メモリ割り当て要求に対し前記アドレス変換テーブ
ル作成手段により作成されたアクセス不可領域のアドレ
スをユーザプログラムに通知することにより、ユーザプ
ログラムが動的割り当てメモリへアクセスする箇所を検
出する。
【0025】(5)動的メモリ解放手段 動的割り当てメモリの解放要求に対し、アドレス変換テ
ーブルを操作し、該当するメモリ領域を解放済み未使用
状態とする。
【0026】(6)アクセス不可領域アクセス検出手段 前記アクセス不可領域アドレス通知手段によりユーザプ
ログラムに通知されたアクセス不可アドレスへのアクセ
スを検出したとき、アクセス対象アドレスをアドレス変
換テーブルから検索することにより、不正アクセスの検
出を行う。
【0027】(7)アドレス変換実行手段 アクセス不可領域アクセス検出手段によって検索された
結果により、アクセス不可アドレスから実アドレスへの
変換を行いアクセスを実行する。このような機能実現手
段はソフトウエアによって構成される。そこでプログラ
ムの構造を示す図面に従って本発明をその動的メモリの
操作の観点から説明する。
【0028】本発明の理解を助けるために、まず通常の
動的メモリの操作につき図4を用いて説明する。 ステップ010 ユーザプログラムは、システムライブラリから動的メモ
リ割り当て機能を呼び出す(1) 。ユーザプログラムから
の呼び出しにより、動的メモリ割り当て機能が起動し、
実際の動的メモリ割り当てを行い(2) 、割り当てられた
動的メモリのアドレスが通知される(3) 。
【0029】ステップ100 ユーザプログラムは、動的に割り当てたメモリへ参照/
書き込みなどのアクセスを行う(4) 。アクセス対象のア
ドレスは、ステップ010で通知されたアドレスであ
る。 ステップ200 ユーザプログラムは、解放対象の領域として、ステップ
010で通知されたアドレスを指定し、システムライブ
ラリから動的メモリ解放機能を呼び出す(5) 。ユーザプ
ログラムからの呼び出しにより、動的メモリ解放が起動
し、指定された領域を解放し(6) 、ユーザプログラムに
復帰する(7) 。
【0030】つぎに、本発明につき、上述したところと
の対比が明らかになるように図面に基づいて詳述する。
図5は本発明の動的メモリの操作の概念図である。前述
の動的メモリ割り当て手段、アドレス変換テーブル作成
手段、及びアクセス不可領域アドレス通知手段は、本発
明のソフトウエアである置換ライブラリ中の動的メモリ
割り当て機能(a)として実現されており、動的メモリ
解放手段は同じく動的メモリ解放機能(b)として実現
されており、アクセス不可領域アクセス検出手段、及び
アドレス変換実行手段は同じく動的割当メモリアクセス
チェック機能(c)として実現されている。ユーザプロ
グラムの実行で置換ライブラリが起動され、このコンピ
ュータシステムにもともと用意されているシステムライ
ブラリの動的メモリ割り当て/解放機能が起動されない
ようにしておく。
【0031】以下、ユーザプログラムの実行に伴う動的
メモリの操作について説明する。 ステップ010 ユーザプログラムは、動的メモリ割り当て機能を呼び出
す(1) 。ユーザプログラムからの呼び出しにより、置換
ライブラリ内の動的メモリ割り当て機能(a)が起動
し、アクセス不可領域の作成(2) 、及び実際の動的メモ
リ割り当て(3) を行い、アクセス不可領域のアドレスが
通知される(4) 。
【0032】ステップ100 ユーザプログラムは、動的に割り当てたメモリへ参照/
書き込みなどのアクセスを行う(5) 。アクセス対象のア
ドレスは、ステップ010で通知されたアクセス不可領
域のアドレスであるため、図2、3によって説明したよ
うにPMMU2がアクセス不可領域へのアクセスを検出
し、これによって動的割当メモリアクセスチェック機能
(c)が呼び出される(6) 。動的割当メモリアクセスチ
ェック機能(c)内では、アクセス対象アドレスの正当
性をチェックした後、実際に割り当てた動的メモリへの
アクセスを行い(7) 、ユーザプログラムに復帰する(8)
【0033】ステップ200 ユーザプログラムは、解放対象の領域として、ステップ
010で通知されたアドレスを指定し、動的メモリ解放
機能(b)を呼び出す(9) 。ユーザプログラムからの呼
び出しにより、動的メモリ解放機能が起動し、解放対象
アドレスの正当性をチェックした後、アクセス不可領域
の削除(10)及び実際の動的メモリの削除(11)を行い、ユ
ーザプログラムに復帰する(12)。
【0034】このような本発明によれば、以下のような
不正又は不当アクセスの検出が可能である。 ・動的に割り当てたメモリの範囲を超えたメモリアクセ
スの検出 ・動的に割り当てたメモリへの書き込み命令実行前の読
み込み命令実行の検出 ・解放済み動的割り当てメモリへのアクセスの検出
【0035】そして、静的データ、スタックデータ内の
チェックは行わないから、本発明によれば、それらのた
めにハードウエア資源を無駄に占有することがなく、ユ
ーザプログラムの実行時間が短縮出来る。
【0036】
【実施例】以下、本発明をその実施例を示す図面に基づ
いて詳述する。図6は本発明のシステムのハードウエア
構成図、図7は処理の概略の流れを示すフローチャート
である。
【0037】図6に示すようにCPU1及びPMMU2
と接続されているメモリ3にはユーザプログラム3a,
本発明に係る不正アクセス検出ライブラリ3b,システ
ムライブラリ3c,及びオペレーティングシステム(O
S)3dがロードされている。前述したようにこのよう
な実行可能ファイルができた状態ではシステムライブラ
リ3c内の動的メモリ割当機能、同解放機能はユーザプ
ログラム3aからは呼び出せないようになっている。
【0038】図7に示すように、本発明ではまずユーザ
プログラムをコンパイルする(S1)。ついで実行可能
ファイルを作成し(S2)、メモリ3に読み込む(S
3)。これらの過程では動的メモリの割当/解放機能を
システムライブラリ3cのそれから本発明に係る不正ア
クセス検出ライブラリ3bのそれへ置換するか、又は、
システムライブラリの対応機能が呼び出されないように
する。次にファイルを実行する(S4,5)が、この実
行段階では図2、4で説明したように動的メモリの割
当、アドレス変換テーブル作成、アクセス不可領域アド
レス通知、アクセス不可領域アクセス検出及びアドレス
変換の実行を行う。以下に各機能実現手段の説明を詳述
する。
【0039】動的メモリ割り当て/解放機能置換手段 これはシステムが提供する動的メモリ割り当て/動的メ
モリ解放機能を、本発明に係る動的メモリ割当機能/動
的メモリ解放機能/動的割当メモリアクセスチェック機
能に置換する手段である。これにより、ユーザプログラ
ムからの動的メモリの割り当て/解放の要求に対して、
本発明に係る各機能が起動し、各手段を行使して動的割
り当てメモリへの不正アクセスを検出することが可能と
なる。置換の方法は、ライブラリ共有機能を持つOSと
持たないOS、共有ライブラリを使用するプログラムと
使用しないプログラムとで異なる。さらにライブラリ共
有機能を持つOSであっても、動的に先読みライブラリ
(pre-load library)を指定する機能を提供するOSと,
そうでないOSとは異なる。
【0040】図8、9はこれらの場合によって異なる置
換処理のフローチャートである。本発明実施のためのソ
フトウエアが汎用商品として作成される場合はこの図
8、9のようにライブラリアーキテクチュアを判断して
それに適した置換が自動的に行われるように構成する。
適用システムに応じたものとして前記ソフトウエアが作
成される場合は、そのライブラリアーキテクチュアに応
じた置換だけが可能なように構成すれば足りる。
【0041】まずユーザプログラムの再配置可能ファイ
ルを作成する(S81)。次に、ライブラリアーキテク
チュアを判断して(S82)、先読み共有ライブラリを
指定する機能を有する場合(つまりライブラリ共有機能
を持ち、先読みライブラリ指定可能なOS上で、共有ラ
イブラリを使用するプログラムを対象とする場合)はS
83へ移り、ユーザプログラムの実行可能ファイルを作
成する。
【0042】本発明の動的メモリ割当機能/解放機能/
動的割当メモリアクセスチェック機能を含んだ不正アク
セス検出ライブラリを作成する(S84)。そしてター
ゲットプログラム(デバッグ対象とするユーザプログラ
ム)起動時に、不正アクセス検出ライブラリを先読みラ
イブラリとして指定する(S85)。図10はこの場合
のファイル構成説明図、図11はメモリ3内での配置イ
メージ図である。
【0043】ターゲットプログラムを起動する(S8
6)と、実行可能ファイル、不正アクセス検出ライブラ
リ、及びシステムライブラリの順でメモリ上に読み込ま
れ実行イメージが作成される。システムライブラリには
動的メモリ割当/解放機能が残っているが不正アクセス
検出ライブラリのものが先読みされるので支障はない。
【0044】次に、システム共有ライブラリ内機能置換
ケース、即ちライブラリ共有機能を持つが、先読みライ
ブラリ指定不可能なOS上で、共有ライブラリを使用す
るプログラムを対象とする場合について説明する。図1
2はこの場合のファイル構成説明図、図13はメモリ3
内での配置イメージ図である。
【0045】この場合、S88でユーザプログラムの実
行ファイルを作成し、次に図13に示すようにシステム
ライブラリの動的メモリ割当/解放機能を、本発明の動
的メモリ割当機能/解放機能/動的割当メモリアクセス
チェック機能に置換したライブラリ(以下、置換み共有
ライブラリという)を作成する(S89)。
【0046】ターゲットプログラム起動時、共有ライブ
ラリ格納ディレクトリ指定が可能なOSでは共有ライブ
ラリ格納ディレクトリとして置換済ライブラリが格納さ
れたディレクトリを指定する(S90,93)。共有ラ
イブラリ格納ディレクトリ指定が不可能なOSでは、一
時的にシステム共有ライブラリと置換済み共有ライブラ
リとを置換する(S91)。そしてターゲットプログラ
ムを起動すると(S92)実行可能ファイル、置換済ラ
イブラリの順でメモリ上に読み込まれ実行イメージが作
成される。
【0047】共有ライブラリ格納ディレクトリ指定が不
可能なOSでは、ターゲットプログラムの起動が完了し
た時点で、システム共有ライブラリを復元する。その他
の場合(システムライブラリ内機能置換ケース)は以下
のとおりである。
【0048】図14にシステムライブラリ内機能置換ケ
ースのファイル構成を、図15にメモリ上での配置イメ
ージを示す。この場合はシステムライブラリ内の動的メ
モリ割当/解放機能を、本発明の動的メモリ割当機能/
解放機能/動的割当メモリアクセスチェック機能に置換
したライブラリ、つまり置換済みライブラリを作成する
(S94)。ターゲットプログラムを再配置可能ファイ
ルから実行可能ファイルを作成する際、システムライブ
ラリの代わりに、置換済みライブラリを指定してターゲ
ットプログラムに結合するよう指定して、ターゲットプ
ログラムの実行可能ファイルの作成を行う(S95)。
そしてターゲットプログラムを起動する(S96)。こ
れらの手続きにより、ユーザプログラムからの動的メモ
リ割当/解放要求に対して、システムが提供する動的メ
モリ割当/解放機能置換機能ではなく、本発明の動的メ
モリ割当/解放機能置換機能が起動されることになる。
【0049】以下の手段はデバッグなどのためにユーザ
プログラムを実行した場合に作用するものである。
【0050】動的メモリ割り当て手段 この手段の処理手順を図16に示す。ユーザプログラム
からの動的メモリの割り当て要求に対して、下記のアド
レス変換テーブル作成手段(S162)及びアクセス不
可領域アドレス通知手段(S163)を行使し、動的メ
モリ割り当てを行うためのものである。また、第1回目
の場合(S161)、不当ページアクセス割込ハンドラ
の登録を行う(S164)。
【0051】不当ページアクセス割込ハンドラの登録は
以下のようにして行う。ユーザプログラムの実行でアク
セス不可ページへのアクセスがあった場合、PMMUは
それを検出しハードウエア割り込みを生成する。割り込
み発生時には予めハードウエア割込ベクタに登録され
た、割り込みハンドラが呼び出される。
【0052】本発明では、このPMMUの機構を利用
し、動的割当メモリへのアクセスの正当性をチェックす
るため、アクセス不可能ページへのアクセス検出時にP
MMUから発生されるハードウエア割込に対して起動さ
れる割り込みハンドラ(以下不当ページアクセス割り込
みハンドラという)として、動的割当メモリアクセスチ
ェック機能を、ハードウエア割り込みベクタに登録す
る。
【0053】OSがPMMUから発生されるハードウエ
ア割り込みを受け付ける機能を提供している場合には、
割り込みベクタを直接操作するのではなく、OSの手続
きによって不当ページアクセス割込ハンドラの登録を行
う。なお、動的割当メモリアクセスチェック機能はアク
セス不可領域アクセス検出手段、アドレス変換実行手段
を行使し、不当ページアクセス割込ハンドラ内で起動さ
れる。
【0054】アドレス変換テーブル作成手段(S16
2) この手段の処理手順を図17に示す。この手段は動的メ
モリ割り当て要求に対し、以下の手続きを行う。
【0055】未使用アドレス変換テーブルの検索(S1
71) ユーザプログラムからの割り当て要求サイズとギャップ
サイズ×2との和を、最低割り当て単位で切り上げを行
いこれを割当必要サイズとして決定する。そして後述す
る検索制御リンク内に連結されたアドレス変換テーブル
の中から、未使用状態の領域を管理するアドレス変換テ
ーブルで、かつその管理する領域のサイズが割当必要サ
イズを満たすものを検索する。
【0056】検索の結果該当するアドレス変換テーブル
が見つかった(S172)場合には、アドレス変換テー
ブルの分割を行う(S177)。見つからなかった場合
には、アクセス不可領域の作成(S173)、実メモリ
領域の獲得(S174)、アドレス変換テーブル作成
(S175)、及びアドレス変換テーブルのリンク連結
(S176)を順次行って、アドレス変換テーブルの分
割(S177)を行う。
【0057】アクセス不可領域の作成(S173) 前記割当必要サイズをページサイズの倍数に切り上げ
る。そしてPMMUの制御に使用されているページ管理
テーブルから、切り上げ後のサイズを満たす連続した未
使用ページを検索する。検索された未使用ページを、す
べてのアクセス権を不可にセットして使用中とする。な
おOSからPMMUの制御/ページ管理テーブルの操作
に関して、同等の手続き機能が提供されている場合に
は、ページ管理テーブルの直接操作は行わず、OSの手
続きを呼び出す。
【0058】実メモリ領域の獲得(S174) PMMUの制御に使用されているページ管理テーブルか
らアクセス不可領域の作成(S173)で作成したアク
セス不可領域と同じサイズを満たす連続した未使用ペー
ジを検索する。検索された未使用ページを、読み込み権
/書き込み権を可にセットして使用中とし、実際のメモ
リページを割り当てる。なお、OSからPMMUの制御
/ページ管理テーブルの操作に関して、同等の手続き機
能が提供されている場合には、ページ管理テーブルの直
接操作は行わず、OSの手続きを呼び出す。
【0059】アドレス変換テーブル作成(S175) アドレス変換テーブルは図18に示す領域管理情報と図
示しない検索制御情報とから構成される。図18は領域
管理情報とアクセス不可領域及び実メモリ領域との関係
を示す。領域管理情報は、以下の各項目から構成され
る。
【0060】領域サイズ 当該アドレス変換テーブルが管理する領域全体のサイズ
を意味する。従ってこの部分には、アクセス不可領域の
作成(S173)、実メモリ領域の獲得(S174)で
作成したアクセス不可領域/実メモリ領域のサイズを設
定する。
【0061】割り当て要求サイズ 当該アドレス変換テーブルが管理する領域内で、ユーザ
プログラムから要求され、割り当てたサイズを意味す
る。従ってこの部分には、ユーザプログラムからの割り
当て要求サイズを設定する。
【0062】ギャップサイズ 動的に割り当て領域が連続しないようにするための隙間
のサイズを意味する。動的に割り当てた領域が連続して
隣接している場合には、もしユーザプログラムが範囲を
超えたアクセスをしても、隣接領域へのアクセスとの区
別がつかないため、各割り当て領域は連続しないことと
する。ギャップサイズが固定の場合には、この項目は不
要である。
【0063】アクセス不可領域のアドレス 当該アドレス変換テーブルが管理するアクセス不可領域
の先頭アドレスを意味する。この部分にはアクセス不可
領域の作成(S173)で作成したアクセス不可領域の
先頭アドレスを設定する。
【0064】実メモリ領域のアドレス 当該アドレス変換テーブルが管理する実メモリ領域の先
頭アドレスを意味する。この部分には実メモリ領域の獲
得(S174)で作成した実メモリ領域の先頭アドレス
を設定する。
【0065】状態フラグ 当該アドレス変換テーブルが管理する領域の使用状況を
意味する。「使用中」「未使用状態」の2状態と、実施
者の必要に応じた付加的状態を設定可能とする。獲得時
には、「使用中」を示す値を設定する。
【0066】初期化状態管理ビットマップ 当該アドレス変換テーブルが管理する領域内の各バイト
単位の初期化状態を意味する。各バイト単位に当項目内
の各ビットが初期化状態を示す。初期化状態とは、未初
期化状態と初期化済み状態の2状態のどちらかを示す。
未初期化状態とは、一度も書き込みの行われていない状
態を言う。初期化済み状態とは、1度以上書き込みの行
われた状態を言う。なお獲得時には、すべて「未初期化
状態」に設定する。
【0067】以上のような各項目は、実施者により、追
加/再編/省略/統合/細分化することが可能である。
検索制御情報は、検索制御リンクを形成するための付加
情報である。検索制御リンクは領域管理情報を高速に検
索するために形成する。また、検索制御リンクは、バイ
ナリツリー方式、シリアルリンク方式、などそれ自体公
知の様々な方式で構成することが可能である。検索制御
リンクをどのように構成するかは、実施者定義とする。
以下に、バイナリツリー方式、シリアルリンク方式で検
索制御リンクを構成した場合のアドレス変換テーブルの
様式を示す。
【0068】バイナリツリー方式 バイナリツリー方式を採用した場合における、検索制御
リンクの概観を図19に、またアドレス変換テーブルの
様式を図20に示す。アドレス変換テーブル内の検索制
御情報は前方リンクポインタ(1) 及び後方リンクポイン
タ(2) からなる。前方リンクポインタは、自ノードが管
理するアクセス不可領域より前方(例えば図19の左
側)に位置するアクセス不可領域を管理するアドレス変
換テーブルを指す。また、後方リンクポインタは、自ノ
ードが管理するアクセス不可領域より後方(例えば図1
9の右側)に位置するアクセス不可領域を管理するアド
レス変換テーブルを指す。連結する際には、検索時の便
宜上、常に、各アドレス変換テーブルが管理するアクセ
ス不可領域のアドレスで、ツリーを構成するよう状態を
維持する。
【0069】シリアルリンク方式 シリアルリンク方式を採用した場合における、検索制御
リンクの概観を図21に、またアドレス変換テーブルの
様式を図22に示す。アドレス変換テーブル内の検索制
御情報は前方リンクポインタ(1) 及び後方リンクポイン
タ(2) からなる。
【0070】前方リンクポインタは、自ノードが管理す
るアクセス不可領域より前方に位置するアクセス不可領
域を管理するアドレス変換テーブルを指す。また後方リ
ンクポインタは、自ノードが管理するアクセス不可領域
より後方に位置するアクセス不可領域を管理するアドレ
ス変換テーブルを指す。連結する際には、常に、各アド
レス変換テーブルが管理するアクセス不可領域のアドレ
スでソートされた状態を維持する。
【0071】検索制御リンクはいずれの方式によっても
よいが、アドレスから、該当するアドレスを含むアドレ
ス変換テーブルを検索する場合には、バイナリツリー方
式が優れている。未使用状態のアドレス変換テーブルを
検索するなど、全アドレス変換テーブルを操作する必要
がある場合や、アドレス変換テーブルを結合するなど、
前後のアドレス変換テーブルを参照する場合は、シリア
ルリンク方式が優れている。従って、両方式を共に用い
るのが望ましい。
【0072】図17に戻って、このようなアドレス変換
テーブルのリンク連結(S176)は、アドレス変換テ
ーブル作成(S175)で作成したアドレス変換テーブ
ルを検索制御リンクへ連結することで行われる。
【0073】アドレス分割(S177) この後アドレス変換テーブルの分割(S177)を行
う。未使用アドレス変換テーブルの検索(S171)で
検索されたアドレス変換テーブル、またはアドレス変換
テーブル作成(S175)で作成したアドレス変換テー
ブルが管理するサイズが、割当必要サイズと分割基準規
定サイズとの和のサイズより大きい場合、アクセス不可
領域及び実メモリ領域それぞれを分割する。分割基準規
定サイズは、実施者定義、または利用者定義とする。分
割は、以下の手順で行う。
【0074】(1) アドレス変換テーブル作成 分割された領域の後方側領域を管理するための、アドレ
ス変換テーブル(新アドレス変換テーブル)を作成す
る。分割された領域の前方側領域は、分割前の領域を管
理するアドレス変換テーブル(元アドレス変換テーブ
ル)で管理する。作成したアドレス変換テーブルの各項
目は、以下のとおり設定する。
【0075】領域サイズ (元アドレス変換テーブルの領域サイズ−割当必要サイ
ズ)を設定する。
【0076】割り当て要求サイズ 0を設定する。
【0077】ギャップサイズ 元アドレス変換テーブルのギャップサイズを設定する。
【0078】アクセス不可領域のアドレス (元アドレス変換テーブルのアクセス不可領域のアドレ
ス+割当必要サイズ)を設定する。
【0079】実メモリ領域のアドレス (元アドレス変換テーブルの実メモリ領域のアドレス+
割当必要サイズ)を設定する。
【0080】状態フラグ 「未使用状態」を設定する。
【0081】初期化状態管理ビットマップ すべて「未初期化状態」に設定する。
【0082】(2) 新アドレス変換テーブルのリンク
連結 アドレス変換テーブル作成(S175)で作成したアド
レス変換テーブルをアドレス変換テーブルのリンク連結
(S176)と同様に検索制御リンクへ連結する。
【0083】(3) 元アドレス変換テーブルの再設定 分割前の領域を管理するアドレス変換テーブルの各項目
を、以下のとおり更新する。
【0084】領域サイズ 割当必要サイズを設定する。
【0085】その他 変更なし。
【0086】図16に戻ってアクセス不可領域アドレス
通知手段(S163)を説明する。動的メモリ割り当て
要求に対し、アドレス変換テーブル作成手段(S16
2)により作成されたアドレス変換テーブルのアクセス
不可領域内のアドレスに、同テーブル内のギャップサイ
ズを加えたアドレス(以下ユーザ割り当てアドレスとい
う)を、ユーザプログラムに通知する。このことによ
り、ユーザプログラムは、通知されたユーザ割り当てア
ドレスを動的割り当てメモリのアドレスであると解釈す
る。
【0087】また、ユーザ割り当てアドレスは、アクセ
ス不可能領域内のアドレスであるため、ユーザプログラ
ムがユーザ割り当てアドレスにアクセスすると、PMM
U2がアクセス不可アドレスへのアクセスとしてそれを
検出し、割り込みハンドラが起動される。前述したよう
に、このPMMUの振る舞いを利用することにより、動
的割り当てメモリへアクセスする箇所を検出することが
可能となる。
【0088】動的メモリ解放手段 図23は動的メモリ解放手段の処理手順を示すフローチ
ャートである。この手段は動的割り当てメモリの解放要
求に対し、以下の手順の処理を行う。
【0089】アドレス変換テーブル検索(S231) 解放要求で指定されたアドレスを含む領域を管理するア
ドレス変換テーブルを前述の検索制御リンクから検索す
る。検索の結果、該当するアドレス変換テーブルが見つ
からなかった(S232)場合には、その旨をユーザに
警告し、解放要求を却下する(エラー通知:S23
8)。
【0090】検索の結果得られたアドレス変換テーブル
内のアクセス不可領域のアドレスとギャップとの和のア
ドレスが、解放要求で指定されたアドレスと等しくない
場合(ユーザ通知領域の先頭でない場合)(S23
3)、アクセス不可領域アドレス通知手段でユーザプロ
グラムに通知したアドレスとは異なるため、その旨をユ
ーザに警告し、解放要求を却下する(エラー通知:S2
38)。
【0091】検索の結果得られたアドレス変換テーブル
内の状態フラグが、「使用中」の状態でない(S23
4)場合には、一度も割り当てられていない領域へのア
クセス、または、すでに解放された領域へのアクセスと
して、その旨をユーザに警告し、解放要求を却下する
(エラー通知:S238)。
【0092】S233,234がともにYESである場
合は、検索されたアドレス変換テーブルの状態フラグを
「未使用状態」に設定し(S235)、該当するメモリ
領域を未使用領域とする。このようにして未使用状態と
なったアドレス変換テーブルの前後に、未使用状態とな
ったアドレス変換テーブルが存在する(S236)場合
には、それらを連結し(S237)、1つのアドレス変
換テーブルでの管理を行う。不要になったアドレス変換
テーブルは削除する。
【0093】アクセス不可領域アクセス検出手段 図24はアクセス不可領域アクセス検出手段の処理手順
を示すフローチャートである。この手段はアクセス不可
領域アドレス通知手段によりユーザプログラムに通知さ
れたアクセス不可アドレスへ、ユーザプログラムが実際
にアクセスした時点で起動される不当ページアクセス割
り込みハンドラ内で行使される。
【0094】アクセス不可領域へのアクセスを検出した
場合、ユーザプログラムが使用していたレジスタ(以下
ユーザレジスタという)を保存する(S241)。ただ
し、OSが割り込みハンドラ呼び出し時に、ユーザレジ
スタを保存している場合には不要である。そして、アク
セス対象アドレス及びサイズを、実行しようとした命令
から取り出し(S242)、取り出されたアドレスを含
む領域を管理するアドレス変換テーブルを、前述の検索
制御リンクから検索する(S243)。アクセス対象ア
ドレスを検索の結果、該当するアドレス変換テーブルが
見つからなかった場合(S244)には、その旨をユー
ザに警告し、アクセス命令をスキップする(エラー通
知:S247)。
【0095】S244で見つかった場合はユーザ通知領
域であるか否かをしらべる(S245)。即ち、アクセ
ス対象アドレスまたはアクセス対象末尾アドレス(アク
セス対象アドレスとアクセス対象サイズとの和)が、検
索の結果得られたアドレス変換テーブルが示すユーザ通
知領域(アクセス不可領域のアドレスとギャップサイズ
との和のアドレスから、アクセス不可領域のアドレスと
ギャップサイズと割り当て要求サイズとの和のアドレス
まで:図18参照)の範囲に入っていなければ、前後ギ
ャップ内へのアクセスと判断し、範囲外へのアクセスの
旨をユーザに警告し、アクセス命令をスキップする(S
247)。
【0096】次には検索の結果得られたアドレス変換テ
ーブル内の状態フラグを調べ(S246)、「使用中」
の状態でない場合には、一度も割り当てられていない領
域へのアクセス、又はすでに解放された領域へのアクセ
スとして、その旨をユーザに警告し、アクセス命令をス
キップする(S247)。なお、S245,246でN
Oの場合は、実施者定義によって、アクセス命令の実行
を許可することが可能である。
【0097】S244,245,246でいずれもYE
Sである場合は、次に説明するアドレス変換を実行した
後、ユーザレジスタの復元を行い、ユーザプログラムの
割り込みを発生した命令の次の命令に復帰する。ただ
し、OSが割り込みハンドラ呼び出し時に、ユーザレジ
スタを保存している場合には不要である。
【0098】アドレス変換実行手段 図25はアドレス変換実行手段の処理手順を示すフロー
チャートである。この手段はアクセス不可領域アクセス
検出手段によって得られたアクセス対象アドレス及びサ
イズのメモリに対し、以下の手順で処理を行う。
【0099】まずアクセス不可領域へのアクセスを実行
しようとした命令から、読み込み/書き込み等の命令の
種類を取り出す(S251)。次に、読み込み命令であ
るか書き込み命令であるかを調べ(S252)、読み込
み命令の場合、初期化状態管理ビットマップ内のアクセ
ス対象アドレス及びサイズの該当するビットの状態をチ
ェックする(S256)。初期化状態管理ビットマップ
内の該当ビットが未初期化状態を示す場合には、未初期
化メモリの読み込みとして、その旨をユーザに警告する
(エラー通知:S257)。
【0100】S252でメモリアクセス命令の種類が書
き込み命令であると判別した場合、初期化状態管理ビッ
トマップ内のアクセス対象アドレス及びサイズの該当す
るビットの状態を初期化済みとして設定する(S25
3)。
【0101】S253,257の次又はS256でのチ
ェックの結果が未初期化メモリの読み込みでなかった場
合は命令の代行をする(S254)。ここにおいてはア
クセス対象アドレスを、アドレス変換テーブル内のアク
セス不可領域のアドレスと実メモリ領域のアドレスを元
に、実アドレスへの変換を以下の式で行い、アクセスを
代行する。 アクセス対象実アドレス=命令から取り出したアドレス
−アクセス不可領域のアドレス+実メモリ領域のアドレ
ス そうしてメモリアクセス命令を代行した後、メモリアク
セスによって変更されるレジスタをユーザプログラムの
レジスタ保存域に格納する(S255)。
【0102】
【発明の効果】このような本発明によれば、以下のよう
な不正又は不当アクセスの検出が可能である。 ・動的に割り当てたメモリの範囲を超えたメモリアクセ
スの検出 ・動的に割り当てたメモリへの書き込み命令実行前の読
み込み命令実行の検出 ・解放済み動的割り当てメモリへのアクセスの検出
【0103】そして、静的データ、スタックデータ内の
チェックは行わないから、本発明によれば、それらのた
めにハードウエア資源を無駄に占有することがなく、ユ
ーザプログラムの実行時間が短縮出来る。
【図面の簡単な説明】
【図1】従来のメモリアクセスの概念図である。
【図2】本発明の概念図である。
【図3】本発明の概念図である。
【図4】従来の動的メモリの操作の概念図である。
【図5】本発明の動的メモリの操作の概念図である。
【図6】本発明システムのハードウエア構成図である。
【図7】本発明方法の概略フロチャートである。
【図8】置換処理のフローチャートである。
【図9】置換処理のフローチャートてある。
【図10】ファイル構成説明図である。
【図11】メモリ内配置イメージ図である。
【図12】ファイル構成説明図である。
【図13】メモリ内配置イメージ図である。
【図14】ファイル構成説明図である。
【図15】メモリ内配置イメージ図である。
【図16】動的メモリ割当手段のフローチャートであ
る。
【図17】アドレス変換テーブル作成手段のフローチャ
ートである。
【図18】領域管理情報の説明図である。
【図19】バイナリツリー方式の検索制御リンクの概観
図である。
【図20】そのアドレス変換テーブルの様式図である。
【図21】シリアルリンク方式の検索制御リンクの概観
図である。
【図22】そのアドレス変換テーブルの様式図である。
【図23】動的メモリ解放手段のフローチャートであ
る。
【図24】アクセス不可領域アクセス検出手段のフロー
チャートである。
【図25】アドレス変換実行手段のフローチャートであ
る。
【符号の説明】
1 CPU 2 PMMU 3 メモリ

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 動的メモリ割当要求及び動的メモリへの
    アクセスを含むユーザプログラムのメモリに対する不正
    アクセスを検出する方法において、前記動的メモリの割
    当要求に対しアクセス不可領域の作成及びこれに対応す
    る実メモリ領域の獲得をすると共に、アクセス不可領域
    のアドレスから実メモリ領域のアドレスへの変換をする
    ためのアドレス変換テーブルを作成しておき、 前記ユーザプログラム実行時に、該ユーザプログラム中
    の動的メモリへのアクセスのためのアドレス、アクセス
    不可領域のアドレス及びアドレス変換テーブルに基づい
    て前記アドレスによるアクセスの正/不正を判定するこ
    とを特徴とする不正アクセスの検出方法。
  2. 【請求項2】 ユーザプログラム中の動的メモリへのア
    クセスがアクセス不可領域へのアクセスであるか否かを
    検出し、該領域へのアクセスであった場合は割込処理を
    行う請求項1記載の不正アクセスの検出方法。
  3. 【請求項3】 ユーザプログラム中の動的メモリへのア
    クセスがアクセス不可領域へのアクセスであるか否かを
    検出し、該領域へのアクセスであった場合は割込処理を
    行って、アクセス対象アドレスをアドレス変換テーブル
    で変換して実メモリ領域をアクセスする請求項2記載の
    不正アクセスの検出方法。
  4. 【請求項4】 アドレス変換テーブルで変換して得たア
    ドレスが前記実メモリ領域に対応しないものである場合
    に警告を発せしめる請求項3記載の不正アクセスの検出
    方法。
  5. 【請求項5】 アクセス対象アドレスに該当するアドレ
    ス変換テーブルがない場合に警告を発せしめる請求項3
    記載の不正アクセスの検出方法。
  6. 【請求項6】 アドレス変換テーブルにはこれが管理す
    る実メモリ領域の使用中/未使用の別を表す状態フラグ
    を有し、アクセス対象アドレスに係るアドレス変換テー
    ブルの前記状態フラグが未使用を示す場合は警告を発せ
    しめる請求項1記載の不正アクセスの検出方法。
  7. 【請求項7】 アドレス変換テーブルの検索制御リンク
    は、バイナリツリー方式及びシリアルリンク方式で構成
    されている請求項1記載の不正アクセスの検出方法。
  8. 【請求項8】 動的メモリ割当要求、動的メモリへのア
    クセス及び動的メモリの解放要求を含むユーザプログラ
    ムのメモリに対する不正アクセスを検出する方法におい
    て、前記動的メモリの割当要求に対しアクセス不可領域
    の作成及びこれに対応する実メモリ領域の獲得をすると
    共に、アクセス不可領域のアドレスから実メモリ領域の
    アドレスへの変換をするためのものであり、これが管理
    する実メモリ領域の使用中/未使用の別を表す状態フラ
    グを有するアドレス変換テーブルを作成しておき、 前記ユーザプログラム実行時に、該ユーザプログラム中
    の動的メモリへのアクセスのためのアドレス、アクセス
    不可領域のアドレス及びアドレス変換テーブルに基づい
    て前記アドレスによるアクセスの正/不正を判定する一
    方、動的メモリの解放要求に対してはアドレス変換テー
    ブルの該当領域の状態フラグを未使用とすることを特徴
    とする不正アクセスの検出方法。
  9. 【請求項9】 ユーザプログラム中の動的メモリへのア
    クセスがアクセス不可領域へのアクセスであるか否かを
    検出し、該領域へのアクセスであった場合は割込処理を
    行う請求項8記載の不正アクセスの検出方法。
  10. 【請求項10】 ユーザプログラム中の動的メモリへの
    アクセスがアクセス不可領域へのアクセスであるか否か
    を検出し、該領域へのアクセスであった場合は割込処理
    を行って、アクセス対象アドレスをアドレス変換テーブ
    ルで変換して実メモリ領域をアクセスする請求項9記載
    の不正アクセスの検出方法。
  11. 【請求項11】 アドレス変換テーブルで変換して得た
    アドレスが前記実メモリ領域に対応しないものである場
    合に警告を発せしめる請求項10記載の不正アクセスの
    検出方法。
  12. 【請求項12】 アクセス対象アドレスに該当するアド
    レス変換テーブルがない場合に警告を発せしめる請求項
    10記載の不正アクセスの検出方法。
  13. 【請求項13】 アクセス対象アドレスに係るアドレス
    変換テーブルの前記状態フラグが未使用を示す場合は警
    告を発せしめる請求項8記載の不正アクセスの検出方
    法。
  14. 【請求項14】 アドレス変換テーブルの検索制御リン
    クは、バイナリツリー方式及びシリアルリンク方式で構
    成されている請求項8記載の不正アクセスの検出方法。
  15. 【請求項15】 動的メモリ割当要求、動的メモリへの
    アクセス及び動的メモリの解放要求を含むユーザプログ
    ラムが動作するコンピュータにおけるメモリに対する不
    正アクセスを検出するシステムにおいて、 前記動的メモリの割当要求に対し、アクセス不可領域の
    作成及びこれに対応する実メモリ領域の獲得をすると共
    に、アクセス不可領域のアドレスから実メモリ領域のア
    ドレスへの変換をするためのアドレス変換テーブルを作
    成するアドレス変換テーブル作成手段と、 前記動的メ
    モリ割当要求に対し、前記アクセス不可領域のアドレス
    をユーザプログラムへ通知するアクセス不可領域アドレ
    ス通知手段と、 前記動的メモリ割当要求に対し、前記アドレス変換テー
    ブル作成手段及びアクセス不可領域アドレス通知手段を
    用いて動的メモリ割当を行う動的メモリ割当手段と、 ユーザプログラムに通知されたアクセス不可領域のアド
    レスへのアクセスを検出したとき、アクセス対象アドレ
    スを前記アドレス変換テーブルから検索することにより
    不正アクセスの検出を行うアクセス不可領域アクセス検
    出手段と、 前記検索の結果により、アクセス不可領域のアドレスか
    ら実アドレスへの変換を行いアクセスを実行するアドレ
    ス変換実行手段と、 前記動的メモリの解放要求に対し、アドレス変換テーブ
    ルを操作し、該当するメモリ領域を解放済み未使用状態
    とする動的メモリ解放手段と、を備えたことを特徴とす
    る不正アクセス検出システム。
  16. 【請求項16】 前記コンピュータはCPUおよびPM
    MUを備え、前駆アクセス不可領域アクセス検出手段
    は、前記PMMUを含み、該PMMUは、アクセス対象
    アドレスがアクセス不可領域のアドレスであることを検
    出した場合にCPUに対し割込をかけるべくなしてある
    請求項15記載の不正アクセス検出システム。
  17. 【請求項17】 予め用意されているシステムライブラ
    リ中の動的メモリ割当/解放のための手段を、前記動的
    メモリ割当手段及び動的メモリ解放手段と実質的に置換
    する手段を備える請求項15記載の不正アクセス検出シ
    ステム。
JP6112872A 1994-05-26 1994-05-26 メモリの不正アクセス検出方法及びシステム Expired - Lifetime JP2757777B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6112872A JP2757777B2 (ja) 1994-05-26 1994-05-26 メモリの不正アクセス検出方法及びシステム
US08/447,704 US5604864A (en) 1994-05-26 1995-05-23 Method and system for detecting invalid access to a memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6112872A JP2757777B2 (ja) 1994-05-26 1994-05-26 メモリの不正アクセス検出方法及びシステム

Publications (2)

Publication Number Publication Date
JPH07319735A true JPH07319735A (ja) 1995-12-08
JP2757777B2 JP2757777B2 (ja) 1998-05-25

Family

ID=14597645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6112872A Expired - Lifetime JP2757777B2 (ja) 1994-05-26 1994-05-26 メモリの不正アクセス検出方法及びシステム

Country Status (2)

Country Link
US (1) US5604864A (ja)
JP (1) JP2757777B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334870A (ja) * 2003-05-02 2004-11-25 Microsoft Corp 最適化を用いたメモリアクセス制御の実装
JP2005011317A (ja) * 2003-05-02 2005-01-13 Hitachi Ltd ストレージシステムを初期化する方法と装置
JP2019535093A (ja) * 2016-10-04 2019-12-05 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツングRobert Bosch Gmbh ワーキングメモリを保護する方法および装置
US11010311B2 (en) 2018-05-14 2021-05-18 Fujitsu Limited Processing device and method for controlling processing device
JP2021521513A (ja) * 2018-04-16 2021-08-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入
US11755735B2 (en) 2018-04-16 2023-09-12 International Business Machines Corporation Speculatively executing conditional branches of code when detecting potentially malicious activity

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
CN1172245C (zh) * 1996-06-28 2004-10-20 索尼株式会社 信息处理方法及信息处理装置
US6047388A (en) * 1997-04-09 2000-04-04 International Business Machines Corporation Method and apparatus for processing an invalid address request
DE69801332T2 (de) * 1997-09-25 2002-05-23 British Telecomm Speicherzuordnung
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
ATE557343T1 (de) 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
FR2811096A1 (fr) * 2000-06-28 2002-01-04 St Microelectronics Sa Microprocesseur securise comprenant un systeme d'attribution de droits a des librairies
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6898689B2 (en) * 2002-11-15 2005-05-24 Silicon Labs Cp, Inc. Paging scheme for a microcontroller for extending available register space
US7480836B2 (en) * 2005-04-25 2009-01-20 Hewlett-Packard Development Company, L.P. Monitoring error-handler vector in architected memory
US7917723B2 (en) * 2005-12-01 2011-03-29 Microsoft Corporation Address translation table synchronization
JP4201054B2 (ja) * 2007-02-16 2008-12-24 凸版印刷株式会社 カラーフィルタ及びその製造方法及び液晶表示装置
CN101697131B (zh) * 2009-11-04 2013-07-03 中兴通讯股份有限公司 一种可重定位文件动态加载的方法及装置
US9823869B2 (en) * 2014-01-08 2017-11-21 Nvidia Corporation System and method of protecting data in dynamically-allocated regions of memory
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
CN105373488A (zh) * 2014-08-08 2016-03-02 中兴通讯股份有限公司 合法内存访问的探测方法及装置
US11263131B2 (en) * 2020-04-08 2022-03-01 Alibaba Group Holding Limited System and method for allocating memory space

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3673569A (en) * 1971-04-19 1972-06-27 Eaton Corp Multiplexer for controlling and monitoring coded key operated accesses
DE3122534C1 (de) * 1981-06-05 1983-03-31 The Grey Lab. Establishment, 9490 Vaduz Verfahren zur Erzeugung sowie Kontrolle von Dokumenten, sowie Dokument und Vorrichtung zur Durchführung des Verfahrens
JPS6095769A (ja) * 1983-10-31 1985-05-29 Toshiba Corp デイスク記録再生装置
US4719566A (en) * 1985-10-23 1988-01-12 International Business Machines Corporation Method for entrapping unauthorized computer access
US5293594A (en) * 1986-05-24 1994-03-08 Hitachi, Ltd. Data processing system having a plurality of register groups and a logical or circuit for addressing one register of one of the register groups
US5249276A (en) * 1987-06-22 1993-09-28 Hitachi, Ltd. Address translation apparatus having a memory access privilege check capability data which uses mask data to select bit positions of priviledge
US5023773A (en) * 1988-02-10 1991-06-11 International Business Machines Corporation Authorization for selective program access to data in multiple address spaces
US5144659A (en) * 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
US5113499A (en) * 1989-04-28 1992-05-12 Sprint International Communications Corp. Telecommunication access management system for a packet switching network
US5404499A (en) * 1990-01-24 1995-04-04 Logical Services Incorporated Semi-automatic program execution error detection
US5303360A (en) * 1991-02-22 1994-04-12 Vlsi Technology, Inc. Programmable boundary between system board memory and slot bus memory
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5237616A (en) * 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5535364A (en) * 1993-04-12 1996-07-09 Hewlett-Packard Company Adaptive method for dynamic allocation of random access memory to procedures having differing priorities based on first and second threshold levels of free RAM

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334870A (ja) * 2003-05-02 2004-11-25 Microsoft Corp 最適化を用いたメモリアクセス制御の実装
JP2005011317A (ja) * 2003-05-02 2005-01-13 Hitachi Ltd ストレージシステムを初期化する方法と装置
JP4672281B2 (ja) * 2003-05-02 2011-04-20 マイクロソフト コーポレーション 最適化を用いたメモリアクセス制御の実装
JP2019535093A (ja) * 2016-10-04 2019-12-05 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツングRobert Bosch Gmbh ワーキングメモリを保護する方法および装置
JP2021521513A (ja) * 2018-04-16 2021-08-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入
US11755735B2 (en) 2018-04-16 2023-09-12 International Business Machines Corporation Speculatively executing conditional branches of code when detecting potentially malicious activity
US11010311B2 (en) 2018-05-14 2021-05-18 Fujitsu Limited Processing device and method for controlling processing device

Also Published As

Publication number Publication date
US5604864A (en) 1997-02-18
JP2757777B2 (ja) 1998-05-25

Similar Documents

Publication Publication Date Title
JP2757777B2 (ja) メモリの不正アクセス検出方法及びシステム
CN109564522B (zh) 控制对计算装置的存储器中的页的访问
CN102129410B (zh) 提供扩展的存储器保护
Moraru et al. Consistent, durable, and safe memory management for byte-addressable non volatile main memory
JP5255348B2 (ja) クラッシュダンプ用のメモリアロケーション
EP2997477B1 (en) Page table data management
US10169244B2 (en) Controlling access to pages in a memory in a computing device
US20080120604A1 (en) Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation
US10671548B2 (en) Memory initialization detection system
US20170068587A1 (en) Data dump for a memory in a data processing system
WO2019143500A1 (en) Decoupling trace data streams using cache coherence protocol data
CN114327777B (zh) 确定全局页目录的方法、装置、电子设备及存储介质
KR20210057176A (ko) 함수 점프 구현 방법, 디바이스, 및 컴퓨터 저장 매체
CN112241310A (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
Chen et al. Runtime detection of memory errors with smart status
JP2009020696A (ja) 情報処理装置及びシステム
KR20230159879A (ko) 입출력 디바이스에 의해 액세스가능한 메모리 페이지 마이그레이션
KR102254159B1 (ko) 운영체제 커널 메모리의 실시간 오류 검출 방법
JP2011022790A (ja) 情報処理装置及び情報処理プログラム
US10055359B2 (en) Pinning objects in multi-level memory hierarchies
JP7369701B2 (ja) 処理回路上で実行されるべきプログラムをデバッグするときにメタデータにアクセスする方法
JP2023518042A (ja) メモリアクセサ無効化
JP2637146B2 (ja) デバッグシステム
Hildenbrand et al. Copy-on-Pin: The Missing Piece for Correct Copy-on-Write
US20220083645A1 (en) Information processing apparatus, information processing method, and computer program