JP2011022790A - 情報処理装置及び情報処理プログラム - Google Patents

情報処理装置及び情報処理プログラム Download PDF

Info

Publication number
JP2011022790A
JP2011022790A JP2009167146A JP2009167146A JP2011022790A JP 2011022790 A JP2011022790 A JP 2011022790A JP 2009167146 A JP2009167146 A JP 2009167146A JP 2009167146 A JP2009167146 A JP 2009167146A JP 2011022790 A JP2011022790 A JP 2011022790A
Authority
JP
Japan
Prior art keywords
memory
memory capacity
address
tlb
physical
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
JP2009167146A
Other languages
English (en)
Other versions
JP5531476B2 (ja
Inventor
Hiroshi Higuchi
博史 樋口
Yuuki Doi
祐希 土樋
Masashi Ono
真史 小野
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2009167146A priority Critical patent/JP5531476B2/ja
Priority to US12/715,518 priority patent/US8352698B2/en
Priority to CN201010138407.2A priority patent/CN101957801B/zh
Publication of JP2011022790A publication Critical patent/JP2011022790A/ja
Application granted granted Critical
Publication of JP5531476B2 publication Critical patent/JP5531476B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制するようにした情報処理装置を提供することを目的としている。
【解決手段】情報処理装置の記憶手段は、プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶し、メモリ容量設定手段は、プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定する。
【選択図】図1

Description

本発明は、情報処理装置及び情報処理プログラムに関する。
コンピュータが実装している主メモリ(実メモリ)よりも大きな容量のメモリ空間を利用できるようにするための技術として、仮想記憶がある。仮想記憶上に読み込んだプログラムを実行する際には、仮想記憶のアドレス(仮想アドレス)を主メモリのアドレス(実アドレス)に変換する必要がある。
これに関連する技術として、例えば、特許文献1には、可変長ページを用いてフォールトの発生を抑制し、プログラムの実行速度を向上させることを課題とし、ユーザープログラムが参照した仮想アドレスがTLBにないとき、TLB不在ページ検出手段が起動され、TLB不在ページ検出手段はTLB不在ページ置き換え手段を起動し、TLB不在ページ置き換え手段はページ配置参照手段を起動し、ページ配置参照手段によりページ配置記憶部からユーザープログラムが参照した仮想アドレスに対応するページ情報が取得され、TLBに格納され、これにより、ユーザープログラムは、前記仮想アドレスへの参照が可能となり、また、ユーザープログラムは、必要に応じて、ページ分割手段、ページ結合手段に指令してページの分割及び結合を行うことが開示されている。
また、例えば、特許文献2には、可変ページサイズを実装し得る改善されたシステムを提供することを課題とし、複数のページテーブルエントリを含むページテーブルであって、その各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含むページテーブルと、対応するメモリページサイズ情報を含む複数のページテーブルエントリの情報をキャッシュするように適応されたTLBと、メモリ管理ソフトウェアであって、該ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズの1つ以上のページテーブルエントリに統合するために、ページテーブルにおける変更に応答し、統合された隣接するページテーブルエントリに対応する、TLBのエントリをさらにアップデートするメモリ管理ソフトウェアとを備える、処理システムが開示されている。
また、例えば、特許文献3には、TLBミス発生回数を低減し、プロセスの実行速度とリアルタイム性を向上させることを課題とし、論理ページ番号と物理ページ番号の対応からなるアドレス変換情報を記憶するTLBを有したコンピュータにおいて、前記TLB上に記憶されていない論理アドレスの参照を行ってTLBミスが発生した場合、TLBミスを発生させたプロセスの優先順位に基づいて、TLBに設定するアドレス変換情報の数を変動させるTLBエントリ設定手段を有することが開示されている。
特開2000−276404号公報 特開2009−020881号公報 特開平11−238015号公報
本発明は、プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制するようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1の発明は、プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段を具備することを特徴とする情報処理装置である。
請求項2の発明は、前記メモリ容量設定手段が用いるプロセスが必要とするメモリ容量として、該プロセスの実行時に動的に割り当てられる動的メモリのメモリ容量又は複数のプロセス間で用いられる共有メモリのメモリ容量を含んでいることを特徴とする請求項1に記載の情報処理装置である。
請求項3の発明は、前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、プロセスの実行時に動的に割り当てられる動的メモリ又は複数のプロセス間で用いられる共有メモリのメモリ容量を必要としたときに、該動的メモリ又は該共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定することを特徴とする請求項1に記載の情報処理装置である。
請求項4の発明は、前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、前記動的メモリ又は前記共有メモリとして確保したメモリ容量が不足した場合に、該プロセスから要求のあった動的メモリ又は共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定することを特徴とする請求項2に記載の情報処理装置である。
請求項5の発明は、前記メモリ容量設定手段は、前記仮想アドレス又は前記物理アドレスが前記決定したメモリ容量では設定できない場合に、再度該メモリ容量を決定することを特徴とする請求項1から4のいずれか一項に記載の情報処理装置である。
請求項6の発明は、コンピュータを、プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段として機能させることを特徴とする情報処理プログラムである。
請求項1記載の情報処理装置によれば、プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
請求項2記載の情報処理装置によれば、動的メモリ又は共有メモリについても、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
請求項3記載の情報処理装置によれば、プロセスを実行可能な状態にした後であっても、動的メモリ又は共有メモリについて、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
請求項4記載の情報処理装置によれば、予め確保した動的メモリ又は共有メモリのメモリ容量が不足した場合に、その動的メモリ又は共有メモリについて、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
請求項5記載の情報処理装置によれば、仮想アドレス又は物理アドレスが設定できなくなってしまう状態を抑制することができる。
請求項6記載の情報処理プログラムによれば、プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
本実施の形態を実現させるハードウェアの構成例についての概念的なモジュール構成図である。 本実施の形態の構成例についての概念的なモジュール構成図である。 メモリにおける物理空間と仮想空間との関連例を示す説明図である。 TLBのデータ構成例を示す説明図である。 TLBミス例外の処理例を示す説明図である。 TLBミス例外の処理におけるTLBの変化例を示す説明図である。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
まず、本実施の形態を説明する前に、その前提又は本実施の形態を利用することとなる仮想記憶について説明する。なお、この説明は、本実施の形態の理解を容易にすることを目的とするものである。
仮想記憶とは、コンピュータシステムの利用者(プロセス)にとって利用可能な主記憶装置とみなしうる記憶空間であって、仮想アドレスが実アドレスへ写像される。
プロセスを用いたマルチプロセスシステムでは、プロセスごとに独立した仮想メモリ空間を生成する。この仮想メモリ空間は、物理的に存在する物理メモリ空間と対応が取られ、プロセスとして動作するアプリケーションは仮想メモリ空間のアドレスのみを使用して動作する。なお、プロセスとは、オペレーティングシステム(OS:Operating System)から見たプログラムの実行単位をいう。つまり、OSは、プロセス単位でプログラムの実行を制御する。
この仮想記憶方式は、以下のことを実現するために用いられる。
(1)それぞれのプロセスは異なるメモリ空間に存在するため、誤って他のプロセスに干渉することを防ぐことができる。また、不正にデータをアクセスしたり、書き換えたりできなくなるため安全性が確保できる。
(2)アプリケーションの開発者は、実際の物理メモリ量やアドレスを意識しないで開発することができる。
一方、プロセス毎に割り当てた仮想空間と対応する物理空間の変換を行う必要がある。プロセスが仮想アドレスに対してアクセスを行うと、何らかの方法でアクセス先のアドレスを物理アドレスに変換しなければならない。また、変換を行うための仮想アドレスと物理アドレスのマッピングテーブルを物理メモリ上で管理する必要がある。このアドレス変換処理とマッピングテーブルの管理はCPUかOS又はその両方で実装されるMMU(Memory Management Unit)が行う必要がある。
一般的には、メモリ変換を効率的に行うためのTLB(Translation Look−aside Buffer)がCPUに用意されている。TLBには仮想アドレスと物理アドレスのマッピング情報が格納されているので、仮想アドレスに対するアクセスが発生するとCPUはTLBの中を検索し物理アドレスへと変換する。
しかし、TLBの物理的な大きさやコスト制約が存在するためすべてのマッピング情報を格納することはできない(例えば、PowerPC(登録商標) 440のTLBは64個分のエントリである)。そのため、検索したい仮想アドレスがTLBに存在しない可能性もある。検索した仮想アドレスがTLBに存在しない場合、CPUは例外(TLB Miss例外)を発生させ、OSに対してTLBを更新するように促す。OSはTLB Miss例外処理の中で、物理メモリ上で管理しているマッピングテーブルから要求された仮想アドレスに対応する物理アドレスを検索しTLBを更新する。例外処理から復帰すると、再度TLBを用いたアドレス変換が行われ、仮想アドレスは物理アドレスへと変換される(図5、図6参照)。
歴史的な経緯から多くのOSはマッピング情報をページと呼ばれる単位(4KB)ごとに管理している。もし仮に2GB分の仮想空間に対して連続アクセスを行った場合、最低でも (2×1024×1024×1024) ÷ (4×1024) = 524288回分のTLB Miss例外が発生する。TLB Miss例外処理はOSによるソフトウェア処理のため、524288回分のオーバーヘッドが生じる。また、実行するプログラム自体も仮想アドレス上で動作するため、プログラム実行のためのアドレス変換処理による追加オーバーヘッドも発生する。これらオーバーヘッドは、直接アプリケーションのパフォーマンスに影響する。
このオーバーヘッドを低減させるためには、単純にページのサイズを大きくすればよい。ページ単位を1MBにすれば、TLB Miss例外の発生を (2×1024×1024×1024) ÷ (1×1024×1024) = 2048回まで低減することができる。しかし、ページサイズを大きくするとメモリ管理の単位が大きくなるためメモリ空間がフラグメント化されたり、使用できない無駄な領域が増えたりする。そのためメモリ量に制限のある組込みシステムでは採用しにくい。また、ほとんどのOSがページ単位を4KBにしていることから、ページ単位が4KBであることを前提に作られているソフトウェアも多数存在する。ページ単位を大幅に変更することはシステム全体に影響があるため品質保証の点でリスクが高い。
また別の改善方法としてCPUのTLBを効率的に使う方法もある。例えば、TLBが仮想アドレスと物理アドレスのマッピング情報以外に、そのマッピング領域のサイズ指定をサポートしている場合、連続した領域のマッピング情報をまとめてひとつのTLBに登録することができる。通常、1ページ分のマッピング情報は1つのTLBに割り当てられる。仮にTLBエントリが64個しかない場合、最大で64ページ分(4KB×64=256KB)しかTLBに登録することができない。しかし、もしTLBに対してより大きなサイズを設定できる場合、連続する領域のページを複数まとめて1つのTLBに登録することでより大きな領域をマップすることができる。仮に256ページ分の領域が連続していれば、1つのTLBで1MB分の空間をマップすることができ、TLBを節約すると共にTLB Miss例外の発生を抑えることができる。
しかし、この手法には制約がある。まずTLBのサイズ指定はCPUのメモリサイズに関する制限により設定できる値が限定されている。例えば、PowerPC(登録商標) 440の場合は、1KB、4KB、16KB、64KB、256KB、1MB、16MB、256MB、1GBから選択できるようになっている。
また、領域の仮想アドレスと物理アドレスは指定したサイズでアライメントされている必要もある。さらにマップする領域は連続領域でなければいけない。そのため、この方法は予めメモリマップが静的に決まっているシステムでないと採用が難しく、メモリマップが動的に非連続領域に対して生成されるプロセスでは効果を保証することができない。特に決定論的(deterministic)性能を求められる組込みシステムでマルチプロセス化を行った場合、この手法では性能の予測を保証することができない。
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能にほぼ一対一に対応しているが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。また、管理という用語を用いるが、これは文脈に応じて、制御する、マネジメントする、制御又はマネジメントするためのデータを記憶するの意で用い、その役割又は動作をさす。
以下、OSとして、組み込み系のOS、より具体的にはページング処理(実行に必要なプログラムやデータが主記憶装置上に存在しない場合に、主記憶装置上に存在するプログラムやデータと、補助記憶装置上にある必要なプログラムやデータの入れ替えを行う処理)を行っていないOSを主に例示して説明する。
本実施の形態である情報処理装置は、動的にメモリ空間を生成するマルチプロセス環境において、TLBを用いたMMUに関するものであって、ハードウェアの構成例は、図1に示すように、CPU110、物理メモリ120、I/O空間130、ROM140を有しており、これらは、バス190を介して接続されている。
メモリ空間として、0x8_0000_0000から0x8_1FFF_FFFFまでに物理メモリ120、0x2_E000_0000から0x2_E01F_FFFFまでにI/O空間130、0x7_F000_0000から0x7_FFFF_FFFFまでにROM140を割り当てている。なお、「0x」は以下に続く数値が16進数の表記であることを表しており、16進数の4桁ごとに「_」を挿入している。
CPU110は、キャッシュ112、TLB114、MMU116を有している。
キャッシュ112は、CPU110と物理メモリ120等との間でデータの転送効率を向上させるために用いられる。
TLB114は、プロセスを一意に識別するプロセス識別子と、そのプロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、その仮想アドレスに対応する物理アドレスと、そのプロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶装置である。例えば、図4に例示するTLB400を記憶する。
図4は、TLB400のデータ構成例を示す説明図である。ここでは、エントリ数として64個の場合の例を示す。
TLB400は、エントリ番号欄402、仮想アドレス欄404、物理アドレス欄406、プロセスID欄408、サイズ欄410、属性欄412を有している。
エントリ番号欄402は、そのTLB400内で一意にエントリを識別するエントリ番号を記憶する。
仮想アドレス欄404は、プロセスにおける仮想アドレスを記憶する。
物理アドレス欄406は、その仮想アドレスに対応する物理メモリ120等のアドレスを記憶する。例えば、図4に示すように、エントリ番号0、60等は物理メモリ120に割り当てられ、エントリ番号1、2はI/O空間130に割り当てられる。
プロセスID欄408は、そのTLB400を利用しているOS下で、一意にプロセスを識別するプロセスIDを記憶し、そのプロセスは仮想アドレス欄404で記憶されている仮想アドレスを用いて動作する。
サイズ欄410は、その仮想アドレスが物理アドレスに割り当てられるサイズを記憶する。つまり、仮想アドレス欄404、物理アドレス欄406に記憶されている仮想アドレスと物理アドレスを先頭アドレスとしてそのサイズ分の連続領域が割り当てられる。
属性欄412は、その割り当てたメモリに関する属性を記憶する。例えば、具体的には、キャッシュ112が利用されるか否か、そのメモリに対してのスーパーバイザーのアクセス権(読み込み(R)、書き込み(W)、実行(E))、そのメモリに対してのユーザーのアクセス権(読み込み(R)、書き込み(W)、実行(E))等を記憶する。例えば、図4に示すように、エントリ番号0はキャッシュ112が利用され、スーパーバイザーのアクセス権はR/W/Eがあるが、ユーザーのアクセス権はないことを示しており、エントリ番号1、2はキャッシュ112を利用しないで、スーパーバイザーのアクセス権はR/W/Eがあるが、ユーザーのアクセス権はないことを示しており、エントリ番号60はキャッシュ112が利用され、スーパーバイザーのアクセス権はR/W/Eがあり、ユーザーのアクセス権もR/W/Eがあることを示している。なお、図4の例では、プロセスIDが0であるプロセスはスーパーバイザーモードで動作しているプロセスであり、プロセスIDが1、2であるプロセスはユーザーモードで動作しているプロセスである。
MMU116は、仮想アドレスから物理アドレスへのアドレス変換処理とTLB114の管理を行う。なお、以下に説明するMMU116による処理は、MMU116だけでなく、CPU110(OS)とともに行うようにしてもよいし、CPU110(OS)が行うようにしてもよい。
プロセスを実行可能な状態にするときに、そのプロセスが必要とするメモリ容量、物理メモリ120上で未使用の連続した領域のメモリ容量、CPU110によるメモリ容量に関する制限に基づいて決定したメモリ容量をTLB114内のそのプロセスに対応するメモリ容量として設定する。なお、この文では、「メモリ容量」として4種類のものが出現するが、それぞれ次のような意味を有するものである。(1)「そのプロセスが必要とする『メモリ容量』」とは、そのプロセスが使用するメモリ領域のことであり、具体例として、後述するtext/bss/data領域等が該当する。(2)「物理メモリ120上で未使用の連続した領域の『メモリ容量』」とは、本システムにおける物理メモリ120の連続空き容量のことである。(3)「CPU110による『メモリ容量』に関する制限」とは、TLB114に設定できるメモリサイズのことである。(4)「TLB114内のそのプロセスに対応する『メモリ容量』」とは、実際にTLB114に設定するメモリサイズ(サイズ欄410)のことであり、「決定した『メモリ容量』」を設定する。また、「TLB114内のそのプロセスに対応するメモリ容量として設定する」のは、TLB114の1エントリにおけるメモリ容量のことである。
MMU116が用いるプロセスが必要とするメモリ容量として、そのプロセスの実行時に動的に割り当てられる動的メモリのメモリ容量又は複数のプロセス間で用いられる共有メモリのメモリ容量を含んでいるようにしてもよい。つまり、プロセス実行前に予め定められたデータ容量である静的なデータだけでなく、プロセス実行時に必要とするデータ容量が変化する動的データ、共有メモリにも、プロセスを実行可能な状態にするときに対応するものである。例えば、そのプロセスのプログラムの設計者が、プログラム内に動的データ、共有メモリとして予め定められた必要とするメモリ容量を設定しており、MMU116がその設定を解析して、プロセスを実行可能な状態にするときに、TLB114に物理アドレスを設定するようにしてもよい。
MMU116は、プロセスを実行可能な状態にした後であって、プロセスの実行時に動的メモリ又は共有メモリのメモリ容量を必要としたときに、その動的メモリ又はその共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、CPU110によるメモリ容量に関する制限に基づいて決定したメモリ容量をTLB114内のそのプロセスに対応するメモリ容量として設定するようにしてもよい。つまり、プロセスが実行されている最中に、新たに動的メモリ又はその共有メモリが必要となった場合に対応するものである。
MMU116は、プロセスを実行可能な状態にした後であって、プロセスを実行可能な状態にするときに動的メモリ又は共有メモリとして確保したメモリのメモリ容量が不足した場合に、そのプロセスから要求のあった動的メモリ又は共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、CPU110によるメモリ容量に関する制限に基づいて決定したメモリ容量をTLB114内のそのプロセスに対応するメモリ容量として設定するようにしてもよい。つまり、前述の動的データ、共有メモリにも、プロセスを実行可能な状態にするときに対応する場合にあって、その設定されたメモリ容量では不足してしまった場合(例えば、プログラムの設計者が、必要とする最低限のメモリ容量を設定しておき、実際にはそれ以上にメモリ容量が必要とされた場合)に対応するものである。
MMU116は、仮想アドレス又は物理アドレスが決定したメモリ容量では設定できない場合に、再度そのメモリ容量を決定するようにしてもよい。つまり、TLB114に一旦メモリ容量を設定した後に、物理アドレス又は仮想アドレスを設定しようとしたときに、そのメモリ容量では物理アドレス又は仮想アドレスを設定できない場合に対応するものである。
図2は、本実施の形態の構成例についての概念的なモジュール構成図である。
OS200は、カーネル210を有しており、そのカーネル210は、ローダ220、MMU230、TLBハンドラ240を有している。
ローダ220は、ユーザーによる操作又は他のプロセスからの指示に応じて、プロセスを実行可能な状態にする。つまりプロセスを起動することであり、例えば、C言語等では、プログラム内のmain()関数を実行することに該当する。このときに、プロセスで利用する仮想アドレスと物理アドレスとの対応を取る必要がある。そのために、MMU230にTLB114の設定を行わせる。なお、図2の例は、プロセス1 290、プロセス2 295を起動した後の状態を示している。
MMU230は、ローダ220からの指示に基づいて、TLB114の設定をTLBハンドラ240に行わせ、TLB114に基づいて、プロセス実行におけるアドレス変換を行う。また、プロセス1 290、プロセス2 295の実行中に、動的メモリ又は共有メモリが必要となったときに、TLB114の設定をTLBハンドラ240に行わせる。
TLBハンドラ240は、MMU230からの指示に基づいて、TLB114の設定を行う。
図3は、メモリにおける物理空間と仮想空間との関連例を示す説明図である。これらは、図4に例示したTLB400によって対応付けられている。
プロセス1仮想空間370は、text/bss/data領域372、ヒープ領域374を有している。
text/bss/data領域372は、静的なデータの領域であり、物理メモリ300の確保物理領域304に割り付けられている。なお、text領域はプログラムコード領域、bss(Block Starting with Symbol)領域は初期値のないグローバル変数用の領域、data領域は初期化が必要なデータの領域である。
ヒープ領域374は、動的なデータの領域であり、物理メモリ300の確保物理領域306に割り付けられている。
プロセス2仮想空間380は、text/bss/data領域382、共有メモリ領域384、ヒープ領域386を有している。プロセス2仮想空間380は、他のプロセスとの通信を行うために、プロセス1仮想空間370と異なり、共有メモリ領域384を有している。これらは、物理メモリ300のそれぞれ確保物理領域308、確保物理領域310、確保物理領域312に割り付けられている。
カーネル仮想空間360は、カーネルのtext/bss/data領域及びヒープ領域362、共有メモリ領域364、I/Oアクセス366、ROM368を有している。
カーネルのtext/bss/data領域及びヒープ領域362、共有メモリ領域364は、物理メモリ300のそれぞれ確保物理領域302、確保物理領域310に割り付けられている。I/Oアクセス366はI/O空間340に、ROM368はROM350に割り付けられている。
図5は、TLBミス例外の処理例を示す説明図である。前述したように、TLB114に設定されていない仮想アドレスにアクセスしようとした場合の処理である。
ステップS502では、ユーザーモード520で、プロセス1がTLB114に存在しない0x4000_4000にアクセスする。
ステップS504では、TLBミス例外が発生する。つまり、割り込みが発生し、ユーザーモード520からスーパーバイザーモード510へと制御が移る。
ステップS506では、TLBハンドラ240がTLB114の中で一番古いエントリを消し、TLBミス例外が発生した論理アドレスに対応する物理アドレスの情報をTLB114に追加する。この後、割り込みから復帰して、スーパーバイザーモード510からユーザーモード520へと制御が移る。なお、エントリが古いか否かを判断するために、TLB400に利用時間、設定時間を記憶する欄を設けてもよい。
図6は、TLBミス例外の処理におけるTLB400の変化例を示す説明図である。TLB400内で、一番古いエントリはエントリ番号63であるので、それを新エントリ610(プロセスID1における仮想アドレス0x4000_4000と、これに対応する物理アドレス0x8_1004_4000の設定等)に置き換える。なお、MMU230は、TLB400に新エントリ610等のプロセスを実行可能な状態にするときに設定されたエントリを含めたページテーブルを主記憶内に記憶させておき、TLBミス例外処理が発生したときに、TLB400とページテーブルの一部を入れ替える。
ステップS508では、ユーザーモード520で、プロセス1が再度0x4000_4000にアクセスすると、TLBのエントリが書き換わっているので正常にアクセスが可能となる。つまり、エントリ番号63に仮想アドレス0x4000_4000があるので、これに基づいて、プロセス1は処理を再開する。
図7から図9は、本実施の形態による処理例を示すフローチャートである。なお、本処理例は、プロセスを実行可能な状態にするときに行われるものである。
ステップS702では、ローダ220が、プロセスIDを作成する。つまり、プロセスを実行可能な状態にするために、プログラムの実行オブジェクトを実行させた場合のプロセスを一意に識別するプロセスIDを作成する。
ステップS704では、プロセスの空のページテーブルを作成する。TLB400を作成するために、主記憶上にTLB400と同じ構造のページテーブルを作成する。ただし、エントリ数はTLB400よりも多く、その数は限定しなくてもよい。
ステップS706では、空のプロセス用仮想論理空間を作成する。TLB400を作成するために、主記憶上に仮想論理空間を管理するためのテーブル(例えば、プロセスIDとそのプロセスに割り当てたメモリアドレスの対応)を作成する。
ステップS708では、ロードする実行オブジェクト(ELF(Excutive Linked File)イメージ等)を解釈する。例えば、図3に例示したtext/bss/data領域372等を実行オブジェクトから取り出す。つまり、ここで、静的なデータであるtext、bss、data領域の必要サイズを確定する。これは、そのプロセスが必要とするメモリサイズの一部(ヒープ領域、共有メモリが必要なければ、必要メモリサイズそのもの)となる。
ステップS710では、TLB400に設定するサイズ(サイズ欄410)を決定する。つまり、そのプロセスに必要な静的なデータのメモリ領域の連続したメモリサイズを決定する。そのために、使用するTLB400のエントリ数が少なくなるように(つまり、確保すべき連続するメモリサイズを大きくするように)、かつフラグメント化されるサイズが小さくなるようにメモリサイズを決定する。ここで、フラグメント化されるサイズが小さくなるようにするメモリサイズは、物理メモリ上で未使用の連続した領域のメモリサイズと、CPU110によるメモリサイズに関する制限に基づいて決定したメモリサイズである。さらに、メモリを節約するように(プロセスの必要メモリサイズよりも必要以上に大きなメモリサイズとならないようにすること)してもよい。
また、ステップS714又はステップS718で処理が戻った場合は、前回決定したメモリサイズよりも少なくなる方向でメモリサイズを変更する。
ステップS712では、ELFイメージ等をロードするための物理空間をステップS710で決定したメモリサイズのアライメントに合わせて連続領域に確保する。ここで、アライメントに合わせた連続領域を確保できない場合も生じ得る。ステップS710では、物理空間の未使用領域のサイズに基づいて決定しているが、アライメントに合わせたものであるか否かまでは判断材料としていないためである。
ステップS714では、確保できたか否かを判断する。確保できた場合はステップS716へ進み、それ以外の場合はステップS710からの処理を繰り返す。
ステップS716では、ELFイメージ等をロードするための論理空間をステップS710で決定したサイズのアライメントに合わせて連続領域に確保する。ここで、アライメントに合わせた連続領域を確保できない場合も生じ得る。ステップS710では、論理空間の未使用領域のサイズがあるか否か、アライメントに合わせたものであるか否かまでは判断材料としていないためである。また、1つの仮想論理空間を複数のプロセスが利用する場合(つまり、その仮想論理空間で複数のプロセスが配置される場合)は、他のプロセス又は自プロセスで既に確保された仮想空間内のメモリと重複しないように確保する。なお、プロセスごとに仮想空間を設定するOSであるならば、他のプロセスとの重複はありえないので、自プロセスで既に確保された仮想空間内のメモリと重複しないように確保すればよい。
ステップS718では、確保できたか否かを判断する。確保できた場合はステップS720へ進み、それ以外の場合はステップS710からの処理を繰り返す。
ステップS720では、ステップS712とステップS716でそれぞれ確保した物理領域と論理領域を、ステップS704とステップS706でそれぞれ作成したページテーブルと仮想論理空間に登録する。
なお、ステップS710からステップS720までの処理を、従来通りの技術で行うと、固定サイズでELFイメージをロードするための物理空間の確保と仮想論理空間の確保をし、ステップS704とステップS706でそれぞれ作成したページテーブルと仮想論理空間に登録することになる。このようにした場合、予め定められた固定のメモリ容量が設定されてしまい、確保される物理空間は連続領域ではないこととなり、物理空間と仮想論理空間のアドレスがTLB400に設定できるサイズのアライメントになっていない。つまり、TLB400に設定するサイズはページ単位になってしまい、TLBミス例外の処理が多く発生する場合がある。
ステップS722では、実行オブジェクトの仮アドレスと、ステップS716で確保した論理領域のアドレスのオフセットを計算する。つまり、コンパイラが仮決めしたELFイメージ等の仮想アドレスとステップS716で確保した仮想アドレスのオフセット(差分)を算出する。
ステップS724では、ステップS722で計算したオフセットを足しながらELFイメージ等を論理アドレスへと展開(配置)する。
ステップS726では、ステップS716で確保した領域のtext/bss/dataそれぞれのメモリ属性を設定する。つまり、TLB400の属性欄412(キャッシュ112が利用されるか否か、スーパーバイザーのアクセス権、ユーザーのアクセス権等)を設定する。
ステップS728では、対象のヒープ領域に対し、TLB400に設定するサイズを決定する。ステップS710に対応する処理である。なお、そのプロセスにおいて、ヒープ領域が不要である場合はステップS744へ進む。
ステップS730では、ヒープ領域のための物理空間をステップS728で決定したサイズのアライメントに合わせて連続領域に確保する。ステップS712に対応する処理である。
ステップS732では、確保できたか否かを判断する。確保できた場合はステップS734へ進み、それ以外の場合はステップS728からの処理を繰り返す。ステップS714に対応する処理である。
ステップS734では、ヒープ領域のための論理空間をステップS728で決定したサイズのアライメントに合わせて連続領域に確保する。ステップS716に対応する処理である。
ステップS736では、確保できたか否かを判断する。確保できた場合はステップS738へ進み、それ以外の場合はステップS728からの処理を繰り返す。ステップS718に対応する処理である。
ステップS738では、ステップS730とステップS734でそれぞれ確保した物理領域と論理領域を、ステップS704とステップS706でそれぞれ作成したページテーブルと仮想論理空間に登録する。ステップS720に対応する処理である。
ステップS740では、ステップS734で確保した領域のメモリ属性を設定する。ステップS726に対応する処理である。
ステップS742では、プロセスのメモリ管理プールにステップS734で確保した領域を登録する。なお、ここでのメモリ管理プールは予め定められたサイズのヒープ領域の空きを管理している。
ステップS744では、対象の共有メモリ領域に対し、TLBに設定するサイズを決定する。ステップS728に対応する処理である。
ステップS746では、共有メモリ領域のための物理空間をステップS744で決定したサイズのアライメントに合わせて連続領域に確保する。ステップS730に対応する処理である。
ステップS748では、確保できたか否かを判断する。確保できた場合はステップS750へ進み、それ以外の場合はステップS744からの処理を繰り返す。ステップS732に対応する処理である。
ステップS750では、共有メモリ領域のための論理空間をステップS744で決定したサイズのアライメントに合わせて連続領域に確保する。ステップS734に対応する処理である。
ステップS752では、確保できたか否かを判断する。確保できた場合は、ステップS754へ進み、それ以外の場合はステップS744からの処理を繰り返す。ステップS736に対応する処理である。
ステップS754では、ステップS746とステップS750でそれぞれ確保した物理領域と論理領域を、ステップS704とステップS706でそれぞれ作成したページテーブルと仮想論理空間に登録する。ステップS738に対応する処理である。
ステップS756では、ステップS750で確保した領域のメモリ属性を設定する。ステップS740に対応する処理である。
ステップS758では、プロセスメモリ管理プールにステップS750で確保した領域を登録する。ステップS742に対応する処理である。
ステップS799では、プロセスの生成を完了する。そして、main()関数を実行すべく、main()関数のオブジェクトが格納されているメモリにジャンプする。なお、この後、TLBミス例外の処理が発生することとなり、本フローチャートでページテーブル内に設定されたエントリがTLB400内に挿入又は入れ替わる。
図10を参照して、本実施の形態を組み込んだ例えば画像処理システムのハードウェア構成例について説明する。図10に示す構成は、スキャナ等のデータ読み取り部1017と、プリンタなどのデータ出力部1018を備えたハードウェア構成例を示している。
CPU(Central Processing Unit)1001は、前述の実施の形態において説明したローダ220、MMU230、TLBハンドラ240等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
ROM(Read Only Memory)1002は、CPU1001が使用するプログラムや演算パラメータ等を格納する。RAM(Random Access Memory)1003は、本実施の形態における物理メモリとなるものであり、CPU1001の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはCPUバスなどから構成されるホストバス1004により相互に接続されている。
ホストバス1004は、ブリッジ1005を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス1006に接続されている。
キーボード1008、マウス等のポインティングデバイス1009は、操作者により操作される入力デバイスである。ディスプレイ1010は、液晶表示装置又はCRT(Cathode Ray Tube)などがあり、各種情報をテキストやイメージ情報として表示する。
HDD(Hard Disk Drive)1011は、ハードディスクを内蔵し、ハードディスクを駆動し、CPU1001によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、読み取った画像データなどが格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
ドライブ1012は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体1013に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース1007、外部バス1006、ブリッジ1005、及びホストバス1004を介して接続されているRAM1003に供給する。リムーバブル記録媒体1013も、ハードディスクと同様のデータ記録領域として利用可能である。
接続ポート1014は、外部接続機器1015を接続するポートであり、USB、IEEE1394等の接続部を持つ。接続ポート1014は、インタフェース1007、及び外部バス1006、ブリッジ1005、ホストバス1004等を介してCPU1001等に接続されている。通信部1016は、ネットワークに接続され、外部とのデータ通信処理を実行する。データ読み取り部1017は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部1018は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
なお、図10に示す画像処理システムのハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図10に示す構成に限らず、本実施の形態を実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよい。また、画像処理システムの例として複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などがあり、画像処理システム以外に家電、自動車、エレベーター等に利用してもよい。
前述の実施の形態においては、組み込み系のOSでの利用を例示したが、汎用コンピュータ用のOS(より具体的には、ページング処理を採用しているOS)に採用してもよい。
なお、図7から図9はプロセスを実行可能な状態にするときに行われる処理例を示したが、プロセスを実行した後であって、プロセスの動的メモリ、共有メモリのメモリ容量を必要としたときに(つまり、必要とするまでメモリを確保することはしないで、メモリ確保を遅らせる)、それぞれステップS728からステップS742までの処理、ステップS744からステップS758までの処理を行うようにしてもよい。また、プロセスを実行した後であって、プロセスを実行したときに予め確保した動的メモリ、共有メモリでは足りなくなったときに、それぞれステップS728からステップS742までの処理、ステップS744からステップS758までの処理を行うようにしてもよい。これは、より具体的には、そのプログラム内でmalloc()関数等が呼び出された場合に行われるものである。
また、本実施の形態における処理は、プロセス(例えば、プロセスID、プロセス名、プロセス生成時のオプション等)に応じて、実施するか否かを決定してもよい。つまり、本実施の形態における処理を行わない場合は、従来通りの技術による処理を行う。
また、割り当てる領域のサイズは物理空間の空き容量に応じて決定するようにしてもよい。
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray Disc(登録商標))、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
110…CPU
112…キャッシュ
114…TLB
116…MMU
120…物理メモリ
130…I/O空間
140…ROM
190…バス
200…OS
210…カーネル
220…ローダ
230…MMU
240…TLBハンドラ
290…プロセス1
295…プロセス2

Claims (6)

  1. プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、
    プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段
    を具備することを特徴とする情報処理装置。
  2. 前記メモリ容量設定手段が用いるプロセスが必要とするメモリ容量として、該プロセスの実行時に動的に割り当てられる動的メモリのメモリ容量又は複数のプロセス間で用いられる共有メモリのメモリ容量を含んでいる
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、プロセスの実行時に動的に割り当てられる動的メモリ又は複数のプロセス間で用いられる共有メモリのメモリ容量を必要としたときに、該動的メモリ又は該共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定する
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、前記動的メモリ又は前記共有メモリとして確保したメモリ容量が不足した場合に、該プロセスから要求のあった動的メモリ又は共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定する
    ことを特徴とする請求項2に記載の情報処理装置。
  5. 前記メモリ容量設定手段は、前記仮想アドレス又は前記物理アドレスが前記決定したメモリ容量では設定できない場合に、再度該メモリ容量を決定する
    ことを特徴とする請求項1から4のいずれか一項に記載の情報処理装置。
  6. コンピュータを、
    プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、
    プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段
    として機能させることを特徴とする情報処理プログラム。
JP2009167146A 2009-07-15 2009-07-15 情報処理装置及び情報処理プログラム Expired - Fee Related JP5531476B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009167146A JP5531476B2 (ja) 2009-07-15 2009-07-15 情報処理装置及び情報処理プログラム
US12/715,518 US8352698B2 (en) 2009-07-15 2010-03-02 Information processing apparatus, information processing method and computer readable medium
CN201010138407.2A CN101957801B (zh) 2009-07-15 2010-03-22 信息处理设备和信息处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009167146A JP5531476B2 (ja) 2009-07-15 2009-07-15 情報処理装置及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2011022790A true JP2011022790A (ja) 2011-02-03
JP5531476B2 JP5531476B2 (ja) 2014-06-25

Family

ID=43466053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009167146A Expired - Fee Related JP5531476B2 (ja) 2009-07-15 2009-07-15 情報処理装置及び情報処理プログラム

Country Status (3)

Country Link
US (1) US8352698B2 (ja)
JP (1) JP5531476B2 (ja)
CN (1) CN101957801B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022344A (ja) * 2013-07-16 2015-02-02 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
JP2022548887A (ja) * 2019-09-17 2022-11-22 マイクロン テクノロジー,インク. メモリタイプへのページテーブルフック

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880761B2 (en) 2015-12-28 2018-01-30 International Business Machines Corporation Restorable memory allocator
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10289153A (ja) * 1997-04-11 1998-10-27 Ricoh Co Ltd 主記憶管理方法および装置
JPH11238015A (ja) * 1998-02-24 1999-08-31 Hitachi Ltd プロセッサ装置
JP2000276404A (ja) * 1999-03-29 2000-10-06 Nec Corp 仮想記憶装置および仮想記憶方法、並びに記録媒体
JP2009020881A (ja) * 2007-07-12 2009-01-29 Qnx Software Systems Gmbh & Co Kg 可変のページサイズのメモリ編成を実装する処理システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002057923A1 (fr) * 2001-01-19 2002-07-25 Sony Corporation Dispositif de commande de protection de la memoire
US7370174B2 (en) * 2005-01-05 2008-05-06 Intel Corporation Method, system, and program for addressing pages of memory by an I/O device
JP2008102850A (ja) * 2006-10-20 2008-05-01 Toshiba Corp 情報処理装置及び情報処理方法
CN101187899B (zh) * 2006-11-17 2010-05-12 中兴通讯股份有限公司 嵌入式系统存储空间的优化方法
CN101241492B (zh) * 2007-02-06 2011-05-11 中兴通讯股份有限公司 具有容量动态控制功能的内存数据存储装置及其实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10289153A (ja) * 1997-04-11 1998-10-27 Ricoh Co Ltd 主記憶管理方法および装置
JPH11238015A (ja) * 1998-02-24 1999-08-31 Hitachi Ltd プロセッサ装置
JP2000276404A (ja) * 1999-03-29 2000-10-06 Nec Corp 仮想記憶装置および仮想記憶方法、並びに記録媒体
JP2009020881A (ja) * 2007-07-12 2009-01-29 Qnx Software Systems Gmbh & Co Kg 可変のページサイズのメモリ編成を実装する処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022344A (ja) * 2013-07-16 2015-02-02 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
JP2022548887A (ja) * 2019-09-17 2022-11-22 マイクロン テクノロジー,インク. メモリタイプへのページテーブルフック

Also Published As

Publication number Publication date
CN101957801A (zh) 2011-01-26
JP5531476B2 (ja) 2014-06-25
US20110016286A1 (en) 2011-01-20
CN101957801B (zh) 2014-11-19
US8352698B2 (en) 2013-01-08

Similar Documents

Publication Publication Date Title
US9213623B2 (en) Memory allocation with identification of requesting loadable kernel module
JP5255348B2 (ja) クラッシュダンプ用のメモリアロケーション
US7783858B2 (en) Reducing memory overhead of a page table in a dynamic logical partitioning environment
CN109074316B (zh) 页面错误解决方案
US20080235477A1 (en) Coherent data mover
KR20210089150A (ko) 호스트 컴퓨팅 디바이스 가상 메모리에 의해 지원되는 가상 머신 메모리의 더 빠른 액세스
US8024546B2 (en) Opportunistic page largification
RU2427892C2 (ru) Способ и устройство для установки политики кэширования в процессоре
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
JP5531476B2 (ja) 情報処理装置及び情報処理プログラム
US8521919B2 (en) Direct memory access in a computing environment
US8117373B2 (en) VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
CN104239238A (zh) 用于管理转换旁视缓冲的方法和装置
EP2416251B1 (en) A method of managing computer memory, corresponding computer program product, and data storage device therefor
US8788799B2 (en) Server computer, computer system, and file management method
TWI417724B (zh) 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品
CN112241310B (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
US20050193169A1 (en) Memory management
US20170212831A1 (en) Aligned variable reclamation
WO2022193768A1 (zh) 内存读写指令的执行方法及计算设备
WO2023165308A1 (zh) 一种内存回收方法、装置及控制设备
US20090031100A1 (en) Memory reallocation in a computing environment
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US6918023B2 (en) Method, system, and computer program product for invalidating pretranslations for dynamic memory removal
US20230266992A1 (en) Processor for managing resources using dual queues, and operating method thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131206

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140407

R150 Certificate of patent or registration of utility model

Ref document number: 5531476

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees