JP4952308B2 - メモリ共有システム、方法、及び、プログラム - Google Patents

メモリ共有システム、方法、及び、プログラム Download PDF

Info

Publication number
JP4952308B2
JP4952308B2 JP2007059889A JP2007059889A JP4952308B2 JP 4952308 B2 JP4952308 B2 JP 4952308B2 JP 2007059889 A JP2007059889 A JP 2007059889A JP 2007059889 A JP2007059889 A JP 2007059889A JP 4952308 B2 JP4952308 B2 JP 4952308B2
Authority
JP
Japan
Prior art keywords
program
memory
computer
requested
loaded
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.)
Active
Application number
JP2007059889A
Other languages
English (en)
Other versions
JP2008225620A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2007059889A priority Critical patent/JP4952308B2/ja
Priority to US12/042,927 priority patent/US8275948B2/en
Publication of JP2008225620A publication Critical patent/JP2008225620A/ja
Application granted granted Critical
Publication of JP4952308B2 publication Critical patent/JP4952308B2/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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、メモリ共有システム、方法、及び、プログラムに関し、更に詳しくは、複数の計算機間でメモリを共有するメモリ共有システム、方法、及び、プログラムに関する。
1つの実計算機上で複数の仮想計算機を実行する技術がある。1つの計算機上で複数の仮想計算機を実行する場合、各仮想計算機に独立したメモリ領域が割り当てられるため、仮想計算機の数に比例したメモリ領域が必要となる。このため、組込み機器など、使用可能なハードウェア資源が制限される小さい計算機では、計算機上で複数の仮想計算機を実行すると、メモリ領域が不足する問題が生じている。
1つの実計算機上で複数の仮想計算機を実行する場合、それぞれの仮想計算機上で同じプログラムが動作することがある。しかし、各仮想計算機が使用するメモリ領域は、実計算機のメモリ上に別々に確保されるため、実計算機上に同じプログラムファイルがメモリ上に二重にロードされることになる。例えば、1つの実計算機上で、Linuxベースの仮想計算機が2つ実行されている場合を考えると、それぞれの仮想計算機のメモリ領域に、同じバージョンのglibcライブラリファイルがロードされることがある。このような状況から、複数の仮想計算機で同一のプログラムが実行される場合に、メモリにロードされるプログラムファイルを共有するためのメモリ共有システムが求められている。
ここで、OS内でのメモリ共有システムの一例が、非特許文献1に記載されている。非特許文献1では、メモリにロードされたファイルを複数のプログラムから参照可能なシステムについて記述されている。この手法は、1つのOS内のメモリ共有手法として有名であるが、この手法を、仮想計算機間でのメモリ共有方法とし利用することはできない。以下、この手法が仮想計算機間でのメモリ共有手法として利用できないことを説明する。
非特許文献1に記載のシステムでは、OS上で動作するプログラムがファイルを参照する際には、OSによって参照先ファイルに対して割り当てられている識別子(iノード番号)とファイル内オフセット値とを元に、メモリにロードすべきファイルデータを特定している。そして、同じOS上で動作する他のプログラムから同一ファイル・同一オフセットに対する参照要求があったときには、OSは既にメモリにロードしたファイルデータを他のプログラムにも参照させる。これにより、複数のプログラム間でメモリ共有を行っている。
しかし、非特許文献1に記載の技術を、複数の仮想計算機間でのメモリ共有に適用することを考えると、各仮想計算機は異なる仮想記憶装置を持つため、それぞれの仮想計算機内で同じiノード番号のファイルを参照したとしても、参照先ファイルが同一のファイルでない可能性がある。例えば、仮想計算機Aと仮想計算機Bでそれぞれ、/sbin/initというファイルを参照する場合、仮想計算機Aの仮想記憶装置内の/sbin/initと、仮想計算機Bの仮想記憶装置内の/sbin/initのファイルとが異なる可能性がある。このため、2つのファイルにそれぞれ同じiノード番号が割り当てられていた場合であっても、この2つのファイルを同一のファイルとみなしプログラムファイルの共有化を行うと、プログラムが正常に動作しない可能性がある。このように、非特許文献1に記載されたメモリ共有システムは、仮想計算機間でのメモリ共有システムとして利用できない。
一方、複数の仮想計算機間でのメモリ共有システムの一例は、特許文献1、特許文献2に記載されている。特許文献1では、一つの実計算機上で動作する複数の仮想計算機間でメモリ領域の共有を行うシステムについて記述されている。このシステムでは、あらかじめメモリをいくつかのブロックに分割し、ブロックごとに「特定の仮想計算機からのみ参照可能なブロック」、「複数の仮想計算機間で共有可能なブロック」を指定した制御テーブルを用意する。そして、仮想計算機を実行するときには、メモリブロックの制御を行う制御プログラムが、前もって設定された制御テーブルに基づいて、メモリブロックを仮想計算機に割り当てる。
また、特許文献2では、ある仮想計算機で管理されているメモリ領域を、他の仮想計算機と共有するシステムについて記述されている。このシステムでは、仮想計算機Aが、仮想計算機Bからメモリアクセス要求を受信すると、自身の管理するメモリ領域の一部をアクセス要求元の仮想計算機Bにマッピングする。このとき、仮想計算機Bに割り当てたページの参照カウントも管理しており、参照カウントが0になると、マッピングを解除することができる。
DANIEL P. BOVET他著「詳細Linuxカーネル 第2版」オライリー・ジャパン、2003年6月24日、pp.580−591 特開平11−249916号公報 特開2006−252554号公報
第1の問題点は、複数の仮想計算機で同一のプログラムが実行されるとき、メモリにロードされたプログラムファイルを共有できないということである。その理由は、特許文献1及び2では、仮想計算機間でのメモリ領域の共有方法について述べているが、何れもプログラムファイルを共有することには適用できないからである。第2の問題点は、仮想計算機と実計算機とで同一のプログラムが実行されるときに、メモリにロードされるプログラムファイルを共有できないということである。その理由は、特許文献1及び2ともに、仮想計算機と実計算機とのメモリ領域の共有方法についても適用可能であるが、何れもプログラムファイルを共有することには適用できないからである。
本発明は、上記従来技術の問題点を解消し、複数の仮想計算機で同一のプログラムが実行されるときに、メモリにロードされるプログラムファイルを複数の仮想計算機間で共有できるメモリ共有システム、方法、及び、プログラムを提供することを目的とする。
また、本発明の別の目的は、実計算機と仮想計算機とで同一のプログラムが実行されるときに、メモリにロードされるプログラムファイルを実計算機と仮想計算機とで共有できるメモリ共有システム、方法、及び、プログラムを提供することである。
上記目的を達成するために、本発明のメモリ共有システムは、使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを、複数の計算機間で共有するメモリ共有システムであって、一の計算機から、前記メモリへロードを要求されたプログラムを特定する情報、前記メモリへのロードを要求したプログラム内の前記メモリへのロードが必要になったメモリアドレスを示す要求元メモリアドレス、及び、前記要求されたプログラムのメモリサイズを示す要求メモリサイズを含むメモリ確保要求が発生すると、前記メモリにロード済みのプログラムについて、当該プログラムを一意に識別するためのプログラムID、当該プログラムのロードを要求したプログラム内の前記要求元メモリアドレス、及び、当該プログラムの前記要求メモリサイズと、当該プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けたエントリを記憶するメモリ利用情報記憶部を参照して、前記要求されたプログラムに対応する前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズを検索キーとして、前記検索キーと一致するエントリが存在するか否かを判断するメモリ利用情報検索手段と、前記メモリ利用情報検索手段にて前記検索キーと一致するエントリが存在すると判断されると、当該エントリに対応する前記プログラムがロードされたメモリ領域を複数の計算機間で共有化する処理を行うメモリ確保手段とを備え、前記メモリ確保手段は、前記メモリ利用情報検索手段にて前記検索キーと一致するエントリが存在しないと判断されると、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記要求されたプログラムをロードし、メモリ利用情報書込み手段により、前記要求されたプログラムの前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズと、前記要求されたプログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納することを特徴とする。
本発明のメモリ共有方法は、使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを複数の計算機間で共有する、コンピュータにおけるメモリ共有方法であって、前記コンピュータが、一の計算機から、前記メモリへロードを要求されたプログラムを特定する情報、前記メモリへのロードを要求したプログラム内の前記メモリへのロードが必要になったメモリアドレスを示す要求元メモリアドレス、及び、前記要求されたプログラムのメモリサイズを示す要求メモリサイズを含むメモリ確保要求が発生すると、前記メモリにロード済みのプログラムについて、当該プログラムを一意に識別するためのプログラムID、当該プログラムのロードを要求したプログラム内の前記要求元メモリアドレス、及び、当該プログラムの前記要求メモリサイズと、当該プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けたエントリを記憶するメモリ利用情報記憶部を参照して、前記要求されたプログラムに対応する前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズを検索キーとして、前記検索キーと一致するエントリが存在するか否かを判断するメモリ利用情報検索ステップと、前記コンピュータが、前記メモリ利用情報検索ステップで前記検索キーと一致するエントリが存在すると判断すると、当該エントリに対応する前記プログラムがロードされたメモリ領域を複数の計算機間で共有化する処理を行うメモリ確保ステップとを有し、前記コンピュータは、前記メモリ利用情報検索ステップで前記検索キーと一致するエントリが存在しないと判断すると、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記要求されたプログラムをロードし、前記要求されたプログラムの前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズと、前記要求されたプログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納することを特徴とする。
本発明のプログラムは、コンピュータに、使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを複数の計算機間で共有する処理を実行させるプログラムであって、前記コンピュータに、一の計算機から、前記メモリへロードを要求されたプログラムを特定する情報、前記メモリへのロードを要求したプログラム内の前記メモリへのロードが必要になったメモリアドレスを示す要求元メモリアドレス、及び、前記要求されたプログラムのメモリサイズを示す要求メモリサイズを含むメモリ確保要求が発生すると、前記メモリにロード済みのプログラムについて、当該プログラムを一意に識別するためのプログラムID、当該プログラムのロードを要求したプログラム内の前記要求元メモリアドレス、及び、当該プログラムの前記要求メモリサイズと、当該プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けたエントリを記憶するメモリ利用情報記憶部を参照して、前記要求されたプログラムに対応する前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズを検索キーとして、前記検索キーと一致するエントリが存在するか否かを判断するメモリ利用情報検索処理と、前記メモリ利用情報検索処理で前記検索キーと一致するエントリが存在すると判断すると、当該エントリに対応する前記プログラムがロードされたメモリ領域を複数の計算機間で共有化するメモリ確保処理と、前記メモリ利用情報検索処理で前記検索キーと一致するエントリが存在しないと判断すると、前記コンピュータに、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記要求されたプログラムをロードし、前記要求されたプログラムの前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズと、前記要求されたプログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納する処理とを実行させることを特徴とする。
本発明のメモリ共有システム、方法、及び、プログラムでは、メモリにロードしたプログラムのプログラムIDをメモリ利用情報記憶部に記憶しておき、メモリ確保要求が発生したときには、メモリ確保要求対象のプログラムのプログラムIDが、メモリ利用情報記憶部に記憶されているか否かを検索する。記憶されているときには、メモリ確保要求を発生した計算機以外の計算機が使用するメモリ領域に、メモリ確保対象のプログラムが既にロードされているので、そのプログラムがロードされたメモリ領域を、複数の計算機間で共有化するように共有化処理する。このようにすることで、複数の計算機で同一のプログラムが実行されるときに、メモリにロードされるプログラムファイルを複数の仮想計算機間で共有できる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記メモリ利用情報の検索にて一致するプログラムIDが前記メモリ利用情報記憶部に記憶されていないと判断されたときには、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記プログラムをロードし、該ロードしたプログラムのプログラムIDを、前記メモリ利用情報記憶部に格納する構成を採用することができる。この場合、その後、他の計算機が同一プログラムについてメモリ確保要求を発生したときには、他の計算機との間で、メモリにロードされたプログラムを共有できる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記プログラムID、前記メモリへロードすべきプログラム内のアドレスを示す要求元メモリアドレス、及び、前記メモリへロードする前記プログラムのメモリサイズを示す要求メモリサイズと、前記プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納する構成を採用することができる。この場合、メモリ利用情報記憶部を参照することで、どのプログラムのどの部分をどれだけのメモリサイズ分だけ、どのメモリアドレスにロードしたかを知ることができる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記メモリ確保要求が、前記要求元メモリアドレス及び前記要求メモリサイズを含んでおり、前記メモリ利用情報の検索では、前記メモリにロードすべきプログラムのプログラムIDと、前記メモリ確保要求に含まれる要求元メモリアドレス及び要求メモリサイズとを検索キーとして前記メモリ利用情報記憶部を検索し、前記メモリ利用情報記憶部に、前記検索キーに一致するエントリが存在するか否かを判断する構成を採用できる。この場合、前記メモリ利用情報の検索にて前記検索キーに一致するエントリが存在すると判断されたときは、当該エントリに記憶された前記先頭メモリアドレスから前記要求メモリサイズ分のメモリ領域を、前記メモリ確保要求を発生した計算機からも参照可能となるようにメモリ共有化処理をする構成を採用できる。検索の結果、検索キーに一致するエントリが存在したときは、メモリ発生要求の対象のプログラムについて、同一要求元メモリアドレス及び要求メモリサイズのプログラム部分が、既に別の計算機用のメモリ領域内にロードされていることを表している。従って、検索キーに対応して登録された先頭メモリアドレスから要求メモリサイズ分のメモリ領域を、メモリ確保要求を発生した計算機からも参照可能とすることで、メモリにロードされたプログラム(部分)を共有できる。
本発明のメモリ共有システムは、前記計算機が、プログラムの実行を行い、プログラムファイルをメモリにロードする必要が生じると、前記要求元メモリアドレス及び前記要求メモリサイズを求めた上で、前記メモリ確保要求を発生するプログラム実行手段を備えている構成を採用できる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記メモリへロードすべきプログラムの属性情報を取得し、該取得した属性情報に基づいて、前記プログラムIDを生成する構成を採用できる。属性情報には、ファイルに固有の情報を用いることができる。プログラムIDの生成は、例えば、属性情報をハッシュ値に変換することで行う。プログラムIDの生成は、各計算機で行ってもよく、或いは、各計算機からメモリ発生要求の対象のプログラムファイルの属性情報を取得して、複数の計算機のうちの何れかの計算機にてまとめて行ってもよい。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記属性情報の取得では、前記計算機内で前記プログラムのプログラムファイルを一意に識別するために割り当てられた識別子を含むプログラムファイル特定情報に基づいて前記プログラムファイルを特定し、該プログラムファイルの属性情報を取得する構成を採用できる。例えば計算機上で実行されるOSがLinuxであれば、ファイルシステムの識別子としてデバイス番号を用い、プログラムファイルに割り当てられた識別子としてiノード番号を用いることができる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記メモリ確保要求発生元の計算機の識別子と、前記プログラムファイル特定情報と、前記プログラムIDとを対応付けて記憶するプログラムID記憶部を参照し、前記特定されたプログラムファイルに対応するプログラムIDが記憶されているか否かを判断し、前記プログラムIDの検索にて前記取得されたプログラムファイルに対応するプログラムIDが記憶されていると判断されると、前記プログラムIDの生成に代えて、前記プログラムID記憶部に記憶されたプログラムIDを取得する構成を採用できる。この場合、プログラムID記憶部に、メモリ確保要求元の計算機の識別子及びファイル特定情報に一致するエントリが存在するときには、プログラムIDの生成に代えて、プログラムID記憶部の該当するエントリから、プログラムIDを生成する。このようにすることで、プログラムID記憶部に記憶済みのプログラムIDについては、プログラムIDの生成を省略できる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記プログラムIDの生成部では、前記プログラムIDの検索にて前記属性情報取得手段が取得した属性情報に対応するプログラムIDが記憶されていないと判断されると、前記属性情報に基づいて生成したプログラムIDを、前記プログラムファイル特定情報と対応付けて前記プログラムID記憶部に格納する構成を採用できる。この場合、属性情報に基づいて生成したプログラムIDを、プログラムID記憶部に記憶することで、生成済みのプログラムIDについては、再度プログラムIDを生成する必要がなくなり、プログラムIDの生成に要する処理負担を軽減することができる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記計算機が、実計算機上で実行される複数の仮想計算機を含み、前記メモリ確保手段は、前記プログラムがロードされた、一の仮想計算機に対応したメモリ領域を、複数の仮想計算機間で共有化する処理を行う構成を採用できる。この場合、実計算機上で実行される複数の仮想計算機ごとに、使用するメモリ領域が分割されているときでも、複数の仮想計算機間で、メモリにロードされたプログラムを共有できる。
本発明のメモリ共有システム、方法、及び、プログラムでは、前記計算機が、実計算機、及び、実計算機上で実行される仮想計算機を含み、前記メモリ確保手段は、前記プログラムがロードされた、前記実計算機又は仮想計算機に対応したメモリ領域を、前記実計算機と前記仮想計算機との間で共有化する処理を行う構成を採用できる。この場合、実計算機と、実計算機上で実行される仮想計算機とで、使用するメモリ領域が分割されているときでも、実計算機と仮想計算機とで、メモリにロードされたプログラムを共有できる。
メモリ確保要求対象のプログラムのプログラムIDがメモリ利用情報記憶部に記憶されているときには、メモリ確保要求対象のプログラムがロードされたメモリ領域を、メモリ確保要求を発生した計算機からも参照可能となるように共有化処理する。このようにすることで、複数の計算機で同一のプログラムが実行されるときに、メモリにロードされるプログラムファイルを複数の仮想計算機間で共有できる。これにより、メモリ使用量を抑えることができ、メモリ資源の有効活用を図ることができる。
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図1は、本発明の第1実施形態のメモリ共有システムの構成を示している。メモリ共有システム100は、実計算機10内の仮想計算機A20及び仮想計算機B30と、プログラムにより動作するデータ処理装置40と、メモリ50とを備えている。なお、図1では、実計算機10内で、2つの仮想計算機(仮想計算機A20、仮想計算機B30)が実行される例を示しているが、実計算機10内で実行される仮想計算機の数は任意であり、3以上の仮想計算機が実行されていてもよい。
仮想計算機A20は、プログラムにより動作する仮想データ処理装置A21と、情報を記憶する仮想記憶装置A22とを有する。仮想データ処理装置A21は、プログラム実行手段A211と、プログラム属性取得手段A212と、プログラムID生成手段A213とを有する。仮想記憶装置A22は、仮想計算機A20が使用する仮想的な記憶装置であり、実体は実計算機10の記憶装置内に含まれるデータである。仮想記憶装置A22には、仮想計算機A20が使用するファイル類が格納されている。図1では、仮想記憶装置A22内にプログラムファイルA221のみを図示しているが、他にも、システム設定ファイル、ドキュメントファイルなど、仮想計算機A20で使用される様々なファイルが格納されている。
プログラム実行手段A211は、指定されたプログラムの実行を行う。また、プログラムファイルA221をメモリにロードする必要が生じたときには、要求元メモリアドレスと、要求メモリサイズを求めた上で、メモリ確保要求を出す。要求元メモリアドレスとは、プログラム実行時にメモリ確保が必要になったプログラム内のメモリアドレスである。Linuxなど、プログラムごとに仮想メモリアドレス空間が用意されるOSでは、プログラム実行中にメモリ確保が必要になった仮想メモリアドレスがこれに相当する。或いは、その仮想メモリアドレスに対応する物理メモリアドレスでもよい。プログラムごとに仮想メモリアドレス空間が用意されていないOSにおいては、プログラム実行中にメモリアドレスが必要になった物理メモリアドレスがこれに相当する。また、要求メモリサイズとは、プログラムファイルをメモリにロードするために必要なメモリ領域のサイズである。このメモリ確保要求は、逐次、他の構成要素に伝播し、最終的に後述するメモリ確保手段42にてメモリ共有化又は新規確保の処理が行われることになる。
プログラム属性取得手段A212は、メモリ要求発生元プログラムのプログラムファイルの属性情報を取得する。属性情報には、プログラムファイルにユニークな特徴を用いる。例えば、プログラムファイルのファイルサイズやタイムスタンプなどを用いる。プログラムファイルそのものとしてもよい。プログラムID生成手段A213は、プログラム属性取得手段A212が取得したプログラムファイルの属性情報を元に、プログラムファイルを一意に識別できる識別子(プログラムID)を生成する。プログラムIDの生成では、例えば属性情報をハッシュ値に変換し、これをプログラムIDとする。プログラムファイルが、属性情報として、プログラムファイルを一意に識別するための情報を持つ場合には、その属性情報をそのままプログラムIDとしてもよい。
仮想計算機B30の構成は、仮想計算機A20の構成と同様である。すなわち、仮想計算機B30は、仮想データ処理装置B31と、仮想記憶装置B32とを有する。仮想データ処理装置B31は、プログラム実行手段B311、プログラム属性取得手段B312、及び、プログラムID生成手段B313を有し、仮想記憶装置B32は、プログラムファイルB321を有する。図1では、仮想計算機A20内の構成要素と、仮想計算機B30内の構成要素とを区別するために、語尾のAをBに置き換えているが、仮想計算機B30内の各構成要素の動作は、仮想計算機A20内の各構成要素の動作と同じである。
ここで、仮想データ処理装置A21と、仮想データ処理装置B31とは、何れも実体は実計算機10上のデータ処理装置40である。図1では、仮想計算機A20と仮想計算機B30とに関する動作を明示するために、これらを3つに分割して図示している。また、仮想記憶装置A22と、仮想記憶装置B32とは、何れも実体は実計算機10上の記憶装置に含まれるデータである。図1では、仮想計算機A20及び仮想計算機B30のそれぞれで使用する記憶装置を明示するために、2つに分割して図示している。
メモリ50は、実計算機10における主記憶装置である。メモリ50は、メモリ利用情報記憶部51と、仮想計算機A用記憶部52と、仮想計算機B用記憶部53とを備えている。メモリ利用情報記憶部51は、メモリにロードされたプログラムについて、プログラムID、要求元メモリアドレス、要求メモリサイズごとに、確保したメモリ領域の先頭メモリアドレス(以下、確保済メモリアドレスと表記)の対応付けを行ったメモリ利用情報を記憶する。仮想計算機A用記憶部52は、仮想計算機A20からメモリ確保要求があったときに使用される領域である。仮想計算機B用記憶部53は、仮想計算機B30からメモリ確保要求があったときに使用される領域である。
データ処理装置40は、メモリ利用情報検索手段41と、メモリ確保手段42と、メモリ利用情報書込み手段43とを備える。メモリ利用情報検索手段41は、プログラムID生成手段A213又はプログラムID生成手段B313で作成されたプログラムID、要求元メモリアドレス、及び、要求メモリサイズを検索キーとして、メモリ利用情報内に該当するエントリがあるか否かを検索する。メモリ確保手段42は、メモリ利用情報検索手段41において該当するエントリがあった場合、エントリに記載されている確保済メモリアドレスから要求メモリサイズ分のメモリ領域を、仮想計算機間で共有可能なメモリ領域となるよう共有化処理を行う。
メモリ利用情報検索手段41において該当するエントリがなかった場合は、メモリ確保要求として指定された要求メモリサイズ分のメモリ領域を新規に確保し、プログラムファイルを確保したメモリにロードする。その際、メモリ確保要求元が仮想計算機A20であれば、仮想計算機A用記憶部52内にプログラムファイルをロードし、メモリ確保要求元が仮想計算機B30であれば、仮想計算機B用記憶部53内にプログラムファイルをロードする。メモリ利用情報書込み手段43は、メモリ確保手段42において新規にメモリ領域を確保した場合に、確保したメモリ領域の先頭メモリアドレスを確保済メモリアドレスとし、要求元メモリアドレス、要求メモリサイズとともに新規エントリとして、メモリ利用情報に書き込む。
図2は、メモリ共有システム100の動作手順を示している。以下、図2を参照して、仮想計算機A20上でプログラムファイルA221を実行したときの動作について説明する。なお、仮想計算機B30上でプログラムファイルB321を実行したときの動作は、プログラム実行手段A211をプログラム実行手段B311に、プログラム属性取得手段A212をプログラム属性取得手段B312に、プログラムID生成手段A213をプログラムID生成手段B313に、仮想記憶装置A22を仮想記憶装置B32に、プログラムファイルA221をプログラムファイルB321に、それぞれ置き換えれば、以下に説明するプログラムファイルA221を実行したときの動作と同様である。
仮想計算機A20のプログラム実行手段A211は、プログラムAの実行要求を受けて、プログラムファイルA221の実行を開始する(ステップA1)。その後、プログラム実行手段A211は、プログラムファイルA221をメモリにロードする必要が生じると、要求元メモリアドレスと、要求メモリサイズを求めた上で、メモリ確保要求を出す(ステップA2)。プログラム属性取得手段A212は、メモリ確保要求を受け取ると、メモリ要求発生元プログラムに対応するプログラムファイルA221の属性情報を取得する(ステップA3)。プログラムID生成手段A213は、プログラム属性取得手段A212からプログラムファイルA221の属性情報を受け取り、受け取った属性情報に基づいて、プログラムファイルA221のプログラムIDを生成する(ステップA4)。
メモリ利用情報検索手段41は、プログラムID生成手段A213で作成したプログラムIDと、要求元メモリアドレス及び要求メモリサイズとを検索キーとして、メモリ利用情報記憶部51を検索し、メモリ利用情報内に該当するエントリがあるか否かを判断する(ステップA5)。該当するエントリが存在しない場合には、メモリ確保手段42は、メモリ確保要求として指定された要求メモリサイズ分のメモリ領域を、仮想計算機A用記憶部52内に新規に確保し、確保したメモリ領域にプログラムファイルA221をロードする(ステップA7)。その後、メモリ利用情報書込み手段43により、確保したメモリ領域の先頭メモリアドレスを確保済メモリアドレスとし、要求元メモリアドレス、要求メモリサイズと共に、新規エントリとして、メモリ利用情報に書き込む(ステップA8)。
該当するエントリがあった場合には、メモリ確保手段42は、メモリ利用情報記憶部51を参照して、エントリに記載されている確保済メモリアドレスから要求メモリサイズ分のメモリ領域を、共有可能なメモリ領域となるよう共有化処理を行う(ステップA6)。この共有化処理では、例えば、仮想計算機B30用として確保された仮想計算機B用記憶部53内の共有すべきメモリ領域に対するアクセス権限を変更して、仮想計算機A20からもアクセス可能とし、仮想計算機A20のアクセスアドレスと実計算機10でのメモリアドレスとの対応付けなどを行うことで、仮想計算機A20から、仮想計算機B用記憶部53内にロード済みのプログラムファイルA221にアクセスできるようにする。
本実施形態では、メモリ利用情報検索手段41により、プログラムIDと要求元メモリアドレス、要求メモリサイズとを検索キーとしてメモリ利用情報を検索し、該当するエントリがあった場合には、メモリ確保手段42が、既に確保されているメモリ領域の共有処理を行う。このようにすることで、複数の仮想計算機間で同じプログラムファイルを実行したときに、メモリにロードされるプログラムファイルを共有することができる。特に、複数の仮想計算機にて同種のOSが実行されている場合、個々の仮想計算機上で同じプログラムを実行すると、プログラムID、要求元メモリアドレス、要求メモリサイズが同じであることが多く、プログラムファイルの共有が促されることになる。
以下、実施例を用いて説明する。図3は、第1実施例のメモリ共有システムの構成を示している。第1実施例では、実計算機10は、パーソナルコンピュータであり、メモリ50には、SDRAM(Synchronous Dynamic Random Access Memory)を用いる。実計算機10は、Linuxが実行される仮想マシンA(仮想計算機A20)と、Linuxが実行される仮想マシンB(仮想計算機B30)とを備えている。仮想マシンA20は、プログラム実行手段A211、プログラム属性取得手段A212、及び、プログラムID生成手段A213として動作する仮想中央演算装置A(仮想データ処理装置A21)を有している。仮想マシンB30は、プログラム実行手段B311、プログラム属性取得手段B312、及び、プログラムID生成手段B313として動作する仮想中央演算装置B(仮想データ処理装置B31)を有している。
仮想記憶装置A22には、仮想マシンA20にて使用されるファイル類が格納されている。また、仮想記憶装置B32には、仮想マシンB30にて使用されるファイル類が格納されている。仮想記憶装置A22及び仮想記憶装置B32には、それぞれWebサーバプログラムファイル222、322が記憶される。このWebサーバプログラムファイル222、322は、実体は同じプログラムファイルである。Webサーバプログラムファイル222、322は、仮想記憶装置A22及び仮想記憶装置B32において同じディレクトリに置かれており、何れの仮想記憶装置でも、デバイス番号「2」、iノード番号「100」が割り当てられているものとする。なお、プログラムファイルのデバイス番号とは、Linux上でプログラムファイルが置かれているファイルシステムの識別子であり、iノード番号とは、ファイルシステム内でのプログラムファイルに割り当てられた識別子である。
実計算機10は、メモリ利用情報検索手段41、メモリ確保手段42、及び、メモリ利用情報書込み手段43として機能する中央演算装置(データ処理装置40)を有している。また、SDRAM(メモリ50)には、メモリ利用情報(メモリ利用情報記憶部51)と、仮想マシンA用メモリ領域(仮想計算機A用記憶部52)と、仮想マシンB用メモリ領域(仮想計算機B用記憶部53)とが確保されている。なお、仮想中央演算装置A21及び仮想中央演算装置B31は、何れも実体は実計算機10上の中央演算装置である。
メモリ利用情報の一例を図4に示す。メモリ利用情報には、メモリ確保要求を出した仮想マシン上のプログラムのプログラムID、要求元仮想メモリアドレス、要求メモリサイズ、確保した物理メモリアドレスが記憶されている。プログラムIDは、プログラムファイルの属性情報に基づいて生成された値であり、ここでは、プログラムファイルのハッシュ値を、プログラムIDとして用いている。図4では、メモリ利用情報は2つのエントリを有しているが、これらは、仮想マシンB30上で実行されているWebサーバプログラムファイル322に対応したメモリ利用情報である。
仮想マシンA20でWebサーバプログラムファイル222を実行するときにページフォルトが発生し、Webサーバプログラムの仮想アドレス空間0xA000に、0x1000のサイズのメモリを割り当てる必要がある場合を考える。この場合、プログラム実行手段A211は、Webサーバプログラムの仮想アドレス空間でメモリ(ページ)を割り当てる必要がある仮想メモリアドレス「0xA000」と、必要なメモリサイズ「0x1000」とを求めた上で、メモリ確保要求を出す。
プログラム属性取得手段A212は、メモリ確保要求を出したプログラムに対応するプログラムファイル、すなわちWebサーバプログラムファイル222のデバイス番号「2」とiノード番号「100」とを取得し、取得したデバイス番号とiノード番号を元にプログラムファイルの属性情報を取得する。プログラムID生成手段A213は、属性情報に基づいて、プログラムファイルのハッシュ値を計算し、プログラムID「10000」を生成する。
メモリ利用情報検索手段41は、プログラムID生成手段A213にて作成されたプログラムID「10000」、要求元メモリアドレス「0xA000」、及び、要求メモリサイズ「0x1000」を検索キーとしてメモリ利用情報51を検索し、メモリ利用情報内に該当するエントリがあるか否かを調べる。この検索では、図4の第1エントリが、検索キーにヒットする。すなわち、仮想マシンA用メモリ領域52にロードしようとしているプログラムが、仮想マシンB用メモリ領域53に既にロードされていることが判明する。この場合、メモリ確保手段42は、ヒットしたエントリに記載されている物理メモリアドレス「0x10000」から要求メモリサイズ分「0x1000」のメモリ領域を、仮想マシンAからも利用できるよう共有化処理を行う。
メモリ確保手段42は、メモリ50を、ページという単位でパーティショニングし、各ページの使用状況の管理、各ページへのアクセス権限の管理、仮想マシンA20及び仮想マシンB30における物理メモリアドレスと実計算機10における物理メモリアドレスとの対応付けなどを行う。共有化処理では、メモリ利用情報51の物理アドレスから該当するページを求め、そのページに対して仮想マシンA20からもアクセスできるように、ページのアクセス権限を変更する。その後、そのページを、仮想マシンA20の物理メモリとして割り当てることで、仮想マシンB30用に割り当てられているページを、仮想マシンA20に共有させる。
仮想記憶装置A22と、仮想記憶装置B32とでは、ファイルシステムが異なるため、ディレクトリ構造が同じ場合でも、Webサーバプログラムファイル222及びWebサーバプログラムファイル322に対して、異なるデバイス番号及びiノード番号が割り当てられることがある。しかし、Webサーバプログラムファイル222及びWebサーバプログラムファイル322の実体は、同じプログラムファイルであるので、そのプログラムファイルの属性情報に基づいて生成されたプログラムIDは同一となる。このように、プログラムファイルに一意に定まるプログラムIDを用いることで、複数の仮想計算機間で、メモリにロードされたプログラムファイルを共有できる。
次に、仮想マシンA20上でWebサーバプログラムファイル222を実行中にページフォルトが発生し、Webサーバプログラムの仮想アドレス空間0xB000に、0x1000のサイズのメモリを割り当てる必要がある場合を考える。この場合、プログラム実行手段A211は、Webサーバプログラムの仮想アドレス空間でメモリ(ページ)を割り当てる必要がある仮想メモリアドレス「0xB000」と、必要なメモリサイズ「0x1000」とを求めた上で、メモリ確保要求を出す。プログラム属性取得手段A212は、メモリ確保要求を出したプログラムのデバイス番号「2」とiノード番号「100」とを取得し、プログラムファイルを取得する。
プログラムID生成手段A213は、プログラムファイルを取得し、プログラムファイルのハッシュ値を計算して、プログラムID「10000」を生成する。メモリ利用情報検索手段41は、プログラムID生成手段A213にて生成されたプログラムID「10000」、要求元メモリアドレス「0xB000」、及び、要求メモリサイズ「0x1000」を検索キーとしてメモリ利用情報51を検索する。検索の結果、図4に示すメモリ利用情報には、検索キーにヒットするエントリが存在しないので、メモリ確保手段42は、メモリ確保要求として指定された要求メモリサイズ「0x1000」分のメモリ領域を、仮想マシンA用メモリ領域52内に、新規に確保する。
メモリ利用情報書込み手段43は、メモリ確保手段42が新規にメモリ領域を確保すると、メモリ利用情報51に新規エントリを作成し、新規エントリに、プログラムID「10000」、要求元メモリアドレス「0xB000」、及び、要求メモリサイズ「0x1000」と、確保された物理メモリの先頭メモリアドレスとを対応付けて記憶する。この場合、別の仮想マシン(仮想マシンB30)から、同じプログラムID「10000」、要求元メモリアドレス「0xB000」、要求メモリサイズ「0x1000」のメモリ確保要求があるときには、メモリ確保手段42により、マシンA用メモリ領域52にロードされたプログラムが共有化処理され、仮想マシンA20用に確保されたメモリ領域が共有化される。
図5は、本発明の第2実施形態のメモリ共有システムの構成を示している。本実施形態のメモリ共有システム100aは、プログラムID生成手段44が、仮想計算機ではなく実計算機10に設けられている点で、第1実施形態のメモリ共有システム100と相違する。その他の構成は、第1実施形態と同様である。また、プログラムID生成手段44の動作は、図1におけるプログラムID生成手段A213及びプログラムID生成手段B313と同様である。
図6は、メモリ共有システム100aの動作手順を示している。本実施形態のメモリ共有システムの動作(ステップB1〜B8)は、図2に示す第1実施形態のメモリ共有システムの動作(ステップA1〜A8)と同様である。相違点は、ステップB4で、実計算機10内のプログラムID生成手段44により、仮想計算機A20及び仮想計算機B30で発生したメモリ確保要求に対応するプログラムファイルのプログラムIDを生成する点である。
本実施形態では、プログラムID生成手段44が、仮想計算機A20及び仮想計算機B30から共用される構成となっている。このような構成とすることで、仮想計算機に追加すべき機能を減らすことができるという効果が得られる。その他の効果は、第1実施形態と同様である。すなわち、複数の仮想計算機間で同じプログラムファイルを実行したときに、メモリにロードされるプログラムファイルを、複数の計算機間で共有することができる。
以下、実施例を用いて説明する。図7は、第2実施例のメモリ共有システムの構成を示している。第2実施例では、実計算機10は、パーソナルコンピュータであり、メモリ50には、SDRAMを用いる。実計算機10は、Linuxが実行される仮想マシンA(仮想計算機A20)と、Linuxが実行される仮想マシンB(仮想計算機B30)とを備えている。仮想マシンA20は、プログラム実行手段A211、及び、プログラム属性取得手段A212として動作する仮想中央演算装置A(仮想データ処理装置A21)を有している。仮想マシンB30は、プログラム実行手段B311、及び、プログラム属性取得手段B312として動作する仮想中央演算装置B(仮想データ処理装置B31)を有している。仮想中央演算装置A21及び仮想中央演算装置B31は、何れも実体は実計算機10上の中央演算装置である。
仮想記憶装置A22には、仮想マシンA20にて使用されるファイル類が格納されている。また、仮想記憶装置B32には、仮想マシンB30にて使用されるファイル類が格納されている。仮想記憶装置A22及び仮想記憶装置B32には、それぞれWebサーバプログラムファイル222、322が記憶される。このWebサーバプログラムファイル222、322は、実体は同じプログラムファイルである。Webサーバプログラムファイル222、322は、仮想記憶装置A22及び仮想記憶装置B32において同じディレクトリに置かれており、何れの仮想記憶装置でも、プログラムファイルに対して、デバイス番号「2」、iノード番号「100」が割り当てられているものとする。
実計算機10は、メモリ利用情報検索手段41、メモリ確保手段42、メモリ利用情報書込み手段43、及び、プログラムID生成手段44として機能する中央演算装置(データ処理装置40)を有している。また、SDRAM(メモリ50)には、メモリ利用情報(メモリ利用情報記憶部51)と、仮想マシンA用メモリ領域(仮想計算機A用記憶部52)と、仮想マシンB用メモリ領域(仮想計算機B用記憶部53)とが確保されている。メモリ利用情報51には、図4に示すメモリ利用情報が記憶されている。図4に示すメモリ利用情報の2つのエントリは、仮想マシンB30上で実行されているWebサーバプログラムファイル322に対応したメモリ利用情報である。
仮想マシンA20でWebサーバプログラムファイル222を実行するときにページフォルトが発生し、Webサーバプログラムの仮想アドレス空間0xA000に、0x1000のサイズのメモリを割り当てる必要がある場合を考える。この場合、プログラム実行手段A211は、Webサーバプログラムの仮想アドレス空間でメモリ(ページ)を割り当てる必要がある仮想メモリアドレス「0xA000」と、必要なメモリサイズ「0x1000」とを求めた上で、メモリ確保要求を出す。
プログラム属性取得手段A212は、メモリ確保要求を出したプログラムのデバイス番号「2」とiノード番号「100」とを取得し、プログラムファイルの属性情報を取得する。データ処理装置40内のプログラムID生成手段44は、仮想マシンA20内のプログラム属性取得手段A212からの属性情報を受け取り、プログラムファイルのハッシュ値を計算して、プログラムID「10000」を生成する。メモリ利用情報検索手段41は、プログラムID生成手段44にて作成されたプログラムID「10000」、要求元メモリアドレス「0xA000」、及び、要求メモリサイズ「0x1000」を検索キーとしてメモリ利用情報51を検索し、メモリ利用情報内に該当するエントリがあるか否かを調べる。
メモリ利用情報検索手段41が検索を行うと、図4の第1エントリが、検索キーにヒットする。すなわち、仮想マシンA用メモリ領域52にロードしようとしているプログラムが、仮想マシンB用メモリ領域53に既にロードされていることが判明する。この場合、メモリ確保手段42は、ヒットしたエントリに記載されている物理メモリアドレス「0x10000」から要求メモリサイズ分「0x1000」のメモリ領域を、仮想マシンAからも利用できるよう共有化処理を行う。
図8は、本発明の第3実施形態のメモリ共有システムの構成を示している。本実施形態のメモリ共有システム100bは、図5に示す第2実施形態の構成に加えて、プログラムID検索手段45と、プログラムID書込み手段46と、プログラムID記憶部54とを有する。プログラムID記憶部54は、プログラムファイルとプログラムIDとの対応を、プログラムIDリストとして記憶する。より詳細には、プログラムID生成手段44にて生成されたプログラムIDと、そのプログラムIDに対応するプログラムファイルを特定する情報とを対応付けて記憶する。プログラムファイルを特定する情報には、例えば仮想計算機の識別子とデバイス番号とiノード番号とを用いる。プログラムIDリストは、プログラムID生成手段44のキャッシュ機構として機能する。
プログラムID検索手段45は、プログラム属性取得手段A212又はプログラム属性取得手段B312から、プログラムファイル特定情報を受け取り、受け取ったプログラムファイル特定情報を検索キーとして、プログラムID記憶部54に記憶されているプログラムIDリストを検索する。該当するエントリが存在しない場合、プログラムID生成手段44は、プログラム属性取得手段A212又はプログラム属性取得手段B312から取得した属性情報を元にプログラムファイルのプログラムIDを生成する。プログラムID書込み手段46は、プログラムID生成手段44にてプログラムIDが生成されると、生成されたプログラムIDと、プログラムファイル特定情報とを対応付けて、プログラムID記憶部54に、エントリとして格納する。該当するエントリがあった場合は、プログラムID検索手段45は、エントリに記載されているプログラムIDを取得し、これをプログラムID生成手段44に渡す。
図9は、メモリ共有システム100bの動作手順を示している。プログラム実行手段A211は、プログラムの実行を行う(ステップC1)。プログラム実行手段A211は、プログラムファイルA221をメモリにロードする必要が生じると、要求元メモリアドレスと、要求メモリサイズとを求めた上で、メモリ確保要求を出す(ステップC2)。プログラム属性取得手段A212は、メモリ要求発生元プログラムのプログラムファイルA221のプログラムファイル特定情報(デバイス番号、iノード番号)を取得した上で、プログラムファイルA221の属性情報を取得する(ステップC3)。ここまでの動作は、図2に示すステップA1〜A3までの動作と同様である。
プログラムID検索手段45は、プログラム属性取得手段A212からプログラムファイル特定情報を受け取り、これを検索キーとして、プログラムID記憶部54に記憶されているプログラムIDリストを検索する(ステップC4)。該当するエントリがあった場合、プログラムID生成手段44は、プログラムID検索手段45を介して、プログラムID記憶部54から該当するエントリのプログラムIDを取得する(ステップC5)。該当するエントリがなかった場合は、プログラムID生成手段44は、プログラム属性取得手段A212が取得したプログラムファイルの属性情報を元にプログラムIDを生成する(ステップC6)。
プログラムID書込み手段46は、プログラムID生成手段44がプログラムIDを生成すると、生成されたプログラムIDと、プログラムファイル特定情報とを対応付け、新規エントリとして、メモリ50内のプログラムID記憶部54に書き込む(ステップC7)。これにより、次回からは、既にプログラムIDが生成されたプログラムファイルに対しては、プログラムID記憶部54からプログラムIDが取り出されることになる。以降の動作(ステップC8〜C11)は、図2のステップA5〜A8の動作と同様である。
本実施形態では、プログラムID生成手段44が生成したプログラムIDを、プログラムID記憶部54に記憶し、プログラムID生成手段44が生成すべきプログラムIDがプログラムID記憶部54に既に記憶されているときには、それを利用する。このようにすることで、プログラムID生成手段44にて、メモリ確保要求が発生するたびにプログラムIDを生成する必要がなくなり、プログラムID生成処理を省略することができる。その他の効果は、第2実施形態と同様である。
以下、実施例を用いて説明する。図10は、第3実施例のメモリ共有システムの構成を示している。第3実施例では、実計算機10は、パーソナルコンピュータであり、メモリ50には、SDRAMを用いる。実計算機10は、Linuxが実行される仮想マシンA(仮想計算機A20)と、Linuxが実行される仮想マシンB(仮想計算機B30)とを備えている。仮想マシンA20は及び仮想マシンB30の構成は、第2実施例と同様である。実計算機10は、メモリ利用情報検索手段41、メモリ確保手段42、メモリ利用情報書込み手段43、プログラムID生成手段44、プログラムID検索手段45、及び、プログラムID書込み手段46として機能する中央演算装置(データ処理装置40)を有している。
SDRAM(メモリ50)には、メモリ利用情報(メモリ利用情報記憶部51)、仮想マシンA用メモリ領域(仮想計算機A用記憶部52)、仮想マシンB用メモリ領域(仮想計算機B用記憶部53)、及び、プログラムIDリスト(プログラムID記憶部54)が確保されている。プログラムIDリスト54に記憶される情報の一例を図11に示す。プログラムIDリスト54は、仮想計算機の識別子、デバイス番号、及び、iノード番号と、プログラムIDとを対応付けて記憶する。
仮想マシンA20でWebサーバプログラムファイル222を実行するときにページフォルトが発生し、Webサーバプログラムの仮想アドレス空間0xA000に、0x1000のサイズのメモリを割り当てる必要がある場合を考える。この場合、プログラム実行手段A211は、Webサーバプログラム222の仮想アドレス空間でメモリ(ページ)を割り当てる必要がある仮想メモリアドレス「0xA000」と、必要なメモリサイズ「0x1000」とを求めた上で、メモリ確保要求を出す。プログラム属性取得手段A212は、プログラムファイル特定情報としてデバイス番号「2」とiノード番号「100」と取得した上で、そのプログラムファイルの属性情報を取得する。
プログラムID検索手段45は、プログラム属性取得手段A212からプログラムファイル特定情報(仮想計算機「A」、デバイス番号「2」、iノード番号「100」)を受け取り、これを検索キーとして、プログラムIDリスト54を検索する。仮想計算機「A」、デバイス番号「2」、iノード番号「100」の検索キーは、図11に示すプログラムIDリスト54の第1エントリにヒットし、プログラムID検索手段45は、第1エントリのプログラムID「10000」を取得して、これをプログラムID生成手段44に渡す。この場合、プログラムID生成手段44は、プログラムIDを生成することなく、受け取ったプログラムIDを、メモリ利用情報検索手段41に渡す。
メモリ利用情報検索手段41は、プログラムID生成手段44にて作成されたプログラムID「10000」、要求元メモリアドレス「0xA000」、及び、要求メモリサイズ「0x1000」を検索キーとしてメモリ利用情報51を検索し、メモリ利用情報内に該当するエントリがあるか否かを調べる。検索では、図4の第1エントリが検索キーにヒットし、メモリ確保手段42は、ヒットしたエントリに記載されている物理メモリアドレス「0x10000」から要求メモリサイズ分「0x1000」のメモリ領域を、仮想マシンA20からも利用できるよう共有化処理を行う。
図12は、本発明の第4実施形態のメモリ共有システムの構成を示している。本実施形態のメモリ共有システム100cは、実計算機10のデータ処理装置40が、プログラム実行手段C47及びプログラム属性取得手段C48を有し、実計算機10と仮想計算機A20とで、メモリ50のロードされたプログラムを共有する点で、図8に示す第3実施形態のメモリ共有システム100bと相違する。プログラム実行手段C47及びプログラム属性取得手段C48の動作は、それぞれ仮想計算機A20内のプログラム実行手段A211及びプログラム属性取得手段A212の動作と同様である。
記憶装置60は、実計算機10が使用する外部記憶装置であり、内部には、実計算機10が使用するファイル類が格納されている。図12では、プログラムファイルC61のみを図示しているが、この他にも、システム設定ファイルやドキュメントファイルなどの実計算機10上で使用される様々なファイルが格納されている。メモリ50は、実計算機用記憶部55を有する。実計算機用記憶部55は、実計算機10が使用するメモリ領域であり、実計算機10がメモリ確保要求を発生したときに使用される領域である。
図13は、メモリ共有システム100cの動作手順を示している。本実施形態のメモリ共有システム100cの動作(ステップD1〜D11)は、第3実施形態のメモリ共有システム100bにおけるプログラム実行手段B311及びプログラム属性取得手段B312を、それぞれプログラム実行手段C47及びプログラム属性取得手段C48に置き換えて動作させる点、及び、仮想記憶装置B32を記憶装置60に置き換えた点を除いて、第3実施形態における動作(図9のステップC1〜C11)と同様である。このような動作により、仮想計算機A用記憶部52と実計算機用記憶部55との間で、メモリにロードされたプログラムファイルを共有できる。
本実施形態では、メモリ利用情報検索手段41が、プログラムID、要求元メモリアドレス、及び、要求メモリサイズを検索キーとしてメモリ利用情報記憶部51を検索し、該当するエントリがあった場合には、メモリ確保手段42が、既に確保されているメモリ領域の共有処理を行う。このようにすることで、仮想計算機A20と実計算機10間で同じプログラムファイルを実行したときに、メモリにロードされるプログラムファイルを共有することができる。特に、仮想計算機A20と実計算機10とで同種のOSが実行されている場合、仮想計算機A20と実計算機10上で同じプログラムを実行すると、プログラムID、要求元メモリアドレス、及び、要求メモリサイズが同じであることが多く、プログラムファイルの共有が促されることになる。その他の効果は、第3実施形態と同様である。
以下、実施例を用いて説明する。図14は、第4実施例のメモリ共有システムの構成を示している。第4実施例では、実計算機10は、パーソナルコンピュータであり、メモリ50には、SDRAMを用いる。実計算機10は、Linuxが実行される仮想マシンA(仮想計算機A20)を備えている。仮想マシンA20の構成は、第2実施例と同様である。実計算機10は、メモリ利用情報検索手段41、メモリ確保手段42、メモリ利用情報書込み手段43、プログラムID生成手段44、プログラムID検索手段45、プログラムID書込み手段46、プログラム実行手段C47、プログラム属性取得手段C48として機能する中央演算装置(データ処理装置40)を有している。
SDRAM(メモリ50)には、メモリ利用情報(メモリ利用情報記憶部51)、仮想マシンA用メモリ領域(仮想計算機A用記憶部52)、実計算機用メモリ領域(実計算機用記憶部55)、及び、プログラムIDリスト(プログラムID記憶部54)が確保されている。また、記憶装置60には、実計算機10で使用されるファイル類が格納されている。記憶装置60に格納されるWebサーバプログラムファイル62と、仮想記憶装置A22に格納されるWebサーバプログラムファイル222とは、同じWebサーバのプログラムファイルである。このプログラムファイルは、仮想記憶装置A22及び記憶装置60において、同じディレクトリに置かれており、デバイス番号「2」、iノード番号「100」が割り当てられている。
プログラムIDリスト54は、図11に示すように、プログラムファイルのデバイス番号及びiノード番号と、生成されたプログラムIDとを対応付けて記憶している。また、メモリ利用情報51には、図4に示すように、プログラムID、要求元仮想メモリアドレス、要求メモリサイズ、確保した物理メモリアドレスが記憶されている。図4では、メモリ利用情報として2つのエントリが登録されているが、これらは、実計算機10上で実行されるWebサーバに割り当てたメモリ領域を示しているものとする。
仮想マシンA20でWebサーバプログラムファイル222を実行するときにページフォルトが発生し、Webサーバプログラムの仮想アドレス空間0xA000に、0x1000のサイズのメモリを割り当てる必要がある場合を考える。この場合、プログラム実行手段A211は、Webサーバプログラムの仮想アドレス空間でメモリ(ページ)を割り当てる必要がある仮想メモリアドレス「0xA000」と、必要なメモリサイズ「0x1000」とを求めた上で、メモリ確保要求を出す。プログラム属性取得手段A212は、メモリ確保要求を出したプログラムのプログラムファイル特定情報として、デバイス番号「2」とiノード番号「100」とを取得し、プログラムファイルの属性情報を取得する。
プログラムID検索手段45は、プログラム属性取得手段A212からプログラムファイル特定情報(仮想計算機「A」、デバイス番号「2」、iノード番号「100」)を受け取り、これを検索キーとして、プログラムIDリスト54を検索する。この検索キーは、図11に示すプログラムIDリスト54の第1エントリにヒットし、プログラムID検索手段45は、第1エントリのプログラムID「10000」を取得して、これをプログラムID生成手段44に渡す。この場合、プログラムID生成手段44は、自身でプログラムIDを生成することなく、受け取ったプログラムIDを、メモリ利用情報検索手段41に渡す。
メモリ利用情報検索手段41は、プログラムID生成手段44にて作成されたプログラムID「10000」、要求元メモリアドレス「0xA000」、及び、要求メモリサイズ「0x1000」を検索キーとしてメモリ利用情報51を検索し、メモリ利用情報内に該当するエントリがあるか否かを調べる。検索では、図4の第1エントリが検索キーにヒットする。メモリ確保手段42は、ヒットしたエントリに記載されている物理メモリアドレス「0x10000」から要求メモリサイズ分「0x1000」のメモリ領域を、仮想マシンA20からも利用できるよう共有化処理を行う。
図15に、本発明の第5実施形態のメモリ共有システムの構成を示す。本実施形態のメモリ共有システム100dは、第1〜第3実施形態と同様に、仮想データ処理装置A21、仮想記憶装置A22、仮想データ処理装置B31、仮想記憶装置B32、データ処理装置40、及び、メモリ50を備える。メモリ共有プログラムA70は、仮想データ処理装置A21上で実行され、メモリ共有プログラムB80は、仮想データ処理装置B31上で実行される。仮想データ処理装置A21及び仮想データ処理装置B31は、それぞれプログラム制御により、第1〜第3実施形態における仮想データ処理装置A21及び仮想データ処理装置B31による処理と同一の処理を実行する。
メモリ共有プログラムC90は、データ処理装置40上で実行される。データ処理装置40は、メモリ共有プログラムC90に基づいて動作し、第1〜第3実施形態におけるデータ処理装置40と同一の処理を行う。メモリ50に、メモリ利用情報記憶部51、仮想計算機A用記憶部52、仮想計算機B用記憶部53、及び、プログラムID記憶部54を生成する。なお、仮想データ処理装置A21及び仮想データ処理装置B31は、何れも実体は実計算機10上のデータ処理装置40の一部である。従って、メモリ共有プログラムA70及びメモリ共有プログラムB80は、データ処理装置40上に仮想的に実現されたデータ処理装置にて実行されるプログラムである。また、仮想記憶装置A22及び仮想記憶装置B32は、何れも実体は実計算機10上の記憶装置に含まれるデータである。
図16は、本発明の第6実施形態のメモリ共有システムの構成を示す。本実施形態のメモリ共有システム100eは、第4実施形態と同様に、仮想データ処理装置A21、仮想記憶装置A22、データ処理装置40、メモリ50、及び、記憶装置60とを備える。メモリ共有プログラムA70は、仮想データ処理装置A21上で実行される。仮想データ処理装置A21は、プログラム制御により、第4実施形態の仮想データ処理装置A21による処理と同一の処理を実行する。メモリ共有プログラムC90は、データ処理装置40上で実行される。データ処理装置40は、プログラム制御により、第4実施形態のデータ処理装置40による処理と同一の処理を実行する。また、メモリ50に、メモリ利用情報記憶部51、仮想計算機A用記憶部52、プログラムID記憶部54、及び、実計算機用記憶部55を生成する。
以上、本発明をその好適な実施形態に基づいて説明したが、本発明のメモリ共有システム、方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
本発明は、1台の実計算機上で複数のOSが動作する仮想計算機環境において、異なるOS間でメモリ領域を共有するためのメモリ共有システムや、メモリ共有システムをコンピュータに実現するためのプログラムといった用途に適用できる。
本発明の第1実施形態のメモリ共有システムの構成を示すブロック図。 第1実施形態のメモリ共有システムの動作手順を示すフローチャート。 第1実施例のメモリ共有システムの構成を示すブロック図。 メモリ利用情報の具体例を示すテーブル。 本発明の第2実施形態のメモリ共有システムの構成を示すブロック図。 第2実施形態のメモリ共有システムの動作手順を示すフローチャート。 第2実施例のメモリ共有システムの構成を示すブロック図。 本発明の第3実施形態のメモリ共有システムの構成を示すブロック図。 第3実施形態のメモリ共有システムの動作手順を示すフローチャート。 第3実施例のメモリ共有システムの構成を示すブロック図。 プログラムIDリストの具体例を示すテーブル。 本発明の第4実施形態のメモリ共有システムの構成を示すブロック図。 第4実施形態のメモリ共有システムの動作手順を示すフローチャート。 第4実施例のメモリ共有システムの構成を示すブロック図。 本発明の第5実施形態のメモリ共有システムの構成を示すブロック図。 本発明の第6実施形態のメモリ共有システムの構成を示すブロック図。
符号の説明
10:実計算機(パーソナルコンピュータ)
20、30:仮想計算機(仮想マシン)
21、31:仮想データ処理装置(仮想中央演算装置)
22、32:仮想記憶装置
40:データ処理装置(中央演算装置)
41:メモリ利用情報検索手段
42:メモリ確保手段
43:メモリ利用情報書込み手段
44:プログラムID生成手段
45:プログラムID検索手段
46:プログラムID書込み手段
50:メモリ(SDRAM)
51:メモリ利用情報記憶部(メモリ利用情報)
52、53:仮想計算機用記憶部(仮想マシン用メモリ領域)
54:プログラムID記憶部(プログラムIDリスト)
55:実計算機用記憶部(実計算機用メモリ領域)
60:記憶装置
70、80、90:メモリ共有プログラム
100:メモリ共有システム
47、211、311:プログラム実行手段
48、212、312:プログラム属性取得手段
213、313:プログラムID生成手段
61、221、321:プログラムファイル
62、222、322:Webサーバプログラムファイル

Claims (25)

  1. 使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを、複数の計算機間で共有するメモリ共有システムであって、
    一の計算機から、前記メモリへロードを要求されたプログラムを特定する情報、前記メモリへのロードを要求したプログラム内の前記メモリへのロードが必要になったメモリアドレスを示す要求元メモリアドレス、及び、前記要求されたプログラムのメモリサイズを示す要求メモリサイズを含むメモリ確保要求が発生すると、前記メモリにロード済みのプログラムについて、当該プログラムを一意に識別するためのプログラムID、当該プログラムのロードを要求したプログラム内の前記要求元メモリアドレス、及び、当該プログラムの前記要求メモリサイズと、当該プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けたエントリを記憶するメモリ利用情報記憶部を参照して、前記要求されたプログラムに対応する前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズを検索キーとして、前記検索キーと一致するエントリが存在するか否かを判断するメモリ利用情報検索手段と、
    前記メモリ利用情報検索手段にて前記検索キーと一致するエントリが存在すると判断されると、当該エントリに対応する前記プログラムがロードされたメモリ領域を複数の計算機間で共有化する処理を行うメモリ確保手段とを備え
    前記メモリ確保手段は、前記メモリ利用情報検索手段にて前記検索キーと一致するエントリが存在しないと判断されると、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記要求されたプログラムをロードし、メモリ利用情報書込み手段により、前記要求されたプログラムの前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズと、前記要求されたプログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納することを特徴とするメモリ共有システム。
  2. 前記メモリ確保手段は、前記メモリ利用情報検索手段にて前記検索キーと一致するエントリが存在すると判断されると、当該エントリに記憶された前記先頭メモリアドレスから前記要求メモリサイズ分のメモリ領域を、前記メモリ確保要求を発生した計算機からも参照可能となるようにメモリ共有化処理をする、請求項に記載のメモリ共有システム。
  3. 前記計算機が、プログラムの実行を行い、プログラムファイルをメモリにロードする必要が生じると、前記要求元メモリアドレス及び前記要求メモリサイズを求めた上で、前記メモリ確保要求を発生するプログラム実行手段を備えている、請求項に記載のメモリ共有システム。
  4. 前記要求されたプログラムの属性情報を取得する属性情報取得手段と、前記属性情報に基づいて、前記プログラムIDを生成するプログラムID生成手段とを備えている、請求項1に記載のメモリ共有システム。
  5. 前記属性情報取得手段は、前記計算機内で前記プログラムのプログラムファイルを一意に識別するために割り当てられた識別子を含むプログラムファイル特定情報に基づいて前記プログラムファイルを特定し、該プログラムファイルの属性情報を取得する、請求項に記載のメモリ共有システム。
  6. 前記メモリ確保要求発生元の計算機の識別子と、前記プログラムファイル特定情報と、前記プログラムIDとを対応付けて記憶するプログラムID記憶部を参照し、前記属性情報取得手段にて特定されたプログラムファイルに対応するプログラムIDが記憶されているか否かを判断するプログラムID検索手段を更に備え、
    前記プログラムID生成手段は、前記プログラムID検索手段にて前記属性情報取得手段が特定したプログラムファイルに対応するプログラムIDが記憶されていると判断されると、前記プログラムIDの生成に代えて、前記プログラムID記憶部に記憶されたプログラムIDを取得する、請求項に記載のメモリ共有システム。
  7. 前記プログラムID生成手段は、前記プログラムID検索手段にて前記属性情報取得手段が特定したプログラムファイルに対応するプログラムIDが記憶されていないと判断されると、プログラムID書込み手段により、前記属性情報に基づいて生成したプログラムIDを、前記計算機の識別子及び前記プログラムファイル特定情報と対応付けて前記プログラムID記憶部に格納する、請求項に記載のメモリ共有システム。
  8. 前記計算機が、実計算機上で実行される複数の仮想計算機を含み、前記メモリ確保手段は、前記プログラムがロードされた、一の仮想計算機に対応したメモリ領域を、複数の仮想計算機間で共有化する処理を行う、請求項1に記載のメモリ共有システム。
  9. 前記計算機が、実計算機、及び、実計算機上で実行される仮想計算機を含み、前記メモリ確保手段は、前記プログラムがロードされた、前記実計算機又は仮想計算機に対応したメモリ領域を、前記実計算機と前記仮想計算機との間で共有化する処理を行う、請求項1に記載のメモリ共有システム。
  10. 使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを複数の計算機間で共有する、コンピュータにおけるメモリ共有方法であって、
    前記コンピュータが、一の計算機から、前記メモリへロードを要求されたプログラムを特定する情報、前記メモリへのロードを要求したプログラム内の前記メモリへのロードが必要になったメモリアドレスを示す要求元メモリアドレス、及び、前記要求されたプログラムのメモリサイズを示す要求メモリサイズを含むメモリ確保要求が発生すると、前記メモリにロード済みのプログラムについて、当該プログラムを一意に識別するためのプログラムID、当該プログラムのロードを要求したプログラム内の前記要求元メモリアドレス、及び、当該プログラムの前記要求メモリサイズと、当該プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けたエントリを記憶するメモリ利用情報記憶部を参照して、前記要求されたプログラムに対応する前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズを検索キーとして、前記検索キーと一致するエントリが存在するか否かを判断するメモリ利用情報検索ステップと、
    前記コンピュータが、前記メモリ利用情報検索ステップで前記検索キーと一致するエントリが存在すると判断すると、当該エントリに対応する前記プログラムがロードされたメモリ領域を複数の計算機間で共有化する処理を行うメモリ確保ステップとを有し、
    前記コンピュータは、前記メモリ利用情報検索ステップで前記検索キーと一致するエントリが存在しないと判断すると、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記要求されたプログラムをロードし、前記要求されたプログラムの前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズと、前記要求されたプログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納することを特徴とするメモリ共有方法。
  11. 前記メモリ確保ステップでは、前記メモリ利用情報検索ステップで前記検索キーと一致するエントリが存在すると判断すると、当該エントリに記憶された前記先頭メモリアドレスから前記要求メモリサイズ分のメモリ領域を、前記メモリ確保要求を発生した計算機からも参照可能となるようにメモリ共有化処理をする、請求項10に記載のメモリ共有方法。
  12. 前記コンピュータが、前記要求されたプログラムの属性情報を取得し、該取得した属性情報に基づいて、前記プログラムIDを生成するステップを備えている、請求項10に記載のメモリ共有方法。
  13. 前記属性情報を取得するステップでは、前記コンピュータは、前記計算機内で前記プログラムのプログラムファイルを一意に識別するために割り当てられた識別子を含むプログラムファイル特定情報に基づいて前記プログラムファイルを特定し、該プログラムファイルの属性情報を取得する、請求項12に記載のメモリ共有方法。
  14. 前記コンピュータが、前記メモリ確保要求発生元の計算機の識別子と、前記プログラムファイル特定情報と、前記プログラムIDとを対応付けて記憶するプログラムID記憶部を参照し、前記特定したプログラムファイルに対応するプログラムIDが記憶されているか否かを判断するステップを更に有し、
    前記コンピュータは、前記プログラムIDが前記メモリ利用情報記憶部に記憶されているか否かを判断するステップで、前記特定したプログラムファイルに対応するプログラムIDが記憶されていると判断すると、前記プログラムIDを生成するステップで前記プログラムIDを生成するのに代えて、前記プログラムID記憶部に記憶されたプログラムIDを取得する、請求項13に記載のメモリ共有方法。
  15. 前記コンピュータは、前記プログラムIDが前記プログラムID記憶部に記憶されているか否かを判断するステップで、前記特定したプログラムファイルに対応するプログラムIDが記憶されていないと判断すると、前記属性情報に基づいてプログラムIDを生成し、該生成したプログラムIDと、前記計算機識別子及び前記プログラムファイル特定情報とを対応付けて前記プログラムID記憶部に格納する、請求項14に記載のメモリ共有方法。
  16. 前記計算機が、前記コンピュータ上で実行される複数の仮想計算機を含み、前記メモリ確保ステップでは、前記コンピュータは、前記プログラムがロードされた、一の仮想計算機に対応したメモリ領域を、複数の仮想計算機間で共有化する処理を行う、請求項10に記載のメモリ共有方法。
  17. 前記計算機が、前記コンピュータ自身、及び、前記コンピュータ上で実行される仮想計算機を含み、前記メモリ確保ステップでは、前記コンピュータは、前記プログラムがロードされた、前記コンピュータ又は前記仮想計算機に対応したメモリ領域を、前記コンピュータと前記仮想計算機との間で共有化する処理を行う、請求項10に記載のメモリ共有方法。
  18. コンピュータで、使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを複数の計算機間で共有する処理を実行させるプログラムであって、前記コンピュータに、
    一の計算機から、前記メモリへロードを要求されたプログラムを特定する情報、前記メモリへのロードを要求したプログラム内の前記メモリへのロードが必要になったメモリアドレスを示す要求元メモリアドレス、及び、前記要求されたプログラムのメモリサイズを示す要求メモリサイズを含むメモリ確保要求が発生すると、前記メモリにロード済みのプログラムについて、当該プログラムを一意に識別するためのプログラムID、当該プログラムのロードを要求したプログラム内の前記要求元メモリアドレス、及び、当該プログラムの前記要求メモリサイズと、当該プログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けたエントリを記憶するメモリ利用情報記憶部を参照して、前記要求されたプログラムに対応する前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズを検索キーとして、前記検索キーと一致するエントリが存在するか否かを判断するメモリ利用情報検索処理と、
    前記メモリ利用情報検索処理で前記検索キーと一致するエントリが存在すると判断すると、当該エントリに対応する前記プログラムがロードされたメモリ領域を複数の計算機間で共有化するメモリ確保処理と
    前記メモリ利用情報検索処理で前記検索キーと一致するエントリが存在しないと判断すると、前記コンピュータに、前記メモリ確保要求を発生した計算機が使用すべきメモリ領域に前記要求されたプログラムをロードし、前記要求されたプログラムの前記プログラムID、前記要求元メモリアドレス、及び、前記要求メモリサイズと、前記要求されたプログラムをロードしたメモリ領域の先頭メモリアドレスとを対応付けて、前記メモリ利用情報記憶部に格納する処理とを実行させることを特徴とするプログラム。
  19. 前記メモリ確保処理では、前記メモリ利用情報検索処理で前記検索キーと一致するエントリが存在すると判断すると、当該エントリに記憶された前記先頭メモリアドレスから前記要求メモリサイズ分のメモリ領域を、前記メモリ確保要求を発生した計算機からも参照可能となるようにメモリ共有化処理をする、請求項18に記載のプログラム。
  20. 前記コンピュータに、前記要求されたプログラムの属性情報を取得し、該取得した属性情報に基づいて、前記プログラムIDを生成する処理を更に実行させる、請求項18に記載のプログラム。
  21. 前記属性情報の取得では、前記計算機内で前記プログラムのプログラムファイルを一意に識別するために割り当てられた識別子を含むプログラムファイル特定情報に基づいて前記プログラムファイルを取得し、該プログラムファイルの属性情報を取得する、請求項20に記載のプログラム。
  22. 前記コンピュータに、前記メモリ確保要求発生元の計算機と、前記プログラムファイル特定情報と、前記プログラムIDとを対応付けて記憶するプログラムID記憶部を参照し、前記特定したプログラムファイルに対応するプログラムIDが記憶されているか否かを判断する処理を更に実行させ、
    前記プログラムIDが前記メモリ利用情報記憶部に記憶されているか否かを判断する処理で、前記特定したプログラムファイルに対応するプログラムIDが記憶されていると判断されると、前記コンピュータに、前記プログラムIDを生成する処理に代えて、前記プログラムID記憶部に記憶されたプログラムIDを取得する処理を実行させる、請求項21に記載のプログラム。
  23. 前記プログラムIDが前記プログラムID記憶部に記憶されているか否かを判断する処理で、前記特定したプログラムファイルに対応するプログラムIDが記憶されていないと判断されると、前記コンピュータに、前記属性情報に基づいてプログラムIDを生成し、該生成したプログラムIDと、前記プログラムファイル特定情報とを対応付けて前記プログラムID記憶部に格納する処理を実行させる、請求項22に記載のプログラム。
  24. 前記計算機が、前記コンピュータ上で実行される複数の仮想計算機を含み、前記メモリ確保処理では、前記プログラムがロードされた、一の仮想計算機に対応したメモリ領域を、複数の仮想計算機間で共有化する処理を行う、請求項18に記載のプログラム。
  25. 前記計算機が、前記コンピュータ自身、及び、前記コンピュータ上で実行される仮想計算機を含み、前記メモリ確保処理では、前記プログラムがロードされた、前記コンピュータ又は前記仮想計算機に対応したメモリ領域を、前記コンピュータと前記仮想計算機との間で共有化する処理を行う、請求項18に記載のプログラム。
JP2007059889A 2007-03-09 2007-03-09 メモリ共有システム、方法、及び、プログラム Active JP4952308B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007059889A JP4952308B2 (ja) 2007-03-09 2007-03-09 メモリ共有システム、方法、及び、プログラム
US12/042,927 US8275948B2 (en) 2007-03-09 2008-03-05 Memory sharing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007059889A JP4952308B2 (ja) 2007-03-09 2007-03-09 メモリ共有システム、方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2008225620A JP2008225620A (ja) 2008-09-25
JP4952308B2 true JP4952308B2 (ja) 2012-06-13

Family

ID=39742800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007059889A Active JP4952308B2 (ja) 2007-03-09 2007-03-09 メモリ共有システム、方法、及び、プログラム

Country Status (2)

Country Link
US (1) US8275948B2 (ja)
JP (1) JP4952308B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9185160B2 (en) * 2007-02-12 2015-11-10 Oracle America, Inc. Resource reservation protocol over unreliable packet transport
US8234655B2 (en) * 2008-07-29 2012-07-31 International Business Machines Corporation Detection of duplicate memory pages across guest operating systems on a shared host
US9952845B2 (en) * 2008-08-29 2018-04-24 Red Hat, Inc. Provisioning machines having virtual storage resources
JP5504651B2 (ja) * 2009-03-06 2014-05-28 日本電気株式会社 仮想マシンシステム、情報処理装置、リソース管理方法、プログラム及び記録媒体
US20110078303A1 (en) * 2009-09-30 2011-03-31 Alcatel-Lucent Usa Inc. Dynamic load balancing and scaling of allocated cloud resources in an enterprise network
US8489799B2 (en) * 2009-12-13 2013-07-16 International Business Machines Corporation Efficient loading of data into memory of a computing system
US9129124B2 (en) * 2012-04-12 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamic provisioning of virtual systems
CN107038128B (zh) * 2016-02-03 2020-07-28 华为技术有限公司 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US20220308770A1 (en) * 2021-03-23 2022-09-29 Samsung Electronics Co., Ltd. Secure applications in computational storage devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0327439A (ja) * 1989-06-23 1991-02-05 Nec Corp プログラムの共有モジュール管理方式
JPH04227547A (ja) * 1990-05-11 1992-08-17 Seiko Epson Corp 情報処理装置
JPH0425970A (ja) * 1990-05-22 1992-01-29 Nec Software Ltd 名標登録検索方式
JPH08328883A (ja) * 1995-05-30 1996-12-13 Nec Corp システムプログラム呼び出し方法
JPH11249916A (ja) 1998-03-03 1999-09-17 Fujitsu Ltd メモリ管理装置および記録媒体
JP2003280912A (ja) * 2002-03-22 2003-10-03 Canon Inc 情報処理システムおよび情報処理方法
JP2004258698A (ja) * 2003-02-24 2004-09-16 Hitachi Ltd マルチos計算機システムの制御方法
JP2005196602A (ja) * 2004-01-09 2005-07-21 Hitachi Ltd 無共有型データベース管理システムにおけるシステム構成変更方法
JP4497993B2 (ja) * 2004-04-16 2010-07-07 株式会社日立製作所 電子配付物の配付制御システム及び方法
JP4541811B2 (ja) * 2004-09-13 2010-09-08 キヤノン株式会社 画像処理装置、画像処理方法およびプログラム
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment

Also Published As

Publication number Publication date
JP2008225620A (ja) 2008-09-25
US8275948B2 (en) 2012-09-25
US20080222366A1 (en) 2008-09-11

Similar Documents

Publication Publication Date Title
JP4952308B2 (ja) メモリ共有システム、方法、及び、プログラム
US11467967B2 (en) Managing a distributed cache in a cloud-based distributed computing environment
US11461027B2 (en) Deduplication-aware load balancing in distributed storage systems
US8095772B2 (en) Large memory pages for shared libraries
Carstoiu et al. Hadoop hbase-0.20. 2 performance evaluation
US20160364407A1 (en) Method and Device for Responding to Request, and Distributed File System
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
KR20120068454A (ko) 원격 페이지 폴트 처리 장치 및 그 방법
WO2014171223A1 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2018516409A (ja) ファイルストレージにおけるインデックス付け実施方法及びシステム
US11016886B2 (en) Multi-ring shared, traversable, and dynamic advanced database
US11681653B2 (en) Namespace representation and enhanced browsability for replicated file systems
JPWO2009066611A1 (ja) 仮想マシン向けデータ格納システム、データ格納方法およびデータ格納用プログラム
US9934248B2 (en) Computer system and data management method
US9135169B2 (en) Method, program and system for generating hash codes to identify objects
CN107832097B (zh) 数据加载方法及装置
JP6418419B2 (ja) ハードディスクがアプリケーションコードを実行するための方法および装置
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
JP5428455B2 (ja) 仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラム
US10628391B1 (en) Method and system for reducing metadata overhead in a two-tier storage architecture
JP5692829B1 (ja) 仮想ディスクイメージを処理するシステム、クライアント端末、及び方法
KR101861851B1 (ko) 저장 장치의 메모리 컨트롤러가 수행하는 청크 할당 방법 및 메모리 컨트롤러
US20160085771A1 (en) Information processing device, information procesing method, and program
US8234260B1 (en) Metadata management for scalable process location and migration
WO2015194027A1 (ja) 計算機システム、データ更新方法、および仮想化サーバ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100218

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20100305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110822

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120227

R150 Certificate of patent or registration of utility model

Ref document number: 4952308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150323

Year of fee payment: 3