软件控制装置、软件控制方法、以及软件控制程序转让专利

申请号 : CN201080065346.X

文献号 : CN102792275B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 山下浩一郎山内宏真宫崎清志铃木贵久栗原康志

申请人 : 富士通株式会社

摘要 :

一种软件控制装置,包括:判断单元(306),所述判断单元(306)判断起动中的软件和执行中的软件是否正在访问同一共用资源;以及控制单元(307),在所述判断单元(306)判断为正在访问同一共用资源的情况下,所述控制单元(307)控制所述执行中的软件,以暂时停止所述执行中的软件。

权利要求 :

1.一种软件控制装置,其特征在于,包括:

判断单元(306),所述判断单元(306)判断起动中的软件和执行中的软件是否正在访问同一共用资源;以及控制单元(307),在所述判断单元(306)判断为正在访问同一共用资源的情况下,所述控制单元(307)在存在与起动中的软件对应地起动的设备时,暂时停止所述执行中的软件,在起动中的软件访问系统资源或存储器时,降低所述执行中的软件的执行优先级。

2.如权利要求1所述的软件控制装置,其特征在于,还包括:

检测单元(304、311),所述检测单元(304、311)检测所述起动中的软件从起动开始经过预定的起动时间还未完成起动,在所述检测单元(304、311)检测出还未完成起动,并且所述同一共用资源是特定的共用资源的情况下,所述控制单元(307)控制所述执行中的软件的执行优先级,以使其降低。

3.如权利要求2所述的软件控制装置,其特征在于,还包括:

提取单元(309),所述提取单元(309)从存储任意的软件在非竞争状态下的起动时间和表示任意的软件彼此在竞争状态下的性能下降的系数的数据库中提取所述起动中的软件在非竞争状态下的起动时间和表示所述起动中的软件和所述执行中的软件在竞争状态下的性能下降的系数;以及计算单元(310),所述计算单元(310)基于由所述提取单元(309)提取的起动时间和由所述提取单元(309)提取的系数来计算所述起动中的软件在竞争状态下的起动预测时间,所述检测单元(304、311)还检测由所述计算单元(310)计算出的所述起动中的软件在竞争状态下的起动预测时间超过所述预定的起动时间,在所述检测单元(304、311)检测出所述起动预测时间超过所述预定的起动时间的情况下,所述控制单元(307)控制所述执行中的软件的执行优先级,以使其降低。

4.如权利要求1至3中任一项所述的软件控制装置,其特征在于,还包括:

解除单元(305),在所述起动中的软件起动完成后,所述解除单元解除由所述控制单元(307)控制的执行中的软件的控制。

5.一种计算机的软件控制方法,所述计算机包括判断单元(306)和控制单元(307),其特征在于,所述计算机的软件控制方法包括以下步骤:判断步骤,通过所述判断单元(306)来判断起动中的软件和执行中的软件是否正在访问同一共用资源;以及控制步骤,在通过所述判断步骤判断为正在访问同一共用资源的情况下,通过所述控制单元(307)在存在与起动中的软件对应地起动的设备时暂时停止所述执行中的软件,在起动中的软件访问系统资源或存储器时,降低所述执行中的软件的执行优先级。

说明书 :

软件控制装置、软件控制方法、以及软件控制程序

技术领域

[0001] 本发明涉及控制软件的软件控制装置、软件控制方法、以及软件控制程序。

背景技术

[0002] 一直以来都在开发高速起动软件的技术。在软件起动中不能接受用户的操作是导致用户失望的原因。作为高速起动软件的技术,公开有如下的技术:例如,具有保存CPU(Central Processing Unit,中央处理单元)的分配规则的表,使特定的CPU或者CPU组优先地进行处理(例如,参考下述专利文献1)。
[0003] 另外,作为向各CPU发送命令的技术,公开有向各CPU广播发送高速缓存一致性请求的技术(例如,参考下述专利文献2)。另外,在起动优先级高的新软件时,除了专利文献1的技术以外,还公开了重新排队、交换/退让、迁移(migrate)这3种技术。
[0004] 所谓重新排队是指当新软件的优先级高时,管理软件的分配的OS(operating system,操作系统)等将已运行的软件返回到软件的执行队列的技术。在CPU资源空出的状态下,OS再次执行被返回到执行队列的软件。
[0005] 所谓交换/退让是指当新软件的优先级高时,OS将已运行的软件退让到存储器中的技术。作为退让的内容,将软件确保的存储器上下文信息、寄存器信息等软件的运行所需的所有信息进行退让。与重新排队同样地,在CPU资源空出的状态下,OS再次执行被退让的软件。
[0006] 所谓迁移是指,由于新软件的引入而CPU整体的负载均衡发生变化,因此通过各CPU的调度器进行再次配置被分配给CPU的软件的技术。
[0007] 现有技术文献
[0008] 专利文献
[0009] 专利文献1:日本专利文献特开2007-316710号公报;
[0010] 专利文献2:日本专利文献特开2005-141606号公报。

发明内容

[0011] 发明所要解决的问题
[0012] 但是,在上述的现有技术中存在如下问题:即使将专利文献2的技术与专利文献1结合,而向其他的CPU进行广播发送以优先进行特定的CPU的处理,从而使不需要控制的软件也受到控制。具体地说存在以下问题:由于提高了新软件的执行优先级,因此执行中的软件与新软件没有相关性,不需要控制的软件的执行优先级也相对地降低。另外,还存在重新排队、交换/退让、迁移的处理量大,不适用于嵌入式环境等CPU的处理能力不高的环境的问题。
[0013] 本发明的目的是为了解决上述现有技术中的问题而提供能够缩短需要的软件的起动时间的软件控制装置、软件控制方法、以及软件控制程序。
[0014] 用于解决问题的手段
[0015] 为了解决上述的问题并达到目的,公开的软件控制装置的要件在于,判断起动中的软件和执行中的软件是否正在访问同一共用资源,并且在判断为正在访问同一共用资源的情况下控制执行中的软件,以暂时停止执行中的软件。
[0016] 发明的效果
[0017] 根据本软件控制装置、软件控制方法、以及软件控制程序,能够达到相对地增加起动中的软件访问共用资源的比例,缩短软件的起动时间的效果。

附图说明

[0018] 图1是示出实施方式涉及的软件控制装置的硬件构成的框图;
[0019] 图2是示出软件控制装置100的硬件构成的一部分和软件构成的框图;
[0020] 图3是示出软件控制装置100的功能的构成的框图;
[0021] 图4是示出共用资源数据库202的存储内容的一个例子的说明图;
[0022] 图5是示出竞争特性表301的存储内容的一个例子的说明图;
[0023] 图6是示出起动应答时间表302的存储内容的一个例子的说明图;
[0024] 图7-1是示出软件起动时的控制的情况的说明图(其一);
[0025] 图7-2是示出软件起动时的控制的情况的说明图(其二);
[0026] 图8是共用资源数据库202的生成处理的流程图;
[0027] 图9-1是软件控制处理的流程图(其一);
[0028] 图9-2是软件控制处理的流程图(其二)。

具体实施方式

[0029] 以下参考附图,详细地说明本发明涉及的软件控制装置、软件控制方法、以及软件控制程序的优选的实施方式。
[0030] (软件控制装置的硬件构成)
[0031] 图1是示出实施方式涉及的软件控制装置的硬件构成的框图。在图1中,软件控制装置100包括搭载多个CPU的CPUs 101、ROM(Read-Only Memory,只读存储器)102、RAM(Random Access Memory,随机存取存储器)103。另外,软件控制装置100包括闪速只读存储器104、闪速只读存储器控制器105、闪速只读存储器106。另外,在软件控制装置100中,作为与用户或者其他的设备的输入输出装置,包括显示器107、I/F(Interface,接口)108、键盘109。另外,各构成部分分别通过总线110连接。
[0032] 这里,CPUs 101执行软件控制装置100的整体的控制。CPUs 101是指排列单核处理器而连接的所有的CPU。在后面通过图2说明CPUs 101的细节。如前所述,本实施方式涉及的硬件构成是搭载多个核的多核处理器系统。
[0033] 所谓多核处理器系统是指包含搭载有多个核的处理器的计算机系统。只要是搭载有多个核,既可以是搭载有多个核的单个处理器,也可以是排列单核的处理器的处理器组。此外,在本实施方式中,为了便于说明,以排列有作为单核的处理器的CPU的处理器组为例进行说明。另外,在本实施方式中,虽然以多核处理器系统进行说明,但是也可以是具有并行执行多个软件的多道程序设计功能的单核处理器。
[0034] ROM 102存储有引导程序等程序。RAM 103被用作CPUs 101的工作区。闪速只读存储器104存储有如OS等系统软件以及应用软件等。例如,当更新OS时,软件控制装置100通过I/F 108接收新的OS,并将保存在闪速只读存储器104的旧的OS更新为接收到的新的OS。
[0035] 闪速只读存储器控制器105按照CPUs 101的控制控制对闪速只读存储器106的数据的读/写。闪速只读存储器106在闪速只读存储器控制器105的控制下存储写入的数据。作为数据的具体例子,有软件控制装置100的用户通过I/F 108获取的图像数据、视频数据等。闪速只读存储器106能够采用例如存储卡、SD卡等。
[0036] 显示器107显示光标、图标或者工具箱,以及文档、图像、功能信息等数据。该显示器107能够采用例如TFT液晶显示器等。
[0037] I/F 108通过通信线路连接到LAN(Local Area Network,局域网)、WAN(Wide Area Network,广域网)、互联网等网络111,并经由网络111与其他装置连接。而且,I/F 108充当网络111与内部的接口,控制来自外部装置的数据的输入输出。I/F 108能够采用例如调制解调器或者LAN适配器等。
[0038] 键盘109包括用于输入数字、各种指示等的键,进行数据的输入。另外,键盘109可以是触摸屏式的输入板或者数字键盘等。
[0039] 图2是示出软件控制装置100的硬件构成的一部分和软件构成的框图。在图2中,作为用于说明后述的软件构成所需要的硬件构成而图示出了CPUs 101和存储器201。本实施方式涉及的CPUs 101由多个CPU,CPU#0、CPU#1、CPU#2、CPU#3构成。CPUs 101既可以由一个CPU构成,也可以由两个以上的CPU构成。各CPU和存储器201分别通过总线110连接。存储器201是CPUs 101直接访问的访问速度高的主存储装置,相当于ROM 102、RAM 103、闪速只读存储器104。
[0040] 各CPU通过前述的硬件构成参照共用资源数据库202,来执行后述的软件A~软件G。共用资源数据库202描述软件访问的共用资源的使用信息。所谓共用资源是指软件访问的设备或存储器201。后面使用图4来说明共用资源数据库202的细节。
[0041] 所谓设备是指如闪速只读存储器106等访问速度低的辅助存储器。另外,虽然在图1中没有示出,但是如果有其他的存储装置,那么这些存储装置也包含在设备中。另外,在通过I/F 108连接有扫描仪、打印机等具有输入输出功能的装置的情况下,这些装置也包含在设备中。软件控制装置100访问与I/F 108连接的装置中搭载的RAM等。
[0042] 各CPU通过执行作为OS的功能的调度器来依次执行多个软件。具体地说,CPU#0通过调度器#0执行软件F。同样地,CPU#1通过调度器#1执行软件B。CPU#2通过调度器#2执行软件C和软件G。CPU#3通过调度器#3执行软件D和软件E。
[0043] 在这种状态下,当执行新软件A时,CPU#0开始软件A的起动,并且向CPU#0~CPU#3广播发送表示软件A被起动的消息。
[0044] (软件控制装置100的功能的构成)
[0045] 接着,说明软件控制装置100的功能的构成。图3是示出软件控制装置100的功能的构成的框图。软件控制装置100构成为包括控制指示部303、检测部304、解除指示部305、判断部306、控制部307、解除部308、提取部309、计算部310、以及检测部311。作为其控制部分的功能(控制指示部303~检测部311)具体地说,通过CPUs 101执行例如图1所示的ROM 102、RAM 103、闪速只读存储器104等存储装置中存储的程序来实现该功能。或者,该功能可以通过其他的CPU经由I/F 108执行上述程序来实现。
[0046] 另外,软件控制装置100能够访问共用资源数据库202、竞争特性表301、起动应答时间表302。共用资源数据库202保存共用资源的使用状况。所谓共用资源是指如前所述的存储器201或设备。后面使用图4来说明共用资源数据库202的细节。
[0047] 另外,虽然示出共用资源数据库202、竞争特性表301、起动应答时间表302在存储器201内,但是也可以保存在存储器201内。或者,可以保存在存储器201以外的存储装置,例如闪速只读存储器106中,软件控制装置100仅将需要的信息传送到存储器201。
[0048] 竞争特性表301是保存竞争特性σ的表,所述竞争特性是表示任意的软件彼此在竞争状态下性能下降的系数。后面使用图5说明竞争特性表301的细节。起动应答时间表302是保存各软件在规定上最坏情况下的起动时间的表。后面使用图6说明起动应答时间表302的细节。
[0049] 另外,图3中所示的控制指示部303~解除指示部305由作为主内核的CPU#0执行。同样地,判断部306~检测部311除了由作为从内核的CPU#1~CPU#3执行以外,也由CPU#0执行。因此,CPU#0包括控制指示部303~检测部311的功能。
[0050] 控制指示部303具有通过向从内核发送设备抑制控制请求来进行控制指示使得暂时停止执行中的软件的功能。另外,控制指示部303可以通过发送执行优先级下降控制请求来进行控制指示使得降低执行中的软件的执行优先级。另外,控制指示部303可以在检测部304检测到起动中的软件还没有完成起动,且在起动中的软件正在访问的共用资源是特定的共用资源的情况下,进行降低执行优先级的控制指示。这里的特定的共用资源是指存储器201。另外,设备抑制控制请求和执行优先级下降控制请求中含有起动中的软件访问的共用资源的识别信息。
[0051] 具体地说,例如,软件控制装置100通过控制指示部303向从内核通知控制指示使得暂时停止执行中的软件。此外,通知的数据可以存储在RAM 103、闪速只读存储器104等存储区域中。
[0052] 检测部304具有检测起动中的软件从起动开始经过预定的起动时间仍没有完成起动的功能。这里的预定的起动时间是指起动应答时间表302中保存的规定的起动时间T。具体地说,例如,软件控制装置100检测起动中的软件的规定的起动时间T是1秒,但是从起动开始经过1秒仍没有完成起动的软件。此外,检测到的软件的信息除了向控制指示部303发送之外,还可以存储在RAM 103、闪速只读存储器104等存储区域中。
[0053] 解除指示部305具有在起动中的软件起动完成之后,通过对由控制指示部303控制指示过的执行中的软件发送控制解除请求来解除指示的功能。具体地说,例如,软件控制装置100通过解除指示部305发送解除暂时停止的执行中的软件的停止的控制解除请求。此外,发送的控制解除请求除了发送给解除部308以外,还可以存储在RAM 103、闪速只读存储器104等存储区域中。
[0054] 判断部306具有使用由控制指示部303通知的起动中的软件的识别信息来判断起动中的软件和执行中的软件是否正在访问同一共用资源的功能。
[0055] 具体地说,例如,假定软件控制装置100通过控制指示部303发送起动中的软件所访问的闪速只读存储器106的识别信息的情况。这时,当执行中的软件也正在访问闪速只读存储器106时,软件控制装置100通过判断部306来判断为正在访问同一共用资源。此外,判断结果除了发送给控制部307之外,还可以存储在RAM 103、闪速只读存储器104等存储区域中。
[0056] 控制部307具有当从控制指示部303接收到设备抑制控制请求,并且由判断部306判断为正在访问同一共用资源的情况下控制执行中的软件使得暂时停止执行中的软件的功能。另外,控制部307可以在从控制指示部303接收到执行优先级下降控制请求的情况下控制执行中的软件的执行优先级以使其降低。另外,控制部307可以在接收到执行优先级下降控制请求,并且由检测部311检测到起动中的软件的起动预测时间超过预定的起动时间时控制执行中的软件的执行优先级以使其降低。
[0057] 具体地说,例如,软件控制装置100在从控制指示部303接收到设备抑制控制请求,并由判断部306判断为正在访问的情况下控制停止执行中的软件使得暂时停止执行中的软件。此外,暂时停止的软件或者被降低了执行优先级的软件的信息被存储在RAM 103、闪速只读存储器104等存储区域中。
[0058] 解除部308具有在接收到来自解除指示部305的表示起动中的软件起动完成的控制解除请求之后,解除由控制部307控制的执行中的软件的控制的功能。具体地说,例如,软件控制装置100接收来自解除指示部305的控制解除请求,并基于暂时停止的软件或者被降低了执行优先级的软件的信息来解除控制。此外,解除的软件的信息可以存储在RAM 103、闪速只读存储器104等存储区域中。
[0059] 提取部309具有提取起动中的软件在非竞争状态下的起动时间和表示起动中的软件与执行中的软件在竞争状态下的性能下降的系数的功能。起动中的软件在非竞争状态下的起动时间被保存在包含并存储有任意的软件在非竞争状态下的起动时间的共用资源数据库202中。表示任意的软件彼此在竞争状态下的性能下降的系数被存储在竞争特性表301中。
[0060] 具体地说,例如,软件控制装置100从共用资源数据库202提取起动中的软件A在非竞争状态下的起动时间t。接着,软件控制装置100从竞争特性表301中提取表示起动中的软件A与在从内核上执行中的软件在竞争状态下的性能下降的竞争特性σ。此外,提取的数据被存储在RAM103、闪速只读存储器104等存储区域中。
[0061] 计算部310具有基于由提取部309提取的起动时间和由提取部309提取的系数来计算起动中的软件在竞争状态下起动预测时间的功能。提取的起动时间是指在非竞争状态下的起动时间t,提取的系数是表示起动中的软件与执行中的软件在竞争状态下的性能下降的竞争特性σ。
[0062] 具体地说,例如,在起动时间为10[毫秒]、提取的系数是120的情况下,软件控制装置100将起动中的软件在竞争状态下的起动预测时间计算为起动时间×系数=10×120=1.2[秒]。此外,计算出的数据被存储在RAM103、闪速只读存储器104等存储区域中。
[0063] 检测部311具有检测由计算部310计算出的在竞争状态下的起动中的软件的起动预测时间超过预定的起动时间的功能。预定的起动时间是指起动应答时间表302中保存的规定的起动时间T。另外,检测部311在由检测部304检测到起动未完成,处理从控制指示部303转移到控制部307时被执行。
[0064] 具体地说,例如,软件控制装置100在由计算部310计算出的起动中的软件在竞争状态下的起动预测时间σt是1.2[秒],规定的起动时间T是1[秒]的情况下,T<σt,向控制部307通知检测结果。此外,检测出的结果被存储在RAM 103、闪速只读存储器104等存储区域中。
[0065] 如前所述,由主内核和从内核分担各功能部,大体上由主内核执行关于起动中的软件的处理,由从内核执行关于执行中的软件的处理。这里,软件控制装置100也可以在从内核获取起动中的软件的信息,并在从内核上执行所有的功能。
[0066] 图4是示出共用资源数据库202的存储内容的一个例子的说明图。符号401所示的图是共用资源数据库202的存储内容的一个例子,符号402所示的图是模块化表示共用资源数据库202的存储内容的框图。在符号403所示的区域中描述了软件的名称、执行优先级、初始化的设备名。在符号404所示的区域中描述了各线程的信息。在符号405所示的区域中描述了主线程的信息,在符号406所示的区域中描述了作为子线程的FuncA线程的信息。
[0067] 接着,说明存在于符号405所示的区域中的各属性。Tag属性表示作为对象的线程的名称。Context_allocate属性是通过作为对象的线程从存储器201被确保的存储器上下文。被确保的存储器上下文被用作例如线程执行所需的栈区域。在栈区域中保存有函数的调用信息以及函数的局部变量的值等。
[0068] IOprofile_write_access属性和IOprofile_read_access属性表示作为对象的线程访问存储器201的大小。IOprofile_write_access属性表示作为对象的线程进行写入的大小、IOprofile_read_access属性表示作为对象的线程进行读取的大小。
[0069] elapse_time属性表示作为对象的线程从起动开始时刻起Context_allocate属性所示的存储器上下文被确保的时刻。elapse_time属性所示的值为在非竞争状态下的起动时间t。Sys_resource属性表示作为对象的线程调用的系统调用。
[0070] 符号402所示的框图是模块化表示共用资源数据库202的存储内容的框图。软件A访问设备A和设备B,对存储器201确保了128[千字节]的存储器上下文407、进行1024[千字节]的写入、以及进行512[千字节]的读取。软件A子线程对存储器201确保256[千字节]的存储器上下文408、进行128[千字节]的写入、以及进行128[千字节]的读取。
[0071] 作为设备A、设备B的具体例子有闪速只读存储器106。另外,虽然在图1中未图示,但是在通过I/F 108连接外部存储装置的情况下,也包含该装置。另外,除了存储装置以外,例如,在软件控制装置100连接印刷装置、某线程进行印刷的情况下,其结果是向印刷装置内部的RAM进行写入,因此也包含在存储装置中。
[0072] 图5是示出竞争特性表301的存储内容的一个例子的说明图。竞争特性表301存储竞争特性σ,所述竞争特性σ是表示软件彼此在竞争状态下的性能下降的系数。竞争特性表301的竞争特性σ表示对于符号501所示的执行中的软件在符号502所示的软件起动的情况下的性能下降的数值。
[0073] 竞争特性σ是将非竞争状态下的处理时间设为1时的竞争状态下的处理时间,表示值越大性能下降越严重。竞争特性σ是在能够仿真软件控制装置100的装置上针对每个软件反复执行而求得的。另外,如果在软件控制装置100上具有求得竞争特性σ的环境也可以在软件控制装置100上求得竞争特性。
[0074] 具体地说,例如,假定软件A是Web浏览器、软件B是邮件软件、软件D是电话本调用。这里,在软件控制装置100执行软件A期间起动软件B时的竞争特性σ如图6所示为“120”。同样地,在软件控制装置100执行软件A期间起动软件D时的竞争特性σ为“1.1”。
[0075] 如前所述,作为竞争特性σ差异巨大的理由,Web浏览器和邮件软件通过I/F 108,例如访问同一NIC(Network Interface Card,网络接口卡),从网络111获取信息。结果,两个软件访问同一设备,从而容易发生竞争。并且两个软件根据TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)来处理获取的数据。因此,两个软件使用处理TCP/IP的系统资源,从而容易发生竞争。
[0076] 与之相对,Web浏览器和电话本调用作为发生竞争的可能性仅仅在于对存储器201的访问,因而不容易发生竞争。如上,由于软件彼此使用的共用资源造成竞争特性σ有巨大差异。
[0077] 另外,在如软件A那样在规定上允许软件同时起动的情况下,仿真装置如图5所示的那样测量竞争特性σ。同样地,如软件B、软件D那样在规定上不允许软件同时起动时,仿真装置可以不特别地进行测量。
[0078] 另外,在测量的结果是多数软件彼此的竞争特性σ是相等的值的情况下,软件控制装置100可以提供该条目。例如,提供如符号503、符号504所示的“默认”。而且,假定软件控制装置100在执行软件A的期间起动了符号502所示的列中没有记载的软件的情况。在这种情况下的竞争特性σ从符号504所示的“默认”列参考符号505所示的单元,值为“1.1”。
[0079] 图6是示出起动应答时间表302的存储内容的一个例子的说明图。起动应答时间表302由软件名称、规定的起动时间T这两个域构成。软件名称域保存作为对象的软件的名称。
规定的起动时间T域保存各软件的规定上的最坏情况下的起动时间。
[0080] 具体地说,如图6所示,诸如软件A的起动时间设定为3秒、软件D的起动时间设定为0.5秒。虽然可以对所有的软件进行设定,但是如果多数软件的起动时间相等,那么可以提供该条目。作为具体的设定方法,软件控制装置100提供如符号601所示的“默认”行来作为起动时间没有被设定的所有的软件的起动时间。
[0081] 作为设定方法,例如,假定软件A是Web浏览器的情况下,Web浏览器一般来说是程序量多的软件,进行起动开始的频率低,因此设定为比作为默认值的1秒长的3秒。同样地,假定软件D是电话本调用的情况下,电话本调用被频繁地调用而希望缩短用户等待的时间,因此设定为比作为默认值的1秒短的0.5秒。
[0082] 图7-1、图7-2是示出软件起动时的控制的情况的说明图。图7-1中的符号701所示的状态是软件控制装置100即将起动作为新起动的软件的软件A之前的状态。软件控制装置100通过消息707收集各CPU的负载信息从而进行向最优的CPU的负载分散分配。本实施方式涉及的软件控制装置100将软件A的主线程分配给CPU#0,将软件A起动的子线程分配给CPU#
1。
[0083] 接着,图7-1中的符号702所示的状态是软件控制装置100将软件A的主线程分配给CPU#0之后的状态。在分配之后,由于软件A访问设备A和设备B,因此软件控制装置100向CPU#0~CPU#3广播发送表示访问设备A和设备B的情况的消息708。
[0084] CPU#0~CPU#3接收消息708。CPU#0和CPU#1由于不存在访问设备A和设备B的软件,因此不特别地进行处理。CPU#2如访问路径709所示,由于软件C访问设备A,因此暂时停止软件C的执行。同样地CPU#3也如访问路径710所示,由于软件D访问设备B,因此暂时停止软件D的执行。
[0085] 图7-1中的符号703所示的状态是软件控制装置100进行暂时停止访问设备的软件之后的状态。接着,由于软件A访问系统资源或者程序库资源,因此软件控制装置100向CPU#0~CPU#3广播发送表示访问前述的资源的情况的消息711。
[0086] CPU#0~CPU#3接收消息711。CPU#0如访问路径712所示,由于软件F访问系统资源,因此降低软件F的执行优先级。CPU#1和CPU#2由于不存在访问系统资源或者程序库资源的软件,因此不特别地进行处理。CPU#3如访问路径713所示,由于软件E访问系统资源,因此降低软件E的执行优先级。
[0087] 此外,作为不竞争设备而竞争系统资源的具体例子,假定例如软件A是Web浏览器、软件E是书签编辑软件的情况。另外,假定书签的文件形式是xml(Extensible Markup Language,可扩展标记语言)形式。
[0088] 这时,由于软件E不使用网络111,因此不发生设备的竞争。但是,软件E为了读取书签需要解析xml,访问能够进行xml解析的系统资源。同样地,软件A也可能读入xml形式的Web页,因此访问能够进行xml解析的系统资源。结果是软件A和软件E在设备上不竞争,但是在系统资源上发生竞争。
[0089] 图7-2中的符号704所示的状态是软件控制装置100降低访问系统资源或者程序库资源的软件的执行优先级后的状态。接着,由于软件A访问存储器201,因此软件控制装置100向CPU#0~CPU#3广播发送表示访问存储器201的情况的消息714。
[0090] CPU#0~CPU#3接收消息714。CPU#0如访问路径715所示,由于软件F访问存储器201,因此降低软件F的执行优先级。CPU#1和CPU#2由于不存在访问存储器201的软件,因此不特别地进行处理。CPU#3如访问路径716所示,由于软件E访问存储器201,因此降低软件E的执行优先级。
[0091] 图7-2中的符号705所示的状态是软件控制装置100降低访问存储器201的软件的执行优先级之后,进行软件A的初始化处理并起动了子线程的状态。软件A的处理是对如访问路径717所示的设备A、设备B的初始化处理和确保存储器上下文407。另外,软件A起动软件A子线程并被分配给CPU#1。CPU#0向CPU#0~CPU#3广播发送表示软件A子线程被起动的情况的消息718。
[0092] CPU#0~CPU#3接收消息718。CPU#0和CPU#1和CPU#3由于不存在访问软件A子线程所访问的共用资源的软件,因此不特别地进行处理。CPU#2如访问路径719所示,由于软件G访问存储器201,因此降低软件G的执行优先级。另外,软件A子线程确保存储器上下文408。
[0093] 至此,到软件A起动为止,软件A被最优先地执行。对如软件B那样不访问软件A所访问的共用资源从而不发生竞争的软件,既不暂时停止,也不降低执行优先级,如通常那样被执行。
[0094] 图7-2中的符号706所示的状态是表示软件控制装置100完成了软件A的起动的状态。完成起动的时刻是软件A进行的设备的初始化和存储器上下文的确保结束的时刻。完成软件A的起动后,CPU#0广播发送表示完成软件A的起动的情况的消息720。
[0095] CPU#0~CPU#3接收消息720。各CPU对暂时停止中的软件和被降低了执行优先级的软件解除控制。具体地说,CPU#0使软件F的执行优先级返回到初始值。在CPU#1中由于不存在暂时停止中的软件或者被降低了执行优先级的软件,因此不进行任何处理。CPU#2解除软件C的暂时停止并使软件G的执行优先级返回到初始值。CPU#3解除软件D的暂时停止并使软件E的执行优先级返回到初始值。
[0096] 图8是共用资源数据库202的生成处理的流程图。本实施方式涉及的生成处理被软件控制装置100执行而进行说明,但是也能由能够仿真软件控制装置100的装置执行。作为生成处理的准备,假设作为生成处理的对象的软件是通过附有配置标记的执行码编译而成的。
[0097] 软件控制装置100执行作为试验对象的软件,并获取执行日志(步骤S801)。随后的处理从开头参照执行日志并进行处理。因此,进行随后的处理的装置可以是能够进行用于参照执行日志的数据输入输出的、通用的运算装置。接着软件控制装置100参照执行日志来确认是否起动了设备(步骤S802)。在起动了设备的情况下(步骤S802:是),软件控制装置100获取初始化设备信息(步骤S808),并保存在共用资源数据库202中。保存的位置是如符号403所示的区域的UseDevice属性。
[0098] 保存后,软件控制装置100确认是否使用了涉及UI的系统调用(步骤S810)。在使用了的情况下(步骤S810:是),软件控制装置100结束处理。另外,在读完执行日志的情况下,软件控制装置100也结束处理。或者,如果在执行日志上能够判断出转移到了通过中断处理程序等待用户输入的状态,软件控制装置100也可以在该时刻结束。
[0099] 涉及UI的系统调用是指获取在显示器107上用户进行的鼠标输入信息、以及通过键盘109进行的键盘输入信息的系统调用。在步骤S810的处理中,表示在调用了系统调用的情况下作为试验对象的软件的起动完成,并且转移到应对来自用户的指示的状态,因此判断为软件起动完成了。在没有使用涉及UI的系统调用的情况下(步骤S810:否),软件控制装置100再次转移到步骤S802的处理。
[0100] 在未起动设备的情况下(步骤S802:否),软件控制装置100确认是否是线程处理(步骤S803)。通过步骤S803的处理,软件控制装置100针对每个线程进行处理。在不是线程处理的情况下(步骤S803:否),软件控制装置100转移到步骤S802的处理。在是线程处理的情况下(步骤S803:是),软件控制装置100接着确认是否利用了系统资源(步骤S804)。
[0101] 步骤S804的处理可以是即使使用了程序库资源而取代使用了系统资源也作为步骤S804中的“是”进行处理。在图8、图9-1、图9-2所示的流程图中,程序库资源也是系统资源的一部分。在使用了系统资源的情况下(步骤S804:是),软件控制装置100获取系统资源利用信息(步骤S809),并保存在共用资源数据库202中。设定的位置是图4中所示的Sys_resource属性。之后,软件控制装置100转移到步骤S810的处理。
[0102] 在未使用系统资源的情况下(步骤S804:否),软件控制装置100确认是否初始化了存储器上下文(步骤S805)。在初始化了存储器上下文的情况下(步骤S805:是),软件控制装置100获取存储器上下文初始化时刻信息t(步骤S806),并保存在共用资源数据库202中。设定的位置是图4中所示的elapse_time属性。之后,软件控制装置100转移到步骤S810的处理。
[0103] 在未初始化存储器上下文的情况下(步骤S805:否),软件控制装置100获取作为对存储器201的访问的I/O信息(步骤S807),并保存在共用资源数据库202中。设定的位置是图4中所示的IOprofile_write_access属性和IOprofile_read_access属性。
[0104] 之后,软件控制装置100转移到步骤S810的处理。在步骤S810结束后,软件控制装置100将所有的线程的elapse_time属性中的最大值设定为主线程的elapse_time属性。主线程的elapse_time即为软件在非竞争状态下的起动时间t。
[0105] 图9-1、图9-2是软件控制处理的流程图。图9-1示出了在主内核进行消息发送的处理。在本实施方式中,主内核是CPU#0。CPU#0起动调度器(步骤S901)。具体地说,例如,CPU#0起动调度器#0。另外,CPU#0从CPU#1~CPU#3接收消息,收集CPU的负载信息。
[0106] 接着,CPU#0基于收集的负载信息来确定进行新软件的分配的CPU(步骤S902)。被确定的CPU对新软件开始起动(步骤S903),并且CPU#0读取共用资源数据库202的与新软件相关的记录(步骤S904)。
[0107] 读取后,CPU#0参照共用资源数据库202来确认新软件起动的设备是否存在(步骤S905)。当起动的设备存在时(步骤S905:是),CPU#0向CPU#0~CPU#3广播发送设备抑制控制请求(步骤S906)。当起动设备不存在时(步骤S905:否),或者,在步骤S906的处理之后,CPU#0确认新软件是否完成了起动(步骤S907)。
[0108] 在起动未完成的情况下(步骤S907:否),CPU#0接着确认从新软件的起动开始是否经过了规定的起动时间T(步骤S908)。在未经过的情况下(步骤S908:否),CPU#0等待一定时间(步骤S909)并转移到步骤S907的处理。
[0109] 在已经过的情况下(步骤S908:是),CPU#0接着确认起动中的软件是否访问系统资源或者存储器201(步骤S910)。在访问系统资源或者存储器201的情况下(步骤S910:是),CPU#0向CPU#0~CPU#3广播发送执行优先级下降控制请求(步骤S911)。
[0110] 另外,在执行优先级下降控制请求中包含起动中的软件的信息或者规定的起动时间T和在非竞争状态下的起动时间t。此外,一般的软件,特别是应用软件等软件一般是访问系统资源或者存储器201的。因此,软件控制装置100可以使步骤S910的处理始终为是,通过省略步骤S910的处理来简化处理。
[0111] 在广播发送之后或者在不使用系统资源或者存储器201的情况下(步骤S910:否),CPU#0再次确认新软件是否完成了起动(步骤S912)。在未完成起动的情况下(步骤S912:否),CPU#0等待一定时间(步骤S913),再次转移到步骤S912的处理。在新软件完成了起动的情况下(步骤S907:是,步骤S912:是),CPU#0向CPU#0~CPU#3广播发送控制解除请求(步骤S914)。
[0112] 图9-2示出了消息接收处理。消息接收处理由作为接收消息的从内核的所有的CPU、在本实施方式中CPU#0~CPU#3执行。在下述的描述中,以CPU#1为执行主体进行说明。
[0113] CPU#1确认是否从主内核接收到了消息(步骤S915)。消息是在步骤S906、步骤S911、以及步骤S914中由主内核发送的消息。在未接收到消息的情况下(步骤S915:否),CPU#1等待一定时间(步骤S916),并再次转移到步骤S915的处理。
[0114] 在接收到了消息的情况下(步骤S915:是),CPU#1确认是否接收到了设备抑制控制请求(步骤S917)。在接收到了设备抑制控制请求的情况下(步骤S917:是),CPU#1控制访问设备的软件使得暂时停止访问设备的软件(步骤S918)。
[0115] 在未接收到设备抑制控制请求的情况下(步骤S917:否),CPU#1接着确认是否接收到了执行优先级下降控制请求(步骤S919)。在接收到了执行优先级下降控制请求的情况下(步骤S919:是),CPU#1获取访问系统资源或者存储器201的软件(步骤S920)。在执行优先级下降控制请求的消息中可以包含起动中的软件的信息或者规定的起动时间T和在非竞争状态下的起动时间t。如果是起动中的软件的信息,那么CPU#1基于起动中的软件的信息来分别获取规定的起动时间T和在非竞争状态下的起动时间t。
[0116] 在获取之后,CPU#1从竞争特性表301获取新软件与获取的软件的竞争特性σ(步骤S921)。在获取竞争特性σ之后,CPU#1确认规定的起动时间T是否小于在竞争状态下的起动预测时间σt(步骤S922)。当小于时(步骤S922:是),CPU#1控制获取的软件的执行优先级以使其降低(步骤S923)。
[0117] 此外,在步骤S922的处理中,使用T和σt进行判断,但是也可以使用共用资源数据库202中的其他的属性来进行判断。例如,软件控制装置100求出IOprofile_write_access属性和IOprofile_read_access属性的总和。接着,软件控制装置100通过以合计值和在非竞争状态下的起动时间t进行除法能够求得对存储器201的访问速度。软件控制装置100可以比较获取的访问速度和从内核的当前的存储器访问速度,在获取的访问速度大的情况下,认为在从内核发生了竞争,进而进行控制使得降低执行优先级。
[0118] 在步骤S923的处理之后,或者,在T为σt以上的情况下(步骤S922:否),CPU#1确认获取的软件是否是访问系统资源或者存储器201的末尾的软件(步骤S924)。当不是末尾的软件时(步骤S924:否),CPU#1获取下一个访问系统资源或者存储器201的软件(步骤S925),并转移到步骤S921的处理。当是末尾的软件时(步骤S924:是),CPU#1转移到步骤S915的处理。
[0119] 在未接收到执行优先级下降控制请求的情况下(步骤S919:否),会接收到控制解除请求,因此CPU#1解除被暂时停止的软件,以及执行优先级被降低的软件的控制(步骤S926)。解除之后,CPU#1转移到步骤S915的处理。
[0120] 如以上说明的那样,根据软件控制装置、软件控制方法、以及软件控制程序,将正在访问起动中的软件所访问的共用资源的软件停止一定期间。由此,能够增加起动中的软件访问共用资源的比例,缩短起动中的软件的起动时间。
[0121] 另外,软件控制装置可以降低正在访问共用资源的执行中的软件的执行优先级。由此,能够缩短起动中的软件的起动时间,并且执行中的软件能够进行处理。
[0122] 另外,软件控制装置检测起动中的软件从起动开始经过预定的起动时间还未完成起动的情况。接着,在起动中的软件和执行中的软件正在访问的同一共用资源是特定的共用资源的情况下,可以控制降低执行中的软件的执行优先级以使其降低。由此,能够缩短起动中的软件的起动时间,另外,在预定的起动时间后控制竞争特性更小的软件,因此关于对竞争影响小的软件能够照常继续处理。
[0123] 另外,软件控制装置计算执行中的软件与起动中的软件的竞争状态的起动预测时间,在超过了预定的起动时间的情况下,可以控制执行中的软件的执行优先级以使其降低。由此,能够缩短起动中的软件的起动时间。另外,由于在竞争特性更小的软件中仅控制对起动中的软件影响大的的软件,因此对于不引起大的影响的软件能够照常继续处理。
[0124] 另外,在便携终端中,显示器的显示区域狭小,例如,也存在是320×240像素的QVGA(Quarter Video Graphics Array,四分之一视频图形阵列)的构成的情况。在这样狭小的画面中,当新软件起动时,有时之前执行的软件是后台软件,全部是隐藏的。全部隐藏的软件由于用户看不到因此减少了处理量,相应地能够将处理能力转到起动中的软件。
[0125] 具体地说,例如,假定在动画播放软件起动中起动邮件软件的情况。动画播放软件成为后台而减少处理量的结果是动画不能平滑地播放而丢帧,但是因为用户看不到因此没有问题。软件控制装置能够减少动画播放软件的处理量,相应地将处理能力转到邮件软件的起动,从而能够高速地进行邮件软件的起动。
[0126] 此外,本实施方式中说明的软件控制方法能够通过在个人计算机或者工作站等计算机上执行预先准备的程序来实现。本软件控制程序被记录在硬盘、软盘、CD-ROM、MO、DVD等计算机可读的记录介质中,由计算机从记录介质读出而执行。另外,本软件控制程序可以通过互联网等网络进行发布。
[0127] 符号说明
[0128] 201存储器
[0129] 202共用资源数据库
[0130] 301竞争特性表
[0131] 302起动应答时间表
[0132] 303控制指示部
[0133] 304检测部
[0134] 305解除指示部
[0135] 306判断部
[0136] 307控制部
[0137] 308解除部
[0138] 309提取部
[0139] 310计算部
[0140] 311检测部