JP5464226B2 - 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム - Google Patents

情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム Download PDF

Info

Publication number
JP5464226B2
JP5464226B2 JP2012083177A JP2012083177A JP5464226B2 JP 5464226 B2 JP5464226 B2 JP 5464226B2 JP 2012083177 A JP2012083177 A JP 2012083177A JP 2012083177 A JP2012083177 A JP 2012083177A JP 5464226 B2 JP5464226 B2 JP 5464226B2
Authority
JP
Japan
Prior art keywords
data
error
area
information
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.)
Expired - Fee Related
Application number
JP2012083177A
Other languages
English (en)
Other versions
JP2013214154A (ja
Inventor
秀之 海野
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012083177A priority Critical patent/JP5464226B2/ja
Priority to US13/612,098 priority patent/US8910004B2/en
Priority to EP12185406.1A priority patent/EP2645249A1/en
Priority to KR1020120113026A priority patent/KR20130111171A/ko
Priority to CN2012103870290A priority patent/CN103365792A/zh
Publication of JP2013214154A publication Critical patent/JP2013214154A/ja
Application granted granted Critical
Publication of JP5464226B2 publication Critical patent/JP5464226B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラムに関する。
近年、複数のプロセスを並行して動作させるマルチプロセスを実行するマルチプロセッサシステムが提供されている。マルチプロセスを実行するマルチプロセッサシステムでは、各プロセスが同じ範囲のメモリを使用する共有メモリシステムが用いられる場合がある。
このような、共有メモリを用いるマルチプロセッサシステムでは、各プロセスのメモリの不正使用によりメモリ内容が破壊されるおそれがある。そこで、メモリの不正使用によるメモリ破壊を防止するいくつかの方法が提案されている。従来のメモリの不正使用を防止する方法は、ソフトウェアによる保護とハードウェアによる保護に大別される。
ソフトウェアによる保護は、メモリを参照する場合に、ポインタだけでなく鍵をセットにして用いることでメモリの不正使用を防止している。例えば、mallocなどのメモリ確保の際に、メモリ領域のポインタとともに鍵となる整数値が生成され、正しい鍵とセットでポインタを用いなければメモリにアクセスできないようにしている。また、ハードウェアによる保護は、ハードウェアのMMU(Memory Management Unit)にメモリ保護の機能を追加することにより実現される。
なお、メモリへのアクセスを制御する方法として、メモリ上のアクセスできる領域を仮想計算機毎にベースレジスタと上限レジスタを用いて制限する従来技術がある。また、近年、メモリのエラーに対応するために、エラーを検出して訂正するECC(Error Check and Correct)機能が付いたECCメモリが提供されている。そして、このようなECCメモリにおける従来技術として、ECCメモリに対してECCコードを自由に書き込む技術がある。
特開昭61−26152号公報 特公昭62−22199号公報
しかしながら、従来のソフトウェアによる保護では、メモリ参照のたびに鍵を照合する処理がソフトウェアによって行われるため、この処理によるオーバーヘッドが大きくなり、情報処理装置の処理速度が低下してしまう。
また、MMUの処理は、例えば数キロバイト〜数メガバイトなどといった大きなサイズのページ単位で行われる。そのため、従来のハードウェアによる保護では、メモリの保護もページ単位で行われ、ソフトウェアが管理するメモリの単位と比較して粒度が粗すぎるため、ソフトウェアに適したメモリ保護を行うことが困難である。
1つの側面では、本発明は、メモリの不正使用を防止するハードウェア機構を有する情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラムを提供することを目的とする。
本願の開示する情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラムは、一つの態様において、情報付加部は、メモリの第1記憶領域に格納する第1のデータの誤り検出データを誤らせて生成した第1の情報を前記第1のデータに付加し、第2記憶領域に格納する第2のデータの誤り検出情報を誤らせて生成した第2の情報を前記第2のデータに付加する。消去部は、前記第1記憶領域と前記第2記憶領域のうち、前記第2記憶領域を利用可能とする際に、前記第1の情報は書き換えずに、前記第2の情報を前記第2のデータの誤り検出情報に書き換えることで前記第2の情報を消去する。誤り検出部は、前記メモリに格納されたデータを読み出した場合に、読み出した前記データに付加された情報を用いて、読み出した前記データについての誤り検出処理を行う。
一つの態様によれば、ハードウェア機構によりメモリの不正使用を防止することができる。
図1は、実施例1に係る情報処理装置のブロック図である。 図2は、演算器と命令制御部の詳細を表すブロック図である。 図3は、ECC生成部14の詳細を表すブロック図である。 図4Aは、ヒープ領域を確保した時点でのヒープ領域に格納されているデータの状態を示す図である。 図4Bは、1つのプロセスに対してメモリ領域を確保した場合のヒープ領域に格納されているデータの状態を示す図である。 図4Cは、複数のプロセスに対してメモリ領域を確保した場合のヒープ領域に格納されているデータの状態を示す図である。 図5は、実施例1に係る情報処理装置におけるヒープ領域獲得時の処理のフローチャートである。 図6は、実施例1に係る情報処理装置におけるメモリ領域の確保の要求があった場合の処理のフローチャートである。 図7は、実施例1に係る情報処理装置におけるメモリ領域の開放の要求があった場合の処理のフローチャートである。 図8は、マークの付加及び消去の処理並びにそれらの処理に付随するエラーを時系列で表した図である。 図9は、実施例2に係る情報処理装置のブロック図である。 図10は、実施例3に係る情報処理装置のブロック図である。
以下に、本願の開示する情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラムが限定されるものではない。
図1は、実施例1に係る情報処理装置のブロック図である。図1に示すように、本実施例に係る情報処理装置は、プロセッサコア1及びメモリ2を有している。本実施例では、メモリ2に8バイト単位でデータを格納する場合で説明する。また、ECCの誤り訂正符合は、本実施例では1バイトの場合で説明する。
プロセッサコア1は、演算器11、レジスタ12、命令制御部13、ECC生成部14及びエラー検出部15を有している。
演算器11は、命令制御部13からの演算命令を受けて、演算を行う。そして、演算器11は、演算結果をレジスタ12に格納する。
図2は、命令制御部の詳細を表すブロック図である。図2におけるプログラム5は、例えば、複数のプロセスを実行し、各プロセスが共有メモリを使用するプログラムである。プログラム5は、ヒープ領域獲得部51、領域確保部52、領域開放部53及びデータ処理部54を有している。また、命令制御部13は、マーク付加部131及びマーク消去部132を有している。
ヒープ領域獲得部51は、メモリ2のメモリ資源の管理を行うカーネルからヒープ領域を獲得する。ヒープ領域とは、メモリ2の中で確保可能なメモリ領域として割り当てられた領域である。ヒープ領域獲得部51は、ヒープ領域に割り当てたメモリ領域の情報を管理テーブルに登録する。
また、ヒープ領域獲得部51は、ヒープ領域に対するマーク付加の指示を命令制御部13のマーク付加部131に通知する。ヒープ領域獲得部51は、ヒープ領域をマークを付加したデータで埋めるまでマーク付加の指示を繰り返しマーク付加部131に通知する。ここで、マークとは、例えば、メモリの使用不可又はメモリの不正使用から保護されている状態を示す識別情報をいう。データに対するマークの付加については後で詳細に説明する。このマークが、「誤り検出情報を誤らせて生成した情報」の一例にあたる。
領域確保部52は、ヒープ領域におけるプロセスが使用するメモリ領域の確保の要求を確保するサイズとともにプロセスから受ける。ヒープ領域におけるプロセスが使用するメモリ領域の確保とは、例えばC言語における「malloc」などである。そして、領域確保部52は、管理テーブルを参照し、ヒープ領域における未割り当ての領域の中からメモリ領域確保の要求をしたプロセスに割り当てるメモリ領域を決定する。そして、領域確保部52は、ヒープ領域内の確保したメモリ領域の情報を管理テーブルに登録する。この領域確保部52がヒープ領域内にプロセスが使用するメモリ領域として確保したメモリ領域が、「第2記憶領域」の一例にあたる。さらに、領域確保部52が確保した領域以外のヒープ領域内の領域が、「第1記憶領域」の一例にあたる。
また、領域確保部52は、決定した確保するメモリ領域におけるマーク消去の指示を命令制御部13のマーク消去部132に通知する。領域確保部52は、確保したメモリ領域におけるデータに付加されたマークが全て消去できるまでマーク消去の指示を繰り返しマーク消去部132に通知する。データに対するマークの消去については後で詳細に説明する。
さらに、領域確保部52は、確保したメモリ領域の先頭アドレスをメモリ領域確保の要求をしたプロセスに通知する。
領域開放部53は、使用しているメモリ領域の開放の要求をプロセスから受ける。使用しているメモリ領域の開放の要求とは、例えばC言語における「free」などである。領域開放部53は、メモリ領域開放を要求したプロセス用に確保しているメモリ領域を特定する。そして、領域開放部53は、ヒープ領域内の特定したメモリ領域の確保の情報を管理テーブルから削除する。
また、領域開放部53は、開放するメモリ領域に対するマーク再付加の指示をマーク付加部131に通知する。領域開放部53は、開放するメモリ領域をマークを再付加したデータで埋めるまでマーク再付加の指示を繰り返しマーク付加部131に通知する。データに対するマークの再付加については後で詳細に説明する。
データ処理部54は、各プロセスによるメモリ2へのデータの格納や読出しを実行する。データの格納とは、例えば、C言語のストア命令の実行などである。また、データの読出しとは、例えば、C言語のロード命令の実行などである。そして、データ処理部54は、各プロセスに割り当てられたメモリ領域に対して、データの格納や読出しなどのデータ処理を各プロセスに割り当てられたメモリ領域に対して行う。具体的には、データ処理部54は、データの格納行うプロセスに対して確保されているメモリ領域の空いている領域の中から指定されたデータを書き込むアドレスを決定する。そして、データ処理部54は、データの書込みの指示を命令制御部13へ通知する。また、データ処理部54は、データの読出しの指示をエラー検出部15に通知する。
マーク付加部131は、ヒープ領域に対するマーク付加の指示をヒープ領域獲得部51から受ける。そして、マーク付加部131は、ヒープ領域に格納する後述の仮のデータにおける特定の3ビットを反転させる指示をECC生成部14のビット反転部141に通知する。ここで、本実施例では、マーク付加部131は、マークの付加として正常なデータの特定の3ビットを反転させているが、特定のエラーが検出される情報であれば他の情報でもよく、例えば、3ビット以上の数のビットを反転させてもよい。
また、マーク付加部131は、マーク再付加の指示を領域開放部53から受ける。そして、マーク付加部131は、解放するメモリ領域に格納する仮のデータにおける特定の3ビットを反転させる指示をECC生成部14のビット反転部141に通知する。このマーク付加部131が、「情報付加部」及び「情報再付加部」の一例である。
マーク消去部132は、マーク消去の指示を領域確保部52にから受ける。そして、マーク消去部132は、確保するメモリ領域に格納するデータに対応する誤り訂正用符号の生成として通常の誤り訂正用符号生成を行う指示をビット反転部141に通知する。このマーク消去部132が、「消去部」の一例にあたる。
図3は、ECC生成部14の詳細を表すブロック図である。図3に示すように、ECC生成部14は、ビット反転部141、コード生成部142及びデータ格納部143を有している。
ECC生成部14は、ヒープ領域を確保する場合、仮のデータを取得する。ここで、仮のデータは、例えば、付加したマークの内容を示すためのマーク補助情報などでもよいし、空のデータでもよい。仮のデータはECC生成部14が生成してもよいし、レジスタ12から読み出してもよい。
ビット反転部141は、ヒープ領域確保の場合、仮のデータにおける特定の3ビットを反転させる指示を命令制御部13のマーク付加部131から受ける。また、ビット反転部141は、仮のデータをレジスタ12から取得する。そして、ビット反転部141は、取得した仮のデータの予め決められた特定の3ビットを反転させる。その後、ビット反転部141は、特定の3ビットを反転させた仮のデータをコード生成部142へ出力する。
また、ビット反転部141は、メモリ領域確保の場合、確保するメモリ領域に格納するデータに対応して、通常の誤り訂正用符号生成を行う指示をマーク消去部132から受ける。そして、ビット反転部141は、レジスタ12から取得したデータに変更を加えずにコード生成部142へ出力する。すなわち、メモリ領域確保の場合、ビット反転部141は、通常のデータ格納命令(例えば、C言語における「ストア命令」)の場合と同様の動作を行う。
また、ビット反転部141は、データの書込みの場合(例えば、C言語における「ストア命令」の場合)、指定されたアドレスに格納するデータをコード生成部142へ出力する。
また、ビット反転部141は、メモリ領域開放の場合、仮のデータにおける特定の3ビットを反転させる指示を命令制御部13のマーク付加部131から受ける。そして、ビット反転部141は、開放するメモリ領域に格納する仮のデータの予め決められた特定の3ビットを反転させる。その後、ビット反転部141は、特定の3ビットを反転させた仮のデータをコード生成部142へ出力する。
コード生成部142は、ヒープ領域確保の場合、特定の3ビットを反転させた仮のデータの入力をビット反転部141から受ける。そして、コード生成部142は、受信した特定の3ビットを反転させた仮のデータから、ヒープ領域の全領域に格納していく仮のデータに付加する誤り訂正用符号である1バイトのチェックコードを生成する。そして、コード生成部142は、生成した1バイトのチェックコードをデータ格納部143へ出力する。
また、コード生成部142は、メモリ領域確保の場合、レジスタ12から取得された変更が加えられていないデータの入力をビット反転部141から受ける。そして、コード生成部142は、受信したデータから、確保したメモリ領域に格納するデータに付加する誤り訂正用符号である1バイトのチェックコードを生成する。そして、コード生成部142は、生成した1バイトのチェックコードをデータ格納部143へ出力する。
また、コード生成部142は、データ書込みの場合(例えば、C言語における「ストア命令」の場合)、レジスタ12から取得したデータをビット反転部141から受信する。そして、コード生成部142は、受信したデータから1バイトのチェックコードを生成する。そして、コード生成部142は、生成した1バイトのチェックコードをデータ格納部143へ出力する。
コード生成部142は、メモリ領域開放の場合、特定の3ビットを反転させた仮のデータの入力をビット反転部141から受ける。そして、コード生成部142は、受信した特定の3ビットが反転させられた仮のデータから、開放したメモリ領域に格納する仮のデータに付加する誤り訂正用符号である1バイトのチェックコードを生成する。そして、コード生成部142は、生成した1バイトのチェックコードをデータ格納部143へ出力する。
データ格納部143は、ヒープ領域確保の場合、8バイトの仮のデータをレジスタ12から受信する。さらに、データ格納部143は、ヒープ領域の全領域に格納していく仮のデータに付加する誤り訂正用符号である1バイトのチェックコードをコード生成部142から取得する。そして、データ格納部143は、コード生成部142から取得した仮のデータの特定の3ビットを反転させて生成した1バイトのチェックコードを取得した仮のデータに付加する。このように、例えば、仮のデータの特定の3ビットを反転させて生成したチェックコードをデータに付加することを「マークの付加」という。その後、データ格納部143は、マークを付加した仮のデータを順番に、メモリ2のヒープ領域の全領域を網羅するように格納していく。すなわち、データ格納部143は、マークを付加した仮のデータでヒープ領域の全ての領域を埋める。ここで、マーク付加では、正常なデータの特定の3ビットを反転させ生成したチェックコードをデータに付加させているので、マークを付加したデータに対してチェックを行った場合、ECCエラーが発生することになる。マークを付加した所定のサイズのデータをヒープ領域に格納していくことが、「メモリ上の第1領域において所定領域毎にエラーを発生させるマークを付加する」ことの一例にあたる。
図4Aは、ヒープ領域を確保した時点でのヒープ領域に格納されているデータの状態を示す図である。図4Aのメモリ201は、ヒープ領域を確保した時点でのメモリ2内のヒープ領域の状態を表している。メモリ201の中の各ボックスは、8バイトのデータ+1バイトのチェックコードが格納された領域を表している。そして、ボックス211のように斜線で網掛けされたボックスは、1バイトのチェックコードとして仮のデータの特定の3ビットを反転させて生成したチェックコードが付加されたデータを表している。すなわち、ボックス211のように斜線で網掛けされたボックスは、マークが付加されたデータが格納されていることを示している。メモリ201のように、ヒープ領域を確保した時点では、ヒープ領域は全てマークが付加されたデータで埋められている。この状態では、ヒープ領域内のいずれのアドレスにおいても、マークが付加されたデータが参照される。
データ格納部143は、メモリ領域確保の場合、確保したメモリ領域に格納する8バイトのデータをレジスタ12から受信する。さらに、データ格納部143は、受信した各データに付加する誤り訂正用符号である1バイトのチェックコードをコード生成部142から取得する。そして、データ格納部143は、コード生成部142から取得した仮のデータを変更せずに使用して生成した1バイトのチェックコードを取得したデータに付加する。このチェックコードの付加により、データの特定の3ビットを反転させて生成したチェックコードが確保したメモリ領域に格納するデータから除かれる。このように、データの特定の3ビットを反転させて生成したチェックコードをデータから除くことを「マークの消去」という。そして、データ格納部143は、確保したメモリ領域にマークを消去したデータを格納していく。これにより、データ格納部143は、マークを消去したデータで確保したメモリ領域を埋める。確保したメモリ領域をマークを消去したデータで埋めることが、「第2領域において所低領域毎に付加されているマークを消去する」ことの一例にあたる。
図4Bは、1つのプロセスに対してメモリ領域を確保した場合のヒープ領域に格納されているデータの状態を示す図である。図4Bのメモリ202は、1つのプロセスに対してメモリ領域を確保した場合のメモリ2内のヒープ領域の状態を表している。領域221は、1つのプロセスに対して確保されたメモリ領域である。領域221に示される網掛けの無いボックスは、マークが消去されたデータが格納されていることを示している。すなわち、メモリ202のように、プロセスに対してメモリ領域を確保した場合、確保されたメモリ領域はマークが消去されたデータで埋められている。そして、メモリ202の領域221以外の領域は、マークが付加されたデータで埋められている。この状態で、例えば、領域221が割り当てられたプロセスの処理において、プロセスが領域221以外の領域を参照した場合、そのプロセスは、マークが付加されたデータを参照する。
また、図4Cは、複数のプロセスに対してメモリ領域を確保した場合のヒープ領域に格納されているデータの状態を示す図である。領域231は、あるプロセスに対して確保されたメモリ領域である。また、領域232は、他のプロセスに対して確保されたメモリ領域である。また、領域233は、さらに他のプロセスに対して確保されたメモリ領域である。図4Cに示すように、複数のプロセスに対してメモリ領域を割り当てる場合、確保したそれぞれのメモリ領域が連続しないように割り当てる。具体的には、領域231と領域232との間にマークが付加された領域234が挟まっている。また、領域232と領域233との間にマークが付加された領域235が挟まっている。このようにすることで、例えば、領域232を参照している場合に、参照先のポインタが領域232の外にはみ出した場合、参照を行っているプロセスは、マークが付加された領域234又は235を参照することになり、間違ってマークが付加されていない他のプロセスの領域を参照することは無い。そのため、オーバーランなどによる破壊も防止することができる。
メモリ領域に対するデータの書込みの場合、参照したアドレスのデータにマークが付加されていなければ、データ格納部143は、レジスタ12に格納されたデータをレジスタ12から読み出す。さらに、データ格納部143は、読み出したデータに対応するチェックコードをコード生成部142から取得する。そして、データ格納部143は、読み出したデータに取得したチェックコードを付加し、メモリ2内の指定されたアドレスに格納する。
データ格納部143は、メモリ領域開放の場合、8バイトの仮のデータをレジスタ12から受信する。さらに、データ格納部143は、開放するメモリ領域に格納していく仮のデータに付加する誤り訂正用符号である1バイトのチェックコードをコード生成部142から取得する。そして、データ格納部143は、コード生成部142から取得した仮のデータの特定の3ビットを反転させて生成した1バイトのチェックコードを取得した仮のデータに付加する。このように、マークを消去したメモリ領域に対して、再度仮のデータの特定の3ビットを反転させて生成したチェックコードをデータに付加することを「マークの再付加」という。開放するメモリ領域に格納されているデータにマークが付加されていれば、データ格納部143は、マークを再付加した仮のデータを順番に、メモリ2における開放するメモリ領域に格納していく。これにより、データ格納部143は、マークを再付加したデータで開放したメモリ領域を埋める。マークを再付加したデータで開放したメモリ領域を埋めることが、「開放された第2領域において所定領域毎にマークを再付加する」ことの一例にあたる。
プログラム5がデータの格納を行う場合、データの格納に先駆け、エラー検出部15は、データ処理部54によりデータの格納先として指定されたメモリ2内のアドレスからデータを読み出す。そして、エラー検出部15は、読み出したデータにマークが付加されているか否かを判定する。エラー検出部15は、参照したアドレスのデータにマークが付加されている場合は、エラーを検出する。例えば、エラー検出部15は、確保されていないメモリ領域にプログラム5がアクセスした場合などは、プログラム5による未割り当ての領域へのアクセス違反を検出する。また、エラー検出部15は、他のプロセスに対して確保されたメモリ領域を、プロセスが参照した場合などは、メモリ使用違反を検出する。また、エラー検出部15は、既に開放されているメモリ領域にプログラム5がアクセスした場合には、開放済み領域へのアクセス違反を検出する。そして、エラー検出部15は、個々のエラーのレポートをレジスタ12に登録する。ここで、本実施例では、データの格納の場合にも、エラー検出部15が格納先に指定されているアドレスからデータを読み出してマークの有無を判定しているが、これは他の方法でもよい。例えば、ECC生成部14のデータ格納部143に、データを格納する際に、格納先のアドレスに格納されているデータにマークが付加されているか否かを判定させてもよい。
プログラム5がデータの読出しを行った場合、エラー検出部15は、指定されたアドレスのメモリ領域から読み出されたデータもエラーがあるか否かを判定する。具体的には、エラー検出部15は、メモリ領域から読み出されたデータにマークが付加されている場合、エラーを検出し、レジスタ12にエラーのレポートを登録する。例えば、プログラム5が確保されていないメモリ領域を参照した場合などは、メモリ2から読み出されたデータに含まれるマークをエラー検出部15が検出することにより、アクセス違反を検出する。また、アドレスを指定したプロセス以外のプロセスに対して確保されたメモリ領域をプログラム5が参照した場合などにおいても、エラー検出部15はメモリ使用違反を検出する。また、エラー検出部15は、プログラム5が既に開放されているメモリ領域にアクセスした場合にも、メモリ2から読み出されたデータに含まれるマークを検出することにより、開放済み領域へのアクセス違反を検出する。そして、エラー検出部15は、個々のエラーのレポートをレジスタ12に登録する。
これに対して、プログラム5が参照したメモリ領域にマークが消去されたデータが格納されている場合、エラー検出部15は、指定されたデータをメモリ2から読み出す。そして、エラー検出部15は、読み出したデータをレジスタ12に格納する。
また、プログラム5がメモリ領域の開放をおこなった場合、エラー検出部15は、これから開放しようとしているメモリ領域からデータを読み出し、読み出した各データにマークが付加されているか否かを判定する。そして、これから開放しようとしているメモリ領域に格納されているデータに既にマークが付加されている場合、エラー検出部15は、二重開放違反のエラーを検出する。このエラー検出部15が、「誤り検出部」の一例にあたる。
次に、図5を参照して、本実施例に係る情報処理装置におけるヒープ領域獲得時の処理の流れについて説明する。図5は、実施例1に係る情報処理装置におけるヒープ領域獲得時の処理のフローチャートである。
ヒープ領域獲得部51は、カーネルからヒープ領域を獲得する(ステップS101)。ヒープ領域獲得51は、データに対するマークの付加をマーク付加部131に通知する。
マーク付加部131は、仮のデータにおける特定の3ビットを反転させる指示をビット反転部141に通知する。ECC生成部14は、取得した仮のデータにおける特定の3ビットを反転させたデータから仮のデータに対応する1バイトのチェックコードを生成する。そして、ECC生成部14は、生成した1バイトのチェックコードをレジスタ12から取得した仮のデータに付加し、ヒープ領域に格納していく。ECC生成部14は、ヒープ領域獲得部51によるマーク付加部131の制御にしたがい、メモリ2の中のヒープ領域として獲得した領域の全てにマークを付加する(ステップS102)。
この状態で、メモリ2のヒープ領域に対するデータの格納や読出しをプログラム5が行うと、エラー検出部15は、指定されたアドレスを有するメモリ領域からデータを読み出す(ステップS103)。
この場合、プログラム5により参照されたメモリ領域にはマークが付加されたデータが格納されているので、エラー検出部15は、読み出したデータにマークが付加されていることを検出し、未割り当て領域へのアクセス違反を検出する(ステップS104)。
ここで、図5では、未割り当て領域へのアクセス違反の検出の処理を説明するために、ステップS103及びS104を記載したが、未割り当て領域へのアクセス違反が行われなければ、ステップS103及びS104は実行されなくてもよい。
次に、図6を参照して、本実施例に係る情報処理装置におけるメモリ領域の確保の要求があった場合の処理の流れについて説明する。図6は、実施例1に係る情報処理装置におけるメモリ領域の確保の要求があった場合の処理のフローチャートである。ここでは、メモリ領域の確保の要求として、C言語のmallocを例に説明する。
領域確保部52は、プロセスからのmalloc要求を受信する(ステップS201)。
領域確保部52は、要求されたサイズの領域をメモリ2上のヒープ領域に確保する(ステップS202)。そして、領域確保部52は、データのマークの消去をマーク消去部132に指示する。
マーク消去部132は、通常の誤り訂正符号の生成の指示をビット反転部141に通知する。ECC生成部14は、レジスタ12から取得したデータに対応する1バイトのチェックコードを生成する。そして、ECC生成部14は、生成した1バイトのチェックコードをレジスタ12から取得したデータに付加し、確保した領域に格納していく。ECC生成部14は、領域確保部52によるマーク消去部132に制御に従い、メモリ2の中のヒープ領域における確保したメモリ領域の全てのデータのマークを消去する(ステップS203)。
領域確保部52は、確保した領域の先頭のアドレスをmalloc要求を出したプロセスに返す(ステップS204)。
メモリ2に対するデータの格納や読出しの命令がプログラム5からなされると、エラー検出部15が、指定されたアドレスを有するメモリ領域からデータを読み出す(ステップS205)。
エラー検出部15は、プログラム5により参照されたアドレスから読み出したデータにマークが付加されているか否かを判定する(ステップS206)。
マークが付加されていない場合(ステップS206:否定)、エラー検出部15は、メモリ使用可と判定する(ステップS207)。これに対して、マークが付加されている場合(ステップS206:肯定)、エラー検出部15は、メモリ使用違反を検出する(ステップS208)。
次に、図7を参照して、本実施例に係る情報処理装置におけるメモリ領域の開放の要求があった場合の処理の流れについて説明する。図7は、実施例1に係る情報処理装置におけるメモリ領域の開放の要求があった場合の処理のフローチャートである。ここでは、メモリ領域の開放の要求として、C言語のfreeを例に説明する。
領域開放部53は、プロセスからのfree要求を受信する(ステップS301)。領域開放部53は、開放を指定されたメモリ領域を特定する。さらに、領域開放部53は、マーク付加部131にマークの再付加を指示する。マーク付加部131は、仮のデータにおける特定の3ビットを反転させる指示をビット反転部141に通知する。
エラー検出部15は、開放するメモリ領域に格納されているデータにマークが付加されているか否かを判定する(ステップS302)。
マークが付加されていない場合(ステップS302:否定)、ECC生成部14は、レジスタ12から取得した仮のデータにおける特定の3ビットを反転させたデータから仮のデータに対応する1バイトのチェックコードを生成する。そして、ECC生成部14は、生成した1バイトのチェックコードを仮のデータに付加し、開放したメモリ領域に格納していく。ECC生成部14は、領域開放部53によるマーク付加部131の制御にしたがい、メモリ2の中のヒープ領域における開放したメモリ領域の全てにマークを再付加する(ステップS303)。
領域開放部53は、開放したメモリ領域を管理テーブルから削除する(ステップS304)。
この状態で、開放されたメモリ領域に対するデータの格納や読出しの命令がプログラム5からなされると、エラー検出部15が、開放されたメモリ領域からデータを読み出す(ステップS305)。
この場合、読み出されたメモリにはマークが付加されたデータが格納されているので、エラー検出部15は、開放済みのメモリ領域へのアクセス違反を検出する(ステップS306)。
これに対して、開放要求があったメモリ領域のデータにマークが付加されている場合(ステップS302:肯定)、エラー検出部15は、二重開放違反を検出する(ステップS307)。
ここで、図7では、開放済み領域へのアクセス違反の検出の処理を説明するために、ステップS305及びS306を記載したが、開放済み領域へのアクセス違反が行われなければ、ステップS305及びS306は実行されなくてもよい。
次に、図8を参照して、時系列での各処理の実行及びそれに付随するエラーの発生について説明する。図8は、マークの付加及び消去の処理並びにそれらの処理に付随するエラーを時系列で表した図である。図8は矢印の向かう方向に時間が経過している。また、二重線で囲われたボックスはエラーの検出を表している。
時刻301でプロセスが開始され、ヒープ領域獲得部51は、ヒープ領域をカーネルから獲得する。
ECC生成部14は、ヒープ領域として獲得された領域の全てにマークを付加したデータを格納する(ステップS311)。ここでは、マークが付加されたデータをあるメモリ領域に格納することを、メモリにマークを付加するという。
この状態で、プログラム5が、マークが付加されたメモリを参照する(ステップS312)。この場合、エラー検出部15は、マークが付加されたメモリからデータを読み出す。
この場合、プロセスが使用する領域として確保されておらず、マークが付加された状態であるメモリからデータを読み出すため、エラー検出部15は、未割り当ての領域へのアクセス違反を検出する(ステップS313)。
時刻302で、プロセスからのmallocの要求を受けて、領域確保部52がメモリ領域を確保する。
ECC生成部14は、確保したメモリ領域に格納されているデータのマークを消去する(ステップS321)。ここでは、あるメモリ領域に格納されているデータのマークを消去することを、メモリのマークを消去するという。
プロセスは、データのストア又はロードを行うためにメモリを参照する(ステップS322)。エラー検出部15は、プロセスにより指定されたアドレスからデータを読み出す。
エラー検出部15は、読み出したデータにマークが付加されているか否かを判定する(ステップS323)。マークが付加されていなければ(ステップS323:否定)、プロセスにより参照されたメモリはそのプロセスが使用するように確保されたメモリ領域であるので、エラー検出部15は、そのメモリ領域が使用可であると判定する(ステップS324)。その後、ECC生成部14又はエラー検出部15は、プロセスにより参照されたメモリへのデータの格納やデータの読み出しを行う。これに対して、マークが付加されていれば(ステップS323:肯定)、プロセスにより参照されたメモリ領域はプロセスが使用するように確保されたメモリ領域でないので、エラー検出部15は、メモリ使用違反を検出する(ステップS325)。
時刻303で、領域開放部53はプロセスからのfreeの要求を受けてメモリ領域を解放する。
ECC生成部14は、開放したメモリ領域にマークが付加されたデータを再度格納する(ステップS331)。ここでは、あるメモリ領域にマークが付加されたデータをメモリに再度格納することを、メモリへのマークの再付加という。
この状態で、プログラム5は、マークが再付加されたメモリ領域を参照する(ステップS332)。そして、エラー検出部15は、マークが再付加されたメモリからデータを読み出す。
この場合、データを読み出したメモリ領域は既に開放されており、マークが再付加された状態であるメモリ領域からデータを読み出すことになるため、エラー検出部15は、開放済み領域へのアクセス違反を検出する(ステップS333)。
さらに、時刻304で、プロセスからのfreeの要求を受けて、領域開放部53が既に開放されているメモリ領域に対して再度開放を行う。
エラー検出部15は、開放されたメモリ領域に格納されているデータにマークが付加されているかを確認する。この場合、既に開放されているメモリに対してさらに開放を行っているので、エラー検出部15は、開放されたメモリにマークが付加されていることを検出する。これにより、エラー検出部15は、既に開放済みのメモリをさらに開放しようとしていると判定する(ステップS341)。そこで、エラー検出部15は、二重開放違反を検出する(ステップS342)。
以上に説明したように、本実施例に係る情報処理装置は、ヒープ領域として獲得したメモリ領域の全てにマークを付加したデータを格納する。その後、情報処理装置は、プロセスが使用する領域として確保したメモリ領域のデータのマークを消去する。さらに、確保したメモリ領域を開放する場合、開放するメモリ領域の全てにマークを付加したデータを再度格納する。これにより、使用領域として確保されていない領域にアクセスした場合、アクセスするメモリに格納されたデータにマークが付いているので、アクセス違反が発生していることが直ぐに分かる。また、開放済みのメモリ領域を再度開放しようとしても、そのメモリ領域に格納されているデータにマークが付いているので、開放できない領域であることが直ぐに分かる。
さらに、これらのエラー検出は、ECCを用いて特定の値を有する誤り訂正符号が付加されているか否かを判定するので、ハードウェアによる処理によって検出することが可能である。したがって、本実施例に係る情報処理装置は、未割り当て領域へのアクセス、開放済み領域へのアクセス及び二重開放といったメモリ使用違反をハードウェアによって高速に検出することが可能となる。
また、ECCをデータに対するマークの付加に利用しているので、例えば8バイト毎のメモリ使用についてチェックすることができる。このため、本実施例に係る情報処理装置は、数キロバイト〜数メガバイトなどといった大きなサイズのページ単位でのMMUの処理に比べて細かい粒度でメモリの不正使用の検出を行うことができる。
すなわち、本実施例に係る情報処理装置によれば、従来のソフトウェアによるメモリ保護に比べて高速で、且つ、従来のMMUによる処理に比べて細かい粒度でメモリを保護することができる。これにより、高い性能が必要とされる大規模ソフトウェアにおけるメモリ破壊を発生させるバグの検出が容易となり、大規模ソフトウェアの品質確保が容易となる。
図9は、実施例2に係る情報処理装置のブロック図である。本実施例に係る情報処理装置は、実施例1に係る情報処理装置に加えてキャッシュメモリ3及びメモリコントローラ4をさらに有している。本実施例に係る情報処理装置において、実施例1にかかる情報処理装置と同じ機能を有する各部については説明を省略する。
キャッシュメモリ3は、データRAM(Random Access Memory)31、第2エラー検査器32、第3エラー検査器33及び第4エラー検査器34を有している。また、メモリコントローラ4は、第1エラー検査器41及び第5エラー検査器42を有している。キャッシュメモリ3とメモリコントローラ4との間がチップの境界となる場合がある。そして、チップ間通信においてエラーの発生する率が高いため、本実施例の情報処理装置は、エラーを発生する可能性が高いチップの境界にエラー検査器を配置して、エラーが発生した場所を特定することができるように構成されている。
データの格納、データの読出し及びメモリの開放の要求をソフトウェアから受けた場合、第1エラー検査器41は、メモリ2から対応するデータを読み出す。そして、第1エラー検査器41は、読み出したデータのエラーをチェックする。このとき、第1エラー検査器41は、ECC生成部14及び他のエラー検査器によって付加されたマークはエラーとしては検出しない。ここで、他のエラー検査器とは、第2エラー検査器32、第3エラー検査器33、第4エラー検査器34及び第5エラー検査器42である。エラーが検出されない場合には、第1エラー検査器41は、受信したデータに変更を加えずに第2エラー検査器32に送信する。
これに対して、読み出したデータにエラーが発生している場合には、第1エラー検査器41は、予め決められた誤り符合の特定の3ビットを反転させエラーフラグ1を表す誤り訂正符号であるマークをデータに付加する。このデータをエラーフラグ1が付加されたデータと呼ぶ。このエラーフラグ1を表す誤り訂正符号のマークをデータに付加するために反転させる特定の3ビットは、ECC生成部14及び他のエラー検査器がマーク付けするために反転させる特定の3ビットとは異なる。さらに、第1エラー検査器41は、データ領域にエラーフラグ1を表すマーク補助情報を格納する。そして、第1エラー検査器41は、エラーフラグ1を付加したデータを第2エラー検査器32に送信する。
第2エラー検査器32は、第1エラー検査器41からデータを受信する。そして、第2エラー検査器32は、受信したデータのエラーをチェックする。このとき、第2エラー検査器32は、ECC生成部14及び他のエラー検査器によって付加されたマークはエラーとしては検出しない。ここで、他のエラー検査器とは、第1エラー検査器41、第3エラー検査器33、第4エラー検査器34及び第5エラー検査器42である。エラーが検出されない場合には、第2エラー検査器32は、受信したデータに変更を加えずにデータRAM31に格納する。
これに対して、受信したデータにエラーが発生している場合には、第2エラー検査器32は、予め決められた誤り符合の特定の3ビットを反転させエラーフラグ2を表す誤り訂正符号であるマークをデータに付加する。このデータをエラーフラグ2が付加されたデータと呼ぶ。このエラーフラグ2を表す誤り訂正符号のマークをデータに付加するために反転させる特定の3ビットは、ECC生成部14及び他のエラー検査器がマーク付けするために反転させる特定の3ビットとは異なる。さらに、第2エラー検査器32は、データ領域にエラーフラグ2を表すマーク補助情報を格納する。そして、第2エラー検査器32は、エラーフラグ2を付加したデータをデータRAM31に格納する。
第3エラー検査器33は、データRAM31から第2エラー検査器32によって格納されたデータを読み出す。そして、第3エラー検査器33は、読み出したデータのエラーをチェックする。このとき、第3エラー検査器33は、ECC生成部14及び他のエラー検査器によって付加されたマークはエラーとしては検出しない。ここで、他のエラー検査器とは、第1エラー検査器41、第2エラー検査器32、第4エラー検査器34及び第5エラー検査器42である。エラーが検出されない場合には、第3エラー検査器33は、受信したデータに変更を加えずにエラー検出部15に送信する。
これに対して、読み出したデータにエラーが発生している場合には、第3エラー検査器33は、予め決められた誤り符合の特定の3ビットを反転させエラーフラグ3を表す誤り訂正符号であるマークをデータに付加する。このデータをエラーフラグ3が付加されたデータと呼ぶ。このエラーフラグ3を表す誤り訂正符号のマークをデータに付加するために反転させる特定の3ビットは、ECC生成部14及び他のエラー検査器がマーク付けするために反転させる特定の3ビットとは異なる。さらに、第3エラー検査器33は、データ領域にエラーフラグ3を表すマーク補助情報を格納する。そして、第3エラー検査器33は、エラーフラグ3を付加したデータをエラー検出部15に送信する。
データの格納、データの読出し及びメモリの開放の要求をソフトウェアから受けた場合、エラー検出部15は、メモリ2から読み出したデータにECC生成部14が付加したマークが付加されているか否かを判定する。そして、エラー検出部15は、マークの有無により、メモリ使用違反が発生しているか否かを判定する。メモリ使用違反が発生している場合には、エラー検出部15は、メモリ使用違反発生を通知するレポートをレジスタ12に登録する。
ECC生成部14は、ヒープ領域の獲得時、メモリ領域の開放時及びデータの格納時に、データをキャッシュメモリ3のデータRAM31に格納する。ECC生成部14は、マークが付加されたデータ及びマークが消去されたデータのいずれもデータRAM31に格納する。
第4エラー検査器34は、データRAM31に格納されたデータを読み出す。そして、第4エラー検査器34は、読み出したデータのエラーをチェックする。このとき、第4エラー検査器34は、ECC生成部14及び他のエラー検査器によって付加されたマークはエラーとしては検出しない。ここで、他のエラー検査器とは、第1エラー検査器41、第2エラー検査器32、第3エラー検査器33及び第5エラー検査器42である。エラーが検出されない場合には、第4エラー検査器34は、読み出したデータに変更を加えずに第5エラー検査器42に送信する。
これに対して、読み出したデータにエラーが発生している場合には、第4エラー検査器34は、予め決められた誤り符合の特定の3ビットを反転させエラーフラグ4を表す誤り訂正符号であるマークをデータに付加する。このデータをエラーフラグ4が付加されたデータと呼ぶ。このエラーフラグ4を表す誤り訂正符号のマークをデータに付加するために反転させる特定の3ビットは、ECC生成部14及び他のエラー検査器がマーク付けするために反転させる特定の3ビットとは異なる。さらに、第4エラー検査器34は、データ領域にエラーフラグ4を表すマーク補助情報を格納する。そして、第4エラー検査器34は、エラーフラグ4を付加したデータを第5エラー検査器42に送信する。
第5エラー検査器42は、第4エラー検査器34からデータを受信する。そして、第5エラー検査器42は、受信したデータのエラーをチェックする。このとき、第5エラー検査器42は、ECC生成部14及び他のエラー検査器によって付加されたマークはエラーとしては検出しない。ここで、他のエラー検査器とは、第1エラー検査器41、第2エラー検査器32、第3エラー検査器33及び第4エラー検査器34である。エラーが検出されない場合には、第5エラー検査器42は、受信したデータに変更を加えずにメモリ2に格納する。
これに対して、受信したデータにエラーが発生している場合には、第5エラー検査器42は、予め決められた誤り符合の特定の3ビットを反転させエラーフラグ5を表す誤り訂正符号であるマークをデータに付加する。このデータをエラーフラグ5が付加されたデータと呼ぶ。このエラーフラグ5を表す誤り訂正符号のマークをデータに付加するために反転させる特定の3ビットは、ECC生成部14及び他のエラー検査器がマーク付けするために反転させる特定の3ビットとは異なる。さらに、第5エラー検査器42は、データ領域にエラーフラグ5を表すマーク補助情報を格納する。そして、第5エラー検査器42は、エラーフラグ5を付加したデータをメモリ2に格納する。
以上に説明したように、本実施例に係る情報処理装置は、各所に配置されたエラー検査器でエラーを検出し、独自のチェックコードを生成してデータに付加する。このため、本実施例に係る情報処理装置は、どこでエラーが発生したかを特定することが容易となる。また、本実施例に係る情報処理装置は、メモリの使用状態を表すマークを、各エラー検査器が生成するチェックコードとは異なるチェックコードを用いて生成するので、エラーの発生箇所の特定とともにメモリの不正使用を容易に確認することができる。
図10は、実施例3に係る情報処理装置のブロック図である。本実施例に係る情報処理装置は、実施例2に係る情報処理装置においてメモリの使用状態のマークの付加をメモリコントローラ4が実行する構成である。本実施例に係る情報処理装置は、実施例2に係る情報処理装置に加えてマーク制御部43をさらに有している。本実施例に係る情報処理装置において、実施例1及び実施例2にかかる情報処理装置と同じ機能を有する各部については説明を省略する。
ECC生成部14は、ヒープ領域を獲得した場合、ヒープ領域として獲得したメモリ領域のアドレス及び仮のデータの特定の3ビットを反転させて生成したチェックコードを、メモリコントローラ4のマーク制御部43に通知する。さらに、ECC生成部14は、ヒープ領域として獲得したメモリ領域に格納するデータに生成したチェックコードを付加してメモリ2に格納する指示をマーク制御部43に通知する。
そして、ECC生成部14は、生成したチェックコードの付加を行わずにデータRAM31に仮のデータを格納する。
また、ECC生成部14は、プロセスに対してメモリ領域を確保した場合、確保したメモリ領域のアドレス、データに対応する生成したチェックコード及びマーク消去の指示を、メモリコントローラ4のマーク制御部43に通知する。
そして、ECC生成部14は、マークの消去を行わずにデータRAM31にレジスタ121から読み出したデータを格納する。
また、ECC生成部14は、メモリ領域を開放した場合、開放したメモリ領域のアドレス、仮のデータの特定の3ビットを反転させて生成したチェックコード及びマーク再付加の指示を、メモリコントローラ4のマーク制御部43に通知する。
そして、ECC生成部14は、マークの再付加を行わずにデータRAM31に仮のデータを格納する。
マーク制御部43は、ヒープ領域獲得時、ヒープ領域のアドレス及びチェックコードの情報をECC生成部14から受信する。さらに、マーク制御部43は、チェックコードを付加してメモリ2に格納する指示をECC生成部14から受ける。そして、マーク制御部43は、第5エラー検査器42から受信したデータに対して受信したチェックコードを用いてマークを付加し、ヒープ領域のアドレスを有するメモリ2の領域にデータを格納していく。マーク制御部43は、ヒープ領域の全ての領域にマークを付加したデータを格納する。
マーク制御部43は、メモリ領域の確保時、確保したメモリ領域のアドレス、チェックコードの情報及びマークの消去の指示をECC生成部14から受ける。そして、マーク制御部43は、第5エラー検査器42から受信したデータに対してECC生成部14から受信したチェックコードを付加してマークを消去し、確保したメモリ領域のアドレスを有するメモリ2の領域にデータを格納していく。マーク制御部43は、確保したメモリ領域の全ての領域にマークを付加したデータを格納する。
マーク制御部43は、メモリ領域開放時、開放したメモリ領域のアドレス、チェックコードの情報及びマークの再付加の指示をECC生成部14から受ける。そして、マーク制御部43は、第5エラー検査器42から受信したデータに対して受信したチェックコードを用いてマークを付加し、開放したメモリ領域のアドレスを有するメモリ2の領域にデータを格納していく。マーク制御部43は、開放したメモリ領域の全ての領域にマークを付加したデータを格納する。
以上に説明したように、本実施例に係る情報処理装置は、プロセッサコアがメモリコントローラにマークの付加及び削除を指示し、それを契機にメモリコントローラがマークの付加又は削除を繰り返す。これにより、マーク生成及び削除によるプロセッサコアの負荷を軽減でき、また、プロセッサコアとメモリとの間のバスへの負荷を軽減することができる。
1 プロセッサコア
2 メモリ
3 キャッシュメモリ
4 メモリコントローラ
5 プログラム
11 演算器
12 レジスタ
13 命令制御部
14 ECC生成部
15 エラー検出部
51 ヒープ領域獲得部
52 領域確保部
53 領域開放部
54 データ処理部
131 マーク付加部
132 マーク消去部
141 ビット反転部
142 コード生成部
143 データ格納部

Claims (6)

  1. メモリの第1記憶領域に格納する第1のデータの誤り検出データを誤らせて生成した第1の情報を前記第1のデータに付加し、第2記憶領域に格納する第2のデータの誤り検出情報を誤らせて生成した第2の情報を前記第2のデータに付加する情報付加部と、
    前記第1記憶領域と前記第2記憶領域のうち、前記第2記憶領域を利用可能とする際に、前記第1の情報は書き換えずに、前記第2の情報を前記第2のデータの誤り検出情報に書き換えることで前記第2の情報を消去する消去部と、
    前記メモリに格納されたデータを読み出した場合に、読み出した前記データに付加された情報を用いて、読み出した前記データについての誤り検出処理を行う誤り検出部と、
    を備えたことを特徴とする情報処理装置。
  2. 利用可能な領域として確保されている前記第2記憶領域を開放する領域開放部と、
    前記領域開放部により開放された前記第2記憶領域に格納する第3のデータの誤り検出情報を誤らせて生成した第3の情報を前記第3のデータに付加する情報再付加部と
    をさらに備えたことを特徴とする請求項1に記載の情報処理装置。
  3. 前記誤り検出部は、前記領域開放部が開放しようとする領域に格納されているデータに誤り検出情報を誤らせて生成した情報が付加されているか否かを判定し、誤り検出情報を誤らせて生成した情報が付加されている場合にはエラーを検出することを特徴とする請求項2に記載の情報処理装置。
  4. 前記メモリはエラーチェック領域を有するメモリであり、
    前記情報付加部は、前記第2のデータの前記エラーチェック領域に所定のエラーを示すエラー情報を書き込むことで前記第2のデータへの第2の情報の付加を行い、
    前記消去部は、前記第2のデータの前記エラーチェック領域の前記第2の情報を前記第2のデータの誤り検出情報に書き換える、
    ことを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
  5. メモリの第1記憶領域に格納する第1のデータの誤り検出データを誤らせて生成した第1の情報を前記第1のデータに付加し、第2記憶領域に格納する第2のデータの誤り検出情報を誤らせて生成した第2の情報を前記第2のデータに付加し、
    前記第1記憶領域と前記第2記憶領域のうち、前記第2記憶領域を利用可能とする際に、前記第1の情報は書き換えずに、前記第2の情報を前記第2のデータの誤り検出情報に書き換えることで前記第2の情報を消去し、
    前記メモリに格納されたデータを読み出した場合に、読み出した前記データに付加された情報を用いて、読み出した前記データについての誤り検出処理を行う、
    ことを特徴とする情報処理装置制御方法。
  6. メモリの第1記憶領域に格納する第1のデータの誤り検出データを誤らせて生成した第1の情報を前記第1のデータに付加し、第2記憶領域に格納する第2のデータの誤り検出情報を誤らせて生成した第2の情報を前記第2のデータに付加し、
    前記第1記憶領域と前記第2記憶領域のうち、前記第2記憶領域を利用可能とする際に、前記第1の情報は書き換えずに、前記第2の情報を前記第2のデータの誤り検出情報に書き換えることで前記第2の情報を消去し、
    前記メモリに格納されたデータを読み出した場合に、読み出した前記データに付加された情報を用いて、読み出した前記データについての誤り検出処理を行う、
    処理をコンピュータに実行させることを特徴とする情報処理装置制御プログラム。
JP2012083177A 2012-03-30 2012-03-30 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム Expired - Fee Related JP5464226B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012083177A JP5464226B2 (ja) 2012-03-30 2012-03-30 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
US13/612,098 US8910004B2 (en) 2012-03-30 2012-09-12 Information processing apparatus, and method of controlling information processing apparatus
EP12185406.1A EP2645249A1 (en) 2012-03-30 2012-09-21 Information processing apparatus, and method of controlling information processing apparatus
KR1020120113026A KR20130111171A (ko) 2012-03-30 2012-10-11 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
CN2012103870290A CN103365792A (zh) 2012-03-30 2012-10-12 信息处理设备和控制信息处理设备的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012083177A JP5464226B2 (ja) 2012-03-30 2012-03-30 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム

Publications (2)

Publication Number Publication Date
JP2013214154A JP2013214154A (ja) 2013-10-17
JP5464226B2 true JP5464226B2 (ja) 2014-04-09

Family

ID=47044797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012083177A Expired - Fee Related JP5464226B2 (ja) 2012-03-30 2012-03-30 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム

Country Status (5)

Country Link
US (1) US8910004B2 (ja)
EP (1) EP2645249A1 (ja)
JP (1) JP5464226B2 (ja)
KR (1) KR20130111171A (ja)
CN (1) CN103365792A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015095001A (ja) * 2013-11-08 2015-05-18 キヤノン株式会社 情報処理装置、その制御方法とプログラム
US10122744B2 (en) * 2016-11-07 2018-11-06 Bank Of America Corporation Security violation assessment tool to compare new violation with existing violation
EP3454216B1 (en) 2017-09-08 2020-11-18 Nxp B.V. Method for protecting unauthorized data access from a memory
US10318438B1 (en) * 2017-12-07 2019-06-11 Nuvoton Technology Corporation Secure memory access using memory read restriction
JP7145117B2 (ja) * 2019-04-05 2022-09-30 ルネサスエレクトロニクス株式会社 通信装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5525812A (en) 1978-08-08 1980-02-23 Panafacom Ltd Writing system for error correction code
JPS6126152A (ja) 1984-07-16 1986-02-05 Fujitsu Ltd アドレスチエツク方式
JPH02181845A (ja) * 1989-01-06 1990-07-16 Nec Corp 使用中メモリの誤動作フリー防止方式
JPH09305418A (ja) * 1996-05-15 1997-11-28 Nec Corp 共有メモリ管理方式
JP2002149495A (ja) * 2000-11-15 2002-05-24 Nec Corp メモリ管理方式とその方法及びこの方法を記録した記録媒体
US20040128464A1 (en) * 2002-12-30 2004-07-01 Lee Micheil J. Memory reclamation
US7707463B2 (en) 2005-11-30 2010-04-27 International Business Machines Corporation Implementing directory organization to selectively optimize performance or reliability
US20080172584A1 (en) * 2007-01-11 2008-07-17 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US8347061B2 (en) * 2008-04-29 2013-01-01 International Business Machines Corporation Method for protecting user-managed memory using an exception
JP5422974B2 (ja) 2008-11-18 2014-02-19 富士通株式会社 誤り判定回路及び共有メモリシステム
CN102346715B (zh) * 2010-07-30 2014-05-28 国际商业机器公司 保护内存中应用程序的方法、内存控制器和处理器
US8533572B2 (en) * 2010-09-24 2013-09-10 Intel Corporation Error correcting code logic for processor caches that uses a common set of check bits
US8775863B2 (en) * 2011-05-31 2014-07-08 Freescale Semiconductor, Inc. Cache locking control

Also Published As

Publication number Publication date
JP2013214154A (ja) 2013-10-17
US8910004B2 (en) 2014-12-09
CN103365792A (zh) 2013-10-23
EP2645249A1 (en) 2013-10-02
KR20130111171A (ko) 2013-10-10
US20130262947A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
CN102129410B (zh) 提供扩展的存储器保护
CN109002706B (zh) 一种基于用户级页表的进程内数据隔离保护方法和系统
JP6162652B2 (ja) メモリ管理装置、プログラム、及び方法
JP5071798B2 (ja) 計算機システム,メモリ管理方法,およびそのプログラム
CN113785275B (zh) Flash数据掉电保护方法及设备
JP5464226B2 (ja) 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
US20120185953A1 (en) Method and system for designating and handling confidential memory allocations
JP2005158040A (ja) 変換索引バッファのレイジー・フラッシング
US8397045B2 (en) Memory management device, memory management method, and memory management program
JP2008276763A (ja) メモリエラーの検出法
US8151086B2 (en) Early detection of an access to de-allocated memory
EP2620875B1 (en) Address translation inspection device, central processing device, and address translation inspection method
US9286483B2 (en) Protecting visible data during computerized process usage
US8892838B2 (en) Point-in-time copying of virtual storage and point-in-time dumping
JPH10289158A (ja) タスク管理装置
US7814288B2 (en) Protecting memory operations involving zero byte allocations
CN115576818A (zh) 一种内存越界检测方法、装置及电子设备和存储介质
JP4892414B2 (ja) 制御回路、記憶媒体、処理装置、組込みシステムならびに領域管理方法
US20190042116A1 (en) Techniques for preventing memory corruption
CN112988610A (zh) 内存回收处理方法、装置、计算机设备和存储介质
JP2006155516A (ja) メモリ管理装置、メモリ管理システム及びメモリ管理方法
KR100928865B1 (ko) 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치
JP2004157751A (ja) データ保護システム、データ保護プログラム及びデータ保護方法
JP2012526313A (ja) 携帯型電子デバイスに組み込まれたアプリケーションを実行する方法
JPH03188551A (ja) 非同期処理用メモリ保護方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

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: 20131224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees