JPWO2019049542A1 - 情報処理装置、および情報処理方法 - Google Patents

情報処理装置、および情報処理方法 Download PDF

Info

Publication number
JPWO2019049542A1
JPWO2019049542A1 JP2019540815A JP2019540815A JPWO2019049542A1 JP WO2019049542 A1 JPWO2019049542 A1 JP WO2019049542A1 JP 2019540815 A JP2019540815 A JP 2019540815A JP 2019540815 A JP2019540815 A JP 2019540815A JP WO2019049542 A1 JPWO2019049542 A1 JP WO2019049542A1
Authority
JP
Japan
Prior art keywords
program
information processing
buffer
area
data
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
JP2019540815A
Other languages
English (en)
Other versions
JP7230811B2 (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of JPWO2019049542A1 publication Critical patent/JPWO2019049542A1/ja
Application granted granted Critical
Publication of JP7230811B2 publication Critical patent/JP7230811B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/54Interprogram communication
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

仮想機械を実行する処理部を備え、仮想機械は、スタックマシンによりプログラムを動作させ、記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、第1のプログラムから第1のプログラムと異なる第2のプログラムを呼び出すときに、記憶領域に、第2のプログラムが動作する第2の動作領域を確保する、情報処理装置が、提供される。【選択図】図6

Description

本開示は、情報処理装置、および情報処理方法に関する。
仮想機械(以下「VM」(Virtual Machine)と示す場合がある。)に関する技術が開発されている。複数のVMそれぞれにおける共有メモリ領域へのアクセスを制御する技術としては、例えば下記の特許文献1に記載の技術が挙げられる。
特開2002−358205号公報
例えば特許文献1に記載の技術では、共有メモリ領域からのデータの読み出しと、共有メモリ領域へのデータの書き込みとが、VMごとに制限される。よって、特許文献1に記載の技術を用いることによって、各VMで実行されて動作するアプリケーションプログラム間のファイアーウォールが確保されうる。
しかしながら、例えば特許文献1に記載の技術を用いたとしても、1つのVMで動作する複数のプログラム間でファイアーウォールを確保することは、できない。よって、例えば特許文献1に記載の技術を用いたとしても、1つのVMで動作する複数のプログラム間におけるセキュリティの向上は、望めない。
本開示では、仮想機械で複数のプログラムが動作するときにおいてセキュリティの向上を図ることが可能な、新規かつ改良された情報処理装置、および情報処理方法を提案する。
本開示によれば、仮想機械を実行する処理部を備え、上記仮想機械は、スタックマシンによりプログラムを動作させ、記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、上記第1のプログラムから上記第1のプログラムと異なる第2のプログラムを呼び出すときに、上記記憶領域に、上記第2のプログラムが動作する第2の動作領域を確保する、情報処理装置が、提供される。
また、本開示によれば、仮想機械を実行するステップを有し、上記仮想機械は、スタックマシンによりプログラムを動作させ、記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、上記第1のプログラムから上記第1のプログラムと異なる第2のプログラムを呼び出すときに、上記記憶領域に、上記第2のプログラムが動作する第2の動作領域を確保する、情報処理装置により実行される情報処理方法が、提供される。
本開示によれば、仮想機械で複数のプログラムが動作するときにおいてセキュリティの向上を図ることが、できる。
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握されうる他の効果が奏されてもよい。
本実施形態に係る情報処理装置の構成の一例を示すブロック図である。 本実施形態に係る情報処理装置のハードウェア構成の一例を示す説明図である。 VM上で動作するプログラムを概念的に示す説明図である。 VM上で1つのプログラムが動作する場合におけるVM上でのプログラムの動作の一例を示す説明図である。 VM上で1つのプログラムが動作する場合におけるVM上でのプログラムの動作の一例を示す説明図である。 VM上で複数のプログラムが動作する場合におけるVM上でのプログラムの動作の一例を示す説明図である。 VMによる複数のプログラム間のデータの授受の制御の一例を説明するための説明図である。 VM上で実行されているプログラムと連携したネイティブコードの実行の一例を説明するための説明図である。
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
また、以下では、下記に示す順序で説明を行う。
1.本実施形態に係る情報処理装置、および本実施形態に係る情報処理方法
[1]本実施形態に係る情報処理装置の構成
[2]本実施形態に係る情報処理装置の適用例
[3]本実施形態に係る情報処理方法に係る処理
[4]本実施形態に係る情報処理方法が用いられることにより奏される効果の一例
(本実施形態に係る情報処理装置、および本実施形態に係る情報処理方法)
以下、本実施形態に係る情報処理装置の一例を説明しつつ、本実施形態に係る情報処理方法について説明する。
また、以下では、本実施形態に係る情報処理装置が、IC(Integrated Circuit)カードである場合を主に例に挙げる。なお、本実施形態に係る情報処理装置は、ICカードに限られない。本実施形態に係る情報処理装置の他の適用例については、後述する。
[1]本実施形態に係る情報処理装置の構成
図1は、本実施形態に係る情報処理装置100の構成の一例を示すブロック図である。情報処理装置100は、例えば、通信部102と、制御部104とを備える。
[情報処理装置100のハードウェア構成例]
図2は、本実施形態に係る情報処理装置100のハードウェア構成の一例を示す説明図である。情報処理装置100は、例えば、アンテナ150と、ICチップ152とを備える。なお、情報処理装置100は、例えば図2に示すICチップ152の構成を、ICチップの形態で備えていなくてもよい。
図4に示す情報処理装置100は、アンテナ150により受信された搬送波に応じた受信電圧によって駆動する。なお、情報処理装置100は、例えば、情報処理装置100が備えているバッテリなどの内部電源から供給される電力、または、接続されている外部電源から供給される電力などによって、駆動することも可能である。
アンテナ150は、例えば、所定のインダクタンスをもつコイル(インダクタ)L1と、所定の静電容量をもつキャパシタC1とからなる共振回路で構成され、搬送波の受信に応じて電磁誘導により誘起電圧を生じさせる。そして、アンテナ150は、所定の共振周波数で誘起電圧を共振させた受信電圧を出力する。ここで、アンテナ150における共振周波数は、例えば、13.56[MHz]など搬送波の周波数に合わせて設定される。アンテナ150は、上記構成により、搬送波を受信し、また、ICチップ152が備える負荷変調回路164において行われる負荷変調によって応答信号の送信を行う。
ICチップ152は、例えば、キャリア検出回路154と、検波回路156と、レギュレータ158と、復調回路160と、プロセッサ162と、負荷変調回路164とを備える。なお、図2では示していないが、ICチップ152は、例えば、過電圧や過電流がプロセッサ162に印加されることを防止するための保護回路(図示せず)をさらに備えていてもよい。ここで、保護回路(図示せず)としては、例えば、ダイオードなどで構成されたクランプ回路が挙げられる。
また、ICチップ152は、例えば、ROM(Read Only Memory)166と、RAM(Random Access Memory)168と、不揮発性メモリ170とを備える。プロセッサ162と、ROM166、RAM168、および不揮発性メモリ170とは、例えば、データの伝送路としてのバス172によって接続される。
ROM166は、プロセッサ162が使用するプログラムや演算パラメータなどの制御用データを記憶する。
RAM168は、プロセッサ162により実行されるプログラム、演算結果、実行状態などを一時的に記憶する。また、プロセッサ162により実行されるプログラムがVMである場合、RAM168には、VMにより実行されるプログラム、演算結果、実行状態などを一時的に記憶する。
不揮発性メモリ170は、例えば、VMや各種アプリケーションプログラムなどの、様々なデータを記憶する。ここで、不揮発性メモリ170としては、例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory)や、フラッシュメモリなどが挙げられる。
また、不揮発性メモリ170は、例えば耐タンパ性を有する。不揮発性メモリ170のような耐タンパ性を有するセキュアな記録媒体に、VMなどの各種データが記憶されることによって、情報処理装置100では、データのセキュリティが確保される。
キャリア検出回路154は、例えば、アンテナ150から伝達される受信電圧に基づいて矩形の検出信号を生成し、当該検出信号をプロセッサ162へ伝達する。また、プロセッサ162は、伝達される上記検出信号を、例えば、データ処理のための処理クロックとして用いる。ここで、上記検出信号は、アンテナ150から伝達される受信電圧に基づくものであるので、リーダ/ライタなどの外部装置から送信される搬送波の周波数と同期することとなる。したがって、ICチップ152は、キャリア検出回路154を備えることによって、リーダ/ライタなどの外部装置との間の処理を、当該外部装置と同期して行うことができる。
検波回路156は、アンテナ150から出力される受信電圧を整流する。ここで、検波回路156は、例えばダイオードD1とキャパシタC2とで構成される。
レギュレータ158は、受信電圧を平滑、定電圧化し、プロセッサ162へ駆動電圧を出力する。ここで、レギュレータ158は、受信電圧の直流成分を駆動電圧として用いる。なお、上述したように、例えば、情報処理装置100がバッテリなどの内部電源を備える場合、または、情報処理装置100に外部電源が接続されている場合、情報処理装置100は、当該内部電源から供給される電力、または、当該外部電源から供給される電力によって、駆動することも可能である。
復調回路160は、受信電圧に基づいて搬送波に含まれる搬送波信号を復調し、搬送波信号に対応するデータ(例えば、ハイレベルとローレベルとの二値化されたデータ信号)を出力する。ここで、復調回路160は、受信電圧の交流成分をデータとして出力する。
プロセッサ162は、例えばレギュレータ158から出力される駆動電圧を電源として駆動し、復調回路160において復調されたデータの処理を行う。プロセッサ162は、例えば、VMを実行し、実行されたVMによって上記データの処理を行う。また、プロセッサ162は、例えば、ネイティブコードを実行することにより上記データの処理を行ってもよい。
また、プロセッサ162は、リーダ/ライタなどの外部装置への応答に係る負荷変調を制御する制御信号を処理結果に応じて選択的に生成する。そして、プロセッサ162は、制御信号を負荷変調回路164へと選択的に出力する。
なお、プロセッサ162における処理は、復調回路160において復調されたデータの処理に限られない。例えば、プロセッサ162は、任意のデータの処理を、実行されたVMによって、または、ネイティブコード(後述する)を実行することによって、行うことが可能である。
ここで、プロセッサ162は、例えば、MPU(Micro Processing Unit)などの演算回路で構成される、1または2以上のプロセッサや、各種処理回路などで構成される。
負荷変調回路164は、例えば、負荷ZとスイッチSW1とを備え、プロセッサ162から伝達される制御信号に応じて負荷Zを選択的に接続する(有効化する)ことによって負荷変調を行う。ここで、負荷Zは、例えば、所定の抵抗値を有する抵抗で構成される。また、スイッチSW1は、例えば、pチャネル型のMOSFET(Metal Oxide Semiconductor Field effect transistor)や、nチャネル型のMOSFETで構成される。
ICチップ152は、例えば上記のような構成によって、アンテナ150が受信した搬送波信号を処理し、負荷変調によってアンテナ150に応答信号を送信させることができる。また、ICチップ152は、例えば上記のような構成によって、任意のデータの処理を、実行されたVMによって、または、ネイティブコードを実行することによって、行うことができる。
なお、本実施形態に係る情報処理装置100の構成は、図2に示す構成に限られない。例えば、情報処理装置100は、後述する情報処理装置100の適用例に応じた構成をとることが可能である。
再度図1を参照して、情報処理装置100の構成の一例について説明する。通信部102は、情報処理装置100が備える通信手段であり、外部装置と通信を行う。通信部102は、例えば制御部104により通信が制御される。
ここで、通信部102としては、例えば、図2に示すアンテナ150およびICチップ152が挙げられる。通信部102がアンテナ150およびICチップ152で構成される場合、情報処理装置100は、例えば13.56[MHz]など所定の周波数の搬送波によって、ISO/IEC18092にて規定されているNFC(Near Field Communication)による非接触通信を、リーダ/ライタなどの外部装置と行う。
なお、通信部102は、アンテナ150およびICチップ152に限られない。例えば、通信部102は、IEEE802.15.1ポートおよび送受信回路や、IEEE802.11ポートおよび送受信回路など、任意の通信方式に対応する通信デバイスで構成されていてもよい。また、通信部102は、複数の通信方式によって、1または2以上の外部装置などと通信を行うことが可能な構成であってもよい。
制御部104は、情報処理装置100全体を制御する役目を果たす。また、制御部104は、例えば処理部110を有し、後述する本実施形態に係る情報処理方法に係る処理を主導的に行う役目を果たす。
なお、本実施形態に係る情報処理装置の構成は、図1に示す構成に限られない。
例えば、本実施形態に係る情報処理装置は、図1に示す処理部110を、制御部104とは個別に備えること(例えば、別の処理回路で実現すること)ができる。
また、本実施形態に係る情報処理装置の構成は、図1に示す構成に限られず、後述する本実施形態に係る情報処理方法に係る処理の切り分け方に応じた、任意の構成をとることが可能である。
また、例えば、本実施形態に係る情報処理装置がスタンドアロンで動作する場合、または、通信部102と同様の機能、構成を有する外部の通信デバイスを介して外部装置と通信を行う場合には、本実施形態に係る情報処理装置は、通信部102を備えていなくてもよい。
[2]本実施形態に係る情報処理装置の適用例
上記では、本実施形態に係る情報処理装置がICカードである場合を例に挙げたが、本実施形態に係る情報処理装置の適用例は、上記に示す例に限られない。本実施形態に係る情報処理装置は、例えば、“PC(Personal Computer)やサーバなどのコンピュータ”や、“タブレット型の装置”、“ゲーム機”、“任意のIoT(Internet of Things)機器”など、VMを実行してVM上でプログラムを動作させることが可能な、様々な機器に適用することができる。また、本実施形態に係る情報処理装置は、例えば、上記のような機器に組み込むことが可能な、“SIM(Subscriber Identity Module)”や、“eUICC”、“eSE”、“TEE(Trusted Execution Environment)に対応するIC”などのICに適用することもできる。
[3]本実施形態に係る情報処理方法に係る処理
次に、情報処理装置100において行われる本実施形態に係る情報処理方法に係る処理について、説明する。本実施形態に係る情報処理方法に係る処理は、例えば処理部110により行われる。以下では、便宜上、情報処理装置100が本実施形態に係る情報処理方法に係る処理を行うものとして説明する。
情報処理装置100は、VMを実行する。情報処理装置100では、実行されたVM上で1または2以上のプログラムが実行され、実行されたプログラムがVM上でそれぞれ動作する。VMは、スタックマシンによりプログラムを動作させる。
ここで、VMは、例えば、演算処理ブロックを有し、当該演算処理ブロックが、記憶媒体上に確保されたスタックとプログラム実行領域にアクセスして、順次、1つのプログラムを実行していく。本明細書では、VMが有する演算処理ブロックがアクセスするスタックとプログラム実行領域を「スタックマシン」と定義する。本実施形態に係るスタックマシンは、VM上で実行されるプログラムごとに記憶媒体上に確保される。VMは、例えば、物理的なプロセッサ、RAM上で動作し、仮想的なプログラム実行環境である複数のスタックマシンを提供する。また、VMは、記憶媒体上に確保された複数のスタックマシンに対して、VMが有する演算処理ブロックがアクセスするスタックマシンを切り替えることによって、実行するプログラムを切り替える。
なお、VM上で動作するプログラムは、スタックマシンにより動作することに限られず、後述する動作領域でプログラムを動作させることが可能な任意の計算モデルに従って動作してもよい。
図3は、VM上で動作するプログラムを概念的に示す説明図である。図3では、プログラム#1およびプログラム#2という2つのプログラムが、VM上で動作する例を示している。
図3に示すように、VM上では、プログラム#1およびプログラム#2がそれぞれ動作し、各プログラムによりデータが処理される。
なお、VM上で動作するプログラムの数は、2つに限られない。例えば、VM上では、1つのプログラム、または、3つ以上のプログラムが動作しうる。以下では、プログラム#1という1つのプログラムがVM上で動作する場合、およびプログラム#1およびプログラム#2という2つのプログラムがVM上で動作する場合などを例に挙げて、情報処理装置100により実行されるVMについて、説明する。
VMは、記憶媒体に割り当てられた記憶領域に、プログラムが動作する動作領域を、実行するプログラムごとに確保する。記憶媒体に割り当てられた記憶領域は、例えば、VMのワークメモリ領域に該当する。
情報処理装置100が図2に示すハードウェア構成を有する場合、動作領域が確保される記憶媒体としては、例えばRAM168のような揮発性メモリが挙げられる。なお、動作領域が確保される記憶媒体が、RAM168に限られないことは、言うまでもない。
VMは、例えば、実行するプログラムごとにスタックマシンを生成し、生成したスタックマシンを記憶する領域を、記憶媒体に割り当てられた記憶領域上で確保する。スタックマシンが記憶される領域が、動作領域に該当する。
動作領域が確保されると、VMは、確保された動作領域で、当該動作領域に対応するプログラムを動作させる。
以下、VMが生成したスタックマシンによりプログラムが動作する場合を例に挙げて、VM上でのプログラムの動作の一例を説明する。なお、上述したように、VM上で動作するプログラムは、スタックマシンにより動作することに限られず、記憶媒体に確保される動作領域でプログラムを動作させることが可能な任意の計算モデルに従って動作してもよい。
(1)VM上でのプログラムの動作の第1の例:VM上で1つのプログラムが動作する場合におけるプログラムの動作の一例
まず、VM上で1つのプログラムが動作する場合におけるVM上でのプログラムの動作の一例を説明する。
図4、図5は、VM上で1つのプログラムが動作する場合におけるVM上でのプログラムの動作の一例を示す説明図である。図4、図5に示す符号Rは、記憶領域を示している(以下、他の図でも同様とする。)。
図4に示すように、プログラム#1が実行される場合、VMは、プログラム#1に対応するスタックマシン#1を生成し、スタックマシン#1を記憶する領域を記憶領域Rに確保することによって、プログラム#1に対応する動作領域を確保する。VMによりプログラム#1に対応する動作領域が確保されることによって、プログラム#1の動作が開始される。
ここで、動作が開始されたプログラム#1の動作に要する動作領域の大きさは、スタックマシン#1の動作状態、すなわち、プログラム#1の動作状態に応じて変わりうる。
よって、VMは、プログラムの動作に応じて動作領域の大きさを動的に変える。ここで、動作領域の大きさを動的に変えるとは、例えば図5のAに示すように、記憶領域に確保されている動作領域の大きさを大きくすることと、例えば図5のBに示すように、動作領域の一部を解放して動作領域の大きさを小さくすることとを含む。なお、動作領域の大きさを動的に変える例が、図5のAに示す例および図5のBに示す例に限られないことは、言うまでもない。
スタックマシンによりプログラムが動作する場合、VMは、図5のAに示すように、記憶領域内で、プログラム#1の動作に必要な分、プログラム#1に対応する動作領域を確保する。なお、VMにより確保される動作領域は、記憶領域における物理アドレスが連続する領域に限られない。例えば、VMにより確保される動作領域は、物理アドレスが不連続であり、論理アドレスが連続する領域であってもよい。また、VMにより確保される動作領域は、例えば、物理アドレスおよび論理アドレスが不連続な領域であってもよい。ここで、論理アドレスは、「仮想アドレス」とも呼ばれる。
また、スタックマシンによりプログラムが動作する場合、VMは、図5のBに示すように、プログラム#1の動作に不要となった分、プログラム#1に対応する動作領域を解放する。
例えば図5に示すように、プログラムの動作に応じて動作領域の大きさが動的に変えられることによって、記憶領域内で確保される一のプログラムに対応する動作領域は、当該プログラムの動作に要する最小限の大きさとなる。
よって、VMがプログラムの動作に応じて動作領域の大きさを動的に変えることによって、記憶媒体に割り当てられる記憶領域をより効率的に使用することができる。また、記憶領域をより効率的に使用することが可能となることによって、省メモリ化が図られる。
なお、VMによる動作領域の制御は、プログラムの動作に応じて動作領域の大きさを動的に変えることに限られない。
例えば、VMは、プログラムの実行を終了させた後に、対応する動作領域を解放する。
プログラムの実行を終了させた後に動作領域が解放されることによって、記憶領域において動作領域が確保されていない領域、すなわち、記憶領域において動作領域を確保することが可能な領域(いわゆる空き領域)を、より大きくすることが可能となる。
よって、VMがプログラムの実行を終了させた後に対応する動作領域を解放することによって、記憶媒体に割り当てられる記憶領域をより効率的に使用することができる。また、上述したように、記憶領域をより効率的に使用することが可能となることによって、省メモリ化が図られる。
(2)VM上でのプログラムの動作の第2の例:VM上で複数のプログラムが動作する場合におけるプログラムの動作の一例
次に、VM上で複数のプログラムが動作する場合におけるVM上でのプログラムの動作の一例を説明する。VM上で複数のプログラムが動作する場合、VMは、複数のプログラムそれぞれを、上記(1)に示す第1の例と同様に動作させる。
より具体的には、VMは、第1のプログラムを実行するときに、記憶領域に、第1のプログラムが動作する第1の動作領域を確保する。また、VMは、第1のプログラムから第1のプログラムと異なる第2のプログラムを呼び出すときに、記憶領域に、第2のプログラムが動作する第2の動作領域を確保する。このとき、VMは、例えば、呼び出し元の第1のプログラムの実行を中断する。そして、VMは、複数のプログラムそれぞれを、上記(1)に示す第1の例と同様に動作させる。
また、VMは、例えば、呼び出された第2のプログラムの実行を終了させ、呼び出し元の第1のプログラムを実行するとき、第2の動作領域を解放する。
図6は、VM上で複数のプログラムが動作する場合におけるVM上でのプログラムの動作の一例を示す説明図である。図6は、プログラム#1およびプログラム#2という2つのプログラムがVM上で動作する場合を示している。
上述したように、VMは、実行するプログラムごとに動作領域を確保し、確保された動作領域で対応するプログラムを動作させる。一例を挙げると、VMは、プログラム#1(第1のプログラムの一例)を実行するときに、プログラム#1に対応する動作領域(図6において“スタックマシン#1”と示される動作領域)を確保し、確保された当該動作領域でプログラム#1を動作させる。また、VMは、プログラム#1からプログラム#2(第2のプログラムの一例)を呼び出すときに、プログラム#2に対応する動作領域(図6において“スタックマシン#2”と示される動作領域)を確保し、確保された当該動作領域でプログラム#1を動作させる。そのため、図6に示すように、記憶領域において、プログラム#1に対応する動作領域(図6において“スタックマシン#1”と示される動作領域)と、プログラム#2に対応する動作領域(図6において“スタックマシン#2”と示される動作領域)とは、異なる領域となる。ここで、一の動作領域と他の動作領域とが異なる領域であるとは、例えば、一の動作領域と他の動作領域との物理アドレス、および一の動作領域と他の動作領域との論理アドレスが、異なることをいう。
図6に示すように一の動作領域と他の動作領域とが異なる領域となることによって、VM上で動作する複数のプログラム間でファイアーウォールを確保することが可能となる。
したがって、情報処理装置100は、VMで複数のプログラムが動作するときにおいてセキュリティの向上を図ることが、できる。
次に、VM上で複数のプログラムが動作する場合におけるプログラム間の連携について説明する。
情報処理装置100におけるプログラム間の連携は、VMが、実行されている複数のプログラム間のデータの授受を制御することによって、実現される。
後述する例に示すように、VMは、実行されている複数のプログラムそれぞれに対応する動作領域の論理アドレスと、動作領域の物理アドレスとを変換することによって、データの授受を制御する。
VMは、例えば、記憶媒体における論理アドレスと物理アドレスとを変換する変換情報を参照することによって、実行されている複数のプログラムそれぞれに対応する動作領域の論理アドレスと、動作領域の物理アドレスとを変換する。本実施形態に係る変換情報としては、例えば、記憶媒体における論理アドレスと物理アドレスとが対応付けられているテーブル(またはデータベース)が挙げられる。変換情報は、例えば不揮発性メモリ170などの任意の記憶媒体に記憶される。
VMは、記憶領域内に動作領域を確保するときなどの動作領域の確保に係る任意のタイミング、記憶領域内に確保されている動作領域を解放するタイミング、複数のプログラム間でのデータの授受が終了したタイミング、または、動作領域の大きさを動的に変えるときなどの動作領域の変更に係る任意のタイミングで、変換情報を更新する。
なお、本実施形態に係る“動作領域の論理アドレスと動作領域の物理アドレスとを変換する方法”は、変換情報を用いる方法に限られない。例えば、VMは、“記憶媒体における論理アドレスと物理アドレスとを変換することが可能な、任意のアルゴリズムの処理”によって、動作領域の論理アドレスと動作領域の物理アドレスとを変換してもよい。
ここで、記憶領域に確保されたプログラムそれぞれに対応する動作領域には、バッファ領域(以下、単に「バッファ」と示す。)が設けられる。動作領域に設けられたバッファは、当該動作領域に対応するプログラムからしか見えない領域である。しかしながら、動作領域に設けられたバッファの一部または全部は、例えば、他のバッファとの間でリンクを張ることによって、動作領域に対応していない外部のプログラムに公開することが可能である。異なるバッファ間にリンクを張ることは、上記変換情報などにより、実現される。VMは、動作領域に設けられたバッファの一部または全部を、外部のプログラムに公開することが可能な仕組みにより、情報処理装置100におけるプログラム間の連携を実現する。
以下では、一のプログラムからみたとき、一のプログラムに対応する動作領域のバッファを「内部バッファ」と示す。また、以下では、一のプログラムからみたとき、他のプログラムに対応する動作領域のバッファであって、公開されているバッファを「外部バッファ」と示す。
第1のプログラムと第2のプログラムとの間のデータの授受を例に挙げると、VMは、第1のプログラムと第2のプログラムとの間のデータの授受を、第1の動作領域に設けられた第1のバッファおよび第2の動作領域に設けられた第2のバッファを介して行う。
例えば、第1のプログラムのデータを第2のプログラムで共有する場合、VMは、第2のバッファから第1のバッファを参照する。このとき、VMは、第2のバッファから第1のバッファの一部を参照することにより、第1のプログラムのデータを第2のプログラムで共有してもよい。異なるバッファ間の参照は、例えば、上記変換情報などにより、異なるバッファ間にリンクを張ることによって、実現される。また、異なるバッファ間に張られたリンクは、例えば、複数のプログラム間でのデータの授受が終了したタイミングなど、任意のタイミングで切断される。
異なる表現で表すと、第2のバッファに、第1のバッファの外部バッファ(第1のバッファにリンクが張られているバッファ)が含まれる場合、VMは、当該外部バッファから第1のバッファを参照することにより、第1のプログラムのデータを第2のプログラムで共有する。
なお、上記では、第1のプログラムのデータを第2のプログラムで共有する例を示したが、同様の仕組みにより、VMは、第2のプログラムのデータを第1のプログラムで共有することが可能である。
以下、図6に示す場合を例に挙げて、VM上で複数のプログラムが動作する場合におけるプログラム間の連携について説明する。以下では、複数のプログラム間でデータの授受が行われることを「プログラム間の通信」と示す場合がある。
例えば、プログラム#1が動作しているときに、プログラム#1における処理においてプログラム#2に対する通信(プログラム間の通信の一例)が発生した場合、VMは、プログラム#2に対応する動作領域を確保する。プログラム#2に対応する動作領域が確保されると、プログラム#2の動作が開始され、プログラム#1およびプログラム#2におけるプログラム間の通信が行われる。
プログラム#1およびプログラム#2におけるプログラム間の通信が完了すると、VMは、プログラム#2に対応する動作領域を解放すると共に、プログラム#1の動作を継続させる。
上述したように、プログラム#1に対応する動作領域とプログラム#2に対応する動作領域とは異なる領域である。よって、プログラム#1およびプログラム#2におけるプログラム間の通信では、ファイアーウォールが確保される。
以下、VMによる複数のプログラム間のデータの授受の制御について、上述したプログラム#1およびプログラム#2におけるプログラム間の通信を例に挙げて、説明する。
図7は、VMによる複数のプログラム間のデータの授受の制御の一例を説明するための説明図である。
例えば、プログラム#1が動作しているときに、プログラム#1における処理においてプログラム#2に対する通信が発生した場合、VMは、プログラム#1のためのバッファを、プログラム#1に対応する動作領域内に確保する。プログラム#1に対応する動作領域内にバッファを確保するとき、VMは、プログラム#1に対応する動作領域の大きさを変えてもよい。
また、上述したように、プログラム#1における処理においてプログラム#2に対する通信が発生した場合、VMは、プログラム#2に対応する動作領域を確保する。また、VMは、プログラム#2のためのバッファを、プログラム#2に対応する動作領域内に確保する。
VM上で動作するプログラム#1からみて、プログラム#1のためのバッファは、データの読み出しとデータの書き込みとの双方が可能な領域である。また、VM上で動作するプログラム#2からみて、プログラム#1のためのバッファは、データの読み出しとデータの書き込みとの双方を行うことができない領域である。なお、上述したように、プログラム#1のためのバッファには、プログラム#2の外部バッファ(プログラム#2に公開されているバッファ)が含まれていてもよい。
プログラム#1によるプログラム#1のためのバッファからのデータの読み出しと、プログラム#1によるプログラム#1のためのバッファへのデータの書き込みとは、例えば、“VMが、プログラム#1に対応する動作領域の論理アドレスと、プログラム#1に対応する動作領域の物理アドレスとを変換すること”によって、行われる。
また、VM上で動作するプログラム#2からみて、プログラム#2のためのバッファは、データの読み出しとデータの書き込みとの双方が可能な領域である。また、VM上で動作するプログラム#1からみて、プログラム#2のためのバッファは、データの読み出しとデータの書き込みとの双方を行うことができない領域である。なお、上述したように、プログラム#2のためのバッファには、プログラム#1の外部バッファ(プログラム#1に公開されているバッファ)が含まれていてもよい。
プログラム#2によるプログラム#2のためのバッファからのデータの読み出しと、プログラム#2によるプログラム#2のためのバッファへのデータの書き込みとは、例えば、“VMが、プログラム#2に対応する動作領域の論理アドレスと、プログラム#2に対応する動作領域の物理アドレスとを変換すること”によって、行われる。
プログラム#1における処理においてプログラム#2に対する通信が発生した場合、プログラム#1は、プログラム#1のためのバッファの論理アドレスを指定する。プログラム#1のためのバッファの論理アドレスが指定されると、VMは、プログラム#1に対応する動作領域の論理アドレスと、プログラム#1に対応する動作領域の物理アドレスとを変換する。プログラム#1は、VMを介して、指定した論理アドレスに対応する記憶媒体の物理アドレスにアクセスし、プログラム#1のためのバッファに、プログラム#2へ渡すデータを書き込む。
VMは、プログラム#1のためのバッファに記憶されているデータを、プログラム#2のためのバッファに書き込む。また、VMは、プログラム#2のためのバッファにデータを書き込んだ後に、プログラム#1のためのバッファから当該データを削除してもよい。
ここで、VMは、例えば変換情報を参照することなどによって、プログラム#1のためのバッファの物理アドレスと、プログラム#2のためのバッファの物理アドレスとを特定することが可能である。よって、VMは、図7のTに示すように、“プログラム#1のためのバッファとプログラム#2のためのバッファとの間におけるデータのコピー”、または、“プログラム#1のためのバッファとプログラム#2のためのバッファとの間におけるデータの移動”を行うことができる。
よって、プログラム#1とプログラム#2との間では、VMを介したデータの授受が実現される。また、VMを介したデータの授受によって、プログラム#1とプログラム#2との間におけるデータ共有が実現される。
上述したように、プログラム#1とプログラム#2との間におけるデータの授受は、VMによる論理アドレス−物理アドレス変換によって実現される。よって、プログラム#1とプログラム#2との間におけるデータの授受(VM上で動作する複数のプログラム間におけるデータの授受の一例)は、セキュアである。
以下、プログラム#1とプログラム#2との間におけるデータの授受の一例を説明する。
まず、プログラム#1からプログラム#2へのデータの授受の一例を説明する。
プログラム#1は、プログラム#1のためのバッファの論理アドレスを指定する。プログラム#1のためのバッファの論理アドレスが指定されると、VMは、プログラム#1に対応する動作領域の論理アドレスと、プログラム#1に対応する動作領域の物理アドレスとを変換する。よって、プログラム#1は、VMを介して、指定した論理アドレスに対応する記憶媒体の物理アドレスにアクセスし、プログラム#1のためのバッファにデータの書き込みを行うことができる。
VMは、図7のTに示すように、プログラム#1によってプログラム#1のためのバッファに書き込まれたデータを、プログラム#2のためのバッファにコピーし、プログラム#1のためのバッファから当該データを削除する。
プログラム#2は、プログラム#2のためのバッファの論理アドレスを指定する。プログラム#2のためのバッファの論理アドレスが指定されると、VMは、プログラム#2に対応する動作領域の論理アドレスと、プログラム#2に対応する動作領域の物理アドレスとを変換する。よって、プログラム#2は、VMを介して、指定した論理アドレスに対応する記憶媒体の物理アドレスにアクセスし、プログラム#2のためのバッファから、データを読み出すことができる。
例えば上記のように、VMを介することによって、プログラム#1からプログラム#2へのデータの授受が実現される。ここで、プログラム#1からプログラム#2へのデータの授受は、例えば、プログラム#1からプログラム#2へのデータの送信、およびプログラム#2による送信された当該データの受信と、捉えることが可能である。
また、プログラム#2は、プログラム#1から受け取ったデータを用いて処理を行うことが可能である。よって、情報処理装置100では、プログラム#1とプログラム#2との間における連携(VM上で動作する複数のプログラムの連携の一例)が、実現される。
次に、プログラム#2からプログラム#1へのデータの授受の一例として、プログラム#2からプログラム#1への“プログラム#2における処理の結果を示すデータ”の授受を説明する。
プログラム#2は、プログラム#2のためのバッファの論理アドレスを指定する。プログラム#2のためのバッファの論理アドレスが指定されると、VMは、プログラム#2に対応する動作領域の論理アドレスと、プログラム#2に対応する動作領域の物理アドレスとを変換する。よって、プログラム#2は、VMを介して、指定した論理アドレスに対応する記憶媒体の物理アドレスにアクセスし、プログラム#2のためのバッファに、プログラム#2における処理の結果を示すデータの書き込みを、行うことができる。
VMは、図7のTに示すように、プログラム#2によってプログラム#2のためのバッファに書き込まれたデータを、プログラム#1のためのバッファにコピーし、プログラム#2のためのバッファから当該データを削除する。
プログラム#1は、プログラム#1のためのバッファの論理アドレスを指定する。プログラム#1のためのバッファの論理アドレスが指定されると、VMは、プログラム#1に対応する動作領域の論理アドレスと、プログラム#1に対応する動作領域の物理アドレスとを変換する。よって、プログラム#1は、VMを介して、指定した論理アドレスに対応する記憶媒体の物理アドレスにアクセスし、プログラム#1のためのバッファから、プログラム#2における処理の結果を示すデータを読み出すことができる。
例えば上記のように、VMを介することによって、プログラム#2からプログラム#1へのデータの授受が実現される。ここで、プログラム#2からプログラム#1へのデータの授受は、例えば、プログラム#2からプログラム#1へのデータの送信、およびプログラム#1による送信された当該データの受信と、捉えることが可能である。
また、プログラム#1は、プログラム#2から受け取ったデータを用いて処理を行うことが可能である。よって、情報処理装置100では、プログラム#1とプログラム#2との間における連携(VM上で動作する複数のプログラムの連携の一例)が、実現される。
プログラム#1とプログラム#2との間では、例えば上記のようにデータの授受が実現される。なお、プログラム#1とプログラム#2との間におけるデータの授受の例が、上記に示す例に限られないことは、言うまでもない。
また、情報処理装置100では、例えば“上述した例のような2つのプログラム間におけるデータの授受を、相異なる2つのプログラム間でそれぞれ行うこと”によって、VM上で動作する3つ以上のプログラム間における連携した処理を実現することが、可能である。
(3)VM上でのプログラムの動作の第3の例:VM上で動作しているプログラムと連携したネイティブコードの実行
なお、VM上でのプログラムの動作の例は、上記第1の例、および上記第2の例に限られない。例えば、情報処理装置100では、VM上で実行されているプログラムからネイティブコードを呼び出すことにより、VM上で実行されているプログラムと連携したネイティブコードの実行を実現することも可能である。
本実施形態に係るネイティブコードとは、プロセッサ162などの情報処理装置100が備える任意のプロセッサ上で実行可能なコードである。ネイティブコードは、情報処理装置100が備えるプロセッサで実行されるので、ネイティブコードは、当該プロセッサが有する処理速度で動作する。また、VMの一部または全部は、ネイティブコードで実装されていてもよい。以下では、ネイティブコードがプロセッサ162により実行される場合を例に挙げる。
VM上で実行されているプログラムと連携したネイティブコードの実行は、VMが、プログラムとネイティブコードとの間のデータの授受を制御することによって、実現される。
VM上で実行されているプログラムと連携したネイティブコードの実行によって、情報処理装置100では、例えば下記のようなデータ連携が実現される。なお、VM上で実行されているプログラムとプロセッサ162により実行されるネイティブコードとのデータ連携の例が、下記に示す例に限られないことは、言うまでもない。
・VM上で実行されているプログラムからネイティブコードへとデータが渡され、ネイティブコードの実行により、VM上で実行されているプログラムから渡されたデータを用いた処理が行われる。実行されているネイティブコードからVM上で実行されているプログラムへと、ネイティブコードにおける処理の結果を示すデータが渡され、VM上で実行されているプログラムは、当該ネイティブコードにおける処理の結果を示すデータを用いた処理を行う。
例えば上記のように、VM上で実行されているプログラムとプロセッサ162により実行されるネイティブコードとのデータ連携が行われることによって、情報処理装置100では、VM上で実行されるプログラムの処理の一部をネイティブコードで実装することが、実現される。
より具体的には、VMは、プログラムとネイティブコードとの連携のための連携領域を、記憶媒体の記憶領域に確保する。VMは、上述した動作領域と同様に、連携領域を確保する。
また、VMは、プログラムとネイティブコードとの間のデータの授受を、上述した第1のプログラムと第2のプログラムとの間のデータの授受と同様に、連携領域を介して行う。上記のような連携領域を介したデータ連携により、実行されているプログラムと連携したネイティブコードの実行が実現される。
以下、VM上で実行されているプログラムと連携したネイティブコードの実行の一例を、“図4に示すプログラム#1とプロセッサ162により実行されるネイティブコードとのデータ連携”を例に挙げて説明する。
例えば、プログラム#1が動作しているときに、プログラム#1における処理においてネイティブコードが呼び出される場合、VMは、プログラム#1に対応するネイティブコードを特定する。VMは、例えば“プログラムと、記録媒体におけるネイティブコードが記憶されているアドレスとが対応づけられている参照テーブル(または、参照データベース)”を参照することによって、プログラム#1に対応するネイティブコードを特定する。ここで、上記参照テーブルに記憶される、記録媒体におけるネイティブコードが記憶されているアドレスは、物理アドレスであってもよいし、論理アドレスであってもよい。
図8は、VM上で実行されているプログラムと連携したネイティブコードの実行の一例を説明するための説明図であり、参照テーブルの一例を示している。図8に示す参照テーブルでは、VM上で実行されるプログラムを示すプログラム番号と、ネイティブコードの先頭アドレスとが対応付けられている。なお、参照テーブルの例が、図8に示す例に限られないことは、言うまでもない。
プログラム#1に対応するネイティブコードが特定されると、プログラム#1に対応するネイティブコードは、プロセッサ162により実行される。プロセッサ162は、例えば、VMから伝達されるネイティブコードの先頭アドレスにアクセスすることによって、プログラム#1に対応するネイティブコードを実行する。
また、プログラム#1に対応するネイティブコードが特定されると、VMは、例えば、プログラム#1の実行を一時的に停止させる。なお、VMは、プログラム#1の実行を停止させないことも可能である。
また、VMは、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域を確保する。VMは、例えば、プログラム#1に対応するネイティブコード用のスタックマシンを生成し、上記連携領域にネイティブコード用のスタックマシンを記憶させる。
VMが、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域を確保することによって、プログラム#1に対応する動作領域と、当該連携領域とは、異なる領域となる。ここで、動作領域と連携領域とが異なる領域であるとは、例えば、動作領域と連携領域との物理アドレス、および動作領域と連携領域との論理アドレスが、異なることをいう。
よって、動作領域と連携領域とが異なる領域となることによって、VM上で動作するプログラムと、プロセッサ162により実行されるネイティブコードとの間でファイアーウォールを確保することが可能となる。したがって、情報処理装置100は、VM上で実行されているプログラムとプロセッサにより実行されるネイティブコードとのデータ連携において、セキュリティの向上を図ることができる。
VMは、プログラム#1に対応する動作領域から、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域へのデータの授受を制御する。プログラム#1に対応する動作領域と、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域との間のデータの授受は、上記(2)に示す第2の例と同様である。
VMは、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域に記憶されているデータを、プロセッサ162がアクセスすることが可能な記憶媒体の記憶領域にコピーする。連携領域と、プロセッサ162がアクセスすることが可能な記憶媒体の記憶領域との間のデータの授受は、例えば上記(2)に示す第2の例と同様に、VMによる論理アドレス−物理アドレス変換によって実現される。プロセッサ162がアクセスすることが可能な記憶媒体は、動作領域および連携領域が確保される記憶媒体と同一の記憶媒体であってもよいし、異なる記憶媒体であってもよい。また、VMは、例えば、コピーしたデータを、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域から削除する。
プロセッサ162により実行されたプログラム#1に対応するネイティブコードは、上記プロセッサ162がアクセスすることが可能な記憶媒体の記憶領域から、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域からコピーされたデータを読み出す。そして、プロセッサ162により実行されたプログラム#1に対応するネイティブコードは、読み出した上記コピーされたデータを用いて、処理を行う。
上記のように、情報処理装置100では、プロセッサ162により実行されたプログラム#1に対応するネイティブコードからプログラム#1に対応する動作領域へと直接的にアクセスされない。よって、情報処理装置100では、プログラム#1とプログラム#1に対応するネイティブコードとの間で、セキュアなデータの授受が実現される。
上記コピーされたデータを用いた処理が完了すると、プロセッサ162により実行されたプログラム#1に対応するネイティブコードは、処理の結果を示すデータを、上記プロセッサ162がアクセスすることが可能な記憶媒体の記憶領域に書き込む。
VMは、プロセッサ162がアクセスすることが可能な記憶媒体の記憶領域に記憶されているデータを、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域にコピーする。
また、VMは、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域から、プログラム#1に対応する動作領域へのデータの授受を制御する。プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域とプログラム#1に対応する動作領域との間のデータの授受は、上記(2)に示す第2の例と同様である。
プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域から、プログラム#1に対応する動作領域へのデータの授受が完了すると、VMは、プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域を、解放する。
プログラム#1とプログラム#1に対応するネイティブコードとの連携のための連携領域から、プログラム#1に対応する動作領域へのデータの授受が完了すると、VMは、一時的に停止させていたプログラム#1の実行を、開始させる。
プログラム#1は、プログラム#1のためのバッファの論理アドレスを指定して、プログラム#1のためのバッファから、ネイティブコードにおける処理の結果を示すデータを読み出す。そして、プログラム#1は、ネイティブコードにおける処理の結果を示すデータを用いて処理を行う。
例えば上記のように、VMを介することによって、VM上で実行されているプログラム#1とプロセッサ162により実行されるネイティブコードとのデータ連携が、実現される。なお、VM上で実行されているプログラム#1とプロセッサ162により実行されるネイティブコードとのデータ連携の例が、上記に示す例に限られないことは、言うまでもない。
(4)VM上でのプログラムの動作の第4の例
情報処理装置100において実行されるVM上で動作するプログラムは、例えば、上記(1)に示す第1の例と上記(3)に示す第3の例とを組み合わせた動作、または、上記(2)に示す第2の例と上記(3)に示す第3の例とを組み合わせた動作を、行うことも可能である。
[4]本実施形態に係る情報処理方法が用いられることにより奏される効果の一例
本実施形態に係る情報処理方法が用いられることによって、本実施形態に係る情報処理装置では、例えば下記に示す効果が奏される。なお、本実施形態に係る情報処理方法が用いられることにより奏される効果が、下記に示す例に限られないことは、言うまでもない。
・本実施形態に係る情報処理方法が用いられることによって、上述したように、記憶媒体に割り当てられる記憶領域をより効率的に使用することができ、また、省メモリ化が図られる。よって、例えばメモリ容量が数キロバイト程度である場合など、本実施形態に係る情報処理装置が、リソースが限られたハードウェア環境を有する場合であっても、VM上で複数のプログラムが動作させることができる。
・本実施形態に係る情報処理装置が、上記のようなリソースが限られたハードウェア環境を有していない場合であっても、VM上で複数のプログラムが動作させることが可能である。よって、上述したように、本実施形態に係る情報処理装置は、サーバなどの、VMを実行してVM上でプログラムを動作させることが可能な様々な機器に適用することができる。
・VMによって、プログラム間をファイアウォールで区切ったセキュアな実行環境が実現される。
・VMによって、プログラム間のデータ通信(プログラム間のデータの授受)をセキュアなものとし、プログラム間におけるセキュアなデータ共有が実現される。
・情報処理装置100がSIMなどの物理的なセキュアなハードウェア環境を有する場合において、情報処理装置100では、VMによって、複数プログラム間のセキュアなデータ通信機能が実現される。
・VM上で複数のプログラムが動作させることが可能であり、かつ、プログラム間をファイアウォールで区切ったセキュアな実行環境が実現される。つまり、本実施形態に係る情報処理方法が用いられる場合には、例えば特許文献1に記載の技術が用いられる場合のように、プログラム間をファイアウォールで区切ったセキュアな実行環境を実現するために、プログラムごとにVMを実行する必要はない。よって、本実施形態に係る情報処理方法は、例えば特許文献1に記載の技術が用いられる場合よりもより容易に、リソースが限られたハードウェア環境を有する機器に適用することが可能である。
・情報処理装置100では、VMによって、VM上で実行されているプログラムからネイティブコードを呼び出す機能が実現される。よって、情報処理装置100では、VM上で実行されるプログラムの処理の一部をネイティブコードで実装することが可能である。また、VM上で実行されるプログラムの処理の一部をネイティブコードで実装することは、情報処理装置100においてメモリの制約がある場合に、有効である。
・VMでは、外部バッファの仕組みにより、一部のメモリ領域のデータ共有が可能である。
・VMのプログラムの少なくとも一部を、ネイティブコードで実装することができる。よって、例えば、不揮発メモリに保存されるプログラムサイズに応じて、VMのプログラムの少なくとも一部を、ネイティブコードで実装することができ、また、プログラム実行速度が要求される処理をネイティブコードで実装することができる。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
なお、以下のような構成も本開示の技術的範囲に属する。
(1)
仮想機械を実行する処理部を備え、
前記仮想機械は、スタックマシンによりプログラムを動作させ、
記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、
前記第1のプログラムから前記第1のプログラムと異なる第2のプログラムを呼び出すときに、前記記憶領域に、前記第2のプログラムが動作する第2の動作領域を確保する、情報処理装置。
(2)
前記仮想機械は、呼び出された前記第2のプログラムの実行を終了させ、呼び出し元の前記第1のプログラムを実行するとき、前記第2の動作領域を解放する、(1)に記載の情報処理装置。
(3)
前記仮想機械は、前記第1のプログラムと前記第2のプログラムとの間のデータの授受を、前記第1の動作領域に設けられた第1のバッファおよび前記第2の動作領域に設けられた第2のバッファを介して行う、(1)または(2)に記載の情報処理装置。
(4)
前記仮想機械は、前記第2のバッファから前記第1のバッファを参照することにより、前記第1のプログラムのデータを前記第2のプログラムで共有する、(3)に記載の情報処理装置。
(5)
前記仮想機械は、前記第2のバッファから前記第1のバッファの一部を参照することにより、前記第1のプログラムのデータを前記第2のプログラムで共有する、(4)に記載の情報処理装置。
(6)
前記第2のバッファは、前記第1のバッファにリンクが張られている、前記第1のバッファの外部バッファを含み、
前記仮想機械は、前記外部バッファから前記第1のバッファを参照することにより、前記第1のプログラムのデータを前記第2のプログラムで共有する、(4)または(5)に記載の情報処理装置。
(7)
前記仮想機械は、プロセッサにより実行されるネイティブコードで実装され、
前記記憶領域に、プログラムと前記ネイティブコードとの連携のための連携領域を確保し、
前記プログラムと前記ネイティブコードとの間のデータの授受を、前記連携領域を介して行う、(1)〜(6)のいずれか1つに記載の情報処理装置。
(8)
前記情報処理装置は、IC(Integrated Circuit)カードである、(1)〜(7)のいずれか1つに記載の情報処理装置。
(9)
仮想機械を実行するステップを有し、
前記仮想機械は、スタックマシンによりプログラムを動作させ、
記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、
前記第1のプログラムから前記第1のプログラムと異なる第2のプログラムを呼び出すときに、前記記憶領域に、前記第2のプログラムが動作する第2の動作領域を確保する、情報処理装置により実行される情報処理方法。
100 情報処理装置
102 通信部
104 制御部
110 処理部

Claims (9)

  1. 仮想機械を実行する処理部を備え、
    前記仮想機械は、スタックマシンによりプログラムを動作させ、
    記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、
    前記第1のプログラムから前記第1のプログラムと異なる第2のプログラムを呼び出すときに、前記記憶領域に、前記第2のプログラムが動作する第2の動作領域を確保する、情報処理装置。
  2. 前記仮想機械は、呼び出された前記第2のプログラムの実行を終了させ、呼び出し元の前記第1のプログラムを実行するとき、前記第2の動作領域を解放する、請求項1に記載の情報処理装置。
  3. 前記仮想機械は、前記第1のプログラムと前記第2のプログラムとの間のデータの授受を、前記第1の動作領域に設けられた第1のバッファおよび前記第2の動作領域に設けられた第2のバッファを介して行う、請求項1に記載の情報処理装置。
  4. 前記仮想機械は、前記第2のバッファから前記第1のバッファを参照することにより、前記第1のプログラムのデータを前記第2のプログラムで共有する、請求項3に記載の情報処理装置。
  5. 前記仮想機械は、前記第2のバッファから前記第1のバッファの一部を参照することにより、前記第1のプログラムのデータを前記第2のプログラムで共有する、請求項4に記載の情報処理装置。
  6. 前記第2のバッファは、前記第1のバッファにリンクが張られている、前記第1のバッファの外部バッファを含み、
    前記仮想機械は、前記外部バッファから前記第1のバッファを参照することにより、前記第1のプログラムのデータを前記第2のプログラムで共有する、請求項4に記載の情報処理装置。
  7. 前記仮想機械は、プロセッサにより実行されるネイティブコードで実装され、
    前記記憶領域に、プログラムと前記ネイティブコードとの連携のための連携領域を確保し、
    前記プログラムと前記ネイティブコードとの間のデータの授受を、前記連携領域を介して行う、請求項1に記載の情報処理装置。
  8. 前記情報処理装置は、IC(Integrated Circuit)カードである、請求項1に記載の情報処理装置。
  9. 仮想機械を実行するステップを有し、
    前記仮想機械は、スタックマシンによりプログラムを動作させ、
    記憶媒体に割り当てられた記憶領域に、第1のプログラムが動作する第1の動作領域を確保し、
    前記第1のプログラムから前記第1のプログラムと異なる第2のプログラムを呼び出すときに、前記記憶領域に、前記第2のプログラムが動作する第2の動作領域を確保する、情報処理装置により実行される情報処理方法。
JP2019540815A 2017-09-07 2018-07-25 情報処理装置、および情報処理方法 Active JP7230811B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017171951 2017-09-07
JP2017171951 2017-09-07
PCT/JP2018/027888 WO2019049542A1 (ja) 2017-09-07 2018-07-25 情報処理装置、および情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2019049542A1 true JPWO2019049542A1 (ja) 2020-10-15
JP7230811B2 JP7230811B2 (ja) 2023-03-01

Family

ID=65634741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019540815A Active JP7230811B2 (ja) 2017-09-07 2018-07-25 情報処理装置、および情報処理方法

Country Status (4)

Country Link
US (1) US11720383B2 (ja)
JP (1) JP7230811B2 (ja)
CN (1) CN111052085B (ja)
WO (1) WO2019049542A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887478A (ja) * 1994-09-16 1996-04-02 Nippon Telegr & Teleph Corp <Ntt> プロセス間メッセージ通信方法
JP2002259146A (ja) * 2000-05-15 2002-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置及び方法
US6519594B1 (en) * 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
JP2004192447A (ja) * 2002-12-12 2004-07-08 Toppan Printing Co Ltd Icカード及びicカードのデータ管理方法
JP2015041349A (ja) * 2013-08-23 2015-03-02 大日本印刷株式会社 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024668B2 (en) 2000-05-15 2006-04-04 Matsushita Electric Industrial Co., Ltd. Application execution apparatus and method
US20020180793A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Dynamic buffering of graphic images by a platform independent application program interface
US7941797B2 (en) * 2005-10-27 2011-05-10 International Business Machines Corporation Dynamically providing native libraries and their dependencies
US9047178B2 (en) * 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US20120291034A1 (en) * 2011-05-14 2012-11-15 International Business Machines Corporation Techniques for executing threads in a computing environment
US9719504B2 (en) * 2013-03-15 2017-08-01 Integrated Designs, L.P. Pump having an automated gas removal and fluid recovery system and method
US9949111B2 (en) * 2014-09-17 2018-04-17 Simless, Inc. Apparatuses, methods and systems for interfacing with a trusted subscription management platform
US10592380B2 (en) * 2018-04-20 2020-03-17 Sysdig, Inc. Programmatic container monitoring

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887478A (ja) * 1994-09-16 1996-04-02 Nippon Telegr & Teleph Corp <Ntt> プロセス間メッセージ通信方法
US6519594B1 (en) * 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
JP2002259146A (ja) * 2000-05-15 2002-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置及び方法
JP2004192447A (ja) * 2002-12-12 2004-07-08 Toppan Printing Co Ltd Icカード及びicカードのデータ管理方法
JP2015041349A (ja) * 2013-08-23 2015-03-02 大日本印刷株式会社 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム

Also Published As

Publication number Publication date
JP7230811B2 (ja) 2023-03-01
WO2019049542A1 (ja) 2019-03-14
CN111052085A (zh) 2020-04-21
CN111052085B (zh) 2023-11-28
US20200192694A1 (en) 2020-06-18
US11720383B2 (en) 2023-08-08

Similar Documents

Publication Publication Date Title
CN110245001B (zh) 数据隔离方法及装置、电子设备
US9467512B2 (en) Techniques for remote client access to a storage medium coupled with a server
US10255088B2 (en) Modification of write-protected memory using code patching
EP3435221B1 (en) Apparatus and method for controlling running of multiple pieces of security application software
US9665534B2 (en) Memory deduplication support for remote direct memory access (RDMA)
EP3370155A1 (en) Storage data access method, related controller, device, host, and system
CN111090869B (zh) 一种数据加密方法、处理器及计算机设备
US9146879B1 (en) Virtual memory management for real-time embedded devices
KR20160008885A (ko) 전자 장치 및 전자 장치의 메모리 관리 방법
CN109508301A (zh) 终端、应用数据的处理方法、数据处理设备及存储介质
US20170147240A1 (en) Memory deduplication protection for memory pages
CN114327777B (zh) 确定全局页目录的方法、装置、电子设备及存储介质
CN112541166A (zh) 一种方法、系统和计算机可读存储介质
CN114281484B (zh) 数据传输方法、装置、设备及存储介质
CN108509240A (zh) 图片绘制方法及相关产品
CN103595720B (zh) 卸载数据传输方法、装置和客户端
CN111666036B (zh) 一种迁移数据的方法、装置及系统
US9772776B2 (en) Per-memory group swap device
JP7230811B2 (ja) 情報処理装置、および情報処理方法
US9836240B2 (en) Protection for memory deduplication by copy-on-write
CN108260120A (zh) 移动终端、嵌入式sim卡及其访问方法、装置
US11429412B2 (en) Guest protection from application code execution in kernel mode
TW202230140A (zh) 管理記憶體的方法及非暫時性電腦可讀媒體
CN110990122A (zh) 一种虚拟机迁移方法和装置
JP2009129402A (ja) Icカード用半導体装置、icカード、及びicカード用端末装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220913

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230130

R151 Written notification of patent or utility model registration

Ref document number: 7230811

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151