WO2018211628A1 - メモリ管理システム、情報処理装置およびメモリの管理方法 - Google Patents
メモリ管理システム、情報処理装置およびメモリの管理方法 Download PDFInfo
- Publication number
- WO2018211628A1 WO2018211628A1 PCT/JP2017/018544 JP2017018544W WO2018211628A1 WO 2018211628 A1 WO2018211628 A1 WO 2018211628A1 JP 2017018544 W JP2017018544 W JP 2017018544W WO 2018211628 A1 WO2018211628 A1 WO 2018211628A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- memory management
- terminated
- free space
- management unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
Abstract
オペレーティングシステム(10)のメモリ管理システム(12)は、メモリ管理部(121)と、システムキャッシュ解放部(122)とを備える。メモリ管理部(121)は、メモリ(2)の空き容量を監視し、メモリ(2)の空き容量の不足を検出すると、動作中のプロセスのいずれかを終了させることでメモリ(2)の空き容量を増やす。システムキャッシュ解放部(122)は、メモリ管理部(121)が終了させたプロセスの種類または動作状態が予め定められた条件を満たす場合に、メモリ(2)においてオペレーティングシステム(10)のキャッシュ領域として確保されていた領域を解放することでメモリ(2)の空き容量をさらに増やす。
Description
本発明は、メモリの空き容量を確保するメモリ管理システムに関するものである。
パーソナルコンピュータやスマートフォンなどの情報処理装置に搭載される高機能オペレーティングシステム(OS)の多くでは、メモリの空き容量が不足したときに、動作中のプロセスのいずれかを強制終了させることでメモリの空き容量を確保するメモリ管理システムが採用されている。例えば、Android(登録商標)は、Low Memory Killerと呼ばれるメモリ管理システムを搭載している。
上記のようなメモリ監視システムを備えた情報処理装置では、メモリの空き容量不足を防止できるが、例えばユーザの使用頻度が高いアプリケーションのプロセスが強制終了されると、次にそのアプリケーションを使用する際の起動時間が長くなるため、情報処理装置の使い勝手が悪くなるという問題が生じる。
例えば下記の特許文献1,2では、この問題を解決するための技術が提案されている。特許文献1のメモリ管理システムは、各プロセスが確保するメモリ領域のそれぞれに、優先度を表すランクを設定し、メモリの空き容量が不足したときにランクの低いメモリ領域を解放する。また、特許文献2のメモリ管理システムでは、優先度の高いプロセスを、強制終了禁止プロセスとして設定することができる。
特許文献1,2の技術は、いずれも優先度の低いプロセスを終了させてメモリの空き容量を増やすものである。特許文献1の技術では、優先度の低いプロセスを終了させても空き容量を十分に確保できなかった場合には、優先度の高いプロセスを終了せざるを得ず、上記の問題が生じる。また、特許文献2の技術では、強制終了禁止プロセスが多数動作していた場合に、メモリの空き容量を十分に確保できないおそれがある。
本発明は以上のような課題を解決するためになされたものであり、優先度の高いプロセスが強制終了されることを防止しつつ、メモリの空き容量を十分に確保できるメモリ管理システムを提供することを目的とする。
本発明に係るメモリ管理システムは、複数のプロセスの実行に用いられるメモリの空き容量を監視し、メモリの空き容量の不足を検出すると、動作中のプロセスのいずれかを終了させることでメモリの空き容量を増やすメモリ管理部と、メモリ管理部が終了させたプロセスの種類または動作状態が予め定められた条件を満たす場合に、メモリにおいてオペレーティングシステムのキャッシュ領域として確保されていた領域を解放することでメモリの空き容量をさらに増やすシステムキャッシュ解放部と、を備えるものである。
本発明によれば、メモリ管理部が予め定められた条件を満たすプロセスを終了させたときに、システムキャッシュ解放部がオペレーティングシステムのキャッシュ領域として確保されていた領域を解放してメモリの空き容量を増やす。メモリ管理部が優先度の高いプロセスを終了させる前にメモリの空き領域を効果的に増やすことができるため、メモリ管理部によって優先度の高いプロセスが終了させることが防止される。よって、優先度の高いプロセスが強制終了されることを防止しつつ、メモリの空き容量を十分に確保することができる。
本発明の目的、特徴、態様、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
図1は、本発明の実施の形態に係る情報処理装置の主要部の構成を概念的に示すブロック図である。図1のように、情報処理装置は、プロセッサ1、メモリ2およびストレージ3を備えている。情報処理装置の具体例としては、パーソナルコンピュータやスマートフォン、タブレット端末、ナビゲーション装置、オーディオディスプレイ装置などがある。例えば、情報処理装置がスマートフォンやタブレット端末などの携帯型機器である場合、図1に示した要素の他、画像表示部や、音声出力部、操作入力部なども、情報処理装置の構成要素に含まれることになるが、それらの図示は省略する。
プロセッサ1は、ソフトフェア(プログラム)を実行することにより各種の機能を実現する。プロセッサ1は、例えば、中央処理装置(CPU:Central Processing Unit)、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、DSP(Digital Signal Processor)などとも呼ばれることもある。
メモリ2は、プロセッサ1の主記憶装置であり、例えばRAM(Random Access Memory)等により構成される。プロセッサ1は、ソフトウェアを実行する際、その実行に必要なデータやプログラムをメモリ2に記憶させる。
ストレージ3は、プロセッサ1の補助記憶装置であり、プロセッサ1が実行するソフトウェアのプログラム等を記憶する。ここで、ストレージ3には、オペレーティングシステム10を構築するためのシステムソフトウェア31と、各種の設定値が記述された設定ファイル32と、複数のアプリケーションソフトウェア33(以下、単に「アプリケーション33」という)とが記憶されているものとする。
ストレージ3の例としては、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)などの半導体メモリ、HDD(Hard Disk Drive)、光ディスク、磁気ディスク、フレキシブルディスク等がある。ストレージ3は、それらの記憶媒体を組み合わせて構成されもよい。例えば、システムソフトウェア31や設定ファイル32をROMに記憶させ、アプリケーション33をフラッシュメモリとしてのメモリカードに記憶させる形態が考えられる。
プロセッサ1は、ストレージ3に記憶されているシステムソフトウェア31を実行することによって、オペレーティングシステム10を構築する。オペレーティングシステム10は、プロセス実行部11およびメモリ管理システム12の機能ブロックを備えている。
プロセス実行部11は、ユーザの操作またはオペレーティングシステム10の指示に従って、ストレージ3に記憶されたアプリケーション33を実行する。すなわち、プロセス実行部11は、アプリケーション33のプログラムに従って、各種のプロセスを実行する。プロセス実行部11は、複数のアプリケーション33のプロセスを同時に実行することができる。また、1つのアプリケーション33によって複数のプロセスが起動されることもある。
メモリ管理システム12は、メモリ2の空き容量が不足したときに、その不足を解消するための処理を行う。図1のように、メモリ管理システム12は、メモリ管理部121とシステムキャッシュ解放部122とを備えている。
メモリ管理部121は、メモリ2の空き容量を監視し、メモリ2の空き容量の不足を検出すると、動作中のプロセスのいずれかを終了させることでメモリ2の空き容量を増やす。より具体的には、メモリ管理部121は、メモリ2の空き容量が予め定められた閾値よりも小さくなったことを検出すると、動作中のプロセスのうちから終了させるプロセスを選定し、選定したプロセスの終了を要求する信号をプロセス実行部11へ出力する。例えば、オペレーティングシステム10がAndroidである場合、メモリ管理部121は公知のLow Memory Killerでよい。
システムキャッシュ解放部122は、メモリ管理部121が出力した信号を監視して、メモリ管理部121がどのプロセスを終了させたかのかを確認し、そのプロセスの種類および動作状態(終了される直前の動作状態を指す)をチェックする。そして、システムキャッシュ解放部122は、メモリ管理部121が終了させたプロセスの種類または動作状態が予め定められたトリガー条件を満たしていた場合に、メモリ2においてオペレーティングシステム10のキャッシュ領域として確保されていた領域(以下「システム用キャッシュ領域」という)を解放することでメモリ2の空き容量をさらに増やす。トリガー条件の具体例は後述する。
本実施の形態では、オペレーティングシステム10はAndroidであり、メモリ管理部121はLow Memory Killerであるものとする。Low Memory Killerにおいては、動作中の各プロセスが、プロセスの種類および動作状態に基づいて、例えば図2に示すような複数の類型に分類される。また、それぞれの類型に対し、優先度を表すadj値と、強制終了の候補となるか否かの判断基準となるメモリ2の空き容量の閾値とが規定されている。adj値が小さいものほど優先度は高くなる。また、図2ではメモリ2の空き容量の閾値をページ数で表しており、Androidでは1ページは4kBとされている。例えば、2048ページは、4kB×2048=8192kBを意味している。
図2において、「FOREGROUND_APP」は、フォアグラウンドで動作している状態のプロセスであり、そのadj値は0、空き容量の閾値は2048と設定されている。「VISIBLE_APP」は、実行画面の一部または全部が表示部に表示されている状態のプロセスであり、そのadj値は1、空き容量の閾値は4096と設定されている。「PERCEPTIBLE_APP」は、バックグラウンドで動作しているがユーザがその動作を知覚できる状態(例えば音楽を再生している状態)のプロセスであり、そのadj値は2、空き容量の閾値は8192と設定されている。
「HEAVY_WEIGHT_APP」は、プロセッサ1またはメモリ2への負荷が大きなプロセスであり、そのadj値は3、空き容量の閾値は8192と設定されている。「SECONDARY_SERVER」は、他のプロセスに機能を提供するプロセスであり、そのadj値は4、空き容量の閾値は16384と設定されている。「BACKUP_APP」は、データのバックアップを行うプロセスであり、そのadj値は5、空き容量の閾値は20000と設定されている。
「HOME_APP」は、ユーザがアプリケーションを起動させるためのホーム画面を表示するプロセス(いわゆるドロワーやホームアプリのプロセス)であり、そのadj値は6、空き容量の閾値は25000と設定されている。「HIDDEN_APP」は、バックグラウンドで動作しておりユーザがその動作を知覚できない状態のプロセスであり、そのadj値は7、空き容量の閾値は30000と設定されている。「CONTENT_PROVIDER」は、複数のプロセス間でデータを共有するためのプロセスであり、そのadj値は14、空き容量の閾値は35000と設定されている。「EMPTY_APP」は、何も実行していない状態のプロセスであり、そのadj値は15、空き容量の閾値は40000と設定されている。
図2に示した各設定値は、図3に示すようなフォーマットで設定ファイル32に記述されており、オペレーティングシステム10の起動時にメモリ管理システム12に読み込まれる。
Low Memory Killerは、メモリ2の空き容量が一定の値を下回ると、メモリ2の空き容量に基づいて、終了させるプロセスの候補を選定する。例えば、Low Memory Killerに図2に示した設定値が設定されていた場合、Low Memory Killerは、メモリ2の空き容量が40000ページ(160000kB)より小さくなると起動し、例えばメモリ2の空き容量が30000ページ(120000kB)を下回れば、adj値が7以上のプロセスを終了させるプロセスの候補として選定し、メモリ2の空き容量が20000ページ(80000kB)を下回れば、adj値が5以上のプロセスを終了させるプロセスの候補として選定する。
終了させるプロセスの候補が複数見つかった場合、Low Memory Killerは、そのうち優先度が最も低いプロセス、つまりadj値が最も大きいプロセスを終了させる。また、終了させるプロセスの候補の中に優先度の最も低いプロセスが複数見つかった場合には、そのうちメモリ使用量が最も大きいものを終了させる。Low Memory Killerは、以上の動作を、メモリ2の空き容量が一定の値以上になるまで、あるいは、終了させるプロセスの候補が無くなるまで、繰り返し行う。
また、システムキャッシュ解放部122に設定されるトリガー条件は、図2に示したプロセスの類型に基づいて設定される。トリガー条件には、メモリ管理部121(Low Memory Killer)によって終了されることを抑制したいプロセスよりも優先度の低い類型が設定される。
本実施の形態では、「HOME_APP」以上の優先度をもつプロセスがメモリ管理部121(Low Memory Killer)によって終了されることを抑制するものとする。この場合、トリガー条件を満たすプロセスの類型として、「HOME_APP」よりも優先度の低いプロセスの類型が設定される。ここでは、「HIDDEN_APP」、「CONTENT_PROVIDER」および「EMPTY_APP」が、トリガー条件を満たすプロセスの類型として設定されるものとする。なお、トリガー条件の設定値は、ストレージ3に保存された設定ファイル32に記述されているものとする。
以下、具体的な例を示しつつ、情報処理装置のメモリ管理システム12の動作を説明する。図4は、メモリ2内に確保されるメモリ領域の例を示す図である。メモリ2には、まず、オペレーティングシステム10用のメモリ領域2s(以下「システム用メモリ領域2s」という)が確保される。システム用メモリ領域2sには、オペレーティングシステム10がユーザの操作に対する反応時間を短縮させるために使用するキャッシュ領域2sc(以下「システム用キャッシュ領域2sc」という)が含まれている。
ここで、システム用メモリ領域2sとして確保される領域の大きさは一定ではない。オペレーティングシステム10がメモリ2にキャッシュするデータが増えるにつれてシステム用キャッシュ領域2scは徐々に大きくなり、それに伴ってシステム用メモリ領域2sも大きくなる。
またここでは、プロセス実行部11が、「FOREGROUND_APP」に分類されるプロセスA、「VISIBLE_APP」に分類されるプロセスB、「PERCEPTIBLE_APP」に分類されるプロセスC、「SECONDARY_SERVER」に分類されるプロセスD、「BACKUP_APP」に分類されるプロセスE、「HOME_APP」に分類されるプロセスF、「HIDDEN_APP」に分類されるプロセスG、「CONTENT_PROVIDER」に分類されるプロセスH、「EMPTY_APP」に分類されるプロセスIをそれぞれ実行しており、メモリ2内に、プロセスA~I用のメモリ領域2a~2iがそれぞれ確保されている。図2に示すように、このときメモリ2の空き領域2xは、40000ページ(80000kB)以上確保されている。
図4の状態から、例えば「HEAVY_WEIGHT_APP」に分類されるプロセスJが起動し、メモリ2にプロセスJ用メモリ領域2jが新たに確保され、その結果、図5のように空き領域2xが16384ページ(65536kB)を下回ったとする。図2を参照すると、この場合、メモリ管理部121は、「SECONDARY_SERVER」であるプロセスD、「BACKUP_APP」であるプロセスE、「HOME_APP」であるプロセスF、「HIDDEN_APP」であるプロセスG、「CONTENT_PROVIDER」であるプロセスH、「EMPTY_APP」であるプロセスIを、終了させるプロセスの候補として選定する。そして、メモリ管理部121は、それらの候補のうち優先度が最も低い(adj値が最も高い)プロセスIを終了させる。その結果、プロセスI用メモリ領域2iが解放され、図6のように、その分だけ空き領域2xが増える。
このとき、システムキャッシュ解放部122は、メモリ管理部121が「EMPTY_APP」であるプロセスIを終了させたことを検出する。本実施の形態では「EMPTY_APP」はトリガー条件として設定されている類型であるため、システムキャッシュ解放部122は、メモリ管理部121がプロセスIを終了させたことを検出すると、システム用キャッシュ領域2scを解放する。その結果、図7のように、空き領域2xがさらに増える。
図7の状態では、空き領域2xが40000ページ(160000kB)を下回っているため、メモリ管理部121は、「EMPTY_APP」のプロセスが実行されていれば、それを終了させるプロセスの候補として選定する。しかし、図7の状態で動作中のプロセスA~プロセスHプロセスの中には、「EMPTY_APP」のプロセスが存在しないため、メモリ管理部121はどのプロセスも終了させない。
従って、「HOME_APP」であるプロセスFは動作を継続することができる。「HOME_APP」であるプロセスFは、ユーザが頻繁に起動させるものであるため、プロセスFの動作が継続されることで、情報処理装置の使い勝手が悪くなることが抑制される。なお、システム用キャッシュ領域2scが解放されると、一時的にオペレーティングシステム10の反応速度が低下することもあるが、「HOME_APP」のプロセスのようにユーザが頻繁に起動させるプロセスの起動時間が長くなることに比べると、ユーザの使用感に与える影響は小さいと考えられる。
上の説明では、強制終了を回避したい「HOME_APP」よりも優先度の低い「HIDDEN_APP」、「CONTENT_PROVIDER」および「EMPTY_APP」の全てが、トリガー条件を満たすプロセスの類型として設定される例を示した。しかし、それらのうちの1つ以上が、トリガー条件を満たすプロセスの類型として設定されればよい。例えば、「EMPTY_APP」を、トリガー条件を満たすプロセスの類型から外すと、メモリ管理部121が「EMPTY_APP」を終了させただけではシステム用キャッシュ領域2scは解放されないので、上記の例よりもシステム用キャッシュ領域2scが解放される頻度を低くできる。
このように、本実施の形態では、「HOME_APP」であるプロセスFがメモリ管理部121によって終了されることを防止できる。この効果をより明確するために、以下では、従来のメモリ管理システムであるLow Memory Killerの動作を説明する。
上の例と同様に、図4に示した状態から「HEAVY_WEIGHT_APP」に分類されるプロセスJが起動して、図5の状態になり、空き領域2xが16384ページ(65536kB)を下回ったとする。この場合、Low Memory Killerは、「SECONDARY_SERVER」であるプロセスD、「BACKUP_APP」であるプロセスE、「HOME_APP」であるプロセスF、「HIDDEN_APP」であるプロセスG、「CONTENT_PROVIDER」であるプロセスH、「EMPTY_APP」であるプロセスIを、終了させるプロセスの候補として選定する。そして、Low Memory Killerは、それらの候補のうち優先度が最も低いプロセスIを終了させる。その結果、プロセスI用メモリ領域2iが解放され、図8のように、その分だけ空き領域2xが増える。
図8の状態では、空き領域2xは20000ページ(80000kB)を下回っているため、Low Memory Killerは、「BACKUP_APP」であるプロセスE、「HOME_APP」であるプロセスF、「HIDDEN_APP」であるプロセスG、「CONTENT_PROVIDER」であるプロセスHを、終了させるプロセスの候補として選定する。そして、Low Memory Killerは、それらの候補のうち優先度が最も低いプロセスHを終了させる。その結果、プロセスH用メモリ領域2hが解放され、図9のように、その分だけ空き領域2xが増える。
図9の状態では、空き領域2xは25000ページ(100000kB)を下回っているため、Low Memory Killerは、「HOME_APP」であるプロセスF、「HIDDEN_APP」であるプロセスGを、終了させるプロセスの候補として選定する。そして、Low Memory Killerは、それらの候補のうち優先度が最も低いプロセスGを終了させる。その結果、プロセスG用メモリ領域2gが解放され、図10のように、その分だけ空き領域2xが増える。
図10の状態では、空き領域2xは25000ページ(100000kB)を下回っているため、Low Memory Killerは、「HOME_APP」であるプロセスFを終了させるプロセスの候補として選定し、それを終了させる。その結果、プロセスF用メモリ領域2fが解放され、図11のように、その分だけ空き領域2xが増えるが、「HOME_APP」であるプロセスFが終了することにより、情報処理装置の使い勝手が悪くなる。
それに対し、本実施の形態に係るメモリ管理システム12では、メモリ管理部121がトリガー条件を満たすプロセスを終了させたときに、システムキャッシュ解放部122がシステム用キャッシュ領域2scを解放して、空き領域2xを増やす。そのため、メモリ管理システム12が「HOME_APP」のような優先度の高いプロセスを終了させる前にメモリ2の空き領域2xを効果的に増やすことができ、その結果として、メモリ管理部121が優先度の高いプロセスを終了させることが防止される。よって、優先度の高いプロセスが強制終了されることを防止しつつ、メモリの空き容量を十分に確保することができる。
図12は、メモリ管理システム12の動作を示すフローチャートである。図4~図7を用いて説明したメモリ管理の動作は、メモリ管理システム12が図12のフローを実行することによって実現される。
情報処理装置のオペレーティングシステム10が起動すると、メモリ管理システム12は、まずストレージ3から設定ファイル32を読み込み、設定ファイル32の記述に基づいてメモリ管理部121およびシステムキャッシュ解放部122の初期設定を行う(ステップS1)。具体的には、メモリ管理部121に、図2に示したようなプロセスの類型、adj値、メモリ2の空き容量の閾値の関係を表すテーブルを記憶させたり、システムキャッシュ解放部122にトリガー条件が設定させたりする処理が行われる。
次に、メモリ管理部121は、メモリ2の空き容量の大きさを確認し(ステップS2)、メモリ2の空き容量に不足が生じているか否か判断する(ステップS3)。例えば、図2に示したテーブルがメモリ管理部121に設定されている場合、メモリ2の空き容量が40000ページ(160000kB)より小さくなると空き容量に不足が生じたと判断される。メモリ2の空き容量に不足が生じていなければ(ステップS3でNO)、ステップS2,S3が繰り返し実行される。
メモリ2の空き容量に不足が生じていれば(ステップS3でYES)、メモリ管理部121は、メモリ2の空き容量の大きさに基づいて、終了させるプロセスの候補を選定する(ステップS4)。図2に示したテーブルがメモリ管理部121に設定されている場合、例えばメモリ2の空き容量が30000ページ(120000kB)を下回れば、adj値が7以上のプロセスを終了させるプロセスの候補として選定し、メモリ2の空き容量が20000ページ(80000kB)を下回れば、adj値が5以上のプロセスを終了させるプロセスの候補として選定する。このとき、終了させるプロセスの候補が見つからなければ(ステップS5でNO)、ステップS2へ戻る。
メモリ管理部121は、終了させるプロセスの候補が見つかれば(ステップS5でYES)、優先度が最も低い(adj値が最も大きい)候補のうち、メモリ2の使用量が最も大きいプロセスを終了させることで、メモリ2の空き容量を増やす(ステップS6)。つまり、メモリ管理部121は、終了させるプロセスの候補の中から優先度が最も低いプロセスを選出し、優先度が最も低いプロセスが複数あれば、さらにその中からメモリ2の使用量が最も大きいプロセスを選出し、最終的に選出されたプロセスを終了させる。
メモリ管理部121がプロセスを終了させると、システムキャッシュ解放部122は、当該プロセスがトリガー条件を満たすプロセスであったか否かを確認する(ステップS7)。当該プロセスがトリガー条件を満たすプロセスであった場合(ステップS7でYES)、システムキャッシュ解放部122は、システム用メモリ領域を解放することで、更にメモリ2の空き領域を増やし(ステップS8)、ステップS2へ戻る。
メモリ管理部121が終了させたプロセスがトリガー条件を満たすプロセスでなかったときは(ステップS7でNO)、システムキャッシュ解放部122がシステム用メモリ領域を解放することなく、ステップS2に戻る。
メモリ管理システム12は、以上の動作を繰り返し実行する。
<変形例>
一般に、オペレーティングシステム10用のキャッシュ領域(システム用キャッシュ領域)には、ページキャッシュ領域とスラブキャッシュ領域とが含まれる。上記の例では、システムキャッシュ解放部122がシステム用キャッシュ領域の全体を解放するものとしたが、メモリ管理部121は、ページキャッシュ領域およびスラブキャッシュ領域のいずれか片方のみを解放するようにしてもよい。そうすることにより、システム用キャッシュ領域の全体を解放する場合よりも、システムキャッシュ解放部122の動作によってオペレーティングシステム10の反応速度が低下することを抑制することができる。
一般に、オペレーティングシステム10用のキャッシュ領域(システム用キャッシュ領域)には、ページキャッシュ領域とスラブキャッシュ領域とが含まれる。上記の例では、システムキャッシュ解放部122がシステム用キャッシュ領域の全体を解放するものとしたが、メモリ管理部121は、ページキャッシュ領域およびスラブキャッシュ領域のいずれか片方のみを解放するようにしてもよい。そうすることにより、システム用キャッシュ領域の全体を解放する場合よりも、システムキャッシュ解放部122の動作によってオペレーティングシステム10の反応速度が低下することを抑制することができる。
例えば、システムキャッシュ解放部122がページキャッシュ領域のみを解放するか、スラブキャッシュ領域のみを解放するか、あるいはページキャッシュ領域およびスラブキャッシュ領域の両方を解放するかを、情報処理装置ごとに設定可能にしてもよい。その場合、システムキャッシュ解放部122がどの領域を解放するかの設定値を、設定ファイル32に記述しておき、オペレーティングシステム10の起動時に(例えば図12のステップS1)、システムキャッシュ解放部122が設定ファイル32から当該設定値を読み込むようにするとよい。
また、上の説明では、オペレーティングシステム10の例としてAndroidを示したが、本発明は、メモリ2の空き容量が不足したときに動作中のプロセスを終了させてメモリの空き容量を確保するメモリ管理部121を備えるオペレーティングシステム10、例えばiOS(登録商標)、Windows(登録商標)、Linux(登録商標)などにも適用可能である。システムキャッシュ解放部122と組み合わせるメモリ管理部121は、Low Memory Killerなどの一般的なものでよいため、本発明の汎用性は高い。
なお、本発明は、その発明の範囲内において、実施の形態を適宜、変形、省略することが可能である。
本発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
1 プロセッサ、2 メモリ、3 ストレージ、10 オペレーティングシステム、11 プロセス実行部、12 メモリ管理システム、121 メモリ管理部、122 システムキャッシュ解放部、31 システムソフトウェア、32 設定ファイル、33 アプリケーション。
Claims (9)
- 複数のプロセスの実行に用いられるメモリの空き容量を監視し、前記メモリの空き容量の不足を検出すると、動作中のプロセスのいずれかを終了させることで前記メモリの空き容量を増やすメモリ管理部と、
前記メモリ管理部が終了させたプロセスの種類または動作状態が予め定められた条件を満たす場合に、前記メモリにおいてオペレーティングシステムのキャッシュ領域として確保されていた領域を解放することで前記メモリの空き容量をさらに増やすシステムキャッシュ解放部と、
を備えるメモリ管理システム。 - 前記システムキャッシュ解放部は、前記メモリ管理部が終了させたプロセスが、ユーザが動作を知覚できない状態のプロセスであった場合に、前記キャッシュ領域を解放する、
請求項1に記載のメモリ管理システム。 - 前記システムキャッシュ解放部は、前記メモリ管理部が終了させたプロセスが、他のプロセスとデータを共有するためのプロセスであった場合に、前記キャッシュ領域を解放する、
請求項1に記載のメモリ管理システム。 - 前記システムキャッシュ解放部は、前記メモリ管理部が終了させたプロセスが、何も実行していない状態のプロセスであった場合に、前記キャッシュ領域を解放する、
請求項1に記載のメモリ管理システム。 - 前記システムキャッシュ解放部が解放させる前記キャッシュ領域を、ページキャッシュ領域にするか、スラブキャッシュ領域にするか、あるいはページキャッシュ領域およびスラブキャッシュ領域の両方にするかを設定可能である、
請求項1に記載のメモリ管理システム。 - 前記メモリ管理部は、前記メモリの空き容量の不足が検出されたとき、前記メモリの空き容量、各プロセスの種類、各プロセスの動作状態、各プロセスによる前記メモリの使用量のうちの1つ以上に基づいて、どのプロセスを終了させるかを選定する、
請求項1に記載のメモリ管理システム。 - 前記複数のプロセスの各々には、そのプロセスの種類または動作状態に基づく優先度が定められ、
前記メモリ管理部は、
前記メモリの空き容量の不足を検出すると、前記メモリの空き容量に基づいて、終了させるプロセスの候補を選定し、
終了させるプロセスの候補が複数あれば、そのうち前記優先度が最も低いプロセスを終了させ、
終了させるプロセスの候補の中に前記優先度の最も低いプロセスが複数あれば、そのうち前記メモリの使用量が最も大きいものを終了させる、
請求項1に記載のメモリ管理システム。 - 請求項1に記載のメモリ管理システムと、
前記複数のプロセスを実行するプロセス実行部と、
前記メモリと、
を備える情報処理装置。 - 複数のプロセスの実行に用いられるメモリの管理方法であって、
メモリ管理システムのメモリ管理部が、前記メモリの空き容量を監視し、前記メモリの空き容量の不足を検出すると、動作中のプロセスのいずれかを終了させることで前記メモリの空き容量を増やし、
前記メモリ管理部が終了させたプロセスの種類または動作状態が予め定められた条件を満たす場合に、前記メモリ管理システムのシステムキャッシュ解放部が、前記メモリにおいてオペレーティングシステムのキャッシュ領域として確保されていた領域を解放することで前記メモリの空き容量をさらに増やす、
メモリの管理方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE112017007318.9T DE112017007318T5 (de) | 2017-05-17 | 2017-05-17 | Speicherverwaltungssystem, Informationsverarbeitungsvorrichtung und Speicherverwaltungsverfahren |
US16/496,840 US20200081741A1 (en) | 2017-05-17 | 2017-05-17 | Information processing apparatus and memory management method |
JP2019518669A JP6541930B2 (ja) | 2017-05-17 | 2017-05-17 | メモリ管理システム、情報処理装置およびメモリの管理方法 |
CN201780090654.XA CN110651253A (zh) | 2017-05-17 | 2017-05-17 | 内存管理系统、信息处理装置及内存管理方法 |
PCT/JP2017/018544 WO2018211628A1 (ja) | 2017-05-17 | 2017-05-17 | メモリ管理システム、情報処理装置およびメモリの管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/018544 WO2018211628A1 (ja) | 2017-05-17 | 2017-05-17 | メモリ管理システム、情報処理装置およびメモリの管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018211628A1 true WO2018211628A1 (ja) | 2018-11-22 |
Family
ID=64273512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2017/018544 WO2018211628A1 (ja) | 2017-05-17 | 2017-05-17 | メモリ管理システム、情報処理装置およびメモリの管理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200081741A1 (ja) |
JP (1) | JP6541930B2 (ja) |
CN (1) | CN110651253A (ja) |
DE (1) | DE112017007318T5 (ja) |
WO (1) | WO2018211628A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11967252B2 (en) * | 2021-07-02 | 2024-04-23 | Syncrono Tech, Inc. | System for and method of training |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143791A1 (en) * | 2012-11-19 | 2014-05-22 | Qualcomm Innovation Center, Inc. | System, method, and apparatus for improving application-launch latencies |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7949814B2 (en) * | 2004-05-22 | 2011-05-24 | Kam Fu Chan | Swapping “fixed system” hard disk |
JP5079345B2 (ja) | 2007-01-29 | 2012-11-21 | 京セラ株式会社 | 電子機器及び電子機器における制御方法 |
JP2012221217A (ja) | 2011-04-08 | 2012-11-12 | Sony Corp | メモリ管理装置、メモリ管理方法、および、制御プログラム |
CN102799471B (zh) * | 2012-05-25 | 2014-11-05 | 上海斐讯数据通信技术有限公司 | 操作系统的进程回收方法及系统 |
CN103544063B (zh) * | 2013-09-30 | 2017-02-08 | 三星电子(中国)研发中心 | 应用于安卓平台的进程清除方法和装置 |
CN103714016B (zh) * | 2014-01-14 | 2017-10-27 | 北京猎豹移动科技有限公司 | 缓存的清理方法、装置及客户端 |
CN104461737B (zh) * | 2014-12-10 | 2018-01-16 | 广东欧珀移动通信有限公司 | 一种内存管理方法和装置 |
CN105740071B (zh) * | 2016-03-17 | 2018-12-04 | 深圳市九洲电器有限公司 | 一种安卓系统运行速度管理方法及系统 |
CN106354562B (zh) * | 2016-08-25 | 2024-04-12 | 深圳市泰衡诺科技有限公司 | 内存清理系统和内存清理方法 |
-
2017
- 2017-05-17 CN CN201780090654.XA patent/CN110651253A/zh active Pending
- 2017-05-17 US US16/496,840 patent/US20200081741A1/en not_active Abandoned
- 2017-05-17 DE DE112017007318.9T patent/DE112017007318T5/de active Pending
- 2017-05-17 WO PCT/JP2017/018544 patent/WO2018211628A1/ja active Application Filing
- 2017-05-17 JP JP2019518669A patent/JP6541930B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143791A1 (en) * | 2012-11-19 | 2014-05-22 | Qualcomm Innovation Center, Inc. | System, method, and apparatus for improving application-launch latencies |
Non-Patent Citations (2)
Title |
---|
"spaz2000_m, OOM/minfree Settings for GB devices(Biboroku) - Yahoo! Chiebukuro", YAHOO! CHIEBUKURO, 8 January 2013 (2013-01-08), pages 1 - 7, Retrieved from the Internet <URL:https://web.archive.org/web/20170707024846/https://note.chiebukuro.yahoo.co.jp/detail/nl45195> [retrieved on 20170707] * |
HIROSHI SAKAGAM I: "Chiteki Boken ni Noridaso Susume! Kernel Tankentai: Dai 3 Kai Memory Kanri (Karnel Kukan", NIKKEI LINUX, vol. 8, no. 3, 8 March 2006 (2006-03-08), pages 120 - 131, ISSN: 1345-0182 * |
Also Published As
Publication number | Publication date |
---|---|
US20200081741A1 (en) | 2020-03-12 |
JP6541930B2 (ja) | 2019-07-10 |
DE112017007318T5 (de) | 2019-12-24 |
JPWO2018211628A1 (ja) | 2019-07-04 |
CN110651253A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8997171B2 (en) | Policy based application suspension and termination | |
US9361150B2 (en) | Resuming applications and/or exempting applications from suspension | |
JP2006351004A (ja) | 携帯端末機のメモリ管理方法 | |
WO2015138150A1 (en) | Dynamic resource management for multi-process applications | |
US11360884B2 (en) | Reserved memory in memory management system | |
EP3812904B1 (en) | Swap area in memory using multiple compression algorithms | |
EP3120251A1 (en) | Asynchronously prefetching sharable memory pages | |
CN107408073B (zh) | 使用存储器压缩来减少存储器提交开销 | |
JP2018063505A (ja) | メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラム | |
US9069573B2 (en) | Method for generating reduced snapshot image for booting and computing apparatus | |
WO2018211628A1 (ja) | メモリ管理システム、情報処理装置およびメモリの管理方法 | |
CN108334383B (zh) | 一种信息处理方法及电子设备 | |
KR100797122B1 (ko) | 휴대 단말기의 이동식 저장 매체를 이용한 파일 처리 장치및 방법 | |
JP6273907B2 (ja) | 車両用機器 | |
US10534702B2 (en) | Information processing apparatus, information processing method, and storage medium | |
JP4997063B2 (ja) | 計算機の起動方法及び計算機システム | |
KR20240014742A (ko) | 성능 정보를 고려하는 메모리 관리 방법 및 장치 | |
JP4999932B2 (ja) | 仮想計算機システム及び仮想計算機重み付け設定処理方法及び仮想計算機重み付け設定処理プログラム | |
JP7214999B2 (ja) | 情報処理装置及び方法 | |
CN112565355A (zh) | 一种读取请求的控制方法及相关设备 | |
JP2006079146A (ja) | データ処理装置 | |
JP2011191842A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17909825 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2019518669 Country of ref document: JP Kind code of ref document: A |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 17909825 Country of ref document: EP Kind code of ref document: A1 |