JP2001243079A - 情報処理システム - Google Patents

情報処理システム

Info

Publication number
JP2001243079A
JP2001243079A JP2000056735A JP2000056735A JP2001243079A JP 2001243079 A JP2001243079 A JP 2001243079A JP 2000056735 A JP2000056735 A JP 2000056735A JP 2000056735 A JP2000056735 A JP 2000056735A JP 2001243079 A JP2001243079 A JP 2001243079A
Authority
JP
Japan
Prior art keywords
program
memory
access
reference table
information processing
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
Application number
JP2000056735A
Other languages
English (en)
Inventor
Yosuke Baba
洋介 馬場
Motoyuki Katou
意之 加藤
Shinji Nakagawa
伸二 中川
Hiroyuki Yanagi
博之 柳
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.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
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 Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2000056735A priority Critical patent/JP2001243079A/ja
Priority to US09/796,553 priority patent/US6725345B2/en
Publication of JP2001243079A publication Critical patent/JP2001243079A/ja
Pending 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 高速のメモリアクセスを実現するとともに、
汎用のプログラム実行環境への導入が可能な情報処理シ
ステムを提供する。 【解決手段】 システムの起動時に、メモリオブジェク
トと名付けられた仮想の配列型のオブジェクトが格納さ
れたオブジェクト参照テーブル2が設定される。このメ
モリオブジェクトは、メモリのアドレス数と同数の要素
を具備する。オブジェクト参照機構3は、オブジェクト
参照テーブル2を参照してバイトコード実行機構1に与
えられるメモリオブジェクトの要素参照要求を判別す
る。バイトコード実行機構1は、この判別結果を受け
て、メモリ全体をデータ格納領域として、指定された要
素を参照して情報の書込みまたは読出しを行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンピュータにオブ
ジェクト指向プログラムを組み込んで構成される情報処
理システムに関するもので、特に、装置内のメモリに情
報を読み書きするための技術に関連する。
【0002】
【従来の技術】サン・マイクロシステムズ社により開発
されたオブジェクト指向プログラミング言語「Java」
(同社保有の登録商標)は、ポインタによるメモリアク
セスを行わないため、メモリに対する不正なデータ書換
えを防止でき、安全性の高いシステムを構築するのに有
用な言語である。ただしJavaでは、従来のポインタを使
用するプログラミング言語のように、メモリの任意位置
に自由にアクセスできないため、オペレーションシステ
ム(以下「OS」と略す)のようにメモリへのアクセス
が必要なシステムを作成するには、つぎのような方法を
とる必要がある。
【0003】1つは、コンピュータに、別途、C言語の
ようなメモリアクセスの可能な言語によるプログラムを
組み込むとともに、Javaによるプログラム側にメモリア
クセスのためのメソッドを設定しておき、このメソッド
の呼出しにより前記メモリアクセス用のプログラムを起
動する、という方法である。また所定のコマンドをメモ
リアクセス用のアセンブラコードに変換するような特別
のコンパイラの開発により、Java単独でメモリアクセス
を行う方法も提案されている。
【0004】
【発明が解決しようとする課題】メモリアクセス用のメ
ソッドを用いた1番目の方法では、メソッドの呼出しや
アクセス用のプログラムの起動に時間がかかるため、メ
モリアクセスの効率が悪く、システムを高速で動かすこ
とが困難であり、リアルタイム性の高い機器に導入する
ことができないという問題が生じる。また特別のコンパ
イラを用いる第2の方法によるシステムは、標準仕様の
コンパイラしか持たない機器では動作しなくなり、汎用
性のあるシステムを提供できない、という問題がある。
【0005】一方、ポインタを用いたメモリアクセスを
採用するプログラム言語では、メモリアクセスを行うプ
ログラムを制限することができないため、メモリの不正
な書換えを回避できない、という問題がある。
【0006】この発明は上記問題点に着目してなされた
もので、高速のメモリアクセスを実現するとともに、汎
用のプログラム実行環境への導入が可能な情報処理シス
テムを提供することを目的とする。
【0007】またこの発明は、メモリアクセスを実行で
きるプログラムを制限することを可能にして、メモリの
不正な書換えを防止し、信頼度の高い情報処理システム
を提供することを第2の目的とする。
【0008】さらにこの発明は、実行されるプログラム
に応じて、メモリ内のアクセス許可領域を変動させるこ
とにより、信頼度を維持し、かつ利便性の高い情報処理
システムを提供することを第3の目的とする。
【0009】
【課題を解決するための手段】Javaのようなオブジェク
ト指向プログラムが動作する環境下で配列型オブジェク
トが宣言されると、図3に示すように、メモリ内には宣
言されたオブジェクトの配列要素の数に応じたデータ格
納領域が設定される。以後、この配列型オブジェクトの
所定の要素を介したデータの書込みまたは読込みが指示
されると、前記データ格納領域において指定された要素
の配列順位(プログラム上ではオブジェクト名に添付さ
れる添字の値で示される)に応じたアドレスが参照さ
れ、情報の読み書きが行われる。(以下、このような配
列要素を介しての情報の読書きを「要素参照」と呼
ぶ。)したがってたとえばメモリの全アドレス数に相当
するサイズの配列型オブジェクトが宣言されたものとす
ると、メモリ全体がデータ格納領域として設定されるこ
とになるので、所定の要素を参照することにより、メモ
リ内の任意のアドレスへのアクセスが可能となる。
【0010】この発明は、上記の原理を適用してなされ
たもので、請求項1の発明にかかる情報処理システム
は、オブジェクト指向プログラムに設定されたオブジェ
クトのデータ格納領域を判別するためのオブジェクト参
照テーブルと、前記プログラムで指定されたオブジェク
トのデータ格納領域を前記オブジェクト参照テーブルに
より判別しつつ前記プログラムを実行するプログラム実
行手段とを具備する。前記オブジェクト参照テーブルに
は、この情報処理システムを組み込むコンピュータのメ
モリのアドレス数に相当するサイズを有する仮想の配列
型オブジェクトが記憶されている。プログラム実行手段
は、この仮想の配列型オブジェクトの所定の要素の参照
を指示するプログラムが与えられたとき、前記オブジェ
クト参照テーブルの設定に基づきメモリ全体が前記仮想
の配列型オブジェクトのデータ格納領域であると判別し
て前記指定された要素を参照する。
【0011】上記のオブジェクト指向プログラムを構成
する言語は、Javaのようなメモリにアクセスするための
ポインタを持たないプログラム言語のほか、C++のよう
にポインタを用いてメモリアクセスを行うプログラム言
語であっても、ポインタによるメモリアクセスを禁止す
れば、適用可能となる。プログラム実行手段は、これら
プログラムをコンパイルして得られるバイトコードや機
械語を実行する手段(コンパイラやインタプリタ)、お
よびオブジェクト参照テーブルを用いてプログラムで指
定されたオブジェクトのデータ格納領域を判別するため
の手段(具体的には判別処理の手順などを示すプログラ
ムにより与えられる)を含んでいる。
【0012】請求項2の発明にかかる情報処理システム
には、請求項1の構成に加え、実行されるプログラムに
応じてコンピュータのメモリへのアクセスを制限するア
クセス制限手段が組み込まれる。プログラム実行手段
は、アクセス制限手段によりメモリへのアクセスが許可
されているプログラムの実行において、前記仮想の配列
型オブジェクトの所定の要素の参照を指示するプログラ
ムが与えられたとき、前記オブジェクト参照テーブルの
設定に基づきメモリ全体が仮想の配列型オブジェクトの
データ格納領域であると判別して前記指定された要素へ
の参照処理を実行する。
【0013】前記アクセス制限手段は、たとえばOSを
構成するプログラムにはメモリへのアクセスを許可し、
一般のアプリケーションを構成するプログラムにはメモ
リへのアクセスを禁止する、というように、プログラム
の機能や種類によってメモリへのアクセスを制限する。
このほか、そのプログラムの開発者、プログラムのバー
ジョンや作成日、プログラムの名称、パスワードなどを
基準として、メモリへのアクセスを制限する場合もあ
る。
【0014】請求項3の発明では、前記アクセス制限手
段には、前記メモリへのアクセスを許可するプログラム
を判定するための判定用テーブルが組み込まれる。この
判定用テーブルとしては、たとえば、メモリアクセスを
許可するプログラムのクラス名もしくはクラスの識別番
号を記憶したテーブル、あるいは、全てのプログラムの
クラス名を格納するとともにメモリアクセスを許可する
クラスにフラグを付けたテーブルなどが考えられる。
【0015】請求項4の発明では、オブジェクト参照テ
ーブルには、コンピュータのメモリの所定位置に設定さ
れたアクセス許可領域に対応させて、その領域内のアド
レス数に相当するサイズを有する仮想の配列型オブジェ
クトが記憶される。プログラム実行手段は、前記仮想の
配列型オブジェクトの所定の要素の参照を指示するプロ
グラムが与えられたとき、前記オブジェクト参照テーブ
ルの設定に基づき前記アクセス許可領域が前記仮想の配
列型オブジェクトのデータ格納領域であると判別して前
記指示された要素を参照する。
【0016】請求項5の発明の情報処理システムは、請
求項2の発明と同様に、オブジェクト参照テーブル,プ
ログラム実行手段,アクセス制限手段を具備する。この
請求項5のアクセス制限手段は、実行されるプログラム
に応じて前記コンピュータのメモリの所定位置に設定さ
れた複数のアクセス許可領域のいずれかにアクセスする
か否かを判別する。(いずれの領域へのアクセスも許可
されない場合もある。)オブジェクト参照テーブルに
は、各アクセス許可領域に対応させて、それぞれその領
域内のアドレス数に相当するサイズを有する仮想の配列
型オブジェクトが記憶される。プログラム実行手段は、
前記アクセス制限手段により所定のアクセス許可領域へ
のアクセスが許可されたプログラムの実行において、そ
のアクセス許可領域に対応する配列型オブジェクトの所
定の要素の参照を指示するプログラムが与えられたと
き、前記オブジェクト参照テーブルの設定に基づき前記
アクセス許可領域が前記仮想の配列型オブジェクトのデ
ータ格納領域であると判別して前記指示された要素を参
照する。
【0017】請求項6の発明では、請求項1,2,4,
5のいずれかの構成において、前記コンピュータの起動
時に、前記仮想の配列型オブジェクトを記憶した状態の
オブジェクト参照テーブルを初期設定するようにしてい
る。また請求項7の発明では、前記オブジェクト参照テ
ーブルに、仮想の配列型オブジェクトとして、型の異な
る複数の配列型オブジェクトを記憶するようにしてい
る。
【0018】
【作用】請求項1の発明によれば、メモリのアドレス数
に相当するサイズを有する仮想の配列型オブジェクトを
用意することにより、この配列型オブジェクトの各要素
をメモリの各アドレスに対応づけ、オブジェクトの所定
の要素の参照を指示するプログラムの実行により、メモ
リ内の任意のアドレスにアクセスすることが可能とな
る。またこの配列型オブジェクトのデータ格納領域は、
仮想的に設定されたものであるので、プログラム上で設
定される通常のオブジェクトは、この特別の配列型オブ
ジェクトの影響を受けずに、メモリ内に自己のデータ格
納領域を確保でき、その領域へのアクセスになんら問題
が生じることもない。またこの仮想の配列型オブジェク
トは、プログラム上で設定される通常のオブジェクトの
データ格納領域を判別するためのオブジェクト参照テー
ブルに記憶されるので、前記要素の参照のためのプログ
ラムを、通常の配列型オブジェクトの要素参照用のプロ
グラムと同じ文法で記述でき、汎用のプログラム実行環
境での要素参照が可能となる。
【0019】請求項2の発明によれば、メモリへのアク
セスが許可されたプログラムの実行時のみ、前記仮想の
配列型オブジェクトの要素の参照指示に応じて、その指
示された要素に対応するメモリ内のアドレスへのアクセ
スが実現する。
【0020】請求項3の発明によれば、たとえば開発者
の信頼するプログラムにメモリアクセスを許可するよう
に設定した判定用テーブルを用意することにより、この
判定用テーブルに登録されたプログラムでのみ、仮想の
配列型オブジェクトの要素参照の実行が可能となる。
【0021】請求項4の発明によれば、メモリ内におい
て、所定大きさのアクセス許可領域のみへのアクセスが
可能となり、この領域外のアドレスへのアクセスは禁止
される。また請求項5の発明によれば、プログラムの種
類や機能などに応じて複数のアクセス許可領域を設定す
ることにより、実行されるプログラムに応じてアクセス
許可領域を変動させることが可能となる。
【0022】請求項6の発明によれば、コンピュータの
起動時にオブジェクト参照テーブルが設定された時点
で、実際のプログラム上で定義されない仮想の配列型オ
ブジェクトが作成されることになる。
【0023】請求項7の発明によれば、オブジェクト参
照テーブル内に型の異なる複数の配列型オブジェクトを
用意するので、参照するオブジェクトを切り換えること
により、アクセスする際のデータの型に対応することが
可能となる。
【0024】
【実施例】図1は、この発明の一実施例にかかる情報処
理システムの構成を示す。この情報処理システムは、コ
ンピュータが組み込まれた機器内において、Javaによる
ソースプログラムに基づき動作するものであって、バイ
トコード実行機構1,オブジェクト参照テーブル2,オ
ブジェクト判別機構3,実行プログラム4,メモリアク
セス機構5などにより構成される。
【0025】前記実行プログラム4は、図示しないコン
パイラによりソースプログラムから変換されたバイトコ
ード(中間コード)のプログラムであって、バイトコー
ド実行機構1は、このバイトコードを実行するためのイ
ンタプリタである。バイトコード実行機構1は、新規の
オブジェクトを設定するためのメッセージを受け取る
と、そのオブジェクト名を固有の識別番号に対応づけて
前記オブジェクト参照テーブルに記憶するとともに、前
記識別番号を、対応するオブジェクトの定義や変数の格
納領域のアドレスなどの情報にリンクさせる。
【0026】オブジェクト判別機構3は、バイトコード
実行機構1にオブジェクトの参照命令が送られたとき、
そのプログラム中のオブジェクト名により前記オブジェ
クト参照テーブル2を参照して指定されたオブジェクト
の識別番号を判別するもので、具体的には、前記判別処
理の手順などを示すプログラムやその実行機構により構
成される。バイトコード実行機構1は、オブジェクト判
別機構3により判別された識別番号のリンク情報に基づ
きそのオブジェクトの変数の格納領域を認識する。
【0027】メモリアクセス機構5は、メモリの所定ア
ドレスに対する情報の読書きを行うための機構(具体的
にはCPUとメモリとをつなぐデータバスなど)であ
り、バイトコード実行機構1より前記変数の格納場所を
示すアドレスを受け取って、この領域に対する情報の書
込みまたは読取りを実行する。
【0028】なお前記新規のオブジェクトが配列型オブ
ジェクトであれば、メモリには、配列型オブジェクトの
サイズに応じた大きさのデータ格納領域が設定される。
この配列型オブジェクトの所定の要素を介してデータの
書込みまたは読出しを要求する場合、バイトコード実行
機構1には、データの読書きの対象とする要素をその配
列添字で表したメッセージが与えられる。(以下この要
素を介してのデータの読書きを「要素参照」、その参照
を指示することを「要素参照要求」という。)バイトコ
ード実行機構1は、前記オブジェクト判別機構3による
判別結果に基づき、配列型オブジェクトのデータ格納領
域のうち、前記要素参照要求の示す配列添字に対応する
領域にアクセスし、情報の書込みまたは読取りを行う。
【0029】前記オブジェクト参照テーブル2は、コン
ピュータに電源が供給された直後に立ち上がる起動プロ
グラムによりメモリの所定位置に設定される。通常のこ
の種のシステムでは、初期設定時点でのオブジェクト参
照テーブル2は空の状態であるが、この実施例では、こ
の初期設定時に、「メモリオブジェクト」と名付けられ
た仮想の配列型オブジェクトが、識別番号「1」に対応
づけた状態でオブジェクト参照テーブル2に格納され
る。
【0030】バイトコード実行機構1は、新規のオブジ
ェクトを設定する都度、そのオブジェクトに対し、オブ
ジェクト参照テーブル2にまだ設定されていない識別番
号を割り当てる。したがって、システムの起動後に設定
されるオブジェクトには、「2」以降の識別番号が順に
割り当てられ、メモリオブジェクトの識別番号が変更さ
れることはない。
【0031】なおメモリオブジェクトの生成方法は上記
の方法に限らず、たとえばシステム起動後に最初に立ち
上げられるプログラムによりメモリオブジェクトという
名前の配列型オブジェクトを生成するとともに、バイト
コード実行機構1を、この配列型オブジェクトを仮想の
オブジェクトと認識するように設定しておき、初期の空
状態のオブジェクト参照テーブル2に、前記メモリオブ
ジェクトを、識別番号「1」の仮想の配列型オブジェク
トとして登録するようにしてもよい。ただしシステム起
動後すぐにメモリにアクセスするためには、この実施例
のように、システム起動時に、メモリオブジェクトが登
録されたオブジェクト参照テーブル2を設定する必要が
ある。
【0032】前記メモリオブジェクトは、コンピュータ
の有する全アドレス数に相当するサイズを具備する配列
型オブジェクト、すなわちコンピュータの0番地を先頭
アドレスとして、メモリのアドレス数と同数の要素を具
備する配列型オブジェクトとして設定される。バイトコ
ード実行機構1にメモリオブジェクトの要素参照要求が
与えられると、前記オブジェクト判別機構3は、そのオ
ブジェクト名から識別番号「1」の仮想オブジェクトの
要素参照要求であると判別する。この判別結果を受け
て、バイトコード実行機構1は、メモリ全体をこのオブ
ジェクトのデータ格納領域として認識し、前記要素参照
要求のなされた要素の配列添字に対応するアドレスにア
クセスして、情報の書込みまたは読取りを行う。なおこ
のメモリオブジェクトは、実際のプログラム上で生成さ
れていないため、通常に生成されたオブジェクトのよう
にメモリ内に自己のデータ格納領域が確保されるもので
はない。したがって通常のオブジェクトは、メモリオブ
ジェクトの影響を受けることなく、自己のデータ格納領
域を確保し、そのデータ格納領域に自由にアクセスでき
る。
【0033】ここで図2および図3を用いて、メモリオ
ブジェクトと通常の配列型オブジェクトとの違いを説明
する。メモリオブジェクトは、メモリのアドレス数と同
数の要素の一次元配列のオブジェクトであるので、図2
に示すように、i番目の要素のデータはメモリのi番地
に格納されることになる。これに対し、通常の配列型オ
ブジェクトは、図3に示すように、メモリ内でそのオブ
ジェクトに割り当てられたデータ格納領域にのみアクセ
スするから、このデータ格納領域の先頭アドレスをnと
すると、オブジェクトのi番目の要素のデータは、メモ
リの(n+i−1)番地に格納されることになる。
【0034】なおコンピュータは、通常、ROM,RA
Mの2種類のメモリを具備するが、これらのメモリに通
し番号のアドレスが設定され、任意の数字によりいずれ
かのメモリの特定位置を一意に表すことが可能な場合
は、メモリオブジェクトを用いて両方のメモリの全アド
レスにアクセスすることができる。ただしROMに対し
ての書込み処理は制限される。
【0035】このようにメモリオブジェクトは、メモリ
全体の領域を確保しているかのように振る舞い、メモリ
のアクセスすべきアドレスの値を添字とする要素参照要
求により、目的とするアドレスに対する情報の読書きが
実現する。またJavaによる実行用プログラムにおいて、
配列型オブジェクトの要素参照要求は、指定するオブジ
ェクトがメモリオブジェクトであるか、通常の配列型オ
ブジェクトであるかに関わらず、同様の文法で記述され
るので、標準仕様のJavaコンパイラによる変換処理が可
能である。したがってバイトコード実行機構1は、メモ
リオブジェクトの要素参照要求に対してもなんら特別な
処理を行わずに、通常の配列型オブジェクトに対するの
と同様の方法で、指定されたアドレスにアクセスするこ
とができる。
【0036】なお以下に示すプログラムの具体例では、
メモリオブジェクトの各要素をbyte型に設定することに
より、byte単位でのメモリアクセスを行うようにしてい
るが、メモリオブジェクトをint型の配列に設定すれ
ば、int単位でのメモリアクセスが可能になる。同様にd
ouble型の配列に設定すれば、double単位でのメモリア
クセスを実現することができる。
【0037】図4は、メモリオブジェクトおよび通常の
配列型オブジェクト(オブジェクト名をアレイオブジェ
クトとする)の2種類のオブジェクトによるメモリへの
書込み処理を記述したJavaのプログラム(クラス名:"W
riteTest")である。なお図中、説明のためにプログラ
ムの記述行には行番号を付してある。(以下のプログラ
ムを示した図にも、同様に行番号を付す。)
【0038】このプログラムの4〜7行目でのインスタ
ンスの生成において、コンストラクタの引数として指定
された変数"memoryObject","arrayObject"に、それぞれ
メモリオブジェクト、アレイオブジェクトの各配列型オ
ブジェクトの参照を渡している。これによりこの"Write
Test"クラスにおいて各オブジェクトの要素参照を行う
ことが可能となる。つぎの8〜10行の"memoryWrite"
メソッドでは、メモリオブジェクトにおいて変数"memor
yAddress"の示す要素に変数"writeValue"の示す値を書
き込むことが、また11〜13行目の"arrayWrite"メソ
ッドでは、アレイオブジェクトにおいて変数"arrayInde
x"の示す要素に変数"writeValue"の示す値を書き込むこ
とが、それぞれ定義されている。
【0039】図5は、前記図4のJavaのソースプログラ
ムをコンパイルした結果を示す。図中、左は前記8〜1
0行目の"memoryWrite"メソッドのコンパイル結果、右
は11〜13行目の"arrayWrite"メソッドのコンパイル
結果であって、両者間でコードの異なる部分は、太字で
示されている。この図示より明らかなように、各メソッ
ドを表すバイトコードは、オブジェクト名の部分を除い
て同様である。
【0040】バイトコード実行機構1は、上記いずれの
メソッドのバイトコードに対しても、1行目のバイトコ
ードが配列要素への書込み命令であることを認識した
後、つぎの2行目のバイトコードにより、書込みの対象
とするオブジェクト名を取得する。このとき"memoryWri
te"メソッドについては、前記オブジェクト参照テーブ
ル2の参照により、識別番号「1」の付与された仮想の
配列型オブジェクトの要素参照要求であると判別され、
メモリ全体がデータ格納領域となるように仮想設定され
る。したがって前記実行プログラム4の所定位置におい
て、前記変数"memoryAdress","writeValue"に値を格納
して前記"memoryWrite"メソッドを呼び出すことによ
り、メモリ内の任意のアドレスへのデータの書込みが実
現する。
【0041】なお前記図4では、メモリオブジェクトを
用いてメモリ内の任意のアドレスにデータを書き込むた
めのプログラムを示したが、任意のアドレスからデータ
を読み込む場合も、通常の配列型オブジェクトに対する
のと同様に、所定の要素に格納されたデータを読み出す
ためのメソッドを設定すればよい。
【0042】このように、メモリオブジェクトの要素参
照要求は、ソースプログラム上で通常の配列型オブジェ
クトの要素参照要求と同じ文法で記述され、汎用のJava
コンパイラにより変換される。したがってバイトコード
実行機構1は、メモリオブジェクトに対し、通常の配列
型オブジェクトに対するのと同様の参照処理を行うだけ
でよく、Javaのプログラムによるメモリへのアクセス
を、簡単に実現することができる。
【0043】ただし、このメモリオブジェクトの参照を
無制限に許可すると、従来のポインタを用いてのメモリ
アクセスと同様に、メモリに不正なデータが書き込まれ
たり、データが消去される虞が生じる。そこで以下の実
施例では、オブジェクト指向の特性を生かして、信頼の
おけるプログラムにのみメモリオブジェクトの参照を許
可するようにしている。
【0044】図6に示す情報処理システムは、基本的に
は第1の実施例と同様の構成を具備するが、実行プログ
ラム4には、OS用のプログラムや、このOSの管理下
で動くドライバやアプリケーションなど、複数種のプロ
グラムが含まれている。
【0045】この実施例でも、システムの起動と同時
に、メモリオブジェクトが設定されたオブジェクト参照
テーブル2が作成されるが、メモリ全体へのアクセスが
許可されるのは、OS,ドライバなど、システム開発者
が指定した一部のプログラムに限定される。このアクセ
スの制限は、具体的には、あらかじめシステム開発者の
間でメモリ全体へのアクセスを許可する基準を定めてお
き、アクセスを許可するプログラムにのみメモリオブジ
ェクトの参照を渡すための設定を書き込むことにより実
現する。
【0046】図7は、OSを構成するプログラム(クラ
ス名:OS;以下「OSクラス」という)にメモリアク
セスを許可する場合の設定例であって、コンストラクタ
の引数として指定された変数"memoryObject"に、メモリ
オブジェクトの参照が渡されている。これによりOSク
ラスにおいては、前記した"memoryWrite"メソッドのよ
うな要素参照要求に応じて、メモリ内の指定されたアド
レスにアクセスし、情報の書込みまたは読込みを行うこ
とが可能となる。なお図7の2行目において、前記変
数"memoryObject"は、private修飾子付きで宣言されて
いるので、他のクラスでは、この変数を認識できなくな
る。
【0047】図8は、前記図6の情報処理システムにお
けるプログラムの関係、および各プログラムにおけるメ
モリオブジェクトの参照渡しの設定例を示す。図示例で
は、OS,ドライバ,アプリケーションの種毎に、それ
ぞれOSクラス,ドライバクラス,アプリケーションク
ラスと名付けられたプログラムが設定されている。OS
クラスは、システムの起動により立ち上り、以下、ドラ
イバクラス,アプリケーションクラスの順に、それぞれ
立ち上げられる。
【0048】OSクラス,ドライバクラスは、それぞれ
前記図7と同様に、private修飾子付きの変数"memoryOb
ject"を具備するとともに、この変数を介してメモリオ
ブジェクトの参照を引数として渡したコンストラクタを
具備する。一方、アプリケーションクラスでは、メモリ
オブジェクトの参照は渡されておらず、またOSクラス
やドライバクラスのメモリオブジェクトの参照を認識で
きない状態にある。したがってOSクラスやドライバク
ラスでは、要素参照要求に応じて、メモリの任意位置に
アクセスできるのに対し、アプリケーションクラスで
は、メモリへの自由なアクセスは禁止され、仮にクラス
内に前記"memoryWrite"メソッドのようなメソッドが設
定されても、そのメソッドを正しく実行することは、不
可能となる。
【0049】上記実施例では、システム開発者が直接開
発するなど、信頼性の高いプログラムにのみメモリオブ
ジェクトの参照が許可され、外部から取り入れたような
信頼のおけないプログラムには、メモリオブジェクトの
参照は許可されず、またこれらのプログラムがOSクラ
スなどのメモリオブジェクトの参照を使用することも禁
じられる。したがってメモリに対する不正なデータの書
換えや消去が禁止され、システムのセキュリティを大幅
に高めることができる。
【0050】図9は、この発明の情報処理システムにか
かる第3の構成例を示す。この実施例の情報処理システ
ムには、メモリへのアクセスを許可するプログラムを判
断するための構成として、メモリオブジェクト参照制限
機構6を設けている。なお実行プログラム4内には、第
2の実施例と同様に、OS,ドライバ,アプリケーショ
ンなどの種毎のプログラムが含まれる。なおバイトコー
ド実行機構1,オブジェクト参照テーブル2,オブジェ
クト判別機構3,メモリアクセス機構5についても、前
記第1、第2の実施例と同様であり、ここでは詳細な説
明を省略する。
【0051】前記メモリオブジェクト参照制限機構6
は、具体的には、Javaによるソースプログラムをコンパ
イルして得たバイトコードのプログラムおよびその実行
機構により構成される。なお前記プログラムには、メモ
リへのアクセスを許可するか否かを判定する規準が設定
された判定用テーブルとして、たとえばアクセスを許可
するプログラムのクラス名や識別番号などを記憶したテ
ーブルや、アクセスを許可するプログラムをフラグによ
り示したテーブルなどが設定される。
【0052】この情報処理システムでは、つぎに述べる
2つの方法のいずれかにより、実行プログラム4による
メモリへのアクセスに制限を設けるようにしている。1
つは、最も信頼のできるプログラム(ここではOSとす
る)にのみ、前記第2の実施例と同様の方法でメモリオ
ブジェクトの参照を渡しておき、OSが他のプログラム
を起動する際に、メモリオブジェクト参照制限機構6で
の判定を確認してから許可されたプログラムにのみメモ
リオブジェクトの参照を渡す、というものである。もう
1つの方法は、実行中のプログラムからメモリオブジェ
クト参照制限機構6にメモリオブジェクトの参照渡しの
要求を送り、許可されたプログラムにのみ、メモリオブ
ジェクト参照制限機構6からメモリオブジェクトの参照
を渡す、という方法である。
【0053】以下、上記した2つの処理方法の具体例
を、順に説明する。図10は、上記の第1の方法を実施
する場合のメモリオブジェクト参照制限機構6における
処理手順を示す。まずOSクラスから起動するプログラ
ムのクラス名が送られると、ST1で、そのクラス名に
より前記判定用テーブルを検索し、そのクラスにメモリ
アクセスが許可されているか否かを判断する。そしてメ
モリアクセスを許可する場合は、ST2からST3に進
んで、OSに"true"(真)の判定結果を返す。また前記
クラスにメモリアクセスを許可しない場合は、ST2か
らST4に進んで、OSには、"false"(偽)の判定結
果が返される。この場合、OSでは、"true"の判定結果
を受けたときのみ、前記起動するプログラムに、メモリ
オブジェクトの参照を渡すことになる。
【0054】図11は、上記の図10の手順を実行する
ためにメモリオブジェクト参照制限機構に設定されるプ
ログラムの一例である(クラス名:"MemoryObjectRefer
enceRestrict";以下「メモリオブジェクト参照制限ク
ラス」と称す)。図中、2行目は、前記した判定用テー
ブルの設定であって、ここでは、メモリオブジェクトの
参照を許可するプログラムのクラス名(図示例では"OS"
と"Driver")を記憶する判定用テーブル"list"が設定さ
れている。なおこの判定用テーブルに記憶されるクラス
名は、システム開発者の判断により決定されるもので、
適宜、変更することも可能である。
【0055】3〜10行目のプログラムは、前記図10
のST1〜4の手順を具体化したメソッド("isPermitt
ed" メソッド)の記述部分であり、OSから送られたク
ラス名を変数"className"に格納し、このクラス名が前
記判定用テーブルに登録されているか否かをチェックし
て、"true"または"false"の判別結果を返すことが定義
されている。
【0056】図12は、前記"isPermitted"メソッドの
呼出しが設定されたOSクラスのプログラムの例を示
す。図中、3〜5行目では、前記図7と同様に、privat
e修飾子付きの変数"memoryObject"を引数とするコンス
トラクタにおいて、前記変数に配列型オブジェクトであ
るメモリオブジェクトの参照が渡されている。6〜14
行目は、ドライバクラスを起動する際のプログラムであ
って、ドライバクラスのクラス名"Driver"を引数として
前記参照制限機構クラスの"isPermitted"メソッドを呼
び出し、"true"が返されたときは、メモリオブジェクト
の参照を渡したドライバクラスを起動する。一方、"fal
se"が返された場合は、空の(null)オブジェクトを渡
したドライバクラスを起動する。
【0057】ドライバクラスは、図13のようなメモリ
オブジェクトの参照わたしを受けるためのメソッドを具
備していれば、以後、メモリオブジェクトの要素参照要
求に応じてメモリ内の指定されたアドレスにアクセス
し、情報の書込みまたは読取りを行うことが可能とな
る。なお図13中の2〜4行目のプログラムは、OSか
らメモリオブジェクトの参照が渡されたときには、メモ
リの100番地に値「99」を書き込み、メモリオブジ
ェクトの参照が渡されなかったときには、何もしないこ
とを示す。
【0058】図14は、第2の方法を用いる場合のオブ
ジェクト参照制限機構の処理手順を示す。(前記図10
の手順と区別するために、ここでは各ステップを「s
t」で示す。)この処理は、所定のクラスからメモリオ
ブジェクトの参照渡しが要求されることにより開始され
るもので、まずst1では、参照渡しを要求したプログ
ラムのクラス名を取得する。そしてこのクラス名が前記
判定用テーブルに登録されているか否かをチェックし、
判定用テーブルに登録されたクラス名であれば、st2
からst3へと進んでそのクラスにメモリオブジェクト
の参照を渡す。反対にクラス名が登録されていない場合
には、st4に進んで、そのクラスに空(null)のオブ
ジェクトを渡す。
【0059】図15は、図14の手順を実行するための
メモリオブジェクト参照制限クラスの具体例を示し、図
16は、前記メモリオブジェクトの参照渡しを要求する
プログラムの具体例を示す。図16のプログラムは、実
行プログラム4内の任意のクラス(図示例ではドライバ
クラス)のプログラムであり、図中の"run"メソッドに
おいて、メモリオブジェクト参照制限クラスの"getMemo
ryObject"メソッドを呼び出す部分(3〜4行目)が前
記参照渡しの要求に相当する。
【0060】前記メソッドの呼出しに対し、メモリオブ
ジェクト参照制限クラスでは、まず図15の4行目にお
いて、"getClassName"メソッドを用いて前記参照渡しの
要求を出したクラスのクラス名を取得する。5〜11行
目は、前記st2〜4の処理に対応するもので、前記メ
ソッド呼出し元のクラス名が判定用テーブルに登録され
ているか否かにより、そのクラスにメモリオブジェクト
または空のオブジェクトの参照を渡すように定義されて
いる。
【0061】なお前記4行目の"getClassName"メソッド
は、システム内部のスタック構造に基づいて前記メソッ
ドの呼出し元のクラスを特定するメソッドである。バイ
トコード実行機構1では、メソッド呼出しに応じて、呼
び出されたメソッドの作業エリア(フレーム)をスタッ
ク内に順に積み重ねつつ、メソッドの実行に応じて、そ
のメソッドのフレーム内に、実行途中のデータ,メソッ
ド名(またはメソッドの識別番号など),クラス名(ま
たはクラスの識別番号など)などを格納している。前
記"getClassName"メソッドは、このフレームの構造を辿
ることにより、メソッドの呼出先のクラスを特定してそ
のクラス名もしくはクラスの識別番号を取得する。これ
により、前記"getMemoryObject"メソッドの呼出し元の
クラスでクラス名を引数として渡す必要なしに、メモリ
オブジェクト参照制限クラスにおいて、どのクラスのど
のメソッドから前記"getMemoryObject"メソッドの呼出
しがあったのかを特定することができる。
【0062】上記の"getClassName"メソッドによれば、
メモリアクセスの禁止されているクラスが偽のクラス名
を引数として渡した"getMemoryObject"メソッドを実行
して、メモリオブジェクトの参照渡しを受けるような不
正を防止することができ、システムのセキュリティを一
層向上することができる。
【0063】前記"getMemoryObject"メソッドの呼出し
元のクラスでは、前記メモリオブジェクト参照制限クラ
スからメモリオブジェクトの参照が渡されることによ
り、要素参照要求に応じてメモリの任意のアドレスにア
クセスできる状態となる。なお図16の例では、前記メ
ソッドの呼出しの後に、空のオブジェクトでなかった場
合にのみメモリアクセスを行うようにするためのプログ
ラムが記述されている(5〜7行目)。
【0064】上記の各方法によれば、メモリオブジェク
ト参照制限機構6の判定用テーブルに基づきメモリオブ
ジェクトの参照を渡すクラスが制限されるので、判定用
テーブルの設定を変更することにより、適宜、メモリへ
のアクセスを許可するプログラムを追加したり、変更す
ることが可能となる。したがって、システム開発に応じ
て柔軟な対応をとることができ、より汎用性の高い情報
処理システムを提供することができる。なお上記実施例
では、プログラムの名前により応じてメモリアクセスを
制限しているが、このほかプログラムの機能または種類
(たとえば表計算用のアプリケーションにはメモリアク
セスを許可するなど)、プログラムの開発者名、プログ
ラムのバージョン,作成日,パスワードなどによって、
メモリアクセスを許可するか否かを決定してもよい。
【0065】さらに上記の各方法は、いずれもJavaのソ
ースプログラム上にメモリオブジェクトの参照を制限す
るための設定を書き込むようにしているが、ソースプロ
グラムに限らず、バイトコードを実行する段階で参照渡
しを制限するようにしてもよい。この場合は、バイトコ
ード実行機構1がメモリオブジェクトの参照渡しを示す
バイトコードを実行する際に、メモリオブジェクト参照
制限機構6の判定結果を確認し、メモリアクセスが許可
されていないクラスであれば、そのクラスに渡すオブジ
ェクトのコードを、メモリオブジェクトのコードから"n
ull"のコードに置き換えるように設定しておく。この設
定により、たとえメモリアクセスが許可されていないプ
ログラムに、メモリオブジェクトの参照を渡すための設
定が不正に書き込まれても、そのプログラムによる不正
なメモリアクセスを禁止することができる。
【0066】さらに前記図1,6,9に示した各情報処
理システムでは、いずれも、メモリオブジェクトという
仮想の配列型オブジェクトを1つだけ生成しているが、
これに限らず、たとえばbyte型配列とint型配列という
ように、型の異なる複数の仮想オブジェクトを生成し
て、アクセスする際のデータの型に応じていずれかのオ
ブジェクトを使い分けるようにしてもよい。
【0067】また前記の各情報処理システムは、いずれ
もメモリオブジェクトにメモリの全アドレス数に相当す
るサイズを持たせたが、これに限らず、メモリ内でアク
セスを許可する領域を限定し、この領域(以下「アクセ
ス許可領域」という)に対応するような仮想オブジェク
トを設定すれば、メモリのアクセスに制限を設ける必要
がある機器にも対応可能な情報処理システムを提供する
ことができる。さらにプログラムの名前や種類などによ
ってアクセス許可領域の位置や大きさが変更できるよう
に、複数の仮想オブジェクトを設定することも可能であ
る。
【0068】図17は、プログラムの種毎に異なるアク
セス許可領域を設定する場合のシステム構成例である。
基本的な構成は、図9と同様であるが、オブジェクト参
照テーブル2内には、メモリオブジェクトA,メモリオ
ブジェクトB,メモリオブジェクトCと名付けられた3
種類の仮想の配列型オブジェクトが、それぞれ識別番号
「1」「2」「3」に対応づけられて格納されている。
【0069】識別番号「1」のメモリオブジェクトA
は、前記した各実施例と同様に、メモリの全アドレス数
に相当するサイズを有するものとして設定される。これ
に対し、メモリオブジェクトBおよびCは、それぞれメ
モリ内の限定されたアクセス許可領域に対応するように
設定される。(以下、これら3種類のオブジェクトを総
称する場合に「メモリオブジェクト」という。)
【0070】図18は、各メモリオブジェクトに対応す
るアクセス許可領域の例を示す。図中、rAはメモリオ
ブジェクトAに対応するアクセス許可領域、すなわちメ
モリ全体を示す。rB,rCは、それぞれメモリオブジェ
クトB,Cに対応するアクセス許可領域であって、メモ
リ内の一部領域に相当する。なお領域rB,rCの一部が
重なり合ったり、いずれかの領域内に他の領域が包含さ
れるような設定も可能である。
【0071】この実施例では、システムの起動時に、各
識別番号のメモリオブジェクトがそれぞれ対応するアク
セス許可領域の先頭アドレスや配列のサイズにリンクし
た状態で格納されたオブジェクト参照テーブル2が設定
される。メモリオブジェクト参照制限機構6には、各メ
モリオブジェクトについて、それぞれそのオブジェクト
の参照によるメモリのアクセスを許可するプログラムを
判別するための判別テーブルが設定される。なお各クラ
スにメモリオブジェクトの参照渡しを行うための方法
は、前記図9の実施例と同様である。
【0072】この構成によれば、実行プログラム内の各
プログラムは、それぞれそのクラス名やプログラムの種
類などに応じて、いずれかのメモリオブジェクトを使用
してメモリにアクセスできるようになる。なお許可され
ていないメモリオブジェクトを参照しようとしたり、許
可されたメモリオブジェクトのサイズの範囲を越えた要
素の参照を指定した場合は、通常の配列型オブジェクト
の要素参照と同様に、バイトコード実行機構1によって
エラーとなり、メモリへのアクセスは禁止される。
【0073】たとえばドライバクラスでの通常のアクセ
ス範囲にあたる領域をアクセス許可領域rBとし、仮に
データが破壊されても大きな問題が生じない領域をアク
セス許可領域rCとして設定したものとすると、メモリ
全体へのアクセスが必要なOSクラスのプログラムには
メモリオブジェクトAの参照が許可される一方、ドライ
バクラスのプログラムにはメモリオブジェクトBの参照
が、アプリケーションクラスのプログラムにはメモリオ
ブジェクトCの参照が、それぞれ許可される。このよう
にプログラムの機能や信頼性に応じて、メモリ内のアク
セス可能な範囲を限定することができ、また信頼性の低
いプログラムでもある程度のメモリアクセスが可能とな
るので、より安全性が高く、かつ利便性の高い情報処理
システムを提供することができる。
【0074】なお上記図1,6,9,17に示した各情
報処理システムは、いずれもソースプログラムとしてJa
vaを使用しているが、Java以外のオブジェクト指向のプ
ログラム言語であっても、ポインタによるメモリアクセ
スを行わない言語であれば、同様の情報処理システムを
構築することができる。またC++など、ポインタによる
メモリのアクセスを行う言語でも、特別のコンパイラに
よりポインタを用いたメモリアクセスを禁止したり、ポ
インタによるメモリアクセス処理を言語仕様から排除す
ることにより、同様の情報処理システムを構築すること
ができ、外部からの不正なポインタ使用によるメモリア
クセスが行われるという従来の欠点を解消することがで
きる。
【0075】
【発明の効果】上記したように、この発明では、メモリ
のアドレス数に相当するサイズを有する仮想の配列型オ
ブジェクトを用意して、このオブジェクトの要素を参照
することにより、メモリの任意のアドレスへのアクセス
が可能となり、Javaのようなメモリアクセスのためのポ
インタを持たないプログラム言語でも、簡単かつ高速に
メモリアクセスを実現することができる。また仮想の配
列型オブジェクトに対する要素参照は、通常の配列型オ
ブジェクトに対する要素参照と同様の方法で実行される
ので、特殊なコンパイラを用いる必要がなく、汎用のプ
ログラム実行環境を具備する機器への組込みが可能な情
報処理システムを提供することができる。
【0076】また請求項2の発明では、限られたプログ
ラムでしか仮想の配列型オブジェクトを参照できないよ
うに設定することにより、メモリアクセスを実行するプ
ログラムが制限されるので、不正なメモリアクセスを防
止して、信頼度の高い情報処理システムを提供すること
ができる。
【0077】さらに請求項3の発明では、判定用テーブ
ルによりメモリアクセスを許可するプログラムを設定す
るので、メモリアクセスを許可するプログラムの変更や
追加を簡単に実行することができ、システムの開発段階
での設計変更やバージョンアップにも、柔軟に対応する
ことができる。
【0078】請求項4の発明では、メモリ内において、
所定の大きさのアクセス許可領域のみへのアクセスが可
能となるので、アクセスを禁止しなければならない事情
がある機器への導入も可能となる。また請求項5の発明
では、プログラムの種類や機能などに応じてアクセス許
可領域を変動させることができるので、信頼性の低いプ
ログラムにも、データの破壊が許容できる領域のみのア
クセスを許可することができ、信頼性を維持しつつ、利
便性の高い情報処理システムを提供することができる。
【0079】請求項6の発明では、コンピュータの起動
とともに、プログラム上で定義されない仮想の配列型オ
ブジェクトが作成されるので、システム稼働時に特別の
処理を行うことなく、メモリアクセスを実行することが
可能となる。
【0080】請求項7の発明によれば、オブジェクト参
照テーブル内に型の異なる複数の配列型オブジェクトを
用意するので、アクセスする際のデータの型が種々に変
動する場合でも、参照するオブジェクトを切り換えるこ
とにより対応することが可能である。
【図面の簡単な説明】
【図1】この発明の情報処理システムの第1の構成を示
す機能ブロック図である。
【図2】メモリオブジェクトとメモリのアドレスとの関
係を説明する図である。
【図3】通常の配列型オブジェクトとメモリのアドレス
との関係を説明する図である。
【図4】メモリオブジェクトおよび通常の配列型オブジ
ェクトによる書込み処理が記述されたJavaプログラムで
ある。
【図5】図4の"memoryWrite"メソッドと"arrayWrite"
メソッドとのコンパイル結果を対比して示した図であ
る。
【図6】情報処理システムの第2の構成を示す機能ブロ
ック図である。
【図7】メモリオブジェクトの参照渡しを受けるための
OSクラスのJavaプログラムである。
【図8】図6のシステムにおける各プログラムの関係お
よびメモリオブジェクトの参照渡しの設定例を示す図で
ある。
【図9】情報処理システムの第3の構成を示す機能ブロ
ック図である。
【図10】メモリオブジェクト参照制限機構による処理
の手順を示すフローチャートである。
【図11】図10の手順を実行するためのJavaプログラ
ムである。
【図12】図11の"isPermitted"メソッドの呼出しを
含むOSクラスのJavaプログラムである。
【図13】ドライバークラスにおいてメモリオブジェク
トの参照渡しを受け取るためのJavaプログラムである。
【図14】メモリオブジェクト参照制限機構による処理
の手順を示すフローチャートである。
【図15】図14の手順を実行するためのJavaプログラ
ムである。
【図16】メモリオブジェクト参照制限機構に対し、メ
モリオブジェクトの参照渡しを要求するためのJavaプロ
グラムである。
【図17】情報処理システムの第4の構成を示す機能ブ
ロック図である。
【図18】図17のシステムの各メモリオブジェクトに
対応するアクセス許可領域の設定例を示す図である。
【符号の説明】
1 バイトコード実行機構 2 オブジェクト参照テーブル 3 オブジェクト判別機構 4 実行プログラム 6 メモリオブジェクト参照制限機構
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中川 伸二 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 (72)発明者 柳 博之 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 Fターム(参考) 5B017 AA01 BA06 BB06 CA01 5B081 AA09 DD01

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータに組み込まれたオブジェク
    ト指向プログラムによる情報処理システムであって、 前記プログラムに設定されたオブジェクトのデータ格納
    領域を判別するためのオブジェクト参照テーブルと、 前記プログラムで指定されたオブジェクトのデータ格納
    領域を前記オブジェクト参照テーブルにより判別しつつ
    前記プログラムを実行するプログラム実行手段とを具備
    し、 前記オブジェクト参照テーブルには、前記コンピュータ
    のメモリのアドレス数に相当するサイズを有する仮想の
    配列型オブジェクトが記憶され、 前記プログラム実行手段は、前記仮想の配列型オブジェ
    クトの所定の要素の参照を指示するプログラムが与えら
    れたとき、前記オブジェクト参照テーブルの設定に基づ
    きメモリ全体が前記仮想の配列型オブジェクトのデータ
    格納領域であると判別して前記指示された要素を参照す
    る情報処理システム。
  2. 【請求項2】 コンピュータに組み込まれたオブジェク
    ト指向プログラムによる情報処理システムであって、 前記プログラムに設定されたオブジェクトのデータ格納
    領域を判別するためのオブジェクト参照テーブルと、 前記プログラムで指定されたオブジェクトのデータ格納
    領域を前記オブジェクト参照テーブルにより判別しつつ
    前記プログラムを実行するプログラム実行手段と、 実行されるプログラムに応じて前記コンピュータのメモ
    リへのアクセスを制限するアクセス制限手段とを具備し
    ており、 前記オブジェクト参照テーブルには、前記コンピュータ
    のメモリのアドレス数に相当するサイズを有する仮想の
    配列型オブジェクトが記憶され、 前記プログラム実行手段は、前記アクセス制限手段によ
    りメモリへのアクセスが許可されているプログラムの実
    行において、前記仮想の配列型オブジェクトの所定の要
    素の参照を指示するプログラムが与えられたとき、前記
    オブジェクト参照テーブルの設定に基づきメモリ全体が
    前記仮想の配列型オブジェクトのデータ格納領域である
    と判別して前記指示された要素を参照する情報処理シス
    テム。
  3. 【請求項3】 前記アクセス制限手段は、前記メモリへ
    のアクセスを許可するプログラムを判定するための判定
    用テーブルを具備する請求項2に記載された情報処理シ
    ステム。
  4. 【請求項4】 コンピュータに組み込まれたオブジェク
    ト指向プログラムによる情報処理システムであって、 前記プログラムに設定されたオブジェクトのデータ格納
    領域を判別するためのオブジェクト参照テーブルと、 前記プログラムで指定されたオブジェクトのデータ格納
    領域を前記オブジェクト参照テーブルにより判別しつつ
    前記プログラムを実行するプログラム実行手段とを具備
    し、 前記オブジェクト参照テーブルには、前記コンピュータ
    のメモリの所定位置に設定されたアクセス許可領域に対
    応させて、その領域内のアドレス数に相当するサイズを
    有する仮想の配列型オブジェクトが記憶され、 前記プログラム実行手段は、前記仮想の配列型オブジェ
    クトの所定の要素の参照を指示するプログラムが与えら
    れたとき、前記オブジェクト参照テーブルの設定に基づ
    き前記アクセス許可領域が前記仮想の配列型オブジェク
    トのデータ格納領域であると判別して前記指示された要
    素を参照する情報処理システム。
  5. 【請求項5】 コンピュータに組み込まれたオブジェク
    ト指向プログラムによる情報処理システムであって、 前記プログラムに設定されたオブジェクトのデータ格納
    領域を判別するためのオブジェクト参照テーブルと、 前記プログラムで指定されたオブジェクトのデータ格納
    領域を前記オブジェクト参照テーブルにより判別しつつ
    前記プログラムを実行するプログラム実行手段と、 実行されるプログラムに応じて前記コンピュータのメモ
    リの所定位置に設定された複数のアクセス許可領域のい
    ずれかにアクセスするか否かを判別して、前記メモリへ
    のアクセスを制限するアクセス制限手段とを具備してお
    り、 前記オブジェクト参照テーブルには、前記各アクセス許
    可領域に対応させて、それぞれその領域内のアドレス数
    に相当するサイズを有する仮想の配列型オブジェクトが
    記憶され、 前記プログラム実行手段は、前記アクセス制限手段によ
    り所定のアクセス許可領域へのアクセスが許可されたプ
    ログラムの実行において、そのアクセス許可領域に対応
    する配列型オブジェクトの所定の要素の参照を指示する
    プログラムが与えられたとき、前記オブジェクト参照テ
    ーブルの設定に基づき前記アクセス許可領域が前記仮想
    の配列型オブジェクトのデータ格納領域であると判別し
    て前記指示された要素を参照する情報処理システム。
  6. 【請求項6】 前記オブジェクト参照テーブルは、前記
    コンピュータの起動時に、前記仮想の配列型オブジェク
    トを記憶した状態で初期設定される請求項1,2,4,
    5のいずれかに記載された情報処理システム。
  7. 【請求項7】 前記オブジェクト参照テーブルには、前
    記仮想の配列型オブジェクトとして、型の異なる複数の
    配列型オブジェクトが記憶される請求項1,2,4,5
    のいずれかに記載された情報処理システム。
JP2000056735A 2000-03-02 2000-03-02 情報処理システム Pending JP2001243079A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000056735A JP2001243079A (ja) 2000-03-02 2000-03-02 情報処理システム
US09/796,553 US6725345B2 (en) 2000-03-02 2001-03-02 Object-oriented program with a memory accessing function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000056735A JP2001243079A (ja) 2000-03-02 2000-03-02 情報処理システム

Publications (1)

Publication Number Publication Date
JP2001243079A true JP2001243079A (ja) 2001-09-07

Family

ID=18577628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000056735A Pending JP2001243079A (ja) 2000-03-02 2000-03-02 情報処理システム

Country Status (2)

Country Link
US (1) US6725345B2 (ja)
JP (1) JP2001243079A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006330835A (ja) * 2005-05-23 2006-12-07 Kyocera Corp デバイス制御装置、デバイス制御方法およびプログラム
JP2007188384A (ja) * 2006-01-16 2007-07-26 Nuclear Fuel Ind Ltd オブジェクト指向メモリ管理方法、解析プログラムおよび原子炉炉心特性解析プログラム
JP2009033258A (ja) * 2007-07-24 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> 通信装置、通信方法および通信プログラム
US7739659B2 (en) 2004-05-24 2010-06-15 Sony Corporation Information processing apparatus, executability determining method, and computer program for the same

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127559B2 (en) * 2001-07-10 2006-10-24 Micron Technology, Inc. Caching of dynamic arrays
US7062761B2 (en) 2001-07-10 2006-06-13 Micron Technology, Inc. Dynamic arrays and overlays with bounds policies
US7051333B1 (en) * 2001-07-24 2006-05-23 The Mathworks, Inc. System and method for extending a programming language to include multiple dissimilar object systems
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US9459991B2 (en) * 2009-12-31 2016-10-04 International Business Machines Corporation Heap dump object identification in a heap dump analysis tool
JP5429880B2 (ja) * 2010-08-10 2014-02-26 Necビッグローブ株式会社 アプリケーション配布システム、アプリケーション配布方法、端末及びプログラム
US9934166B2 (en) 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US20130111435A1 (en) * 2011-10-28 2013-05-02 Thomas W. Rudwick, III Reducing object size by class type encoding of data
US9569612B2 (en) * 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US10972469B2 (en) * 2018-04-03 2021-04-06 Honeywell International, Inc. Protecting critical data and application execution from brute force attacks

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016535A (en) * 1995-10-11 2000-01-18 Citrix Systems, Inc. Method for dynamically and efficiently caching objects by subdividing cache memory blocks into equally-sized sub-blocks
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6128623A (en) * 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739659B2 (en) 2004-05-24 2010-06-15 Sony Corporation Information processing apparatus, executability determining method, and computer program for the same
US8549511B2 (en) 2004-05-24 2013-10-01 Sony Corporation Information processing apparatus, executability determining method, and computer program for the same
JP2006330835A (ja) * 2005-05-23 2006-12-07 Kyocera Corp デバイス制御装置、デバイス制御方法およびプログラム
JP4647392B2 (ja) * 2005-05-23 2011-03-09 京セラ株式会社 デバイス制御装置、デバイス制御方法およびプログラム
US8117451B2 (en) 2005-05-23 2012-02-14 Kyocera Corporation Device controller, method for controlling a device, and program therefor
JP2007188384A (ja) * 2006-01-16 2007-07-26 Nuclear Fuel Ind Ltd オブジェクト指向メモリ管理方法、解析プログラムおよび原子炉炉心特性解析プログラム
JP2009033258A (ja) * 2007-07-24 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> 通信装置、通信方法および通信プログラム

Also Published As

Publication number Publication date
US6725345B2 (en) 2004-04-20
US20020123981A1 (en) 2002-09-05

Similar Documents

Publication Publication Date Title
CN106663024B (zh) 变量句柄
JP5009299B2 (ja) 分離されたエクステンションおよびデバイスドライバの構成
Freund et al. A type system for object initialization in the Java bytecode language
US5583988A (en) Method and apparatus for providing runtime checking features in a compiled programming development environment
US6799173B2 (en) Method and apparatus for sharing code containing references to non-shared objects
US7051343B2 (en) Module-by-module verification
US6738965B1 (en) Trace information in a virtual machine
CN107924326B (zh) 对经更新的类型的迁移方法进行覆盖
US7444648B2 (en) Fully lazy linking with module-by-module verification
Geoffray et al. I-JVM: a Java virtual machine for component isolation in OSGi
US9417931B2 (en) Unified metadata for external components
CN101297280B (zh) 隔离扩展和设备驱动程序的配置
JP2001243079A (ja) 情報処理システム
JP2009054169A (ja) 仮想計算機を制御する方法及びシステム
JP2000517085A (ja) 安全な装置アドレス指定のための装置および方法
CA2434280A1 (en) Method and apparatus to guarantee type and initialization safety in multihreaded programs
US6763397B1 (en) Fully lazy linking
US20220147376A1 (en) Selective substitution of legacy load module programs with classes for execution in a java virtual machine
EP1056005B1 (en) Dataflow algorithm for symbolic computation of lowest upper bound type
Coglio et al. Type safety in the JVM: Some problems in JDK 1.2. 2 and proposed solutions
Duncan Objective-C Pocket Reference
Buckley et al. Flexible bytecode for linking in. NET
Klimt et al. On the Challenge of Sound Code for Operating Systems
Bukovics . NET 2.0 Interoperability Recipes: A Problem-Solution Approach
Freund et al. A type system for object initialization in the java bytecode language (summary)

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061024

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070306