存储器管理设备、存储器管理方法以及控制程序的制作方法

文档序号:6369304阅读:127来源:国知局
专利名称:存储器管理设备、存储器管理方法以及控制程序的制作方法
技术领域
本公开内容涉及一种存储器管理设备、存储器管理方法以及控制程序,更具体地,涉及抑制存储器释放处理的执行频率的存储器管理设备、存储器管理方法以及控制程序。
背景技术
在现有技术中,作为以程序为单位限制存储器(主存储装置)的使用量的技术,例如,Linux 的 cgroup 是公知的(例如,参见 Balbir Singh 等人的“Containers:Challengeswith the memory resource controller and its performance,,,Proceedings of theLinux Symposium,卷二,加拿大,2007 年 6 月 27 日至 30 日,209-222 页)。如果使用cgroup,则在系统中执行的程序(处理)可被划分成多个组,并且可针对·每个组来设置存储器使用量的上限。图I是示出在使用cgroup限制每个组的存储器使用量的系统中包括一个程序的组的存储器使用量的转变示例的图。横轴表示时间,并且纵轴表示存储器使用量。在图I中,LI表示该组的存储器使用量的上限。在该示例中,示出了如下情况的示例辅助存储装置是不可写的,并且无法将存储器上的数据清空(evacuate)到辅助存储装置。如图I所示,随着系统的运行时间变长,组的存储器使用量增加。如果存储器使用量在时间tl达到上限LI,则例如通过释放组中的程序的指令部分可以被丢弃的存储器区域来执行用以保证必需的存储器区域的存储器释放处理,甚至当整个系统的存储器中存在空闲区域时也是如此。此外,当组中包括多个程序时,对于存储器释放处理,例如,重要性较低的程序可被迫终止。然后,每次存储器使用量达到上限LI时,重复执行存储器释放处理。图2是示出程序的指令部分和除指令部分以外的数据部分的、图I的存储器使用量的转变的图。如图2所示,每次执行存储器释放处理时,数据部分的存储器使用量几乎不改变而指令部分的存储器使用量减小。这是由于如果可以重写数据的值,则不丢弃数据部分而是应该将其保存在存储器中,并且相应地,释放允许被丢弃的指令部分的存储器区域。此外,在使用cgroup的系统中,甚至当整个系统的存储器使用量达到预定上限时,也执行存储器释放处理以保证必需的存储器区域。

发明内容
当执行存储器释放处理时,整个系统为了该处理而被耗费。因此,例如,系统响应退化或者操作变得不稳定(例如,视频或音频的干扰)。具体地,当安装在例如嵌入式装置上的存储器的容量较小时,存储器释放处理的执行频率变高并且系统的能力大大退化。本公开内容使得能够抑制存储器释放处理的执行频率,同时还抑制系统的能力退化。根据本公开内容的实施例,提供了一种存储器管理设备,包括存储器管理单元,用于控制来自辅助存储装置的程序到主存储装置的布置并限制主存储装置中用于布置程序的指令部分的容量。存储器管理单元可针对每个程序限制要布置在主存储装置中的指令部分的容量。可设置用于基于每个程序的预定条件而动态地设置要布置在主存储装置中的指令部分的容量的上限的设置单元。可在存储器管理单元中针对每个程序设置用于在主存储装置中布置指令部分的算法。存储器管理单元可预测未来要执行的指令部分,并在需要该指令部分之前将该指令部分布置在主存储装置中。根据本公开内容的另一实施例,提供了一种存储器管理方法,包括通过存储器管·理设备控制来自辅助存储装置的程序到主存储装置的布置并限制主存储装置中用于布置程序的指令部分的容量。根据本公开内容的另一实施例,提供了一种用于使得计算机执行处理的程序,该处理包括控制来自辅助存储装置的程序到主存储装置的布置并限制主存储装置中用于布置程序的指令部分的容量。根据本公开内容的另一实施例,控制来自辅助存储装置的程序到主存储装置的布置,并限制主存储装置中用于布置程序的指令部分的容量。根据本公开内容的方面,可以抑制存储器释放处理的执行频率,同时抑制系统的能力退化。


图I是示出使用cgroup的系统的存储器使用量的转变的示例的图;图2是示出程序的指令部分和除指令部分以外的数据部分的、图I的存储器使用量的转变的图;图3是示出应用了本公开内容的信息处理系统的实施例的框图;图4是示出最大指令存储器分配量设置处理的流程图;图5是示出存储器分配处理的流程图;图6是示出存储器分配处理的具体示例的图;图7是示出存储器分配处理的具体示例的图;图8是示出应用了本公开内容的系统的存储器使用量的转变示例的图;图9是示出程序的指令部分和除指令部分以外的数据部分的、图8的存储器使用量的转变的图;以及图10是示出使用cgroup的系统与使用本公开内容的系统的存储器使用量的转变之间的比较的图。
具体实施例方式在下文中,将描述用于实现本公开内容的模式(下文中称为实施例)。此外,将按以下顺序给出描述。I.实施例
2.变型〈I.实施例 >[信息处理系统的配置示例]图3是示出应用了本公开内容的信息处理系统101的实施例的框图。信息处理系统101例如是可以应用于电视接收机、各种嵌入式装置(诸如,移动电话)、计算机等的系统。在下文中,应用了信息处理系统101的设备、系统等将被简称为系统。信息处理系统101包括存储器管理器111、辅助存储装置112以及主存储装置113。·存储器管理器111执行信息处理系统101的存储器管理。例如,存储器管理器111控制来自辅助存储装置112的程序或数据到主存储装置113的布置。此外,存储器管理器111可由软件或硬件来实现或者可由其组合来实现。当存储器管理器111由例如软件来实现时,存储器管理器111被实现为由未示出的处理器(诸如,CPU (中央处理单元))运行的OS (操作系统)的功能的一部分。另一方面,当存储器管理器111由硬件来实现时,存储器管理器111例如由存储器管理单元(MMU)来实现。辅助存储装置112例如包括诸如ROM (只读存储器)、硬盘驱动器或者闪存的存储装置,其具有比主存储装置113大的容量并且一般具有低存取速度。此外,辅助存储装置112可以是数据可写入存储装置或者可以是数据不可写入存储装置。主存储装置113例如包括数据可写入存储装置,诸如RAM (随机存取存储器)。在下文中,主存储装置113被简称为存储器。在下文中,主存储装置113的区域被称为存储器区域,并且使用量也被称为存储器使用量。这里将描述存储器管理器111的功能的配置示例。存储器管理器111包括设置单元121和存储器管理单元122。设置单元121针对每个程序,基于例如从外部输入的信息而设置主存储装置113的、允许布置存储在辅助存储装置112中的每个程序的指令部分的容量的上限(下文中称为最大指令存储器分配量)。设置单元121向存储器管理单元122报告所设置的最大指令存储器分配量或者将所设置的最大指令存储器分配量存储在主存储装置113中。存储器管理单元122根据来自未示出的处理器(诸如,CPU)所执行的程序的请求、主存储装置113的使用状态等,控制来自辅助存储装置112的程序或数据到主存储装置113的布置。例如,存储器管理单元122在必要时将存储在辅助存储装置112中的程序或数据布置在主存储装置113中或者丢弃存储在主存储装置113中的程序或数据。此外,如果辅助存储装置112是可写入的,则存储器管理单元122在必要时将存储在主存储装置113中的程序或数据清空到辅助存储装置112。此外,存储器管理单元122限制存储在辅助存储装置112中的每个程序的指令部分,以使得在主存储装置113中所布置的容量等于或小于最大指令存储器分配量。[最大指令存储器分配量设置处理]接下来,将参照图4的流程图描述信息处理系统101执行的最大指令存储器分配
量设置处理。
该处理例如在预定定时(诸如,信息处理系统101启动时或者当最大指令存储器分配量的设置值被输入到存储器管理器111时)开始。在步骤SI中,设置单元121获取例如设置条件。在步骤S2中,设置单元121基于例如所获取的设置条件,针对每个程序设置最大指令存储器分配量。设置单元121向存储器管理单元122报告所设置的最大指令存储器分配量或者将所设置的最大指令存储器分配量存储在主存储装置113中。然后,最大指令存储器分配量设置处理结束。这里将描述设置最大指令存储器分配量的方法的具体示例。例如,当信息处理系统101启动时,设置单元121从辅助存储装置112读取每个程序的最大指令存储器分配量的初始值。设置单元121将每个程序的最大指令存储器分配量·设置为该初始值。每个程序的最大指令存储器分配量的初始值是基于例如每个程序的优先级或规模而设置的。例如,对于应该优先执行的程序,将初始值设置为大值,而对于允许延迟执行的程序,将初始值设置为小值。此外,例如,对于具有较大规模的程序,将初始值设置为大值,而对于具有小规模的程序,将初始值设置为小值。此外,例如,设置单元121响应于来自程序的请求而改变正执行的程序的最大指令存储器分配量。例如,当期望执行频率高时,每个程序请求增加最大指令存储器分配量,而当期望执行频率低时,每个程序请求减小最大指令存储器分配量。此外,例如,设置单元121基于例如信息处理系统101的状态或操作环境,改变每个程序的最大指令存储器分配量。例如,当执行预定功能时,设置单元121增加实现该功能所需的程序的最大指令存储器分配量,并且减小不必要程序的最大指令存储器分配量。替选地,例如,在预定时间内,设置单元121增加实现假设为在该时间附近执行的功能所需的程序的最大指令存储器分配量,并且减小不必要程序的最大指令存储器分配量。上述用于改变最大指令存储器分配量的条件是一个示例,并且可基于其它条件改变最大指令存储器分配量。代替被动态地设置,最大指令存储器分配量可以是固定的。[存储器分配处理]接下来,将参照图5的流程图描述信息处理系统101执行的存储器分配处理。该处理例如在向存储器管理单元122请求存储器分配时开始。该存储器分配请求例如可由正执行的程序明确地提出或者可例如由OS而非程序提出。在下文中,将作为执行存储器分配所针对的目标的程序称为分配目标程序。在步骤S51中,存储器管理单元122确定是否请求了对指令部分的分配。如果确定已请求了对指令部分的分配,则处理进行到步骤S52。在步骤S52中,存储器管理单元122确定分配目标程序的指令部分的存储器使用量是否超过上限。具体地,存储器管理单元122获得用于已请求了分配的指令部分的容量与分配目标程序的指令部分的当前存储器使用量(布置了分配目标程序的指令部分的主存储装置113的容量)之和。如果所获得的和超过分配目标程序的最大指令存储器分配量,则存储器管理单元122确定分配目标程序的指令部分的存储器使用量超过上限,并且处理进行到步骤S53。
在步骤S53中,存储器管理单元122释放分配目标程序的指令部分正使用的存储器区域。具体地,存储器管理单元122释放分配目标程序的指令部分正使用的存储器区域的至少一部分,以使得分配目标程序的存储器分配量的可用量等于或大于用于请求了分配的指令部分的容量。这里,存储器分配量的可用量是通过从分配目标程序的最大指令存储器分配量减去存储器使用量而获得的值。作为用于确定此时要释放的存储器区域的算法,例如,可以采用任意算法,诸如LRU (最近最少使用)或环形缓冲区。然后,处理进行到步骤S54。另一方面,如果在步骤S52中确定分配目标程序的指令部分的存储器使用量没有超过上限,则跳过步骤S53的处理,并且处理进行到步骤S54。在步骤S54中,存储器管理单元122执行对指令部分的存储器分配。即,存储器管·理单元122从辅助存储装置112读取已请求了分配的分配目标程序的指令部分,并且将该指令部分布置在主存储装置113的空闲区域中。然后,处理进行到步骤S56。另一方面,如果在步骤S51中确定已请求了对数据部分的分配,则处理进行到步骤 S55。在步骤S55中,存储器管理单元122执行正常存储器分配处理。例如,如果用于已请求了分配的分配目标程序的数据部分的容量等于或小于主存储装置113的空闲容量,则存储器管理单元122从辅助存储装置112读取数据部分,并且将该数据部分布置在主存储装置113的空闲区域中。另一方面,如果用于已请求了分配的数据部分的容量超过主存储装置113的空闲容量,则存储器管理单元122执行主存储装置113的已用区域的释放,以使得主存储装置113的空闲容量等于或大于数据部分的容量。在该情况下,作为用于释放存储器区域的算法,可以采用任意算法,诸如LRU(最近最少使用)或FIFO (先进先出)。存储器管理单元122从辅助存储装置112读取已请求了分配的数据部分,并且将该数据部分布置在主存储装置113的空闲区域中。然后,处理进行到步骤S56。在步骤S56中,存储器管理单元122更新表示存储器的使用状态的信息。例如,存储器管理单元122更新表示主存储装置113的已用区域和空闲区域的信息,或者更新表示每个程序的指令部分的存储器使用量的信息。 然后,存储器分配处理结束。作为图5的存储器分配处理的具体示例,这里将参照图6和图7描述对存储在辅助存储装置112中的程序P的指令部分执行存储器分配的情况。假设程序P的指令部分被划分成六个块,S卩,指令块I至6。指令块对应于例如虚拟存储系统中的页,并且假设为具有相同的大小且包括程序P的多个指令。在下文中,假设按照从指令块I开始的升序而顺序地执行指令块I至6。此外,假设程序P的最大指令存储器分配量被设置为3个块。例如,由于在将指令块I至3布置在主存储装置113中之前未超过最大指令存储器分配量,因此,指令块I、指令块2以及指令块3按顺序布置在主存储装置113中,如图7的左侧所示。当指令块4直接布置在主存储装置113中时,程序P的指令部分的存储器使用量超过最大指令存储器分配量。例如,释放用于首先布置在主存储装置113中的指令块I的区域,并且将所释放的区域分配给指令块4。结果,指令块2至4布置在主存储装置113中,如图7的中间所示。类似地,释放用于指令块2的区域、然后将其分配给指令块5,并且释放用于指令块3的区域、然后将其分配给指令块6。最终,指令块4至6布置在主存储装置113中,如图7的右侧所示。如上所述,如在现有技术中,每个程序的指令部分的存储器使用量受限制,并且除 指令部分以外的数据部分的存储器使用量在整个系统中受限制。结果,可以抑制整个系统的存储器使用量,并且抑制存储器释放处理的执行频率。将参照图8至图10对此进行描述。图8示出了当应用了信息处理系统101的系统执行包括在呈现上述图I中的存储器使用量的转变的组中的程序(下文中称为比较目标程序)时的存储器使用量的转变示例。图9是与上述图2相同的图,并且示出了指令部分和除指令部分以外的数据部分的、图8中的存储器使用量的转变。图10示出了图I的图与图8的图之间的比较,并且是示出使用cgroup的系统与使用信息处理系统101的系统中的比较目标程序的存储器使用量的转变之间的比较的图。图8至图10中的LI具有与图I和图2中的LI相同的值。在图9中,L2表示比较目标程序的指令部分的存储器使用量的上限。此外,以图10中的实线表示的图示出了使用信息处理系统101的系统中的比较目标程序的存储器使用量的转变,而以虚线表示的图示出了在使用Cgroup的系统中包括比较目标程序的组的存储器使用量的转变。在该示例中,辅助存储装置112是不可写的,并且难以将主存储装置113上的数据清空到辅助存储装置112。随着系统的运行时间变长,比较目标程序的存储器使用量增加,如图8至图10所示。然而,当指令部分的存储器使用量在时间til达到上限L2时,指令部分的存储器使用量不再增加。因此,与使用cgroup的系统相比,抑制了比较目标程序的存储器使用量的增加。因此,在使用信息处理系统101的系统中,随着抑制了每个程序的存储器使用量的增加,可以抑制整个系统的存储器使用量,并且可以抑制存储器释放处理的执行频率。因此,可以抑制由于存储器释放处理的执行而导致的系统能力退化。结果,可以防止例如系统暂时具有高负荷、防止系统响应退化以及防止操作不稳定(例如,视频或音频的干扰)。此外,例如,当在系统启动时已确定了程序的启动顺序时,应该首先启动但是具有低优先级的程序的最大指令存储器分配量被设置为小值。因此,可以防止程序占用存储器、防止执行存储器释放处理以及防止在系统启动时延迟启动。还可以在主存储装置113中布置除了指令部分外的更多数据,并且加速或稳定系统操作。
在使用cgroup的系统中,当组的存储器使用量超过限值时,执行错误处理,例如,如上所述,甚至当整个系统的存储器中存在空闲区域时,组中的程序也被迫终止。另一方面,在信息处理系统101中,甚至当程序的指令部分的存储器使用量超过限值时,程序的数据部分也可以布置在主存储装置113中,并且如果主存储装置113中存在空闲区域,则不执行如上所述的错误处理。结果,可以稳定系统的操作。此外,在信息处理系统101中,可以针对每个程序将最大指令存储器分配量设置为适当的值,可以抑制指令部分的重新布置的执行频率,并且可以抑制系统的能力退化。此夕卜,当如上所述动态地改变最大指令存储器分配量时,可以抑制指令部分的重新布置的执行频率,并且可以抑制系统的能力退化。〈2.变型〉在下文中,将描述本公开内容的实施例的变型。
·
[变型I]在以上描述中,示出了针对每个程序设置最大指令存储器分配量的示例。然而,例如,可将各个程序分类成多个组,并且可针对每个组设置最大指令存储器分配量。即,对于每个组,属于该组的所有程序的指令部分的存储器使用量可被限制为不超过最大指令存储器分配量。替选地,例如,可在整个系统中设置一个最大指令存储器分配量。即,在系统中执行的所有程序的指令部分的存储器使用量可被限制为不超过最大指令存储器分配量。[变型2]此外,可针对每个程序或针对以上的每个组设置用于在主存储装置113中布置指令部分的算法(用于对指令部分的存储器分配的算法)。例如,可针对每个程序或每个组使用不同的算法,以调整指令部分的重新布置频率。替选地,例如,可针对每个程序或每个组使用不同的算法,以改变用于释放指令部分的存储器区域的准则(例如,存储器区域的使用频率或保证了存储器区域的时段)。此外,当整体程序由运行二进制(run binary)和共享库构成时,可针对运行二进制的指令部分和共享库的指令部分使用不同的算法,以增加共享库的指令部分的可重用性。[变型3]例如,可执行指令部分的预先读取,以进一步提高执行速度。即,未来要执行的指令部分可被预测、在需要该指令部分之前从辅助存储装置112读取并且被布置在主存储装置113中。此外,可认为未来要执行的指令部分的预测是例如基于预先获取的如下简档来执行其表示当系统工作时每个程序的指令部分的执行顺序。[变型4]在图6和图7的示例中,示出了了如下示例程序的指令部分以具有恒定大小的块为单位而布置在主存储装置113中。本公开内容还可应用于布置在主存储装置113中的指令部分的块的大小不恒定的情况。本公开内容还可应用于例如指令部分以不同于块的指令或段为单位布置在主存储装置113中的情况。
[变型5]上述一组处理可由硬件来执行或可由软件来执行。当该组处理由软件来执行时,将构成该软件的程序安装在计算机中。这里,计算机的示例包括嵌入在专用硬件中的计算机、能够通过安装的各种程序而执行各种功能的通用个人计算机等。计算机执行的程序例如可记录在作为封装介质的可移动介质中并以该可移动介质提供。替选地,程序可经由有线或无线传输介质(诸如,局域网、因特网或数字卫星广播)来提供。替选地,程序可预先安装在嵌入设备中的存储装置(例如,辅助存储装置112)中。此外,计算机执行的程序可以是按照本说明书中描述的顺序以时间序列执行处理的程序,或者可以是并行地或在必要的定时(诸如,进行调用时)执行处理的程序。在本说明书中,术语“系统”指的是包括多个设备、单元等的整个设备。·此外,本公开内容的实施例不限于上述实施例,并且在不背离本公开内容的范围和精神的情况下,可对本公开内容进行各种改变。另外,本技术还可如下配置。(I) 一种存储器管理设备,包括存储器管理单元,用于控制来自辅助存储装置的程序到主存储装置的布置,并限制所述主存储装置中用于布置所述程序的指令部分的容量。(2)根据(I)所述的存储器管理设备,其中,所述存储器管理单元针对每个程序限制要布置在所述主存储装置中的所述指令部分的容量。(3)根据(2)所述的存储器管理设备,还包括设置单元,用于基于每个程序的预定条件,动态地设置要布置在所述主存储装置中的所述指令部分的容量的上限。(4)根据(I)至(3)中任一项所述的存储器管理设备,其中,所述存储器管理单元针对每个程序设置用于在所述主存储装置中布置所述指令部分的算法。(5)根据(I)至(4)中任一项所述的存储器管理设备,其中,所述存储器管理单元预测未来要执行的指令部分,并且在需要所述指令部分之前将所述指令部分布置在所述主存储装置中。(6) 一种存储器管理方法,包括通过存储器管理设备控制来自辅助存储装置的程序到主存储装置的布置,并限制所述主存储装置中用于布置所述程序的指令部分的容量。(7) 一种用于使得计算机执行处理的程序,所述处理包括控制来自辅助存储装置的程序到主存储装置的布置,并限制所述主存储装置中用于布置所述程序的指令部分的容量。本公开内容包含与2011年5月16日向日本专利局提交的日本优先权专利申请JP2011-109045中公开的主题内容相关的主题内容,其全部内容在此通过引用而合并于此。
权利要求
1.一种存储器管理设备,包括 存储器管理单元,用于控制来自辅助存储装置的程序到主存储装置的布置,并限制所述主存储装置中用于布置所述程序的指令部分的容量。
2.根据权利要求I所述的存储器管理设备,其中 所述存储器管理单元针对每个程序限制要布置在所述主存储装置中的所述指令部分的容量。
3.根据权利要求2所述的存储器管理设备,还包括 设置单元,用于基于每个程序的预定条件,动态地设置要布置在所述主存储装置中的所述指令部分的容量的上限。
4.根据权利要求I中所述的存储器管理设备,其中 所述存储器管理单元针对每个程序设置用于在所述主存储装置中布置所述指令部分的算法。
5.根据权利要求I所述的存储器管理设备,其中 所述存储器管理单元预测未来要执行的指令部分,并且在需要所述指令部分之前将所述指令部分布置在所述主存储装置中。
6.—种存储器管理方法,包括 通过存储器管理设备控制来自辅助存储装置的程序到主存储装置的布置,并限制所述主存储装置中用于布置所述程序的指令部分的容量。
7.一种用于使得计算机执行处理的程序,所述处理包括 控制来自辅助存储装置的程序到主存储装置的布置,并限制所述主存储装置中用于布置所述程序的指令部分的容量。
全文摘要
本发明公开了一种存储器管理设备、存储器管理方法以及控制程序,其中,如果在步骤S51中确定请求了对指令部分的分配并且在步骤S52中确定分配目标程序的指令部分的存储器使用量超过上限,则在步骤S53中释放分配目标程序的指令部分正使用的存储器区域,并且在步骤S54中执行对指令部分的存储器分配。如果在步骤S52中确定分配目标程序的指令部分的存储器使用量没有超过上限,则跳过步骤S53中的处理。如果在步骤S51中确定请求了对数据部分的分配,则在步骤S55中执行正常存储器分配处理。本公开内容可应用于例如嵌入式装置。
文档编号G06F3/06GK102789433SQ20121014269
公开日2012年11月21日 申请日期2012年5月9日 优先权日2011年5月16日
发明者一森诚也, 小松崎顺子, 田森正纮, 神长浩气, 高桥胜也 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1