CN103443770A - 终端装置、进程管理方法以及进程管理程序 - Google Patents
终端装置、进程管理方法以及进程管理程序 Download PDFInfo
- Publication number
- CN103443770A CN103443770A CN2011800692083A CN201180069208A CN103443770A CN 103443770 A CN103443770 A CN 103443770A CN 2011800692083 A CN2011800692083 A CN 2011800692083A CN 201180069208 A CN201180069208 A CN 201180069208A CN 103443770 A CN103443770 A CN 103443770A
- Authority
- CN
- China
- Prior art keywords
- resource
- application
- information
- addition
- group
- 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
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]
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
终端装置(100)具有存储使用资源信息(111)的第1存储部(101),该使用资源信息(111)示出安装于终端装置(100)中的应用(A)使用的资源的集合{R1、R2、R3}。此外,终端装置(100)具有存储对应信息(112)的第2存储部(102),该对应信息(112)将通过特定进程(P1和P3)提供访问的特定资源(R1和R3)分别与特定进程(P1和P3)对应起来。此外,终端装置(100)具有识别部(103),该识别部(103)识别与应用(A)关联的进程组{PA1、PA2、P1、P3},该进程组{PA1、PA2、P1、P3}包含通过对应信息(112)与由使用资源信息(111)所示的资源的集合中所包含的任意的资源对应的特定进程的集合{P1、P3}。
Description
技术领域
本发明涉及终端装置中的进程的管理。
背景技术
大多数信息处理装置不是仅执行单一的进程,而是执行多个进程。因此,正在研究在进程间的资源配分和进程的调度等关于进程的管理的各种技术。
例如,提出了如下目的为在1个信息处理单元上同时实现控制处理的实时性的保证和网络通信处理的吞吐量的保证的控制器。
控制器将多个任务划分为用于与网络通信系进行通信的通信任务组和用于对监视控制对象进行监视控制的控制任务组来进行管理。此外,控制器以组单位来切换多个任务的执行顺序,根据所切换到的任务组来执行从监视控制对象或者网络通信系得到的信息的处理。
此外,还提出了以如下为目的的技术:对于以时分调度为前提的应用,即便在执行应用数量频繁地增减的环境下,也能够容易地且自动地最大限度地发挥应用的响应性能。
根据该技术,应用依赖分析部将在时分调度上进行动作的进程中的从起动到休止的处理作为节点进行处理,进行节点间的依赖关系的分析,形成示出节点的执行顺序和依赖关系的依赖分析信息。此外,控制变更判定部根据依赖分析信息,使构成应用的进程从时分调度向组调度转移。然后,组调度执行部根据依赖分析信息以进程单位对转移后的进程实施组调度。
此外,提出了如下以尽量抑制开销的增加并防止任务优先级的逆转现象为目的的技术。
存在如下情况:低优先级的第1任务正在经由资源管理单元专用共享资源时,从高优先级的第2任务发布相同共享资源的使用要求。该情况下,任务管理单元在到共享资源使用结束为止的期间内,将第1任务的优先级暂时变更为第2任务的优先级。
通过优先级的暂时变更,防止了任务优先级的反转现象。即,防止了如下反转现象:“当第1任务正在使用共享资源的时,来自中间优先级的第3任务的中断进入,第1任务的处理被延后,结果是,第3任务比优先级更高的第2任务先进行处理”。
此外,还提出了如下以消除起动多个应用软件时的存储器的容量不足而实现舒服的动作环境为目的的信息终端装置。
信息终端装置预先在安装于信息终端装置的多个应用软件中设定常驻型或者暂时型的属性信息,并将该属性信息与当前动作中的应用软件关联起来在表中进行管理。此外,信息终端装置在应用起动时,参照表来判断在当前动作中的应用软件中所设定的属性信息。
然后,信息终端装置将设定了常驻型的属性信息的应用软件保留于执行存储器中,强制结束设定了暂时型的属性信息的应用软件,使其从执行存储器释放。由此,能够避免“由于大量应用软件的使用而使存储器容量不足,执行动作变慢,或者软件失控”等问题。
现有技术文献
专利文献1:日本特开2003-67201号公报
专利文献2:日本特开2009-48358号公报
专利文献3:日本特开平8-77025号公报
专利文献4:日本特开2003-15892号公报
发明内容
发明要解决的问题
在各个领域中,在各种不同用途中,利用各种硬件结构的装置。因此,适合于特定的装置的进程管理方法不一定适合于其他的装置。
例如,在某种终端装置中,限制用户进行的应用的安装。并且,在某种进程管理方法中,为了发挥终端装置的性能,有时利用“只执行限定的特定的应用”这样的前提条件,进行与限定的特定的应用对应的调整。
另一方面,用户能够安装任意的应用的终端装置也正在广泛利用。在用户能够安装任意的应用的终端装置中,上述前提条件不成立,因此上述的某种进程管理方法是不适当的。
因此,本发明的目的在于实现适合于能够安装任意的应用的终端装置中的进程管理的、进程的分组。
用于解决问题的手段
由一个方式所提供的终端装置包含第1存储部、第2存储部以及识别部。所述第1存储部存储使用资源信息,该使用资源信息示出安装于所述终端装置的应用所使用的资源的集合。此外,所述第2存储部存储对应信息,该对应信息是将由特定进程提供访问的1个以上的特定资源分别与所述特定进程对应得到的。而且,所述识别部识别与所述应用关联的进程组,该进程组包含通过所述对应信息与由所述使用资源信息示出的所述资源的所述集合中包含的任意一个资源进行了对应的所述特定进程的集合。
发明的效果
在向安装于上述终端装置的某个应用使用的某个资源的访问是由某个特定进程提供的情况下,根据上述终端装置,由上述识别部识别的进程组包含该某个特定进程。即,该某个特定进程被识别为与该某个应用关联的进程组的要素。而且,在安装了多个任意的应用的情况下,上述终端装置的识别部也能够针对各应用同样地识别进程组。
如以上那样识别的进程组,例如作为进程间的优先级控制、要暂时停止的进程的决定、要强制结束的进程的决定等各种进程管理中的管理单位是合适的。而且,如果使用上述那样识别的适当的进程组来进行适当的进程管理,则应用开发者不需要预先在应用内嵌入用于不使其他应用的执行产生障碍的特别的机制。即,上述终端装置进行的进程组的识别具有作为用于降低应用开发者的负担并提高开发和设计的自由度的基础技术的潜力。
如以上那样,上述终端装置能够实现适合于能够安装任意的应用的终端装置中的进程管理的、进程的分组。
附图说明
图1是第1实施方式的终端装置的框结构图。
图2是智能手机的硬件结构图。
图3是对适当的进程组的例子进行说明的图。
图4是对智能手机中的应用包的管理进行说明的图。
图5是第2实施方式的智能手机的框结构图。
图6是对应用包、资源、进程的具体例进行说明的图。
图7是对各种数据的具体例进行说明的图。
图8是第2实施方式中切换事件通知部进行的处理的流程图。
图9是第2实施方式中探测器进行的处理的流程图。
图10是第2实施方式中依赖关系管理部进行的处理的流程图。
图11是第2实施方式中进程组判定部进行的处理的流程图。
图12是第2实施方式中进程控制模块进行的处理的流程图(第1)。
图13是第2实施方式中进程控制模块进行的处理的流程图(第2)。
图14是被图12~13的处理调用的子例程的流程图。
图15是第2实施方式的变形例中,代替图14的子例程而由进程控制模块执行的子例程的流程图。
图16是第2实施方式的变形例中的智能手机的框结构图。
图17是第2实施方式的变形例中应用信息分析部进行的处理的流程图。
图18是第2实施方式的变形例中探测器进行的处理的流程图。
图19是第2实施方式的变形例中监视资源过滤部进行的处理的流程图。
图20是第2实施方式的变形例中探测器进行的处理的流程图。
图21是第2实施方式的变形例中进程组判定部进行的处理的流程图。
图22是第2实施方式的变形例中已知成员检测部进行的处理的流程图。
图23是示出进程的父子关系的树形图的例子。
图24是第2实施方式的变形例中进程组判定部进行的处理的流程图。
图25是第2实施方式的变形例中父子关系判定部进行的处理的流程图。
图26是第2实施方式的变形例中进程控制模块进行的处理的流程图。
图27是第2实施方式的变形例中,代替图14的子例程而由进程控制模块执行的子例程的流程图。
图28是详细地示出第2实施方式的变形例中的存储器管理模块的框结构图。
图29是第2实施方式的变形例中存储器管理模块进行的处理的流程图。
具体实施方式
以下,参照附图详细地对实施方式进行说明。首先,参照图1来说明第1实施方式。接着,参照图2~29来说明第2实施方式和与第2实施方式有关的几个变形例。
图1是第1实施方式的终端装置的框结构图。图1的终端装置100具有第1存储部101、第2存储部102以及识别部103。此外,优选终端装置100还具有第3存储部104和控制部105。终端装置100也可以还具有输入部106、资源监视部107以及存储器监视部108。
第1存储部101、第2存储部102、第3存储部104可以是在物理上1个存储器模块内的不同的3个存储区域,也可以是在物理上不同的存储器模块。此外,识别部103、控制部105、资源监视部107以及存储器监视部108例如可以由终端装置100具有的未图示的CPU(Central Processing Unit:中央处理单元)来实现。输入部106例如可以是输入键,也可以是触摸屏幕。
第1存储部101存储使用资源信息111,该使用资源信息111示出安装于终端装置100的应用所使用的资源的集合。图1中例示了应用A使用资源R1、资源R2以及资源R3的情况下的使用资源信息111。
另外,终端装置100中能够安装任意的多个应用。图1中仅例示了关于应用A的使用资源信息111,但是,第1存储部101能够针对所安装的多个应用,分别同样地存储使用资源信息111。
此外,具体而言,“资源”例如可以是(1a)~(1c)中的任意一个。
(1a)内置于终端装置100或者与终端装置100连接的物理设备(例如,声音设备或传感器等)
(1b)终端装置100存储的数据库
(1c)终端装置100存储的预定文件(例如,允许从多个应用进行访问的共享的设定文件等)
此外,在终端装置100中可以使用的资源中,存在不被用户应用的进程访问的资源(以下称作“特定资源”)。向特定资源的访问由预定程序(以下也称作“特定程序”)的进程(以下也称作“特定进程”)提供,用户应用通过特定进程访问特定资源。
例如,特定资源可以是声音芯片或者声卡等声音设备。而且,特定进程也可以是对特定资源独占地占有的守护进程,以进行从声音设备发出声音的处理。
应用对上述守护进程请求声音的输出,守护进程根据请求进行动作,由此声音设备输出声音,从扬声器发出声音。另外,为了提供向特定资源的访问而占有特定资源的守护也被称作“服务”。换言之,特定进程提供用于向特定资源的访问的API(Application Programming Interface:应用程序接口)。
终端装置100的第2存储部102存储将由特定进程提供访问的1个以上的特定资源分别与特定进程对应起来的对应信息112。图1中例示了在终端装置100能够使用的资源中,资源R1和资源R3是特定资源时的对应信息112。
在图1的例中,与资源R1对应的特定进程是进程P1,与资源R3对应的特定进程是进程P3。此外,在图1的例中,资源R2不是特定资源。因此,应用A不通过特定进程,例如通过调用“打开”(open)、“读”(read)、“写”(write)、“关闭”(close)等系统呼叫就能够访问资源R2。
识别部103使用使用资源信息111和对应信息112,识别与安装于终端装置100中的应用关联的进程组。与应用关联的进程组至少包含通过对应信息112与使用资源信息111所示的资源的集合中包含的任意一个资源进行了对应的特定进程的集合。
例如,在图1的例中,关于应用A,由使用资源信息111示出的资源的集合是{R1、R2、R3}。而且在图1的例中,通过对应信息112与该集合{R1、R2、R3}中所包含的任意的资源进行了对应的特定进程的集合是{P1、P3}。因此,识别部103识别的与应用A有关的进程组至少包含特定进程的集合{P1、P3}。
如以上那样识别的进程组作为进程间的优先级控制、要暂时停止(suspend)的进程的决定、要强制结束的进程的决定等各种进程管理中的管理单位是合适的。
例如,终端装置100在前台执行应用A时,为了提高利用应用A的用户感受到的性能,可以提高应用A的进程的优先级。由此,终端装置100增加分配到应用A的进程的CPU时间。例如,被分配到应用A的进程的CPU时间越多,从用户的输入操作到响应所需的响应时间就越短,响应时间越短,用户感受到的性能就越高。
然而,仅是简单地提高应用A的进程的优先级,可能无法得到响应时间缩短等的效果。这是因为,应用A通过进程P1使用资源R1,并通过进程P3使用资源R3。
如果进程P1的优先级较低,则进程P1不会被分配到太多的CPU时间。其结果是,可能从应用A通过进程P1访问资源R1需要耗费时间。进程P3也是同样的。
因此,为了得到响应时间缩短等的效果,优选提高包含进程P1和进程P3在内的进程组整体的优先级。而且,如上所述,识别部103识别与应用A关联的进程组包含进程P1和进程P3的情况。
当然,作为暂时停止和强制结束等用于优先级控制以外的进程管理的管理单位,由识别部103识别的进程组也是合适的。
此外,优选识别部103将由于应用A的执行而生成的进程也识别为与应用A关联的进程组的要素。具体而言,识别部103可以通过参照存储于第3存储部104中的结构信息113,来识别由于应用A的执行而生成的进程。
结构信息113是包含分别对应用的包所包含的1个以上的程序进行识别的程序识别信息的信息。程序识别信息例如是程序的名称。图1中例示的结构信息113表示应用A的包包含名称为“A1”和“A2”的两个程序。
具体而言,在执行应用A时,执行这两个程序。因此,识别部103参照结构信息113来确定与名称为“A1”和“A2”的两个程序对应的进程,由此识别由于应用A的执行而生成的进程。
例如,识别部103可以利用“ps”命令得到执行中的进程的一览。在进程的一览中包含进程的名称和进程识别符(process identifier;PID)。此外,使用程序的名称作为进程的名称。因此,识别部103能够从进程的一览中得到由于名称为“A1”和“A2”的两个程序的执行而生成的两个进程各自的PID。
例如以上那样,识别部103通过参照结构信息113,能够识别由于应用A的执行而生成的两个进程。而且,识别部103也将识别出的两个进程识别为与应用A关联的进程组的要素。
图1中还例示了识别部103如以上那样识别出的识别结果114。即,根据识别结果114,与应用A关联的进程组包含以下(2a)~(2d)这4个进程。
(2a)由于名称为结构信息113所示的“A1”的程序的执行而生成的进程PA1
(2b)由于名称为结构信息113所示的“A2”的程序的执行而生成的进程PA2
(2c)与使用资源信息111所示的资源R1对应的特定进程即进程P1
(2d)与使用资源信息111所示的资源R3对应的特定进程即进程P3
另外,优选的是,在上述(2a)~(2d)中任意一个进程能够生成子孙进程的情况下,识别部103将所生成的子孙进程也识别为与应用A关联的进程组的要素。
此外,如图1所示,优选终端装置100还具有控制部105,该控制部105使用由识别部103识别出的进程组进行进程管理。具体而言,控制部105对包含于由识别部103识别出的进程组中的进程和不包含于该进程组中的进程进行不同的控制。
此外,终端装置100还可以具有输入部106,该输入部106受理用于在前台执行应用的指示。用于在前台执行应用的指示的具体例是下述的(3a)~(3c)。
(3a)用于新起动应用,并在前台执行起动后的应用的指示
(3b)用于重新开始暂时停止状态的应用,并在前台执行重新开始的应用的指示
(3c)用于使在后台执行中的应用向在前台的执行状态转变的指示
而且,控制部105可以以输入部106受理了指示的输入为契机,对包含于由识别部103识别出的进程组中的进程和不包含于该进程组的进程进行不同的控制。当然,控制部105也可以以输入部106的输入的受理以外的事件为契机来进行控制。
例如,控制部105可以在以下的(4a)~(4d)中的任意定时进行控制,(4d)的定时可以以输入部106的输入的受理以外的事件(例如定时器的定期的中断)为契机而被检测。
(4a)应用被起动时
(4b)应用从暂时停止状态被重新开始时
(4c)应用从在后台的执行状态向在前台的执行状态转变时
(4d)应用在前台执行中时
此外,更具体而言,控制部105对包含于由识别部103识别出的进程组中的进程和不包含于该进程组的进程进行的上述的“不同的控制”例如是以下那样的控制。
控制部105可以将由识别部103识别出的进程组中所包含的进程的优先级设定为高于不包含于该进程组的进程的优先级。
或者,控制部105也可以使由识别部103识别出的进程组中所包含的进程继续执行,而使不包含于该进程组的进程暂时停止。
此外,在确保了使用资源信息111所示的资源的集合中所包含的任意一个资源的进程(以下称作“确保中进程”)不包含于由识别部103识别出的进程组中的情况下,控制部105可以进行以下的控制。即,如果确保中进程是暂时停止中,则控制部105重新开始确保中进程,如果确保中进程是执行中,则控制部105继续确保中进程的执行。控制部105进而可以在确保中进程释放了确保的资源后,使确保中进程暂时停止。
例如,根据图1的例子,应用A使用的资源R2不是特定资源。因此,在应用A的执行中,资源R2可能被其他应用(为了便于说明而设为“应用B”)访问。但是,应用B的进程(即,由于应用B的包中所包含的程序的执行而生成的进程)不属于由识别部103识别出的与应用A有关的进程组。
因此,如果控制部105使不属于由识别部103识别出的进程组的全部进程暂时停止,则资源R2可能一直被应用B的进程确保而不会被释放。因此,如上所述,控制部105在存在确保中进程(例如打开资源R2并对资源R2访问中的应用B的进程)的情况下,控制成不使确保中进程暂时停止。
于是,如果确保中进程释放哪个资源,则能够访问所释放的资源。即,如上所述,控制部105通过进行与确保中进程有关的例外处理,能够消除基于由识别部103识别出的进程组的暂时停止控制而引起的副作用。
具体而言,例如如以下那样,控制部105能够识别确保中进程。
在图1的例中,通过对应信息112而被对应的是特定资源和特定进程。但是,对应信息112还可以包含有将特定资源以外的资源与特定进程以外的进程对应起来的信息。
例如,由于应用B的执行能够生成1个或多个进程,为了便于说明,将其中1个设为表记为“进程PB1”。在图1的例中,由于资源R2不是特定资源,因此资源R2可能被进程PB1确保。
对应信息112在资源R2被进程PB1确保的情况下,也可以包含将资源R2与进程PB1对应起来的信息。此外,在进程PB1释放了资源R2后,将资源R2与进程PB1对应起来的信息被从对应信息112中删除。
如以上说明的那样扩充的对应信息112例如能够作为资源监视部107的监视的结果而得到。
例如也可以是,资源监视部107监视对于由使用资源信息111所示的资源的集合中所包含的资源中的至少未通过对应信息112与特定进程进行了对应的资源的打开操作和关闭操作。于是,控制部105根据资源监视部107的监视结果,能够识别确保中进程。
打开操作换言之是用于获得资源的获得操作。打开操作具体而言可以是“打开”系统呼叫。此外,关闭操作换言之是用于是否由打开操作确保的资源的释放操作。关闭操作具体而言可以是“关闭”系统呼叫。
因此,在从某个进程打开某个资源起到关闭该某个资源为止的期间内,该某个资源被该某个进程确保。因此,控制部105能够根据资源监视部107的监视结果来识别确保中进程。
例如,在图1的例中,由于资源R2未与特定进程进行了对应,因此资源监视部107监视至少对于资源R2的打开操作和关闭操作。如上所述,在扩充对应信息112的实施方式中,资源监视部107可以进行以下的(5a)~(5b)那样的动作,以进一步包含将特定资源以外的资源与特定进程以外的进程对应起来的信息。
(5a)当进程PB1打开了资源R2时,资源监视部107将对应了资源R2与进程PB1的信息追加到对应信息112中。
(5b)当进程PB1关闭了资源R2时,资源监视部107将对应了资源R2与进程PB1的信息从对应信息112中删除。即,资源监视部107解除资源R2与进程PB1的对应。
如上所述,在所扩充的对应信息112中,反映了资源监视部107的监视结果。因此,控制部105也可以通过参照所扩充的对应信息112来识别确保中进程。
此外,特定资源与特定进程的对应可以预先静态地被记录于对应信息112中,也可以由资源监视部107动态地进行。资源监视部107具体而言可以进行以下那样的动作。
资源监视部107监视对于终端装置100中可以使用的多个资源中至少一部分的打开操作和关闭操作。资源监视部107不仅监视对于特定资源以外的资源的打开操作和关闭操作,还可以监视对于特定资源的打开操作和关闭操作。
而且,资源监视部107在检测到打开操作时,将由于检测到的打开操作而被打开的资源与调用检测到的打开操作的进程对应起来。具体而言,资源监视部107可以将对应了资源与进程的信息追加到所扩充的对应信息112中,由此进行资源与进程的对应。
此外,资源监视部107在检测到关闭操作时,解除由于检测到的关闭操作而被关闭的资源与调用检测到的关闭操作的进程之间的对应。具体而言,资源监视部107可以将对应了资源与进程的信息从所扩充的对应信息112中删除,由此进行对应的解除。
而且,如上所述,在资源监视部107的监视对象的资源中也可以包含有特定资源。在某个特定资源为监视对象的情况下,对应信息112中的至少一部分(即,与该某个特定资源对应的部分),是当资源监视部107检测到来自该某个特定进程的对某个特定资源的打开操作时动态地生成的信息。即,对应信息112中与该某个特定资源对应的部分,是通过资源监视部107将该某个特定资源与该某个特定进程对应而生成,并存储到第2存储部102中的信息。
如以上说明的那样,对应信息112可以被扩充,以便还示出特定资源以外的资源与特定进程以外的进程的对应。此外,对应信息112中表示特定资源与特定进程的对应的部分可以预先静态地被生成,也可以是在特定进程实际地打开特定资源时被生成。
此外也可以是,控制部105继续由识别部103识别出的进程组中所包含的进程的执行,并强制结束不包含于该进程组的进程中的至少一部分。
通过进程的强制结束,能够增大终端装置100具有的存储器的空闲容量。例如,在图1的例中,当应用A在前台的执行中,存储器的空闲容量变少时,控制部105可以强制结束不包含于由识别部103识别出的进程组的进程中的至少一部分。
于是,在前台执行中的应用A能够使用的存储器的容量增加。其结果是,可以期待正在使用应用A的用户感觉到性能提高。
因此,为了能够根据状况进行强制结束,终端装置100可以具有存储器监视部108。存储器监视部108监视应用能够使用的存储器的空闲容量是否为基准以上。另外,该基准例如是根据下述(6a)~(6d)中的1个以上的组合而定义的基准,也可以使用其他适当的基准。
(6a)固定地决定的阈值
(6b)从进程请求分配的存储器的量本身
(6c)将上述(6b)的量乘以预定的数α1(α1>1)而得到的量
(6d)将上述(6b)的量加上预定的数α2(α2>0)而得到的量
而且,当存储器监视部108检测到存储器的空闲容量低于基准时,控制部105可以强制结束不包含于由识别部103识别出的进程组的进程中的至少一部分。例如,应用A在前台执行中,进行以上那样的强制结束处理的情况下,与应用A无关的进程被强制结束。因此,正在利用应用A的用户不太会感到“响应性能不佳”。
如以上说明的那样,识别部103进行的进程组的识别和基于所识别的进程组的控制部105进行的控制实现高度的进程管理。进程管理的适当与否特别在终端装置100的硬件差的情况下对用户感受到的性能的影响较大。因此,基于识别部103识别出的进程组的控制部105进行的控制特别适合终端装置100只配有较差的硬件的情况。
终端装置100可以是例如移动电话、智能手机、平板终端、PDA(Personal DigitalAssistant:个人数字助理)、笔记本式PC(Personal Computer:个人计算机)、台式PC中的任意一种。而且,大多数情况下,移动电话、智能手机、平板终端以及PDA与PC相比受到消耗功率、发热量因制造成本等各种制约,CPU的性能差,搭载的存储器的容量也较少。因此,优选在移动电话、智能手机、平板终端、PDA等硬件较差的终端装置中,安装尽量使用户不感到硬件差的控制。
而且,根据本实施方式,通过控制部105进行的控制完成适当的进程管理。因此,在终端装置100中,例如由于得到以下(7a)和(7b)等效果,因此用户不太会感到硬件差。即,即便终端装置100的硬件差,用户感到的性能也是比较好的。
(7a)在前台执行的应用的响应时间短
(7b)在前台执行的应用不容易出现存储器不足的情况
此外,根据本实施方式,用户感受到的性能由于控制部105的控制而得到改善。因此,各个应用的开发者可以不进行“为了不使用户感到的性能恶化,进行考虑到与其他应用之间的相互影响的调整”等作业。即,根据本实施方式,应用开发者的设计的自由度得到提高。
此外,在控制部105进行暂时停止控制的情况下,在本实施方式中还具有降低消耗功率的效果。
此外,在图1中,为了便于说明,进程和资源等用字母数字表记。但是,为了表示进程和资源等而分别使用的信息的种类根据实施方式的不同可以是各种各样的。
例如,在某种OS(Operating System:操作系统)中,为了提供向设备的访问的接口而使用特殊文件(也被称作“设备文件”)。因此,在资源是物理设备的情况下,可以将与该物理设备对应的特殊文件的文件名用作识别资源的资源识别信息。
此外,如果资源是数据库,则能够将数据库文件的文件名用作资源识别信息。而且,如果资源是预定的文件,则能够将该预定的文件的文件名用作资源识别信息。另外,更具体而言,以上的说明中的“文件名”可以是包含从根目录的路径的“/dev/tty1”那样的完整路径文件名。
当然,也可以使用独立于文件名而按照逻辑来识别资源的信息(为了方便,称作“逻辑资源识别信息”)。例如,如果预先决定表示各资源的唯一的字符串或者唯一的号码,则也可以使用该字符串或者该号码作为逻辑资源识别信息。例如,作为声音设备的逻辑资源识别信息,可以使用“声音”这样的预约字符串。
此外也可以是,例如后述的图7的资源/文件对应表504a那样,还使用将各资源的文件名与逻辑资源识别信息对应起来的信息。
此外,进程可以由进程名表示,也可以由PID表示。即便进程由进程名来表示,例如通过利用“ps”命令等也能够根据进程名来确定PID。具体而言,识别部103最终识别的进程组也可以由PID的集合表示。
而且,能够通过名称来表示应用和应用的包中所包含的程序。
此外,对应于实施方式的不同,使用资源信息111、对应信息112、结构信息113以及识别结果114的具体格式也可以是各种各样的。图1中例示的格式只不过是为了帮助理解的一例。
例如,应用的包可以包含结构信息113,也可以将包信息113从包中提取并存储到第3存储部104中。而且,应用的包还可以包含对应用使用的各资源进行识别的第1资源识别信息。
具体而言,第1资源识别信息也可以是上述的逻辑资源识别信息(例如,对各资源预先决定的唯一的字符串等)。具体而言,使用资源信息111也可以通过从应用的包中提取的第1资源识别信息来示出应用使用的资源的集合。
例如,应用的包也可以包含后述的图7的包信息DB506a那样的形式的信息。该情况下,第1资源识别信息如图7的“利用外部资源名列表”的各要素那样,例如可以是“声音”等字符串。
或者,使用资源信息111也可以通过第2资源识别信息来表示应用使用的资源的集合,该第2资源识别信息是为了识别终端装置100能够使用的各资源而与第1资源识别信息对应地决定的。具体而言,第2资源识别信息也可以是资源的文件名。另外,第1与第2资源识别信息的对应例如也可以通过后述的图7的资源/文件对应表504a那样的信息而被定义。
此外,根据实施方式的不同,对应信息112的具体的格式也可以是各种各样的。对应信息112只要能够将特定资源与特定进程对应即可,可以是任意的格式,也可以是在物理上被划分为多个文件的信息。
例如,对应信息112也可以是包含下述(8a)~(8c)的信息的信息。即,通过下述(8a)~(8c)的信息的对应而将特定资源与特定进程对应起来的信息也可以被用作对应信息112。
(8a)区别特定资源与特定资源以外的资源的第1区别信息、和区别特定进程与特定进程以外的进程的第2区别信息中一方或者双方
(8b)表示特定资源的文件名、和独立于文件名而在逻辑上识别特定资源的逻辑资源识别信息中的一方或者双方
(8c)当由于特定程序的执行而生成特定进程时,动态地分配到特定进程的、特定进程中唯一的进程识别符(例如PID)和识别特定程序的程序识别信息中一方或者双方
另外,上述(8a)中的第1区别信息例如也可以是对终端装置100能够使用的多个资源分别设定为0或者1的标志。后述的图7的资源/文件对应表504a中的标志是第1区别信息的具体例。
或者,第1区别信息也可以是包含识别特定资源的信息(例如,特定资源的文件名、唯一地决定的字符串、唯一地决定的号码等)作为要素的列表(或者其他形式的数据)。即,识别信息包含于该列表的资源是特定资源,识别信息没有包含于该设定文件的资源是特定资源以外的资源。因此,根据该列表能够区别特定资源与其他的资源。
例如,虽然在后述的图7的资源/进程名对应表520a中仅例示了1个条目,但条目的数量也可以是多个。而且,资源/进程名对应表520a的“外部资源名”这一列是第1区别信息的具体例。
此外,具体而言,特定进程是由于某个特定程序的执行而生成的进程,因此特定进程的名称是该特定程序的名称。例如,声音设备是特定资源,如果占有声音设备的守护程序的名称是“声音守护”,则特定进程的进程名也是“声音守护”。
因此,上述(8a)中的第2区别信息例如也可以是特定进程的名称的列表(或者其他形式的数据)。即,进程名包含于该列表的进程是特定进程,进程名没有包含于该列表的进程是特定进程以外的进程。因此,根据该列表能够区别特定进程和其他的进程。
例如,后述的图7的资源/进程名对应表520a的条目数量也可以是多个。而且,资源/进程名对应表520a的“进程名”这一列可以是第2区别信息的具体例。
此外,上述(8b)的信息的具体例例如是后述的图7的资源/文件对应表504a中的第3个条目(即,通过1这个值的标志而示出是与特定资源对应的情况的条目)。上述(8b)的信息的其他的具体例是图7的资源依赖关系表505a的第3个条目中的“资源文件名”,另外一个具体例是图7的资源/进程名对应表520a的“外部资源名”列。
而且,具体而言,上述(8c)的程序识别信息是特定程序的名称。例如,在特定程序的名称是“声音守护”的情况下,上述(8c)的信息的具体例是后述的图7的进程一览507a中的称为“声音守护”的进程名(即程序名)。此外,图7的进程一览507a中的与“声音守护”对应的值为10的PID也是(8c)的信息的具体例。
如以上说明的那样,包含(8a)~(8c)的信息的对应信息112例如可以是分散于图7中例示的几个的表中的信息。而且,对应信息112也可以是根据对特定资源的获得操作和释放操作的监视而生成的。例如可以通过资源监视部107来进行监视。
例如,也可以在对应信息112中的上述(8b)和(8c)的对应中使用后述的图7的资源依赖关系表505a的至少一部分条目。而且,详细地如后所述,根据监视来动态地改写资源依赖关系表505a。
或者,由于特定资源与特定进程之间的关系是预先决定的,因此也可以不进行监视而预先定义对应信息112。在预先定义对应信息112的情况下,识别部103例如使用“ps”命令等来识别特定进程的名称与PID的对应关系,由此能够识别通过PID表示各进程的进程组。
例如,后述的图7的资源/进程名对应表520a是预先将特定资源与特定进程对应起来的对应信息112的一例。而且,识别部103能够通过“ps”命令得到图7的进程一览507a,能够根据进程一览507a来识别特定进程的名称与PID之间的对应关系。
此外,在以上说明的第1实施方式中,如果在形式上定义识别部103识别的进程组,则如以下所示。
首先,对于任意的应用x将进程的集合defined(x)和资源的集合used(x)定义为式(1)和(2)那样。
defined(x)
={p|由于被定义为包含于应用x的包中的程序的执行,生成进程p} (1)
used(x)
={r|被定义为应用x使用资源r} (2)
识别部103能够根据结构信息113和“ps”命令来识别式(1)的进程的集合defined(x)。此外,识别部103能够根据使用资源信息111识别式(2)的资源的集合used(x)。
此外,对与任意的资源的集合R都如式(3)那样定义进程的集合service(R)。式(3)表示特定进程的集合。
service(R)
={p|(r∈R)∧(由进程p提供向资源r的访问)} (3)
如果使用以上的式(1)~(3),则识别部103关于任意的应用x而识别的进程组group(x)能够如式(4)那样表现。
group(x)
=defined(x)∪service(used(x)) (4)
识别部103使用使用资源信息111和对应信息112,识别式(4)中的service(used(x))。此外,具体而言,如果将图1的例子代入式(1)~(4),则能够得到式(5)~(8)。
defined(A)={PA1,PA2} (5)
used(A)={R1,R2,R3} (6)
service({R1,R2,R3})={P1,P3} (7)
group(A)={PA1,PA2,P1,P3} (8)
此外,更优选的是,识别部103关于应用x,识别式(9)的进程组group(x)即可。这是因为,属于式(4)中所定义的进程组中的任意一个进程可能生出子孙进程。
group(x)
=defined(x)∪service(used(x))∪descendant(defined(x)∪service(used(x))) (9)
另外,对于任意的进程的集合P,进程的集合descendant(P)如式(10)所示。
descendant(P)
={q|(p∈P)∧(进程q是进程p的子孙进程)} (10)
于是,接下来,参照图2~29对第2实施方式和与第2实施方式有关的几个变形例进行说明。另外,第2实施方式及其变形例还适用于PC,但适合于移动电话、智能手机、平板终端、PDA等与PC相比硬件较差的终端装置。以下为了方便,以将第2实施方式应用于智能手机的情况为例进行说明。
图2是智能手机的硬件结构图。图2的智能手机200具有CPU201、RAM(RandomAccess Memory:随机访问存储器)202、无线LAN(Local Area Network:局域网)接口203、闪存204。此外,智能手机200还具有SD(Secure Digital:安全数字)存储卡220的卡读/写器205。
智能手机200还具有输入键206、显示器207、麦克风208、扬声器209、3G(第3代)通信机210、GPS(Global Positioning System:全球定位系统)接收机211以及加速度传感器212。智能手机200内的各部经由总线213而彼此连接。
CPU201将各种程序下载到RAM202中执行该程序。此外,CPU201还将RAM202用作工作区。
此外,CPU201还可以具有声音输出功能。即,智能手机200使用的声音设备具体而言也可以是CPU201。当然,智能手机200也可以具有CPU201以外的板载式声音芯片作为声音设备。或者,作为声音设备的声卡也可以被安装于智能手机200中。
无线LAN接口203例如是符合IEEE(Institute of Electrical and ElectronicsEngineers)802.11系列的标准的通信接口,包含天线、调整器、解调器等。智能手机200能够经由无线LAN接口203与IP(Internet Protocol:互联网协议)网络连接。
此外,在闪存204中存储各种程序和其他数据。也可以使用其他种类的非易失性存储装置(例如硬盘装置)来代替闪存204。
此外,SD存储卡220是计算机可读取的存储介质的一例。而且,卡读/写器205是存储介质的驱动装置的一例。
输入键206是受理来自用户的输入的输入装置的一例。显示器207也可以是触摸屏幕。触摸屏幕既是输入装置也是输出装置。此外,麦克风208也是输入装置的一例。扬声器209是输出装置的一例。
此外,3G通信机210也包含天线、调制器、解调器等。智能手机200能够经由3G通信机210与3G通信网络连接。3G通信机210提供电话功能和数据通信功能。
GPS接收机211接收来自GPS卫星的测位信号,计算智能手机200的位置并输出。此外,加速度传感器212感应智能手机200的加速度并输出。加速度传感器212的输出例如还被利用于显示器207的显示方向的切换等。智能手机200还可以具有未图示的其他的传感器,还可以具有未图示的照相机。
另外,移动电话、智能手机、平板终端、PDA、PC等各种终端装置均是计算机的一种。移动电话、平板终端、PDA、PC等终端装置也与图2的智能手机200同样地具有CPU、RAM、存储装置以及输入输出装置,优选的是,还具有某些通信接口和存储介质的驱动装置。通信接口的例子是有线LAN接口、无线LAN接口、3G通信机等。
此外,根据终端装置的种类的不同,也可以使用硬盘装置来代替闪存204。而且,也可以使用其他种类的存储介质的驱动装置来代替SD存储卡220的卡读/写器205。可以利用的存储介质的例子是磁盘、光磁盘、CD(Compact Disc:光盘)或DVD(DigitalVersatile Disk:数字通用光盘)等光盘,以及USB(Universal Serial Bus:通用串行总线)存储器等半导体存储器等。
另外,RAM202、闪存204、硬盘装置等也是一种存储介质。而且,以上例示的各种存储介质均是有形的(tangible)介质,不是信号载波那样的暂时的(transitory)介质。
此外,CPU201执行的程序也可以预先安装于闪存204或者硬盘装置中。或者也可以是,将程序存储于SD存储卡220或者其他的存储介质中来进行提供,并通过卡读/写器205或者适当的驱动装置读取该程序,并安装于终端装置中。或者也可以是,经由无线LAN接口203或者3G通信机210等通信接口,将程序从网络下载到终端装置中。
接着,详细地对应用于具有图2所示的硬件结构的智能手机200的第2实施方式进行说明。
在此,为了有助于对第2实施方式的优点的理解,一边对以往的移动电话和通用的PC进行比较,一边说明智能手机的特征。
在以往的移动电话的嵌入式OS中采用了单窗口系统。此外,以往的移动电话的嵌入式OS是单任务OS。因此,在以往的移动电话中,当前激活的窗口的应用占有CPU,没有在后台并行地执行的应用。因此,根本不需要对后台的应用和前台的应用进行调停。此外,在以往的移动电话中,用户也不会安装任意的应用。
另一方面,在通用的PC中用户能够安装任意的应用。此外,所安装的应用不一定被进行包管理,因此不一定能够利用与各应用有关的元信息。另外,与应用有关的元信息的例子例如是应用包中所包含的执行程序的名称和应用利用的资源的名称等。
而且,在通用的PC用的OS(也称作“桌面OS”)中采用了多窗口系统。此外,通用的PC用的OS是多任务OS。因此,在当前激活的窗口的应用以外,常常产生在后台还执行其他的应用的状况。
换言之,在通用的PC中,可能经常发生“并行地执行不一定能够利用元信息的任意的多个应用”这样的状况。但是,在前台和后台并行地执行多个任意的应用的情况下,难以自动地判定应用间的优先级。因此,在通用的PC中,“根据优先级对后台的应用和前台的应用进行调停,由此向优先级高的应用更多地分配CPU时间”这样的控制是困难的。
然而,通用的PC与移动电话和智能手机等终端装置相比,硬件上宽裕。例如,与智能手机相比,在通用的PC中,所搭载的CPU的时钟频率更高,所搭载的存储器的容量更大。
因此,即便不进行根据例如优先级的应用间的调停,通用的PC也能够并行地执行多个应用,而不使用户感到性能特别下降。即,在通用的PC中,基本不需要根据优先级来对后台的应用和前台的应用进行调停。
与此相对,优选在智能手机中根据优先级对后台的应用和前台的应用进行调停。理由如下。
智能手机用的最近的OS是多任务OS。因此,能够并行地执行多个应用。另一方面,智能手机与通用的PC相比,大多只具有较差的硬件。因此,在智能手机中与通用的PC同样并行地执行多个应用的情况下,例如由于响应时间的长期化等,有时会使用户感到不便。
因此,为了降低使用户感到的不便(换言之,为了提高用户感受到的性能),在智能手机中应用间的调停是有效的。而且,根据第2实施方式,通过利用智能手机用的OS的特性,能够得到用于应用的调停的对进程控制有益的进程组。具体而言,在第2实施方式中,利用如下(9a)和(9b)的特性。
(9a)在智能手机用的OS中采用了单窗口系统。因此,能够唯一地确定用户当前正在交互地利用的前台的应用。
(9b)智能手机用的OS包含管理安装于智能手机中的应用的包的包管理模块。因此,即便要安装任意的应用,针对哪个应用都能够利用作为元信息的包信息。另外,更具体而言,包信息包含对应用包所包含的1个或多个二进制程序进行识别的信息,以及对应用直接或间接地访问的资源进行识别的信息。
上述(9a)的特性被用于优先级高的应用的判别。而且,(9b)的特性被用于与应用关联的进程组的识别。
接着,以对流发送的动态图像进行再现的动态图像再现应用为例,说明与“具体而且将哪个进程识别为进程组的成员是适当的”有关的方针的概要。图3是对适当的进程组的例子进行说明的图。
在图3的例中,智能手机300经由WAN(Wide Area Network:广域网)320与服务器310连接。智能手机300也可以通过互联网、LAN、3G通信网络等任意的网络与服务器310连接,而代替通过WAN320来与服务器310连接。
智能手机300中安装有动态图像再现应用301。动态图像再现应用301包含动态图像再现模块302和下载模块303。另外,图3中还图示了智能手机300的OS的内核304、OS提供的标准的服务305以及声音设备306。具体而言,声音设备306例如可以是具有声音功能的CPU、独立于CPU的板载式声音芯片,或者外接的声卡。
服务器310具有动态图像DB(数据库)311。此外,在服务器310上,文件传输服务312进行动作。文件传输服务312根据来自智能手机300的请求,从动态图像DB311读出动态图像文件313,对动态图像文件313进行包化。在图3的例中例示了被包化的3个动态图像片断331~333。而且,文件传输服务312经由WAN320将动态图像片断331~333发送到智能手机300。
在智能手机300例如根据来自用户的指示起动动态图像再现应用301后,动态图像再现模块302在前台进行动作,下载模块303在后台进行动作。具体而言,下载模块303从服务器310下载动态图像片断331~333并存储到存储器中。然后,动态图像再现模块302对下载并存储于存储器中的动态图像片断331~333进行再现。
具体而言,再现是通过服务305而进行的。可以被各种应用使用的声音设备306被服务305(即由OS提供的一种守护程序)占有,仅通过服务305而被访问。一般的应用将向声音设备306的访问请求输出到服务305,由此通过服务305来访问声音设备306。因此,动态图像再现模块302将由下载模块303下载的动态图像片断331~333的图像在显示器上描绘,并且向服务305请求输出动态图像片断331~333的声音。
如上所述,优选在智能手机300中,通过基于优先级的应用间的调停来提高用户感受到的性能。因此,优选当在前台执行动态图像再现应用301时(即,动态图像再现模块302显示图像的窗口激活时),提高与动态图像再现应用301有关的进程组的优先级。
在此,动态图像再现应用301的主任务是动态图像再现模块302进行的再现。但是,假如仅提高动态图像再现模块302的优先级,如果下载模块303的优先级低,则下载也不会顺利地进行。其结果是,动态图像的再现也不会顺利地进行(例如,在某一帧图像处可以出现再现停止的情况)。此外,假如仅提高动态图像再现模块302和下载模块303的优先级,如果服务305的优先级低,则可能会发生“声音中断”等不良情况,而不能与图像一致适时地输出声音。
因此,与动态图像再现应用301有关的进程组,不仅包含下述(10a)的进程,还应当包含(10b)和(10c)的进程。
(10a)在前台进行动作的动态图像再现模块302的进程。即,动态图像再现应用301的主任务的进程。
(10b)在后台进行动作的下载模块303的进程。即,附在动态图像再现应用301的包内的、主任务以外的后台任务的进程。
(10c)动态图像再现模块302为了利用声音设备306的资源而调用的服务305的进程。即,占有动态图像再现应用301利用的资源并负责向资源的访问的进程。
如以下详细地说明,根据第2实施方式,包含(10a)~(10c)的进程组被智能手机300识别为与动态图像再现应用301有关的进程组。因此智能手机300能够进行“一起提高属于识别出的进程组的(10a)~(10c)的进程的优先级”等适当的进程控制,以提高用户感受到的性能。
接着,更详细地对上述(9b)所述的智能手机中的应用包的管理进行说明。图4是对智能手机中的应用包的管理进行说明的图。
在图4中例示了智能手机400和安装于智能手机400的应用包C。
另外,在以下中,为了方便说明,也将赋予应用、应用包、程序以及进程的以英文字母开头的参照标号作为名称。例如,图4的应用包C的名称是“C”。此外,为了简化说明,设为应用包的名称与应用的名称相同。
图4中示出了智能手机400的OS的内核401。此外,预先在智能手机400中安装有附属于OS的几个标准的服务402~405、应用管理管理器406、窗口系统407以及安装器408。
智能手机400的硬件结构例如也可以与图2相同。图4中例示了智能手机400具有的几个物理设备中的GPS接收机409。
服务402~405可以分别为守护程序。服务402~405对应用提供标准的服务。例如,在图4的例中,服务404对应用提供向GPS接收机409的访问。
此外,应用管理管理器406对应用的起动、结束、暂时停止、重新开始等进行管理。此外,应用管理管理器406将应用的状态的变化通知给窗口系统407。于是,窗口系统407根据状态的变化将适当的应用的窗口描绘于智能手机400的显示器中。
安装器408控制应用包的安装。具体而言,安装器408将要安装的对象的应用包中所包含的二进制程序等各种数据存储在文件系统410的适当的目录中。此外,安装器408将关于要安装的对象的应用包的元信息即包信息存储在包信息DB411中。
例如,图4的应用包C是应用C的包,具体而言,包含以下(11a)~(11e)。
(11a)在前台执行的主进程用的二进制程序C1
(11b)后台进程用的二进制程序C2
(11c)规定与应用C有关的各种设定值的设定文件412
(11d)“应用C包含程序C1和程序C2”这样的表示应用C的结构的结构信息413
(11e)“应用C读取GPS信息”这样的表示应用C依赖的资源的依赖关系信息414
在通过安装器408将包含上述(11a)~(11e)的应用包C安装于智能手机400后,程序C1、程序C2以及设定文件412被存储在文件系统410内的适当的目录中。此外,具体而言,包信息是包含结构信息413和依赖关系信息414的信息。因此,安装器408将结构信息413和依赖关系信息414与应用C关联地存在包信息DB411中。
然后,当在智能手机400中安装应用C,并起动应用C后,程序C1和C2被执行。即,由于名称为“C1”的程序C1的执行,生成具有相同名称“C1”的进程C1,有意义名称为“C2”的程序C2的执行,生成名称为“C2”的进程C2。
此外,在图4的例中,读取由GPS接收机409取得的GPS信息的处理是从进程C2被调用的处理。但是,在图4的例中,进程C2并非直接访问GPS接收机409来读取GPS信息,而是由服务404占有GPS接收机409,经由服务404来进行向GPS接收机409的访问。
因此,如根据图3的例子理解的那样,与图4的例中的应用C有关的适当的进程组不仅包含在前台执行的进程C1,还包含在后台执行的进程C2和服务404的进程。在此,可以根据存储于包信息DB411中的结构信息413所示出的名称“C1”和“C2”来确定进程C1和进程C2。然而,不能够根据存储于包信息DB411中的依赖关系信息414直接地确定服务404的进程。
理由之一是,在依赖关系信息414中使用了在逻辑上识别资源的信息。另一理由是,依赖关系信息414不包含与应用的进程(例如进程C2)是否通过其他进程(例如服务404的进程)访问资源有关的信息。接下来,在下面详细对这两个理由进行说明。
依赖关系信息414原本是以安全为目的而被包含于应用包C中的信息。为了防止应用在用户不知道的情况下访问资源,例如以下那样利用依赖关系信息414。
首先,未图示的输入装置(例如图2的输入键206或者触摸屏幕)受理指示应用包C的安装的来自用户的指示的输入。然后,安装器408参照依赖关系信息414。其结果是,安装器408对应用C读取GPS信息的情况进行识别。
安装器408根据识别出的结果,向用户显示询问“您要安装的应用C将要读取GPS信息,要安装应用C吗?”的消息。
因此,不想安装读取GPS信息的应用的用户能够指示安装的中止。此外,认为可以安装读取GPS信息的应用的用户能够指示安装的继续。其结果是,能够预防“在用户不知道的情况下由应用C读取GPS信息”这样的安全上的风险。
如上所述,依赖关系信息414是安全目的的访问控制信息。因此,具体而言,依赖关系信息414表示应用利用的资源,以及应用对该资源进行的操作(例如,“读取”、“写入”等)。另外,在图4的例中,依赖关系信息414仅包含关于1个资源的信息,但在访问多个资源的应用的依赖关系信息中,针对多个资源中的每个来指定操作。
因此,智能手机400通过参照存储于包信息DB411中的包信息,能够针对已经安装的各应用,识别向哪个资源的访问被允许。但是,在依赖关系信息414中,为了识别资源而被使用的信息是在逻辑上识别资源的信息,其与智能手机400中在物理上识别资源的信息不同。
例如,在智能手机400中,也可以将GPS接收机409抽象化为位于特定路径的特定文件名的设备文件。但是,在依赖关系信息414中,不使用依赖于智能手机400中的安装的物理上的识别信息(例如,GPS接收机409的设备文件的完整路径文件名)。取而代之,在依赖关系信息414中,使用不依赖于智能手机400中的安装的逻辑上的识别信息(例如“GPS信息”那样的预约字符串等)。
此外,如图4的例子那样,有时向依赖关系信息414所示的资源(即GPS接收机409)的访问并不是从应用C的进程C2直接进行的,而是经由服务404进行的。但是,依赖关系信息414只是示出应用C是否存在向哪个资源进行哪种种类的访问(例如,“读取”、“写入”等)的可能性。
即,依赖关系信息414不包含与是否经由其他进程(例如服务404的进程)进行访问有关的信息。这是因为,即便包含那样的信息,也无法到达上述的安全目的。
依赖关系信息414中具有以上说明的特征,因此智能手机400从依赖关系信息414中直接地识别“服务404的进程属于与应用C有关的进程组”是困难的。因此,在第2实施方式中,为了克服该困难,使用其他各种信息。以下,参照图5~14进一步详细地说明第2实施方式。
图5是第2实施方式的智能手机的框结构图。另外,图5所示的各种数据的详细与图7一起在后面叙述,图5所示的各种处理部的动作的详细与图8~14一起在后面叙述。
图5所示的智能手机500具有判定与应用关联的进程组的进程组判定部501。进程组判定部501判定的进程组被记录在进程组成员表502中。此外,智能手机500具有参照进程组成员表502来进行适当的进程控制的进程控制模块503。
进程组判定部501通过参照资源/文件对应表504、资源依赖关系表505、包信息DB506以及进程一览507,能够将适当的进程组判定为进程管理的管理单位。
详细将在后面叙述,在资源/文件对应表504中预先设定数据。此外,包信息DB506与图4的包信息DB411相同,在每次应用包的安装和卸载时被改写。资源依赖关系表505和进程一览507根据智能手机500的动作而变化。
具体而言,智能手机500还具有依赖关系管理部508和探测器509。而且,探测器509监视进程进行的资源的获得和释放,并将监视结果通知给依赖关系管理部508。然后,依赖关系管理部508根据来自探测器509的通知,动态地改写资源依赖关系表505。此外,由于进程一览507是智能手机500中的动作中的进程的一览,因此,当然内容根据所取得的定时而有所不同。
智能手机500还具有受理来自用户的输入的输入部510。输入部510是例如图2的输入键206、触摸屏幕或者它们的组合。
此外,智能手机500还具有与图4的应用管理管理器406同样地管理应用的起动、结束、暂时停止、重新开始等的应用管理管理器511。更详细地将,如图5所示,应用管理管理器511包含切换事件通知部512,该切换事件通知部512在发生应用的切换时,将切换事件的发生通知给其他的模块。
此外,图5中还图示了智能手机500的OS的内核513和内核513内的设备驱动器514。在第2实施方式中,上述探测器509也被安装于内核513内中。
此外,智能手机500具有几个物理设备515。物理设备515是资源的具体例。另外,在图5中,为了方便只示出了1个物理设备515的模块。
为了实现向物理设备515的接口,在智能手机500的OS中,采用了将物理设备515抽象化为资源文件516(即被称作“特殊文件”或者“设备文件”的文件)的方法。在图5中,为了方便,仅示出了1个资源文件516的模块,但也可以存在与多个物理设备515分别对应的多个资源文件516。
此外,图5中还图示了智能手机500执行的进程517。在图5中,为了方便仅示出了1个进程517的模块,但是,智能手机500执行多个进程517。此外,进程517可以是用户应用的进程,也可以是附属于OS的服务等的进程。
另外,在第2实施方式中,具体而言,从进程517向物理设备515的访问是通过对资源文件516的系统呼叫而实现的。因此,探测器509通过监视对资源文件516的系统呼叫,来监视资源(即物理设备515)的获得和释放。另外,智能手机500预先将探测器509监视的对象的资源文件516的列表存储为监视对象资源文件列表518。
接着,参照图6来说明应用包、资源和进程的具体例。
图6的智能手机600包含与图5的智能手机500相同的结构要素,但在图6中,图5所示的结构要素的一部分被省略,一部被进一步具体化。
即,智能手机600具有GPS接收机601、加速度传感器602、声音设备603以及显示器604作为图5的物理设备515的具体例。此外,以下为了便于说明,假定声音设备603是被特定进程占有访问的特定资源,并假定其他3个物理设备不是特定资源。
此外,智能手机600包含文件系统605和包信息DB606。在图5中省略了文件系统,图6的文件系统605与图4的文件系统410相同。此外,包信息DB606相当于图4的包信息DB411和图5的包信息DB506。
此外,智能手机600包含OS的内核607和设备驱动器608。内核607相当于图4的内核401和图5的内核513,设备驱动器608相当于图5的设备驱动器14。
而且,智能手机600包含资源文件609~612作为图5的资源文件516的具体例。在图6中,为了方便说明,在资源文件609~612的模块中写着各个完整路径文件名。以下为了简化说明,也将完整路径文件名简单称作“文件名”。
具体而言,与GPS接收机601对应的资源文件609的文件名是“/dev/tty1”。此外,与加速度传感器602对应的资源文件610的文件名是“/dev/tty2”。而且,与声音设备603对应的资源文件611的文件名是“/dev/snd”。此外,与显示器604对应的资源文件612的文件名是“/dev/fb”。
此外,图6中例示了由OS提供的标准的几个程序的进程,以及根据来自用户的指示而被安装的应用的进程,作为图5的进程517的具体例。具体而言,图6中分别例示了位置管理器613、声音守护614、窗口系统615、应用管理管理器616以及安装器617的进程。此外,图6中还例示了通过安装器617被安装于智能手机600中的应用D,以及由于E的执行而生成的进程D1、D2、E1以及E2。
另外,位置管理器613通过参照与GPS接收机601对应的资源文件609,能够得到与智能手机600的位置有关的信息。而且,位置管理器613对任意的应用提供位置信息。在图6的例中,位置管理器613的进程的PID是5。另外,在资源文件609中,还可以访问位置管理器613以外的应用的进程。
此外,声音守护614独占向与声音设备603对应的资源文件611的访问。其他程序的进程对声音守护614的进程请求向声音设备603的访问,声音守护614根据请求对资源文件611进行操作。即,在图6的例中,声音设备603是特定资源,声音守护614的进程是特定进程。此外,在图6的例中,声音设备603的进程的PID是10。
窗口系统615与图4的窗口系统407相同。窗口系统615通过操作与显示器604对应的资源文件612,来控制窗口的描绘。在图6的例中,窗口系统615的进程的PID是20。
应用管理管理器616与图4的应用管理管理器406和图5的应用管理管理器511对应,对应用的起动、结束、暂时停止、重新开始等进行管理。在图6中进行了省略,但与图5相同,应用管理管理器616包含切换事件通知部512。另外,在图6的例中,应用管理管理器616的进程的PID是30。
安装器617相当于图4的安装器408。向智能手机600安装应用包是经由安装器617而进行的。而且,应用包中所包含的二进制程序和设定文件被存储于文件系统605中,应用包中所包含的包信息被存储于包信息DB606中。在图6的例中,安装器617的进程的PID是40。
此外,图6中例示了两个应用包D和E。而且,图6示出所安装的应用D和E被执行的状态。
具体而言,应用包D包含程序D1、D2、依赖关系信息618以及结构信息619。依赖关系信息618示出应用D利用加速度传感器602。此外,结构信息619示出应用包D包含程序D1和D2。
此外,应用包E包含程序E1、E2、依赖关系信息620以及结构信息621。依赖关系信息620示出应用E利用声音设备603。此外,结构信息621示出应用包E包含程序E1和E2。
而且,在安装于智能手机600的应用D被起动后,具体而言,由于程序D1的执行而生成进程D1,由于程序D2的执行而生成进程D2。在图6的例中,进程D1的PID是1001,进程D2的PID是1011。
此外,当应用D是前台应用时,进程D1在前台进行动作。即,将与应用D的窗口显示有关的命令发送到窗口系统615的进程的进程是进程D1。
另一方面,进程D2是后台进程。另外,如依赖关系信息618所示,应用D利用加速度传感器602。在图6的例中,具体而言,进程D2对与加速度传感器602对应的资源文件610进行打开操作、读出操作、关闭操作等操作,由此实现从应用D向加速度传感器602的访问。
此外,在安装于智能手机600的应用E被起动后,具体而言,由于程序E1的执行而生成进程E1,由于程序E2的执行而生成进程E2。在图6的例中,进程E1的PID是1002,进程E2的PID是1012。
此外,当应用E是前台应用时,进程E1在前台进行动作。即,将与应用E的窗口显示的有关的命令发送到窗口系统615的进程的进程是进程E1。
另一方面,进程E2是后台进程。另外,如依赖关系信息620所示,应用E利用声音设备603。在图6的例中,具体而言,进程E2进行用于利用声音设备603的处理。但是,在图6的例中,向作为特定资源的声音设备603的访问被作为特定进程的声音守护614的进程占有。
因此,具体而言,进程E2将用于使声音输出到声音设备603的指示发送到声音守护614的进程。然后,声音守护614的进程依照来自进程E的指示来访问声音设备603(更具体而言,例如,调用“写”系统呼叫)。其结果是,声音设备603输出声音。
图7是说明各种数据的具体例的图。另外,图7的各种数据的例与图6的例子对应。
图7中例示了图5所示的进程组成员表502、资源/文件对应表504、资源依赖关系表505、包信息DB506、进程一览507以及监视对象资源文件列表518的具体例。图7中还例示了后述的变形例中所使用的资源/进程名对应表520、应用利用时刻表529以及强制结束除外进程列表530的具体例。在后面叙述变形例中所使用的数据,此处省略说明。
图7所例示的进程组成员表502a中的各条目将应用名与PID列表对应起来,其中,该PID列表将与通过应用名识别的应用关联的进程组的各成员的PID作为要素。
根据第1个条目,应用D的进程组包含PID为1001的进程(即图6的进程D1)和PID为1011的进程(即图6的进程D2)。
此外,根据第2个条目,应用E的进程组包含PID为1002的进程(即图6的进程E1)和PID为1012的进程(即图6的进程E2)。应用E的进程组还包含PID为10的进程(即图6的声音守护614的进程)。这是因为,应用E利用的声音设备603是特定资源,与声音设备603对应的特定进程是声音守护614的进程。
此外,图7所例示的资源/文件对应表504a中的各条目与在智能手机500中可以利用的各个资源对应。第2实施方式中的资源具体而言是物理设备515,但是,当然,智能手机500具有的未图示的数据库或者智能手机500存储的预定的文件也可以用作资源。
资源/文件对应表504a的各条目包含标志、外部资源名以及资源文件名。
标志表示与该条目对应的资源是否是特定资源。在图7的例中,标志的值为1的条目与特定资源对应,标志的值为0的条目与特定资源以外的资源对应。
此外,外部资源名是在逻辑上识别与该条目对应的资源的识别信息,具体而言,是在应用包的依赖关系信息中用于在逻辑上识别资源的名称。
资源文件名是作为向与该条目对应的资源的接口的资源文件516的完整路径文件名。
例如,根据第1个条目,与通过“GPS”的名称在逻辑上识别的资源(即图6的GPS接收机601)对应的资源文件609的完整路径文件名是“/dev/tty1”。而且,向该资源的访问并非限定于来自特定进程的访问,因此标志的值是0。
此外,根据第2个条目,与通过“加速度传感器”的名称在逻辑上识别的资源(即图6的加速度传感器602)对应的资源文件610的完整路径文件名是“/dev/tty2”。而且,向该资源的访问并非限定于来自特定进程的访问,因此标志的值是0。
此外,根据第3Ge条目,与通过“声音”的名称在逻辑上识别的资源(即图6的声音设备603)对应的资源文件611的完整路径文件名是“/dev/snd”。而且,向该资源的访问被限定为来自特定进程(即图6的声音守护614的进程)的访问,因此标志的值是1。
图7所例示的资源依赖关系表505a的各条目将资源文件名与将对应于该资源文件名的资源进行确保中的进程的PID对应起来。
例如,根据第1个条目,通过完整路径文件名为“/dev/tty1”的资源文件提供接口的资源当前被PID为5的进程打开,被PID为5的进程确保。即,第1个条目表示“GPS接收机601当前被位置管理器613的进程确保”这样的图6的状况。
此外,根据第2个条目,通过完整路径文件名为“/dev/tty2”的资源文件通过接口的资源当前被PID为1011的进程打开,被PID为1011的进程确保。即,第2个条目表示“加速度传感器602当前被进程D2确保”这样的图6的状况。
而且,根据第3个条目,通过完整路径文件名为“/dev/snd”的资源文件提供接口的资源当前被PID为10进程打开,被PID为10的进程确保。即,第3个条目表示“声音设备603当前被声音守护614的进程确保”这样的图6的状况。
此外,图7所例示的包信息DB506a的各条目与应用对应。各条目包含应用名、程序名列表以及利用外部资源名列表。应用名是与该条目对应的应用的名称。此外,程序名列表是通过该应用名识别的应用包中所包含的二进制程序的名称的列表。而且,利用外部资源名列表是在逻辑上识别可能被通过该应用名识别的应用包访问的资源的识别信息的列表。换言之,利用外部资源名列表是在安装应用包时对被用户允许访问的资源在逻辑上进行识别的识别信息的列表。
例如,根据第1条目,应用D包含程序D1和程序D2,可能从应用D访问通过“加速度传感器”的名称在逻辑上识别的资源。即,第1个条目是在安装图6的应用包D时,根据依赖关系信息618和结构信息619而生成的。
此外,根据第2条目,应用E包含程序E1和程序E2,可能从应用E访问通过“声音”的名称在逻辑上识别的资源。即,第2个条目是在安装图6的应用包E时,根据依赖关系信息620和结构信息621而生成的。
此外,图7所例示的进程一览507a的各条目与动作中的进程对应,包含该进程的PID和进程名。图7的进程一览507a包含与图6所例示的9个进程和在智能手机的起动中一直存在的“init”进程分别对应的条目。另外,如图7所示,“init”进程的PID是1。
而且,图7所例示的监视对象资源文件列表518a是用于定义探测器509的监视的对象的列表,具体而言,是监视对象的资源文件516的完整路径文件名的列表。
根据图6的例子,智能手机600具有GPS接收机601、加速度传感器602、声音设备603、以及显示器604这样的资源。但是,以下将显示器604作为非监视的对象。因此,监视对象资源文件列表518a是与GPS接收机601对应的资源文件609、与加速度传感器602对应的资源文件610以及与声音设备603对应的资源文件611的完整路径文件名的列表。
接着,如上所述,在参照图6~7所示的具体例的同时,参照图8~14的流程图来说明图5的智能手机500的各部的动作。
图8是在第2实施方式中包含切换事件通知部512的应用管理管理器511进行的处理的流程图。图8的处理在起动智能手机500时开始。
在步骤S101中,应用管理管理器511等待与应用的管理有关的事件的发生。然后,当发生事件时,处理转移到步骤S102。另外,例如当输入部510收到来自用户的输入时等发生事件。
接下来,在步骤S102中,应用管理管理器511执行与在步骤S101中检测到的事件对应的通常的应用管理处理。即,应用管理管理器511根据事件的种类,适当地进行例如以下的(12a)~(12g)的处理中的1个以上的处理。
(12a)起动新的应用。
(12b)结束到目前为止在前台执行的应用。
(12c)将到目前为止在前台执行的应用转变到后台。
(12d)暂时停止到目前为止在前台执行的应用。
(12e)将到目前为止在后台执行的应用转变到前台。
(12f)重新开始到目前为止暂时停止的应用。
(12g)对窗口系统发出窗口的显示方向的切换的命令。
然后,在步骤S102的执行后,处理转移到步骤S103。然后,在步骤S103中,切换事件通知部512判定发生的事件的种类。然后,在发生的事件是切换应用的事件(即,伴随画面的切换的事件)的情况下,处理转移到步骤S104。
例如,当没有起动任何应用时,如果发生起动新的应用的事件,则处理转移到步骤S104。同样,当存在已经被起动的应用时,如果发生由于起动其他的应用而切换前台的应用的事件,则处理还是转移到步骤S104。此外,对当前在前台执行中的应用输入了明确的结束指示的情况下,由于产生一种应用的切换,因此处理也向步骤S104转移。
相反,在发生的事件是其他种类的事件的情况下,处理返回步骤S101。例如,当用户将智能手机500的方向从纵向变为横向时,发生切换窗口的显示方向的事件。但是,该情况下,窗口中所表示的内容本身不变化,当然也不发生应用的切换。因此,处理从步骤S104向步骤S101返回。
在步骤S104中,切换事件通知部512将应用的切换的发生通知给进程组判定部501和进程控制模块503。然后,处理返回步骤S101。
另外,接收到步骤S104中的通知的进程组判定部501的动作的详细与图11一起在后面叙述。此外,接收到步骤S104中的通知的进程控制模块503的动作的详细与图12~14一起在后面叙述。
接着,参照图9的流程图,对第2实施方式中探测器509进行的处理进行说明。图9的处理在智能手机500被起动后开始。
在步骤S201中,探测器509读取监视对象资源文件列表518,识别与监视对象的资源对应的资源文件516。然后,探测器509开始对于在监视对象资源文件列表518中所指定的各资源(即,与监视对象资源文件列表518中具有文件名的资源文件516对应的各物理设备515)的系统呼叫的监视。在图6和图7的例中,监视对象的资源是与资源文件609~611对应的GPS接收机601、加速度传感器602以及声音设备603。
然后,在接下来的步骤S202中,探测器509等待对于与监视对象的资源对应的资源文件516的系统呼叫的调用。然后,在出现了系统呼叫的调用后,处理转移到步骤S203。
在步骤S203中,探测器509判定系统呼叫的种类。在系统呼叫的种类是用于资源获得的“打开”或者用于资源释放的“关闭”的情况下,处理转移到步骤S204。在其他的种类(例如“读”或“写”等)的系统呼叫的情况下,处理转移到步骤S205。
然后,在步骤S204中,探测器509向依赖关系管理部508通知操作内容、操作对象以及调用方PID。具体而言,操作内容是系统呼叫的种类,操作对象通过资源文件516的文件名来表示。
例如,假设从PID为1011的进程D2调用对资源文件610的“打开”系统呼叫。根据图7的监视对象资源文件列表518a,图6的资源文件610是监视对象。因此,该情况下,探测器509在步骤204中将操作内容是“打开”操作、操作对象是“/dev/tty2”、以及调用方PID是1011的情况通知给依赖关系管理部508。
在步骤S204中的通知后,处理转移到步骤S205。然后,在步骤S205中,探测器509调用在步骤S202中检测出的系统呼叫。其结果是,系统呼叫被执行。然后,处理返回步骤S202。
例如,在步骤S202中,在检测到来自进程D2的对资源文件610的“打开”系统呼叫的调用的情况下,在步骤S205中,执行对资源文件610的“打开”系统呼叫。即,通过内核513打开资源文件610。
另外,内核513也可以向探测器509返回表示对资源文件610的“打开”操作已经成功的返回值。探测器509也可以在步骤S205中进一步将来自内核513的返回值返回到系统呼叫的原本的调用方的进程。或者,内核513也可以直接将返回值返回给系统呼叫的原本的调用方的进程。
根据以上的图9的处理,在每次调用对于文件名包含于监视对象资源文件列表518中的任意的资源文件516的“打开”或者“关闭”系统呼叫时,进行从探测器509向依赖关系管理部508的通知。另外,当然,内核513根据对于不是探测器509的监视对象的资源(例如,在图6和图7的例中为显示器604)的系统呼叫,执行适当的处理。
图10是第2实施方式中依赖关系管理部508进行的处理的流程图。图10的处理也在智能手机500被起动后开始。
在步骤S301中,依赖关系管理部508等待来自探测器509的通知。然后,在依赖关系管理部508从探测器509接收到通知后,处理转移到步骤S302。
在步骤S302中,依赖关系管理部508判定从探测器509通知的事件的种类(即,探测器509检测出的系统呼叫的种类)。另外,如与图9一起说明的那样,探测器509向依赖关系管理部508通知的仅是对于监视对象的资源文件516的“打开”或者“关闭”系统呼叫的发生。
在从探测器509通知的事件的种类是资源的获得的情况下(即,被通知的操作内容是“打开”操作的情况下),处理转移到步骤S303。相反,在从探测器509通知的事件的种类是资源的释放的情况下(即,被通知的操作内容是“关闭”操作的情况下),处理转移到步骤S304。
在步骤S303中,依赖关系管理部508在资源依赖关系表505中与被打开的资源文件516对应地写入PID。在写入后,处理返回步骤S301。
例如,假设从探测器509通知的调用方PID是5,并且从探测器509通知的操作对象是“/dev/tty1”。该情况下,在步骤S303中,依赖关系管理部508在资源依赖关系表505中检索资源文件名为“/dev/tty1”的条目,在找到的条目的PID字段中写入从探测器509通知的值为5的PID。
此外,在步骤S304中,依赖关系管理部508在资源依赖关系表505中消去与被关闭的资源文件516对应的PID。在消去后,处理返回步骤S301。
例如,假设从探测器509通知的调用方PID是1011,并且从探测器509通知的操作对象是“/dev/tty2”。该情况下,在步骤S304中,依赖关系管理部508在资源依赖关系表505中检索资源文件名为“/dev/tty2”的条目,清除找到的条目的PID字段。
同以上说明的图9~10的处理,在每次监视对象资源文件列表518中所指定的任意的资源文件516被打开或关闭时,资源依赖关系表505都被动态地改写。
另外,在上述中省略了说明,但是,资源依赖关系表505与监视对象资源文件列表518一起被初始化。例如,也可以是,当智能手机500被起动时,依赖关系管理部508参照监视对象资源文件列表518来初始化资源依赖关系表505。
初始状态的资源依赖关系表505具有与监视对象资源文件列表518中所包含的各资源文件名对应的条目,各条目的PID字段是被清除的状态。例如,在图7的监视对象资源文件列表518a中包含“/dev/tty1”、“/dev/tty2”和“/dev/snd”这3个资源文件名,因此资源依赖关系表505被初始化为具有与这3个资源文件名对应的3个条目,各条目的PID字段被清除。
图11是第2实施方式中进程组判定部501进行的处理的流程图。图11的处理也在智能手机500被起动后开始。
在步骤S401中,进程组判定部501进行等待,直到从切换事件通知部512通知应用的状态变化事件。即,在图8的步骤S104中切换事件通知部512发出通知为止,进程组判定部501在步骤S401进行待机。
然后,在被通知了新起动应用的事件的情况下,处理转移到步骤S402。相反,在被通知了停止应用的事件的情况下,处理转移到步骤S413。
此外,无论被通知了起动事件还是停止事件的情况下,进程组判定部501都在步骤S401中持续待机。例如,在已经在后台执行中的应用被切换到前台的情况下,该应用的进程组不变化,因此进程组判定部501不需要进行任何动作。因此,进程组判定部501在步骤S401中持续待机。
在步骤S402中,进程组判定部501从起动的应用的包信息中取得执行程序名和利用资源名。所取得的执行程序名的数量为1以上,所取得的利用资源名的数量为0以上。
例如,假设切换事件通知部512向进程组判定部501通知了应用E已经起动。该情况下,在步骤S402中,进程组判定部501将从切换事件通知部512通知的称作“E”的应用名作为检索键,来检索包信息DB506a。
然后,进程组判定部501从找到条目的程序名列表中取得“E1”和“E2”作为应用E的执行程序名。此外,进程组判定部501从找到的条目的利用外部资源名列表中取得“声音”这一逻辑上的名称作为应用E的利用资源名。
接着,在步骤S403中,进程组判定部501使用例如“ps”命令等来取得进程一览507。如图7中例示的那样,进程一览507至少包含各进程的进程名和PID。
然后,在接下来的步骤S404中,进程组判定部501针对在步骤S402中取得的各执行程序名进行以下的处理。即,进程组判定部501将取得的执行程序名作为检索键,对在步骤S403中取得的进程一览507进行检索,从检索结果中取得由于程序的执行而生成的进程的PID。
例如,假设在步骤S402中,取得“E1”和“E2”这样的执行程序名,在步骤S403中,取得图7的进程一览507a。该情况下,在步骤S404中,进程组判定部501将名称“E1”作为检索键取得1002这样的PID,并且将名称“E2”作为检索键取得1012这样的PID。
进而,在接下来的步骤S405中,进程组判定部501将步骤S404中取得的全部PID写入进程组成员表502中。
更详细地讲,进程组判定部501向进程组成员表502中追加新的条目。此外,进程组判定部501在追加的条目的“应用名”字段中写入起动的应用的名称。另外,进程组判定部501能够根据来自切换事件通知部512的通知识别所起动的应用的名称。然后,进程组判定部501在追加的条目的“PID列表”字段中写入在步骤S404中取得的全部PID。
例如,在步骤S404中如上述的例子那样得到了1002和1012这样的PID的情况下,在步骤S405中,进程组判定部501生成与起动的应用E对应的条目。然后,进程组判定部501与应用名“E”对应地将1002和1012这样的PID记录在进程组成员表502中。
接着,在步骤S406中,进程组判定部501判断在步骤S402中取得的利用资源名中,作为步骤S407以后的处理的对象,是否还存在还未关注的利用资源名。在步骤S402中取得的利用资源名的数量本来就是0,或者,取得的全部利用资源名已经被关注并结束的情况下,处理转移到步骤S412。相反,在步骤S402中取得的利用资源名中还存在未关注的资源名的情况下,处理转移到步骤S407。
然后,在步骤S407中,进程组判定部501关注下一利用资源名,使用资源/文件对应表504,从逻辑上的利用资源名取得物理上的资源文件名。即,进程组判定部501将关注的利用资源名作为检索键来检索资源/文件对应表504,从找到的条目中读取资源文件名。
例如,假设进程组判定部501在步骤S407中关注“声音”这个利用资源名,资源/文件对应表504如图7的资源/文件对应表504a那样。该情况下,在步骤S407中,进程组判定部501根据“声音”这个名称取得“/dev/snd”这个资源文件名。
然后,在接下来的步骤S408中,进程组判定部501从资源依赖关系表505读取确保了起动的应用利用的资源的进程的PID。即,进程组判定部501将在步骤S407中取得的资源文件名作为检索键来检索资源依赖关系表505,从找到的条目中读取PID。
例如,假设在步骤S407中取得“/dev/snd”这个文件名,资源依赖关系表505是图7的资源依赖关系表505a。该情况下,在步骤S408中,进程组判定部501根据“/dev/snd”这个文件名取得值为10的PID。
另外,如关于图10的步骤S304说明的那样,当资源被释放后,资源依赖关系表505的PID被清除。因此,在不存在当前确保了进程组判定部501正在关注的资源的进程的情况下,在步骤S408中,不会取得有效的PID的值。另外,根据实施方式,清除PID的操作可以是对NULL值进行重写的操作,也可以是重写不使用的-1等特定数值作为PID的操作。因此,当步骤S408中取得的值是NULL或-1等时,进程组判定部501能够判断为“PID被清除了”。
然后,在接下来的步骤S409中,进程组判定部501判断是否与当前关注的资源文件名对应地在资源依赖关系表505中存在有效的PID。即,进程组判定部501判断是否在步骤S408中取得了有效的PID。
然后,在步骤S408中取得了有效的PID的情况下,处理转移到步骤S410,以判断是否将所取得的PID追加到进程组中。相反,如果PID被清除了,则由于不存在与当前进程组判定部501关注的资源关联地追加到进程组中的PID,因此处理返回步骤S406。
此外,在步骤S410中,进程组判定部501判断在步骤S408中读取的PID的进程的种类是为了提供向资源的访问而占有资源的系统服务,还是应用。即,进程组判定部501判断在步骤S408中读取的PID的进程是否是特定进程。
例如,在资源/文件对应表504如图7的资源/文件对应表504a那样具有“标志”字段的情况下,进程组判定部501如以下那样进行步骤S410的判断。进程组判定部501参照在步骤S407中进行检索而找到的条目的标志。然后,如果标志的值是1,则进程组判定部501判断为“进程的种类是系统服务”。相反,如果标志的值是0,则进程组判定部501判断为“进程的种类是应用”。
根据实施方式,进程组判定部501也可以使用其他种类的信息进行步骤S410的判断。可以由智能手机500保持为了提供向资源的访问而占有资源的系统服务的名称的列表,进程组判定部501也可以通过参照列表来进行步骤S410的判断。
另外,进程组判定部501能够从步骤S403中取得的进程一览507中取得与步骤S408中读取的PID对应的进程名。因此,进程组判定部501可以判定在系统服务的名称的列表中是否包含取得的进程名,由此来进行步骤S410的判断。
然后,当在步骤S408中读取的PID的进程的种类是为了提供向资源的访问而占有资源的系统服务时,处理转移到步骤S411。即,当进程组判定部501当前关注的资源是由特定进程占有的特定资源时,处理转移到步骤S411。
相反,当在步骤S408中读取的PID的进程的种类是应用时,处理返回步骤S406。即,当进程组判定部501当前关注的资源是特定资源以外的通常的资源(即,是可以从任意的应用进程直接访问的资源)时,处理返回步骤S406。
这是因为,即便进程组判定部501当前关注的资源偶然当前被另外的应用的进程打开,起动的应用与该另外的应用也是独立的。将独立的两个应用的进程包含于相同的进程组不切合“用于以应用为单位的适当的进程管理的进程组的识别”这样的目的。因此,当在步骤S408中读取的PID的进程的种类是应用时,处理返回步骤S406。
然后,在步骤S411中,进程组判定部501将在步骤S408中读取的PID追加到进程组成员表502的在步骤S405中追加的条目的PID列表中。在追加后,处理返回步骤S406。
例如,如上述的例子那样,假设进程组判定部501在步骤S405中与应用名“E”对应地将1002和1012这样的PID记录在进程组成员表502中,在步骤S408中取得值为10的PID。于是,进程组判定部501在步骤S411中进一步追加值为10的PID。其结果是,如图7的进程组成员表502a的第2个条目那样,包含值为10、1002以及1012的PID的进程的进程组作为应用E的进程组被登记到进程组成员表502中。
接下来,步骤S412是在属于与起动的应用有关的进程组的PID被登记到全部进程组成员表502中之后被执行的。因此,在步骤S412中,进程组判定部501将进程组成员表502的更新通知给进程控制模块503。进程控制模块503等待步骤S412中的来自进程组判定部501的通知,由此能够可靠地参照更新后的进程组成员表502。在步骤S412的通知后,处理返回步骤S401。
接下来,在步骤S413中,进程组判定部501从进程组成员表502中删除停止的应用的进程组。即,进程组判定部501将与停止的应用对应的条目从进程组成员表502中删除。然后,处理返回步骤S401。
例如,假设切换事件通知部512将应用D已经停止的情况通知给了进程组判定部501。该情况下,在步骤S413中,进程组判定部501将应用名“D”作为检索键对进程组成员表502进行检索,将找到的条目从进程组成员表502删除。
另外,在进程组判定部501使用资源/文件对应表504a的标志进行步骤S410的判断的情况下,上述的图11的处理也可以如下那样变形。即,进程组判定部501在步骤S407中与资源文件名一起取得标志的值,当标志的值是0时,可以省略步骤S408~S411,返回步骤S406。而且,也可以是,当步骤S407中取得的标志的值是1时,进程组判定部501进行步骤S408和S411的处理。
此外,在图11中进行了省略,但步骤S402也可以包含如下那样的错误处理。
应用管理管理器511也可以构成为还检测用户应用以外的程序的起动。该情况下,即便在由于某些理由而重新起动了声音守护614等服务等的情况下,有时也进行从切换事件通知部512向进程组判定部501的通知。
因此,虽然在图11中省略了错误处理,但如果在步骤S402中的包信息DB506的检索中没有找到条目,则进程组判定部501也可以立即结束图11的处理。
这样,即便以服务的起动为契机,处理从步骤S401转移到步骤S402的情况下,在不会在进程组成员表502中错误地生成与起动的服务有关的条目。此外,在应用管理管理器511能够区别用户应用与其他的程序(例如服务等)的情况下,切换事件通知部512也可以仅将用户应用的状态变化事件作为通知对象。这样,即便没有上述那样的步骤S402中的错误处理,也不会在进程组成员表502中错误地生成与服务关联的条目。
接下来,图12~13是第2实施方式中进程控制模块503进行的处理的流程图。图12~13的处理在智能手机500被起动后开始。此外,图14是从图12和13被调用的子例程的流程图。
在步骤S501中,进程控制模块503根据需要进行适当的初始化。例如,进程控制模块503对内部数据进行初始化。此外,如后述的变形例那样,进程组判定部501利用预先定义的某些信息(例如资源/文件对应表504)的情况下,进程组判定部501也可以在步骤S501中读入预先定义的信息。
在接下来的步骤S502中,进程控制模块503在预定时间内等待来自切换事件通知部512的、应用的切换通知。从切换事件通知部512向进程控制模块503的通知如图8的步骤S104所示。
在预定时间内没有来自切换事件通知部512的通知的情况下,处理转移到步骤S503。此外,在切换事件通知部512向进程组判定部501通知了不伴随向其他应用的切换而仅是在前台执行的应用结束的情况下,处理也转移到步骤S503。
在进程组判定部501从切换事件通知部512接收到新的应用被起动或者已经被起动的应用转变到前台的通知的情况下,处理转移到步骤S505。例如,在为了在前台的执行而选择了在后台执行中的应用或者暂时停止中的应用的情况下,处理从步骤S502向步骤S505转移。
在步骤S503中,进程控制模块503参照作为进程控制模块503的内部数据而保持的保留进程列表。详细将在后面叙述,保留进程列表是用于当进程控制模块503对进程尝试某些控制而失败时,准备将来重试而记录处理对象的进程和控制的内容的列表。
例如,如在图5中从进程控制模块503向内核513的箭头和从内核513向进程517的箭头所表示的那样,进程控制模块503也可以使用系统呼叫来控制进程。保留进程列表的各要素例如也可以是包含进程的PID作为参数的系统呼叫。或者,保留进程列表的各要素也可以是进程的PID与向进程发送的信号所成的对。
进程控制模块503在步骤S503中参照保留进程列表,判断保留进程列表中是否剩有未关注的进程。在保留进程列表本身为空的情况下,或者已经对保留进程列表中的全部进程进行关注而结束了步骤S504的处理的情况下,处理返回步骤S502。相反,在保留进程列表不为空,并且在保留进程列表中还剩有1个以上未关注为步骤S504的处理的对象的进程的情况下,处理转移到步骤S504。
然后,在步骤S504中,进程控制模块503对保留进程列表中的下一个未关注的进程尝试在保留进程列表中记录的操作。
例如,假设之前进程控制模块503对PID为1200的进程尝试暂时停止,但由于某些理由而使暂时停止失败了。该情况下,在保留进程列表中记录有值为1200的PID和暂时停止这样的操作内容。因此,在步骤S504中,进程控制模块503再次尝试PID为1200的进程的暂时停止。
另外,步骤S504的详细与图14一起在后面叙述。具体而言,图14所示的子例程包含进程的PID、操作内容和重试标志作为参数。重试标志表示“对于进程的操作是基于保留进程列表的重试,还是最初的尝试”。在步骤S504中的子例程呼叫中,进程控制模块503将重试标志设定为表示重试的值(例如1)。此外,在执行步骤S504之后,处理返回步骤S503。
进程控制模块503进行以上的步骤S502~S504,在空闲时间(即,由于未发生应用的切换,因此不需要执行步骤S505以后的处理的时间)根据需要进行重试处理。
接下来,在步骤S505中,进程控制模块503判定从切换事件通知部512通知的事件是否是新的应用的起动。
在新的应用被起动的情况下,进程控制模块503在以下要参照的进程组成员表502正要被进程组判定部501改写。因此,为了等待进程组判定部501对进程组成员表502的改写完成,处理转移到步骤S506。
相反,在不是新的应用被起动的情况下,新变为前台的应用的进程组已经被登记在进程组成员表502中。例如,在先起动后转变到后台并直到刚才还在后台执行的应用转变到了前台的情况下,进程组已经被登记在进程组成员表502中。此外,在先起动后被暂时停止的应用又被重新开始并在前台执行的情况下,进程组也已经被登记在进程组成员表502中。因此,在不是新的应用被起动的情况下,处理转移到步骤S507。
在步骤S506中,进程控制模块503进行等待,直到接收到“进程组成员表502更新已经完成”这样的、来自进程组判定部501的通知。在步骤S506中,进程控制模块503接收的通知是在图11的步骤S412中进程组判定部501发出的通知。在进程控制模块503收到通知后,处理转移到步骤S507。
接下来,在步骤S507中,进程控制模块503取得进程一览507。
例如,在应用E新被起动的情况下,在步骤S506中所检测的通知到达进程控制模块503的时刻,应用E的程序E1和E2的执行已经开始。因此,进程E1和E2在步骤S507中所取得的进程一览507中被列出。
然后,在接下来的步骤S508中,进程控制模块503识别新在前台执行的应用的进程组。以下为了便于说明,将在步骤S508中所识别的进程组称作“前台进程组”。
例如,假设进程控制模块503在步骤S502中从切换事件通知部512接收到“应用E已经被起动”这样的通知。该情况下,在步骤S508中,进程控制模块503将应用名“E”作为检索键来对进程组成员表502进行检索,识别与应用E对应的进程组。在进程组成员表502如图7的进程组成员表502a那样的情况下,在步骤S508中,进程控制模块503识别包含PID为10、1002和1012的进程的进程组。
然后,在接下来的步骤S509中,进程控制模块503判断是否在保留进程列表中存在属于前台进程组的进程。在属于前台进程组的进程被包含在保留进程列表中的情况下,处理转移到步骤S510。相反,在属于前台进程组的哪个进程都不包含在保留进程列表中的情况下,处理转移到图13的步骤S511。
在步骤S510中,进程控制模块503将属于前台进程组的进程从保留进程列表中删除。
例如,假设在保留进程列表中记录有对PID为1200的进程的暂时停止操作。此外,假设PID为1200的进程属于前台进程组。
在此,如以下要说明的步骤S511~S513那样,属于前台进程组的进程是进程控制模块503现在正要进行控制的进程。具体而言,进程控制模块503在步骤S511中决定对属于前台进程组的进程的操作内容。
假如不将PID为1200的进程从保留进程列表中删除,则PID为1200的进程在步骤S511~S513中被适当地控制后,在再次执行的将来的步骤S504中会被暂时停止。即,作为对PID为1200的进程的适当的控制,当进程控制模块503决定的操作的种类变化时,新的操作会被旧的操作覆盖。
因此,为了防止“新的操作被旧的操作覆盖”这样的不良情况,在步骤S510中,进程控制模块503将属于前台进程组的进程从保留进程列表中删除。然后,处理转移到图13的步骤S511。
在步骤S511中,进程控制模块503决定对前台进程组的操作的内容。具体而言,进程控制模块503决定对属于前台进程组的各进程进行提高优先级的操作或者重新开始操作。
另外,根据实施方式,进程控制模块503可以在步骤S511中始终将对前台进程组的操作决定为提高优先级的操作。或者也可以是,在步骤S511中,进程控制模块503始终将对前台进程组的操作决定为重新开始操作。或者也可以是,进程控制模块503根据智能手机500的负荷等的状况,在步骤S511中决定操作内容。
然后,在接下来的步骤S512中,进程控制模块503判断是否在前台进程组中剩有未关注的进程。当在前台进程组中还剩有进程控制模块503未关注的进程作为步骤S513的处理的对象时,处理转移到步骤S513。相反,当针对前台进程组中的全部进程,进程控制模块503已经执行完步骤S513的处理时,处理转移到步骤S514。
在步骤S513中,进程控制模块503对前台进程组中的下一未关注的进程尝试在步骤S511中决定的操作。然后,处理返回步骤S512。
另外,步骤S513的详细与图14一起在后面叙述,在步骤S513中,前述的重试标志被设定为表示最初的尝试的值(例如0)。
此外,在步骤S514中,进程控制模块503识别从前台转变到后台的应用的进程组。以下为了便于说明,将在步骤S514中识别的进程组称作“后台进程组”。
例如,假设在步骤S502中从切换事件通知部512通知的事件是“应用E被起动,到目前为止在前台执行的应用D转变到了后台”这样的事件。该情况下,后台进程组是与应用D对应地记录在进程组成员表502中的进程组。
或者,假设在步骤S502中从切换事件通知部512通知的事件是“从没有任何应用被执行的状态到新起动了应用E”这样的事件。该情况下,从前台转变到后台的应用根本不存在。因此,进程控制模块503在步骤S514中识别为“后台进程组为空”。
然后,在接下来的步骤S515中,进程控制模块503决定对属于后台进程组并且不属于前台进程组的进程的操作的内容。具体而言,在步骤S515中决定的操作内容是降低优先级的操作或者暂时停止操作。
另外,根据实施方式,进程控制模块503也可以在步骤S515中始终选择降低优先级的操作。或者也可以是,进程控制模块503在步骤S515中始终选择暂时停止操作。或者也可以是,进程控制模块503根据智能手机500的负荷等的状况,在步骤S515中决定操作内容。
然后,在接下来的步骤S516中,进程控制模块503判定是否在属于后台进程组并且不属于前台进程组的进程中剩有未关注的进程。
如果还剩有进程控制模块503未关注的进程作为步骤S517的处理的对象,则处理转移到步骤S517。
相反,如果针对属于后台进程组并且不属于前台进程组的全部进程,进程控制模块503已经执行完步骤S517的处理,则处理返回图12的步骤S502。另外,在根本不存在属于后台进程组并且不属于前台进程组的进程的情况下,处理也同样地返回步骤S502。
在步骤S517中,进程控制模块503对属于后台进程组并且不属于前台进程组的进程中的下一未关注的进程尝试在步骤S515中决定的操作。然后,处理返回步骤S516。
另外,步骤S517的详细与图14一起在后面叙述,在步骤S517中,前述的重试标志被设定为表示最初的尝试的值(例如0)。
此外,从步骤S517的处理的对象中将属于前台进程组的进程排除的理由如下。
在第1和第2应用利用相同的特定资源的情况下,相同的特定进程既包含在第1应用的进程组中,又包含在第2应用的进程组中。例如,假设第1和第2应用均利用声音设备603。该情况下,占有声音设备603并提供向声音设备603的访问的声音守护614的进程既包含在第1应用的进程组中,又包含在第2应用的进程组中。
于是,在将前台应用从第1应用向第2应用切换的情况下,对属于后台进程组的全部进程进行步骤S517的处理是不合适的。虽然声音守护614的进程属于后台进程组,但如果优先级被降低,则利用声音设备603的第2应用的性能也会受到不好的影响。因此,将属于后台进程组的进程中还属于前台进程组的进程从步骤S517的处理对象中排除是合适的。
另外,由以上的关于图12~13的说明可知,不属于任何应用的进程组的进程不受到进程控制模块503的控制。
例如,在图7的资源/文件对应表504a中未登记将显示器604与资源文件612对应起来的条目。因此,访问资源文件612的窗口系统615也当然不属于任何应用的进程组。因此,窗口系统615的进程不受到进程控制模块503的控制。
几乎所有的应用都利用窗口系统615。因此,进程控制模块503降低窗口系统615的进程的优先级,或者使窗口系统615的进程暂时停止是不合适的。但是,上述那样的窗口系统615的进程不受到进程控制模块503的控制,因此当然也不会产生那样的不合适的控制。
此外,如上所述,与应用以外的进程(例如服务等的进程)对应的条目不包含于进程组成员表502中。因此,“init”进程那样的特殊的进程也不受到进程控制模块503的控制。即,进程控制模块503的控制不会对与应用无关的特殊的进程产生不好的影响。
接下来,参照图14详细地对从上述的步骤S504、S513以及S517调用的子例程进行说明。另外,具体而言,图14的子例程的参数包含指定操作对象的进程的PID、操作的种类以及重试标志。
在步骤S601中,进程控制模块503判定由参数指定的操作的种类。然后,在所指定的操作的种类是优先级的变更的情况下,处理转移到步骤S602。此外,在所指定的操作的种类是暂时停止或者重新开始的情况下,处理转移到步骤S603。
在步骤S602中,进程控制模块503将由参数指定了PID的进程的优先级等级变更为由参数指定的等级。根据OS使用不同的方法管理进程的优先级。例如在第2实施方式中,进程的优先级被指定为多个优先级等级中的任意一个。
例如,由OS定义的优先级等级可以是“高优先级等级”和“低优先级等级”这两个。该情况下,具体而言,提高优先级的操作是将优先级等级设定为高优先级等级的操作,降低优先级的操作是将优先级等级设定为低优先级等级的操作。
当然,也可以定义3个以上的优先级等级。该情况下,进程控制模块503在步骤S511中决定将优先级提高怎样的程度,在步骤S515中决定将优先级降低怎样的程度。
另外,最低的优先级的等级也可以是固定地将CPU时间的分配决定为0那样的特殊的等级。该情况下,通过降低优先级的操作,实质上能够实现暂时停止操作。
此外,在步骤S603中,进程控制模块503对由参数指定了PID的进程发送与由参数所指定的操作对应的信号。另外,表示操作的内容的参数也可以是发送的信号的值本身。
例如,如果所指定的操作是暂时停止,则进程控制模块503发送用于暂时停止的信号(例如SIGSTOP)。此外,如果所指定的操作是重新开始,进程控制模块503发送用于重新开始的信号(例如SIGCONT)。另外,即便向不是暂时停止中的进程(即执行中的进程)发送用于重新开始的信号,由于信号仅是被忽略,因此也不会产生有害的副作用。
然后,在步骤S602或者S603的执行后,处理转移到步骤S604。在步骤S604中,进程控制模块503判断“步骤S602或者S603的操作是成功了还是失败了”。
例如,步骤S602和S603的处理可以通过系统呼叫来实现。而且,也可以将表示系统呼叫是成功还是失败的返回值从内核513返回到进程控制模块503。于是,进程控制模块503能够根据返回值执行步骤S604的判断。
或者也可以是,在步骤S604中,进程控制模块503参照作为控制的对象的进程的优先级等级,判断优先级等级是否被正确地设定为由参数指定的那样。同样,也可以是在步骤S604中,进程控制模块503参照作为控制的对象的进程的状态,判断进程是否被正确地暂时停止或者重新开始。
然后,在步骤S602或者S603的操作成功的情况下,处理转移到步骤S605。相反,在步骤S602或者S603的操作失败的情况下,处理转移到步骤S607。另外,作为步骤S602或者S603的操作失败的情况,例如存在作为操作对象的进程正在执行某些系统呼叫的情况,或者打开并确保了某些资源的情况等。
在步骤S605中,进程控制模块503参照作为参数而指定的重试标志的值,判断本次的子例程呼叫是否为重试。然后,当本次的子例程呼叫是重试时,处理转移到步骤S606,当本次的子例程呼叫是第1次尝试时,结束图14的处理。
然后,在步骤S606中,进程控制模块503将由参数指定的PID与由参数指定的操作内容所成的对从保留进程列表中删除。即,通过重试而成功的操作不需要进一步再次尝试,因此在步骤S606中从保留进程列表中删除要素。然后,结束图14的处理。
此外,在步骤S607中,进程控制模块503参照作为参数指定的重试标志的值,判断本次的子例程呼叫是否为重试。
然后,当本次的子例程呼叫是重试时,进程控制模块503不更新保留进程列表而结束图14的处理。这是因为,在进程控制模块503以前失败的操作再次失败的情况下,该操作依然还是重试的对象。
相反,当本次的子例程呼叫是第1次尝试时,处理转移到步骤S608。然后,在步骤S608中,进程控制模块503将由参数指定的PID和由参数指定的操作内容所成的对追加到保留进程列表中。然后,结束图14的处理。
如以上说明的那样,根据第2实施方式,根据应用利用的资源识别适当的进程组。而且,对在前台执行的应用的进程组和从前台转变到后台的应用的进程组分别进行适当的控制。因此,即便智能手机500的硬件较差,也对前台应用的进程组重点地分配硬件。其结果是,利用前台应用的用户感受到的性能保持良好。
例如,即便智能手机500具有的CPU201的时钟频率不是很高,根据第2实施方式,也能够对属于前台应用的进程组的进程重点对分配CPU时间。因此,例如能够实现比较短的响应时间。其结果是,用户能够舒服地利用前台应用,感受到良好的性能。
以上说明的第2实施方式能够根据下述(13a)~(13h)所示的观点进行变形,(13a)~(13h)的变形例只要不彼此矛盾,可以任意地组合。
(13a)也可以是,根据OS的优先级控制的机制,适当地对进程控制模块503的优先级控制的方法进行变形。
(13b)也可以是,为了消减探测器509的负荷,将明显不使用的资源从探测器509的监视对象中排除。
(13c)也可以是,为了消减探测器509的负荷,将一定从特定进程访问的特定资源从探测器509的监视对象中排除。
(13d)也可以是,在动态地生成子孙进程的情况下,为了实现更适当的进程组的识别,参照进程之间的父子关系。
(13e)也可以是,在进程控制模块503进行暂时停止控制的情况下,进行用于避免伴随暂时停止的副作用的例外处理。
(13f)也可以是,为了消除存储器不足,进行利用进程组的强制结束控制。
(13g)也可以是,探测器509不是必须安装在内核513内。
(13h)也可以是,适当地将使用保留列表的控制进行变形。
以下对上述(13a)~(13h)的变形例进行说明。
优先级控制的机制根据OS的不同而不同,在某种OS中,仅有1个优先级等级。在优先级等级只有1个的某种OS中,通过动态地变动的值管理进程的优先级。而且,OS内的进程调度器根据动态地变动的值来调度进程。具体而言,上述(13a)的变形例是在仅有1个优先级等级的情况下,图14的子例程如图15那样变形的例子。
在仅有1个优先级等级的OS中,例如根据通过“nice”命令在进程中设定的nice值(niceness),动态地控制进程的优先级。例如,进程消耗的CPU时间越多,表示进程的优先级的动态的值被改写为表示更低的优先级的值。因此,表示进程的优先级的动态的值具有随着时间的经过成为表示更低的优先级的趋势。
因此,在(13a)的变形例中,图14的子例程被图15的子例程置换。此外,进程控制模块503保持优先级操作对象列表,作为用于对具有动态地下降的趋势的优先级进行再设定的内部数据。优先级操作对象列表的各要素是PID与nice值所成的对。
此外,虽然省略了图示,但是在(13a)的变形例中,进程控制模块503的图12~13的处理被如下变形。即,进程控制模块503在步骤S512之前(例如步骤S511的紧后面)清除优先级操作对象列表。
以下,对图15的处理进行说明。在步骤S701中,进程控制模块503判定由参数所指定的操作的种类。然后,在所指定的操作的种类是优先级的变更的情况下,处理转移到步骤S702。此外,在所指定的操作的种类是暂时停止或者重新开始的情况下,处理转移到步骤S704。
在步骤S702中,进程控制模块503将表示由参数指定了PID的进程的静态优先级的nice值变更为由参数指定的值。具体而言,步骤S702的处理也可以通过“nice”命令的执行来实现。
然后,在接下来的步骤S703中,进程控制模块503在优先级操作对象列表中追加由参数指定的PID与由参数指定的值所成的对。然后,处理转移到步骤S705。
此外,在步骤S704中,进程控制模块503向由参数指定了PID的进程发送与由参数指定的操作对应的信号。步骤S704与步骤S603相同。在执行步骤S704后,处理转移到步骤S705。
步骤S705~S709与图14的步骤S604~S608相同。
此外,在(13a)的变形例中,进程控制模块503还定期地进行以下的处理。即,进程控制模块503针对优先级操作对象列表的各要素(即PID与nice值所成的对),在由该对的PID识别的进程中设定该对中所记录的nice值。
如上所述,表示进程的优先级的动态的值具有随着时间的经过成为表示更低的优先级的趋势。但是,动态的值以nice值的设定为契机而被重置。
因此,如上所述,进程控制模块503定期地对在优先级操作对象列表中登记的各进程的nice值进行再设定,由此,能够在一定程度上抑制优先级操作对象列表中所登记的各进程的动态的优先级的下降。即,在图13的步骤S511中,在将前台进程组决定为提高优先级的对象的情况下,为了将属于前台进程组的各进程的动态的优先级保持为较高,进行nice值的定期的再设定。
接着,对(13b)~(13f)的变形例进行说明。在(13b)~(13f)的变形例中,在图5的智能手机500中进一步追加处理模块,智能手机500还保持其他的数据。因此,参照图16来说明(13b)~(13f)的变形例中追加的处理模块和数据。
图16是对(13b)~(13f)的变形进行了组合的情况下的、智能手机500a的框结构图。图16的智能手机500a具有与图5的智能手机500同样的各种处理模块,保持与智能手机500同样的各种数据。
此外,智能手机500a包含(13b)的变形例中所使用的应用信息分析部519。此外,智能手机500a包含(13c)的变形例中所使用的资源/进程名对应表520、监视资源过滤部521、以及已知成员检测部522。而且,智能手机500a还包含(13d)的变形例中所使用的父子关系判定部523。
此外,智能手机500a的进程控制模块503包含(13e)的变形例中所使用的竞争判定部524。此外,智能手机500a的内核513包含(13f)的变形例中所使用的存储器管理模块525。另外,存储器管理模块525的详细与图28一起在后面叙述。
图16的智能手机500a中所追加的上述处理模块和数据的详细与(13b)~(13f)的变形例的详细说明一起在后面叙述。
另外,为了方便图示,图16中例示组合了(13b)~(13f)的变形的情况下的智能手机500a。但是,当然,(13b)~(13f)的变形也可以单独地应用于第2实施方式。例如,在仅将(13f)的变形应用于第2实施方式的情况下,仅在图5的智能手机500的内核513中追加图16的存储器管理模块525即可。针对其他的(13b)~(13e)的变形例也同样地,可以单独地应用于第2实施方式。
接着,对(13b)的变形例进行说明,在(13b)的变形例中,通过从探测器509的监视对象中排除明显不被使用的资源来消减探测器509的处理负荷。
第2实施方式中的监视对象资源文件列表518是根据智能手机500的硬件结构预先设定的静态信息。但是,在例如智能手机500具有的多个物理设备515中,可能存在不被智能手机500中已经安装任何用户应用访问的物理设备515。于是,探测器509不需要监视向不会被任何用户应用访问的物理设备515的访问。
例如,图16的智能手机500a可能具有图6的GPS接收机601作为1个物理设备515。但是,在智能手机500a中可能没有安装任何使用GPS接收机601的应用。
于是,不需要为了与应用关联的进程组的识别而监视向GPS接收机601的访问。因此,通过将GPS接收机601从探测器509的监视对象中排除,能够消除探测器509的不必要的负荷。
另外,即便没有使用GPS接收机601的应用,由OS提供的位置管理器613也可能使用GPS接收机601。但是,进程组判定部501要进行识别的各进程组是与应用对应的进程组。因此,探测器509不需要对位置管理器613与应用无关地向GPS接收机601进行的访问进行监视。
因此,在(13b)的变形例中,将明显不被应用使用的资源从探测器509的监视对象中排除。
具体而言,在(13b)的变形例中,根据在智能手机500a中实际安装的应用来改写监视对象资源文件列表518。而且,为了监视对象资源文件列表518的改写,智能手机500a具有应用信息分析部519。此外,探测器509根据监视对象资源文件列表518的变更来变更监视对象。以下,参照图17和18,更详细地对(13b)的变形例进行说明。
图17是(13b)的变形例中应用信息分析部519进行的处理的流程图。图17的处理在智能手机500a被起动后开始。
在步骤S801中,应用信息分析部519监视安装器617的动作。然后,在应用信息分析部519检测到通过安装器617对应用的追加(即安装)或删除(即卸载)的开始时,处理转移到步骤S802。在通过安装器617进行其他的处理的情况下,或者,在安装器617不进行任何动作的期间内,应用信息分析部519在步骤S801中进行待机。
然后,在步骤S802中,应用信息分析部519生成被追加或删除的应用利用的资源的一览。具体而言,应用信息分析部519从包信息DB506提取利用外部资源名列表。
另外,应用信息分析部519能够根据安装器617的监视结果识别被追加或删除的应用的名称。此外,应用信息分析部519还能够根据安装器617的监视结果识别进行应用的追加和删除中的哪种。
在追加应用的情况下,应用信息分析部519等待应用包中的包信息在包信息DB506中存储而结束。然后,应用信息分析部519将应用名作为检索键对包信息DB506进行检索,从找到的条目中提取利用外部资源名列表。
此外,在删除应用的情况下,应用信息分析部519在伴随应用的删除而从包信息DB506中删除条目之前,将应用名作为检索键对包信息DB506进行检索。然后,应用信息分析部519从找到的条目中提取利用外部资源名列表。
如以上那样,在步骤S802中,应用信息分析部519提取被追加或删除的应用的利用外部资源名列表。但是,如图7所例示的那样,在这样提取的利用外部资源名列表中,通过逻辑的识别信息来表示各资源。
因此,在接下来的步骤S803中,应用信息分析部519使用资源/文件对应表504,生成物理监视对象的一览。具体而言,应用信息分析部519从资源/文件对应表504中取得资源文件名,并生成取得的资源文件名的一览,其中,该资源文件名与在步骤S802中生成的一览中所包含的各逻辑的识别信息对应。
例如,假设追加或删除使用GPS接收机601和声音设备603的应用。该情况下,在步骤S802所提取的利用外部资源名列表中包含由字符串“GPS”表示的逻辑的识别信息,以及字符串“声音”所表示的逻辑的识别信息。因此,应用信息分析部519参照资源/文件对应表504,取得与GPS接收机601和声音设备603分别对应的资源文件名“/dev/tty1”和“/dev/snd”。然后,应用信息分析部519生成所取得的资源文件名的一览。
接着,在步骤S804中,应用信息分析部519判断是否存在应用的追加或删除对监视对象资源文件列表518的影响。然后,在存在影响的情况下,处理转移到步骤S805,在没有影响的情况下,处理返回步骤S801。
具体而言,应用信息分析部519如以下那样进行步骤S804的判断。
在步骤S801中检测到应用的追加的情况下,应用信息分析部519判断在步骤S803中生成的一览中是否存在不包含于当前的监视对象资源文件列表518中的资源文件名。
如果在步骤S803中生成的一览中存在不包含于当前的监视对象资源文件列表518中的资源文件名,则应用信息分析部519判断为“有影响”。相反,如果在步骤S803中生成的一览中所包含的全部资源文件名已经在监视对象资源文件列表518中被列出,则应用信息分析部519判断为“没有影响”。
此外,在步骤S801中检测到应用的删除的情况下,应用信息分析部519针对在步骤S802中生成的一览中所包含的各资源名,进行以下的处理。即,应用信息分析部519参照包信息DB506,确认是否存在利用由该资源名识别的资源的其他应用。
然后,当找到1个以上不被所删除的应用以外的任何应用利用的资源时,应用信息分析部519判断为“有影响”。相反,当判明所删除的应用利用的全部资源被其他某个应用利用时,应用信息分析部519判断为“没有影响”。
在步骤S805中,应用信息分析部519更新监视对象资源文件列表518。
具体而言,在步骤S801中检测到应用的追加的情况下,应用信息分析部519将同时满足下述的(14a)、(14b)的条件的全部资源文件名追加到监视对象资源文件列表518中。
(14a)不包含于当前的监视对象资源文件列表518中
(14b)包含于步骤S803中生成的一览中
在步骤S801中检测到应用的删除的情况下,应用信息分析部519将不被所删除的应用以外的任意应用利用的资源的资源文件名从监视对象资源文件列表518中删除。
而且,在接下来的步骤S806中,应用信息分析部519追加或者删除资源依赖关系表505的条目。步骤S806的意义和详细如下。
在第2实施方式中,监视对象资源文件列表518是静态数据。而且,如关于图10说明的那样,资源依赖关系表505被初始化为“具有与监视对象资源文件列表518中所包含的各资源文件名对应的条目,并且各条目的PID字段被清除”的状态。
与此相对,在(13b)的变形例中,监视对象资源文件列表518可以根据应用的追加或删除而动态地变化。步骤S806的处理是用于配合监视对象资源文件列表518的变化来更新资源依赖关系表505而进行的。
因此,具体而言,在步骤S801中检测到应用的追加的情况下,应用信息分析部519在步骤S805中针对监视对象资源文件列表518中追加的各资源文件名进行以下的处理。即,应用信息分析部519将包含监视对象资源文件列表518中追加的资源文件名的新条目追加到资源依赖关系表505中,清除追加的条目的PID字段。
此外,在步骤S801中检测到应用的删除的情况下,应用信息分析部519在步骤S805中将与从监视对象资源文件列表518中删除的各资源文件名对应的条目从资源依赖关系表505中删除。
通过步骤S806中的以上那样的条目的追加或者删除,应用信息分析部519保持资源依赖关系表505与监视对象资源文件列表518的匹配性。
然后,在接下来的步骤S807中,应用信息分析部519将监视对象的追加或者删除通知给探测器509。然后,处理返回步骤S801。另外,当接收到步骤S807中的通知时的探测器509的动作与图18一起在后面叙述。
另外,为了削减应用被删除时的步骤S804的判断的负荷,也可以对监视对象资源文件列表518的数据形式进行变形。即,将监视对象资源文件列表518变形为,具有将资源文件名与利用对应于该资源文件名的资源的应用的数量对应起来的条目的表(以下为了方便称作“监视对象资源文件表”)。
在步骤S801中检测到应用的追加的情况下,应用信息分析部519在与步骤S803中生成的一览所包含的各资源文件对应的监视对象资源文件表的条目中,将应用的数量增加1。相反,在步骤S801中检测到应用的删除的情况下,应用信息分析部519将应用的数量减1。
于是,在步骤S801中检测到应用的删除的情况下,在步骤S804中,应用信息分析部519仅判断是否在监视对象资源文件表中存在应用的数量为0的条目即可。即,即便智能手机500中安装了大量的应用的情况下,应用信息分析部519也不需要参照包信息DB506的大量条目。
接下来,图18是(13b)的变形例中探测器509进行的处理的流程图。图18的处理在智能手机500a被起动后开始的。
在步骤S901中,探测器509读取监视对象资源文件列表518,识别与监视对象的资源对应的资源文件516。然后,探测器509开始对由监视对象资源文件列表518所指定的各资源的系统呼叫的监视。步骤S901与图9的步骤S201相同,但在步骤S201和S901中,不同之处在于读取的对象的监视对象资源文件列表518是静态还是动态这方面。
然后,在接下来的步骤S902中,探测器509确认是否存在从应用信息分析部519通知的事件。然后,在从应用信息分析部519通知了监视对象的追加或者删除这样的事件的情况下,处理转移到步骤S903。相反,在没有从应用信息分析部519通知任何事件的情况下,处理转移到步骤S904。
在步骤S903中,探测器509参照由应用信息分析部519更新的监视对象资源文件列表518。然后,探测器509根据被更新的监视对象资源文件列表518追加或删除监视对象设备。具体而言,步骤S903的处理例如是根据监视对象资源文件列表518的变更而对表示监视对象设备的探测器509的内部变量的值进行变更的处理。在执行步骤S903后,处理转移到步骤S904。
在步骤S904中,探测器509在预定时间内等待对于与监视对象的资源对应的资源文件516的系统呼叫的调用。当在预定时间以内出现系统呼叫的调用时,处理转移到步骤S905。相反,在等待预定时间后也没有出现对于与监视对象的资源对应的资源文件516的系统呼叫的调用的情况下,处理返回步骤S902。
然后,在步骤S905中,探测器509判定系统呼叫的种类。在系统呼叫的种类是用于资源获得的“打开”或者用于资源释放的“关闭”的情况下,处理转移到步骤S906。在是其他种类的系统呼叫的情况下,处理转移到步骤S907。
然后,在步骤S906中,探测器509与图9的步骤S204同样地,向依赖关系管理部508通知操作内容、操作对象以及调用方PID。然后,处理转移到步骤S907。
在步骤S907中,与图9的步骤S205同样地执行系统呼叫。然后,处理返回步骤S902。
另外,在以上说明的(13b)的变形例中,进程组判定部501、进程控制模块503、依赖关系管理部508以及包含切换事件通知部512在内的应用管理管理器511的动作与第2实施方式相同。
接着,对根据与上述(13b)的变形例不同的观点来消减探测器509的负荷的(13c)的变形例进行说明。具体而言,在(13c)的变形例中,将一定被特定进程访问的特定资源从探测器509的动态监视对象中排除,由此消减探测器509的负荷。然后,在(13c)的变形例中,通过使用静态信息,在通过经由特定进程的访问来利用特定资源的应用的进程组中追加特定进程。此外,探测器509和进程组判定部501的动作与第2实施方式不同。
如关于图16说明的那样,在(13c)的变形例中,追加资源/进程名对应表520、监视资源过滤部521和已知成员检测部522。
资源/进程名对应表520是将特定资源与特定进程静态地对应起来的信息。此外,监视资源过滤部521根据资源/进程名对应表520和资源/文件对应表504,判别从监视对象排除的资源文件516,将从监视对象排除的资源文件516通知给探测器509。然后,已知成员检测部522根据来自进程组判定部501的请求,参照资源/进程名对应表520和进程一览507,将特定进程的PID的列表返回到进程组判定部501。然后,进程组判定部501根据从已知成员检测部522得到的列表,将特定进程追加到进程组。
在此,参照图7对作为资源/进程名对应表520的具体例的资源/进程名对应表520a进行说明。图7的资源/进程名对应表520a是将作为特定资源的逻辑的识别信息的外部资源名与特定进程的进程名对应起来的静态信息。在图7的例中,资源/进程名对应表520a仅具有1个条目,但是,当然条目的数量是任意的。
在图7中例示的条目中,在逻辑上识别声音设备603的称作“声音”的字符串与作为声音守护614的进程名(即声音守护614的程序名)的称作“声音守护”的名称被对应起来。该条目表示下面的(15a)和(15b)。
(15a)称为声音设备603的特定资源被称为声音守护614的特定程序的进程即特定进程所占有。
(15b)从其他进程向称为声音设备603的特定资源的访问是经由作为特定进程的声守护614的进程而进行的。即,特定进程对其他进程提供向特定资源的接口。
此外,在资源/进程名对应表520a中不使用PID而使用进程名的理由是,资源/进程名对应表520a是静态地被预先设定的信息。例如,根据智能手机500a的OS的设计而静态地决定声音设备603这样的特定资源与声音守护614这样的特定程序之间的对应关系。但是,被分配到声音守护614的进程的PID可能在智能手机500a每次起动时不同。因此,在资源/进程名对应表520a中使用进程名,该进程名是能够识别声音守护614的进程的信息,并且是静态信息。
此外,特定资源的情况下,资源/进程名对应表520a的任意一个条目的“外部资源名”字段中登记有逻辑的识别信息。另一方面,特定资源以外的资源的情况下,资源/进程名对应表520a的任何条目中都没有登记逻辑的识别信息。因此,能够根据资源/进程名对应表520a来进行判定,区别特定资源与其他资源。
另一方面,图7的资源/文件对应表504a的“标志”字段也是用于区别特定资源与其他资源的信息。因此,在使用资源/进程名对应表520a的情况下,资源/文件对应表504a的“标志”字段也可以不存在。
接着,参照图19来说明(13c)的变形例中监视资源过滤部521进行的处理。图19的处理也在智能手机500a起动后开始。
在步骤S1001中,监视资源过滤部521读取资源/进程名对应表520。此外,在接下来的步骤S1002中,监视资源过滤部521读取资源/文件对应表504。
然后,在接下来的步骤S1003中,监视资源过滤部521确定从探测器509的监视对象中排除的物理资源,将确定的物理资源通知给探测器509。具体而言,监视资源过滤部521针对资源/进程名对应表520的各条目,将该条目的外部资源名作为检索键对资源/文件对应表504进行检索,取得与外部资源名对应的资源文件名。然后,监视资源过滤部521将取得的资源文件名的列表通知给探测器509。
例如,假设资源/进程名对应表520如图7的资源/进程名对应表520a那样,并假设资源/文件对应表504如图7的资源/文件对应表504a那样。于是,在步骤S1003中,监视资源过滤部521将作为资源/进程名对应表520a的条目的称为“声音”的外部资源名作为检索键,对资源/文件对应表504a进行检索,得到“/dev/snd”这样的资源文件名。然后,监视资源过滤部521将资源文件名“/dev/snd”通知给探测器509。
想步骤S1003中的通知后,处理转移到步骤S1004。然后,在步骤S1004中,监视资源过滤部521监视资源/进程名对应表520的更新。如果资源/进程名对应表520没有被更新,则监视资源过滤部521在步骤S1004中进行待机。相反,如果资源/进程名对应表520被更新,则处理返回步骤S1001。
另外,资源/进程名对应表520被更新例如是以下情况:伴随第三方的服务的追加或OS的升级等而发生服务的新追加或删除的情况,或者,变更了服务的规格的情况等。
此外,(13b)和(13c)的变形在消减探测器509的负荷这一目的上是共同的。因此,为了探测器509的负荷削减,优选组合(13b)与(13c)的变形。因此,参照图20来说明在组合了(13b)与(13c)的变形的情况下探测器509进行的处理。
另外,在仅采用(13c)的变形的情况下,省略图20的步骤S1102~S1103。此外,图20的处理也在智能手机500a被起动后开始。
在步骤S1101中,探测器509读取监视对象资源文件列表518,识别与监视对象的资源对应的资源文件516。然后,探测器509开始对于由监视对象资源文件列表518指定的各资源的系统呼叫的监视。步骤S1101与图18的步骤S901相同。
然后,在接下来的步骤S1102中,探测器509确认是否存在从应用信息分析部519通知的事件。然后,在从应用信息分析部519通知了监视对象的追加或者删除的事件的情况下,处理转移到步骤S1103。相反,在没有从应用信息分析部519通知任何事件的情况下,处理转移到步骤S1104。
在步骤S1103中,探测器509参照由应用信息分析部519更新的监视对象资源文件列表518。然后,探测器509根据被更新的监视对象资源文件列表518,追加或删除监视对象设备。步骤S1103的详细与图18的步骤S903相同。在执行步骤S1103后,处理转移到步骤S1104。
在步骤S1104中,探测器509确认是否存在来自监视资源过滤部521的通知(即,在图19的步骤S1003中进行的通知)。然后,在存在来自监视资源过滤部521的通知的情况下,处理转移到步骤S1105。相反,在不存在来自监视资源过滤部521通知的情况下,处理转移到步骤S1106。
在步骤S1105中,探测器509根据来自监视资源过滤部521的通知,追加或删除监视对象设备。具体而言,步骤S1105的处理例如是根据从监视资源过滤部521通知的内容来对表示监视对象设备的探测器509的内部变量的值进行变更的处理。
具体而言,在到目前为止是监视对象的物理设备515不再是监视对象的情况下,探测器509根据来自监视资源过滤部521的通知,将监视对象设备删除。即,在将从监视资源过滤部521通知的资源文件名识别为当前的监视对象的情况下,探测器509将所通知的资源文件名从监视对象中排除。
相反,在到目前为止不是监视对象的物理设备515新成为监视对象的情况下,探测器509根据来自监视资源过滤部521的通知追加监视对象设备。即,监视对象资源文件列表518所包含的资源文件名中的当前未识别为监视对象的资源文件名不包含于来自监视资源过滤部521的通知的情况下,探测器509将该资源文件名追加到监视对象中。
在执行步骤S1105后,处理转移到步骤S1106。另外,图20的步骤S1106~S1109与图18的步骤S904~S907相同。
接着,参照图21来说明(13c)的变形例中的进程组判定部501的动作。在(13c)的变形例中,在图11的步骤S406中没有未关注的利用资源名的情况下,在步骤S412的通知前,进程组判定部501进行图21的步骤S1201~S1203的处理。
即,在步骤S1201中,如果在起动的应用利用的资源中存在由特定进程占有的特定资源,则进程组判定部501请求已知成员检测部522通知特定进程的PID。具体而言,在步骤S1201中,进程组判定部501将在步骤S402中取得的利用资源名的列表作为请求的参数,输出到已知成员检测部522。另外,如上所述,步骤S402中所取得的利用资源名的数量为0以上。
然后,在接下来的步骤S1202中,进程组判定部501进行等待,直到从已知成员检测部522得到回答。在得到来自已知成员检测部522的回答后,处理转移到步骤S1203。
另外,已知成员检测部522接收到步骤S1201中的来自进程组判定部501的请求,将0个以上的PID的列表返回给进程组判定部501。已知成员检测部522的动作的详细与图22一起在后面叙述。
然后,在步骤S1203中,进程组判定部501将从已知成员检测部522得到的回答列表中的全部PID追加到进程组成员表502的与起动的应用对应的条目的PID列表中。然后,处理转移到步骤S412。
例如,假设新起动的应用利用GPS接收机601、加速度传感器602、声音设备603这3个物理设备515。该情况下,在步骤S1201中,输出这3个物理设备515的资源名的列表。
然后,假设资源/进程名对应表520是例如图7的资源/进程名对应表520a。即,在上述3个物理设备515中,仅声音设备603是特定资源。因此,在进程组判定部501从已知成员检测部522接收的回答列表中,仅包含占有声音设备603并负责向声音设备603的访问的声音守护614的进程的PID。
因此,在步骤S1203中,进程组判定部501在进程组成员表502中的与起动的应用对应的条目的PID列表中追加声音守护614的进程的PID。
接着,参照图22来说明(13c)的变形例中的已知成员检测部522的动作。图22的处理在智能手机500a起动后开始。
在步骤S1301中,已知成员检测部522进行待机,直到接收到来自进程组判定部501的请求。即,在进程组判定部501在图21的步骤S1201中将利用资源名的列表输出到已知成员检测部522之前,已知成员检测部522进行待机。
已知成员检测部522接收到来自进程组判定部501的请求后,处理转移到步骤S1302。然后,在步骤S1302中,已知成员检测部522将用于返回进程组判定部501的PID列表初始化为空。
此外,在接下来的步骤S1303中,已知成员检测部522取得进程一览507。
然后,在接下来的步骤S1304中,已知成员检测部522判断在由来自进程组判定部501的请求所指定的列表中是否存在未关注的利用资源名。
在作为来自进程组判定部501的请求的参数的列表中还存在已知成员检测部522未关注的利用资源名的情况下,处理转移到步骤S1305。
相反,在已知成员检测部522已经对作为来自进程组判定部501的要求的参数的列表中的全部利用资源名关注结束的情况下,处理转移到步骤S1308。此外,在来自进程组判定部501的请求的参数即列表本来为空列表的情况下,处理也转移到步骤S1308。
在步骤S1305中,已知成员检测部522判断在资源/进程名对应表520中是否存在已知成员检测部522当前关注的利用资源名的条目。另外,以下为了方便说明,将已知成员检测部522当前关注的利用资源名称作“关注资源名”,将通过关注资源名识别的资源称作“关注资源”。
如果资源/进程名对应表520中没有关注资源名的条目,则关注资源是特定资源以外的资源。因此,“应用利用关注资源”这一事实对应用的进程组没有影响。因此,处理返回到步骤S1304。
相反,如果关注资源名的条目存在于资源/进程名对应表520,则关注资源是特定资源。因此,“应用利用关注资源”这一事实对应用的进程组产生影响。因此,处理转移到步骤S1306。
在步骤S1306中,已知成员检测部522从步骤S1303中取得的进程一览507中提取与步骤S1305中找到的条目(即关注资源名的条目)的进程名对应的PID。
例如,假设关注资源名是“声音”,资源/进程名对应表520是图7的资源/进程名对应表520a,步骤S1303中得到的进程一览507是图7的进程一览507a。于是,在步骤S1305中,找到与“声音”这一关注资源名对应的资源/进程名对应表520a的条目。此外,找到的条目的进程名是“声音守护”。然后,根据进程一览507a,与“声音守护”这一进程名对应的PID是10。因此,在步骤S1306中,提取值为10的PID。
然后,在接下来的步骤S1307中,已知成员检测部522将在步骤S1306中提取出的PID追加到PID列表中。然后,处理返回步骤S1304。
此外,在步骤S1308中,已知成员检测部522向进程组判定部501返回PID列表。然后,处理返回步骤S1301。
另外,在以上说明的(13c)的变形例中,进程控制模块503、依赖关系管理部508、以及包含切换事件通知部512在内的应用管理管理器511的动作与第2实施方式相同。
接着,对在能够动态地生成子孙进程的情况下也能够实现适当的进程组的识别的、(13d)的变形例进行说明。
在进程中存在在执行中生成子进程的进程。因此,在属于与某个应用有关的进程组的某个进程生成了子进程的情况下,为了提高用户感受到的性能,希望进程控制模块503对子进程进行与父进程同样的控制。即,希望进程组判定部501生成进程组成员表502的数据,使得子进程也包含于相同的进程组。因此,在(13d)的变形例中追加父子关系判定部523。
以下,为了有助于对(13d)的变形的理解,首先参照图23的例子对进程的父子关系进行说明。然后,参照图24来说明进程组判定部501的动作,并参照图25来说明父子关系判定部523的动作。另外,进程控制模块503、依赖关系管理部508、探测器509、以及包含切换事件通知部512在内的切换事件通知部512的动作与第2实施方式相同。
图23是表示进程的父子关系的树形图的例子。图23的树形图700中的各节点表示进程。在图23中,各节点中示出进程ID(PID)、进程名以及父进程的PID。
根据树形图700,相当于根节点的进程的进程名是“init”。“init”进程是在智能手机500a起动时最初被生成的进程,因此PID是1,其父进程不存在。另外,“init”进程是在智能手机500a起动的期间内始终持续存在的特殊的进程。
在图23的例中,“init”进程具有3个子进程。第1个子进程的PID是130,进程名是“F1”。此外,第2个子进程的PID是150,进程名是“G1”。并且,第3个子进程的PID是210,进程名是“H1”。
此外,进程F1具有PID是140且进程名是“F2”的子进程。
此外,进程G1具有PID是160且进程名是“G2”的子进程。而且,进程G2具有PID是170且进程名是“G3”的子进程。
此外,进程H1具有PID是220且进程名是“H2”的子进程。
在图23的例中,假设进程F1是由OS提供的程序的进程。因此,子进程F2也是由OS提供的程序的进程。例如,子进程F2也可以实质上提供某个服务的进程。而且,进程F1也可以是对进程F2的状态进行监视并进行管理的服务管理器的进程。
同样,进程G1也可以是服务管理器的进程,进程G2也可以是服务的进程。此外,服务的一部分功能也可以由进程G2的子进程G3提供。
此外,假设某个应用包H包含的二进制程序的数量是1个,进程H1是由于该1个二进制程序的执行而生成的进程。而且,该1个二进制程序包含有生成子进程的代码,其结果是,进程H1生成了进程H2。
此外,假设应用包H利用包含两个特定资源的两个以上的资源。而且,假设向第1个特定资源的访问由进程F2的服务提供,第2个特定资源的访问由进程G2的服务提供。
这样,在进程组判定部501根据图11的流程图来识别进程组的情况下,与应用H对应地在进程组成员表502中登记的PID列表是(210、140、160)这样的列表。
但是,应用H的功能的一部分是由进程H2提供的。因此,不希望进程组判定部501判定为“进程H2不属于应用H的进程组”,并且进程控制模块503降低进程H2的优先级或者将进程H2暂时停止。同样,用于从应用H利用特定资源的功能的一部分是由进程G3提供的,因此也不希望判定为“进程G3不属于应用H的进程组”。
换言之,为了提高利用应用H的用户感受到的性能,希望进程组判定部501识别还包含进程H2和进程G3在内的进程组701作为应用H的进程组。因此,在(13d)的变形例中,追加父子关系判定部523,进程组判定部501进行的图11的处理变形为如图24所示那样。
即,在(13d)的变形例中,在图11的步骤S406中没有未关注的利用资源名的情况下,在步骤S412的通知前,进程组判定部501进行图24的步骤S1401~S1403的处理。
具体而言,在步骤S1401中,进程组判定部501针对与起动的应用对应地记录于当前进程组成员表502中的PID的列表,向父子关系判定部523请求子孙进程的调査。
例如,在图23的例中,在执行步骤S1401时,在进程组成员表502中,在与应用H对应的条目的PID列表中包含210、140和160这3个PID。因此,在步骤S1401中,进程组判定部501向父子关系判定部523请求关于(210、140、160)这样的PID列表的子孙进程的调査。
然后,在接下来的步骤S1402中,进程组判定部501进行等待,直到从父子关系判定部523得到回答。在得到来自父子关系判定部523的回答后,处理转移到步骤S1403。
另外,把进程组判定部501向父子关系判定部523作为参数传递的PID列表表示的进程集合设为P,则在步骤S1402中,返回表示集合(P∪descendant(P))的PID列表。
然后,在步骤S1403中,进程组判定部501将从父子关系判定部523通知的全部PID与起动的应用对应起来记录在进程组成员表502中。换言之,进程组判定部501用从父子关系判定部523通知的结果置换与起动的应用对应的进程组成员表502的条目的PID列表。
例如,在图23的例中,从父子关系判定部523示出进程组701的PID的列表(210、220、140、160、170)被记录在进程组成员表502中与应用H对应的条目中。然后,处理转移到步骤S412。
另外,虽然省略了图示,但在(13d)的变形例中,进程组判定部501还进行以下那样的处理。进行以下的处理的理由是,可能在任意的定时生成子进程。
即,进程组判定部501以适当的间隔定期地从与当前在前台执行中的应用对应的进程组成员表502的条目中读取PID列表。然后,进程组判定部501针对读取的PID列表,与图24的步骤S1401同样地请求父子关系判定部523进行子孙进程的调査。
此外,进程组判定部501将与当前在前台执行中的应用对应的进程组成员表502的条目的PID列表置换为从父子关系判定部523通知的结果。然后,进程组判定部501与步骤S412同样地将进程组成员表502的更新通知给进程控制模块503。进程控制模块503以来自进程组判定部501的通知为契机,进行图12~13的步骤S507~S513的处理。
接下来,图25是(13d)的变形例中父子关系判定部523进行的处理的流程图。图25的处理在智能手机500a被起动后开始。
在步骤S1501中,父子关系判定部523等待来自进程组判定部501的指示。在没有指示的期间内,父子关系判定部523在步骤S1501中进行待机。在父子关系判定部523接收到来自进程组判定部501的指示(即图24的步骤S1401中的指示)后,处理转移到步骤S1502。
在步骤S1502中,父子关系判定部523例如通过使用“ps”命令来取得进程一览507。另外,(13d)的变形例中的进程一览507不仅包含PID和进程名,还包含父进程的PID(即PPID(Parent Process Identifier:父进程识别符))。
然后,在接下来的步骤S1503中,父子关系判定部523根据取得的进程一览507中的PPID,生成表示动作中的全部进程(即进程一览507中所包含的全部进程)的父子关系的树形图。另外,在图23中,为了有助于理解,在树形图700中的各节点中不仅示出了PID还示出了进程名和PPID,但是,在步骤S1503中,父子关系判定部523生成的树形图至少各节点包含PID即可。
此外,父子关系判定部523在步骤S1503中生成的数据是能够表示树形图的数据即可,具体的数据结构是任意的。例如,可以使用采用指针的树结构的数据,也可以使用数组。
此外,在接下来的步骤S1504中,父子关系判定部523从树形图中检索来自进程组判定部501的调査指示中所包含的各PID。
然后,在接下来的步骤S1505中,父子关系判定部523生成以步骤S1504的检索结果发现的任意PID的节点为根的子树中所包含的PID的列表。
接着,在步骤S1506中,父子关系判定部523将在步骤S1505中生成的PID的列表返回给进程组判定部501。然后,处理返回步骤S1501。
例如,假设在步骤S1503中生成的树形图是图23的树形图700,来自进程组判定部501的调査指示中包含210、140和160这3个PID。该情况下,在步骤S1504中,父子关系判定部523从树形图700中检索PID为210、140以及160的进程的节点。
于是,在步骤S1505中父子关系判定部523生成的列表中,包含满足“包含于以下的(16a)~(16c)中的任意一个子树”这一条件的全部节点的PID。即,在步骤S1505中,父子关系判定部523生成包含210、220、140、160、以及170这5个PID的列表。
(16a)以PID为210的进程的节点为根的子树。即,包含PID为210的进程H1的节点和PID为220的进程H2的节点的子树。
(16b)以PID为140的进程的节点为根的子树。即,仅包含PID为140的进程F2的节点的子树。
(16c)以PID为160的进程的节点为根的子树。即,包含PID为160的进程G2的节点和PID为170的进程G3的节点的子树。
接着,对为了在进程控制模块503进行暂时停止控制的情况下,避免伴随暂时停止的副作用的(13e)的变形例进行说明。在(13e)的变形例中,变形为进程控制模块503包含竞争判定部524。但是,进程组判定部501、依赖关系管理部508、探测器509、以及应用管理管理器511的动作与第2实施方式相同。
具体而言,在(13e)的变形例中,进程控制模块503进行的图12~13的处理被变形为如图26那样。即,在图13的步骤S515与S516之间追加图26的步骤S1601。此外,当处理从步骤S516返回图12的步骤S502时,在步骤S516与步骤S502之间追加图26的步骤S1601~S1604。
在步骤S1601中,进程控制模块503内的竞争判定部524识别同时满足以下的(17a)和(17b)的条件的进程(以下称作“确保中进程”)的集合。确保中进程是与新成为前台的应用之间产生资源的竞争的其他应用的进程。
(17a)对新成为前台的应用使用的任意的资源进行确保中
(17b)不属于前台进程组
具体而言,竞争判定部524通过参照包信息DB506来识别新成为前台的应用使用的资源。此外,竞争判定部524通过参照资源/文件对应表504来识别与识别出的各资源对应的资源文件名。
然后,竞争判定部524通过参照资源依赖关系表505,来识别是否存在以下进程,该进程当前打开了通过识别出的各资源文件名而识别的资源文件。此外,如果存在当前打开了通过由竞争判定部524识别出的资源文件名而识别的资源文件的进程,则竞争判定部524还从资源依赖关系表505中读取该进程的PID。
如以上那样,竞争判定部524得到满足(17a)的条件的进程的PID的集合。此外,进程控制模块503已经在步骤S508中识别前台进程组,包含于进程控制模块503的竞争判定部524能够参照进程控制模块503的识别结果。因此,在步骤S1601中,竞争判定部524能够取得表示确保中进程的集合的PID的列表。
例如,假设起动的应用利用GPS接收机601。此外,假设GPS接收机601不是特定资源。即,GPS接收机601是能够不经由位置管理器613而从应用直接访问的资源。此外,位置管理器613不独占GPS接收机601。
此外,假设其他的应用(例如,以前被起动,当前在后台执行中或者暂时停止中的应用)的进程当前打开了GPS接收机601的资源文件609。于是,在步骤S1601中,得到打开了资源文件609的进程的PID作为确保中进程的PID。
接下来,假设如以上那样由竞争判定部524识别的确保中进程的集合还能够被进程控制模块503参照。此外,在竞争判定部524的步骤S1601的执行后,进程控制模块503与图13同样地进行步骤S516~S517的重复循环处理。然后,在进程控制模块503对属于后台进程组且不属于前台进程组的全部进程关注结束后,处理转移到步骤S1602。
然后,在步骤S1602中,进程控制模块503判断在步骤S1601中识别的确保中进程的集合中,是否还剩有未关注的进程作为步骤S1603~S1604的处理对象。
在确保中进程的集合中还剩有未关注的进程的情况下,处理转移到步骤S1603。相反,如果进程控制模块503已经对全部的确保中进程关注结束,则如标号“I”所示,处理返回图12的步骤S502。此外,在步骤S1601中识别的确保中进程的集合本来就是空的情况下,处理也返回步骤S502。
然后,在步骤S1603中,进程控制模块503关注下一确保中进程,判断关注的确保中进程是否为暂时停止中。在图7的进程一览507a的例中进行了省略,但进程一览507也可以包含有示出各进程的状态的项目。因此,进程控制模块503通过参照进程一览507,能够判断关注的确保中进程是否为暂时停止中。
然后,在关注的确保中进程是暂时停止中的情况下,处理转移到步骤S1604。相反,在关注的确保中进程不是暂时停止中的情况下(即在后台执行中的情况下),处理返回步骤S1602。
然后,在步骤S1604中,进程控制模块503重新开始在步骤S1603中关注的确保中进程。步骤S1604的处理与图14的步骤S603同样地,也可以通过信号的发送而实现。此外,在执行步骤S1604后,处理返回步骤S1602。
接下来,在(13e)的变形例中,进程控制模块503进行的图14的处理也变形为如图27所示那样。
在第2实施方式的图14的步骤S601中,在由参数指定的操作的种类是暂时停止的时和重新开始时,处理向步骤S603转移。与此相对,在(13e)的变形例中,在暂时停止的情况下,处理从步骤S601向步骤S1701转移,在重新开始的情况下,与图14同样地,处理从步骤S601向步骤S603转移。
然后,在步骤S1701中,与图14的步骤S605和S607同样地,进程控制模块503通过参照参数的重试标志,判断本次的子例程呼叫是否是用于重试的调用。在是用于重试的调用的情况下,进程控制模块503仅如参数所指定的那样控制进程即可,因此处理转移到步骤S603。相反,当本次为初次尝试时,处理转移到步骤S1702。
然后,在步骤S1702中,进程控制模块503判断由参数指定的进程是否属于确保中进程的集合。另外,仅在来自图26的步骤S517的子例程呼叫的情况下执行步骤S1702的处理。因此,已经通过竞争判定部524识别了确保中进程的集合,进程控制模块503在步骤S1702中能够参照确保中进程的集合。
在由参数指定的进程属于确保中进程的集合的情况下,假如进程控制模块503将由参数指定的进程暂时停止,则新成为前台的应用利用的资源将不会被释放。因此,在由参数指定的进程属于确保中进程的集合的情况下,为了使由参数指定的进程继续执行,进程控制模块503不进行对于由参数指定的进程的积极的暂时停止控制,而是结束图27的处理。
相反,在由参数指定的进程不属于确保中进程的集合的情况下,处理转移到步骤S603。
通过以上的图26~27所示的变形,进程控制模块503针对执行中的确保中进程,避免使其暂时停止而使其继续执行,并且重新开始暂时停止中的确保中进程。其结果是,执行所有确保中进程。因此,可以期待伴随时间的经过,确保中进程随着经过时间而释放确保的资源。其结果是,新成为前台的应用的进程能够利用所释放的资源。
根据以上说明的(13e)的变形例,即便存在利用的资源产生竞争的应用,也能够避免进程控制模块503的控制引起的副作用。
例如,假设当应用I在前台执行时,应用I的进程打开了某个资源(例如加速度传感器602)并进行了确保。而且,假设在应用I的进程释放加速度传感器602之前,前台应用从应用I切换成了不利用加速度传感器602的应用J。
于是,进程控制模块503在图26的步骤S515中选择暂时停止操作的情况下,应用I的进程伴随切换而被暂时停止。
然后,假设再将前台应用从应用J向应用K切换,应用K是利用加速度传感器602的应用。这样,在应用K被起动的时刻,加速度传感器602被暂时停止中的应用I的进程确保。
但是,根据上述的(13e)的变形例,应用I的进程在步骤S1601中被识别为确保中进程,并在步骤S1604中被重新开始。因此,加速度传感器602最终被释放。即,避免了“由于确保了加速度传感器602的进程为暂时停止中,因此加速度传感器602不被释放,从而应用K不能利用加速度传感器602”这样的情况。
此外,在应用I的进程释放加速度传感器602之前,前台应用从应用I切换成了应用K的情况下,根据上述的(13e)的变形例,避免了副作用。这是因为,即便进程控制模块503在图26的步骤S515中选择暂时停止操作,根据图27的步骤S1702的判断,应用I的进程也不被暂时停止。
另外,(13e)的变形例还可以如以下那样变形。
也可以是,在图10的步骤S304中,依赖关系管理部508还将关闭了资源文件516的进程的PID与被关闭的资源文件516的名称所成的对通知给竞争判定部524。此外,竞争判定部524也可以是使用PID与资源文件名所成的对的集合来管理确保中进程,而并非如述那样使用PID的集合来管理确保中进程。以下为了便于说明,将包含PID与资源文件名所成的对作为要素的列表即“确保中进程列表”用于确保中进程的管理。
竞争判定部524在从依赖关系管理部508接收到通知后,判断“被通知的对包含于确保中进程列表,并且,在确保中进程列表中不存在包含与被通知的对的PID相同的PID的其他对”这一条件是否成立。然后,在该条件成立的情况下,竞争判定部524将从依赖关系管理部508通知的对的PID作为暂时停止控制的对象通知给进程控制模块503。此外,竞争判定部524将从依赖关系管理部508通知的对从确保中进程列表中删除。
进程控制模块503在如以上那样从竞争判定部524收到通知后,例如与图14同样地,对从竞争判定部524通知的PID的进程尝试暂时停止。另外,重试标志被设定为表示初次尝试的值。
如上所述,通过将(13e)的变形例进一步变形,以防止暂时停止控制的副作用为目的,例外地被免除了暂时停止的进程以资源的释放为契机被暂时停止。其结果是,可以提供提供更多的CPU时间和更多的存储器供属于前台进程组的进程利用。因此,能够期待用户感受到的性能进一步提高。
接着,对为了消除存储器不足进行利用了进程组的强制结束控制的(13f)的变形例进行说明。如关于图16说明的那样,在(13f)的变形例中,追加存储器管理模块525。
图28是详细地示出(13f)的变形例中的存储器管理模块525的框结构图。图28中还一起图示了图16的智能手机500a中的一部分。
存储器管理模块525被设于OS的内核513内。存储器管理模块525包含选择强制结束的进程517的进程选择部526,以及使进程选择部526选择的进程517强制结束的进程强制结束部527。此外,存储器管理模块525保持进程组成员表502的缓存528、应用利用时刻表529以及强制结束除外进程列表530。
进程组成员表502是由内核513外的进程组判定部501生成的数据,因此位于用户存储器空间内。另一方面,缓存528位于内核存储器空间内。进程组成员表502与缓存528的数据的内容是相同的。
另外,根据OS的架构的不同,也可以是能够从内核513的内部和内核513的外部双方访问的存储器空间。在存在这样的存储器空间的情况下,可以省略缓存528。
此外,伴随从应用管理管理器511内的切换事件通知部512向内核513的通知,通过存储器管理模块525更新应用利用时刻表529。针对起动中的各应用,在应用利用时刻表529中记录将应用名与时刻对应起来的信息。
应用利用时刻表529的具体例是图7的应用利用时刻表529a。应用利用时刻表529a的各条目与智能手机500a中处于被起动的状态的各应用对应。即,各条目与当前在前台或后台执行中或者暂时停止中的应用对应。应用利用时刻表529a中不包含与已经结束的应用对应的条目。
应用利用时刻表529a的各条目包含识别应用的“应用名”字段,以及示出该应用最近成为前台的时刻的“前次利用时刻”字段。另外,应用成为前台的时刻是(18a)~(18c)中的任意一个时刻。因此,应用利用时刻表529a的前次利用时刻是(18a)~(18c)的任意一个中的最近的时刻。
(18a)应用新被起动的时刻
(18b)后台的应用转变到前台的时刻
(18c)暂时停止中的应用被重新开始并开始在前台执行的时刻
图7的应用利用时刻表529a表示以下的(19a)~(19c)。
(19a)应用D最近成为前台的时刻是TD。
(19b)应用E最近成为前台的时刻是TE。
(19c)当前在智能手机500a上其他的应用未被起动。
另外,在(13f)的变形例中,在图8的步骤S104中,应用管理管理器511内的切换事件通知部512还向存储器管理模块525通知应用的切换的发生。然后,接收到通知的存储器管理模块525如以下那样进行动作。
在应用已经结束的情况下,存储器管理模块525将与结束的应用对应的条目从应用利用时刻表529中删除。
相反,在应用新起动了的情况下,存储器管理模块525在应用利用时刻表529中追加将新起动的应用的名称与当前时刻对应起来的新的条目。
此外,在后台执行中的应用转变成前台的情况下,或者,暂时停止中的应用被重新开始并在前台执行的情况下,存储器管理模块525如以下那样进行动作。即,存储器管理模块525检索与该应用对应的应用利用时刻表529中的条目,在找到的条目的前次利用时刻字段中设定当前时刻。
图28的强制结束除外进程列表530是预先静态地决定的数据,是从强制结束的对象中被排除的进程的名称的列表。例如,OS标准地提供的服务等的名称被包含于强制结束除外进程列表530中。
强制结束除外进程列表530的具体例是图7的强制结束除外进程列表530a。根据强制结束除外进程列表530a,“init”进程从强制结束的对象中被排除。此外,根据强制结束除外进程列表530a,在由OS提供的服务中,声音守护614、窗口系统615、以及应用管理管理器616各自的进程也从强制结束的对象中被除外。但是,根据强制结束除外进程列表530a的例子,在由OS提供的服务中,位置管理器613和安装器617没有从强制结束的对象中被排除,根据情况可能被强制结束。
此外,强制结束除外进程列表530中还可以包含在图7中未图示的其他进程。例如,根据实施方式的不同,也可以是,强制结束除外进程列表530中还包含位置管理器613和安装器617的进程名。
此外,在OS提供的服务中,还存在不向应用开放而仅供OS本身使用的服务。例如,将要向磁盘装置写入的数据缓存于存储器上、延迟向磁盘装置的实际的写入、在适当的定时进行向磁盘装置的实际写入的服务仅在OS内部利用。例如以上那样的用于OS自体利用的服务的名称也包含于强制结束除外进程列表530中。
图29是(13f)的变形例中存储器管理模块525进行的处理的流程图。图29的处理在下述的(20a)且(20b)的情况下开始。
(20a)从内核513外的进程例如经由标准库调用了用于存储器确保的系统呼叫。
(20b)在用户存储器空间内能够确保的存储器容量不满足所请求的存储器的量。
以下,在说明了图29的处理的流程后,按照图7的具体例详细地对图29的各步骤进行补充说明。
在步骤S1801中,进程选择部526读取应用利用时刻表529。
然后,在接下来的步骤S1802中,进程选择部526判断读取的应用利用时刻表529的条目数是否为0。在条目数为0的情况下,即,不存在当前被起动的应用的情况下,处理转移到步骤S1803。相反,在条目数为1以上的情况下,即,在起动了1个以上的应用的状态的情况下,处理转移到步骤S1808。
在步骤S1803中,进程选择部526取得进程一览507(即,动作中的全部的进程的一览)。
此外,在接下来的步骤S1804中,进程选择部526读取强制结束除外进程列表530。
然后,在接下来的步骤S1805中,进程选择部526判断在步骤S1803中取得的进程一览507的进程集合与在步骤S1804中读取的强制结束除外进程列表530的进程集合中是否存在差别。另外,强制结束除外进程列表530的进程集合是进程一览507的进程集合的部分集合。
在两个集合中不存在差别的情况下,处理转移到步骤S1806。相反,在两个集合中存在差别的情况下,即,在进程一览507中包含有不包含于强制结束除外进程列表530中的进程的情况下,处理转移到步骤S1807。
执行步骤S1806是发生了“虽然只有强制结束除外进程列表530中所包含的最低限度的进程进行动作,但是存储器还是不足”这样的预期外错误的例外发热情况。因此,在步骤S1806中,进程选择部526不是强制结束个别的进程,而是决定将智能手机500a的系统整体再起动(即将OS再起动)。
然后,进程选择部526将OS再起动。或者,进程选择部526也可以对内核513内的未图示的其他模块指示OS的再起动,由此间接地将OS再起动。在执行了用于再起动的适当的处理后,图29的处理结束,OS再起动。
此外,在步骤S1807中,进程选择部526从在步骤S1805中判明的差分中所包含的进程中随机选择1个,将选择出的进程的PID通知给进程强制结束部527。然后,进程强制结束部527将所通知的PID的进程强制结束。例如,进程强制结束部527向所通知的PID的进程发送用于强制结束的信号,将进程强制结束。然后,处理转移到步骤S1814。
执行步骤S1808是1个以上的应用正在执行中的情况。因此,进程选择部526从在步骤S1801中从应用利用时刻表529读取的内容中,选择从最后成为前台起的经过时间最长的应用。换言之,进程选择部526在应用利用时刻表529的条目中选择前次利用时刻最早的条目的应用。
然后,在接下来的步骤S1809中,进程选择部526读取进程组成员表502,识别在步骤S1808中选择的应用的进程组。
此外,在接下来的步骤S1810中,进程选择部526读取强制结束除外进程列表530。
然后,在接下来的步骤S1811中,进程选择部526从在步骤S1809中识别出的进程组中排除属于由强制结束除外进程列表530指定的进程集合的进程,并将排除后的结果通知给进程强制结束部527。
接着,在步骤S1812中,进程强制结束部527将没有被排除而剩下的进程(即,在步骤S1811中从进程选择部526通知的进程)全部强制结束。
然后,在步骤S1813中,存储器管理模块525从应用利用时刻表529中删除被强制结束的应用(即步骤S1808中所选择的应用)的条目。在删除后,处理转移到步骤S1814。
在步骤S1814中,存储器管理模块525判断存储器余量(更具体而言,在用户存储器空间中能够新分配的容量)是否为基准以上。然后,如果存储器余量为基准以上,则图29的处理结束。相反,如果存储器余量低于基准,则处理返回步骤S1801。另外,步骤S1814中的基准例如可以是关于第1实施方式说明的(6a)~(6d)的基准中1个以上的适当的组合。
此外,下面参照图7对以上说明的步骤S1808~S1813的具体例进行说明。
图7的应用利用时刻表529a的条目数量是2,因此处理从步骤S1802转移到步骤S1808。在此,为了方便说明,假设时刻TE比时刻TD早。这样,在步骤S1808中进程选择部526选择应用E。
此外,根据进程组成员表502a,应用E的进程组包含3个进程,这3个进程的PID是10、1002和1012。因此,在步骤S1809中,进程选择部526识别包含这3个进程的进程进程组。
接着,进程选择部526在步骤S1810中,读取强制结束除外进程列表530a,并且取得进程一览507。然后,进程选择部526通过参照进程一览507,对进程名包含在强制结束除外进程列表530a中的各进程的PID进行识别。
根据图7的例子,进程选择部526在步骤S1810中识别1、10、20和30这些PID作为除外对象的进程的PID。其结果是,进程选择部526从在步骤S1809中识别的进程组中排除作为除外对象的值为10的PID。然后,在步骤S1812中,进程强制结束部527将分别具有剩余的值为1002和1012的PID的两个进程强制结束。然后,在步骤S1813中,存储器管理模块525将应用E的条目从应用利用时刻表529a中删除。
另外,在多个应用利用相同的特定资源(例如声音设备603)的情况下,特定进程(例如声音守护614的进程)同时包含在双方的应用的进程组中。这样,在步骤S1809中所识别的进程组中也可能包含属于当前在前台执行中的应用的进程组的特定进程。但是,不优选将该特定进程强制结束。
因此,为了防止包含于在前台执行的应用的进程组中的特定进程的强制结束,例如也可以采用以下的第1方法或者第2方法。
第1方法是,预先定义强制结束除外进程列表530,以使得独占特定资源并提供向特定资源的访问的特定进程的进程名一定包含于强制结束除外进程列表530中的方法。
第2方法是,当应用利用时刻表529的条目数量为2以上时进程选择部526如下进行动作的方法。
进程选择部526在步骤S1808中进一步识别经过时间最短的应用(即当前在前台执行中的应用)。然后,在步骤S1809中,进程选择部526进而识别在前台执行中的应用的进程组(为了方便,称作“前台进程组”)。此外,在步骤S1811中,进程选择部526进而将属于与前台进程组的进程从强制结束的对象中排除。
第1方法是在存在多个分别独占特定资源并提供向特定资源的访问的特定进程的情况下,一律将全部特定进程从强制结束的对象中排除的方法。与此相对,第2方法在存在多个特定进程的情况下,能够将与在前台执行中的应用无关的特定进程强制结束。而且,与此相应地,相比第1方法能够增加可分配的存储器的量。
接着,对与探测器509的安装有关的(13g)的变形例进行说明。在图5和16中,探测器509均是内核513的一部分。在内核513包含探测器509的实施方式中,具有探测器509进行系统呼叫的监视的开销较少这样的优点。
但是,内核513也可以不一定包含探测器509。探测器509只要能够检测系统呼叫的调用即可,也可以安装在内核513的外部。
例如,有时预先准备系统呼叫的钩子作为以系统的性能信息取得等为目的内核接口。利用钩子能够在调用系统呼叫时调用用户空间内的程序。因此,探测器509的程序也可以是用户空间内的程序。
或者,也可以在由OS提供的基本库内追加探测器509的模块。
接着,对与进程控制模块503的使用保留进程列表的控制有关的(13h)的变形例进行说明。在(13h)的变形例中,导入了用于防止对于保留进程列表所包含的进程的操作的再次失败的机制。
图14、15或者27那样的进程控制模块503对进程的操作可能失败是指,例如操作对象的进程正在执行某个系统呼叫的情况。因此,也可以导入以下机制:抑制来自操作对象的进程的系统呼叫,以防止进程控制模块503的操作的再次失败。
例如,也可以在内核513或者基本库中追加用于从外部对抑制系统呼叫的执行的对象的进程进行指定的接口。进程控制模块503在保留进程列表中追加PID与操作内容所成的对时,对上述所追加的接口指定该PID。
这样,即便PID被包含于保留进程列表中的进程对系统呼叫进行调用,调用也立即被内核513拒绝,系统呼叫不被执行。由此,进程控制模块503依照保留进程列表进行重试处理时的、操作的成功率提高。
此外,有时进程控制模块503对进程的操作还在操作对象的进程确保了某些资源的情况下失败。因此,进程控制模块503也可以通过强制地使进程释放资源来防止操作的再次失败。
例如,也可以变形为保留进程列表的各要素不仅包含PID和操作内容,还包含重试次数。而且,进程控制模块503也可以使即便重复预定次数的重试还确保着资源的进程强制进行资源的释放,以使下次的重试成功。
接着,将以上说明的第2实施方式和(13a)~(13h)的变形例针对图1的第1实施方式进行比较。
图1的使用资源信息111例如与从图6的依赖关系信息618中提取并存储于包信息DB606(即图5的包信息DB506)的信息对应。
此外,图1的对应信息112例如也可以如图7的资源/进程名对应表520a那样包含直接将资源名与进程名对应起来的信息。对应信息112还可以包含如进程一览507a的那样将进程名与PID对应起来的信息、和如资源/文件对应表504a那样将逻辑的资源名与物理的资源文件名对应起来的信息中的一方或双方。
或者,图1的对应信息112也可以如图7的资源/文件对应表504a那样,包含将区别特定资源和其他资源的标志与作为识别特定资源的信息的资源文件名对应起来的信息。而且,对应信息112还可以如资源依赖关系表505a那样包含将资源文件名与PID对应起来的信息。这样,特定资源与特定进程的PID通过资源文件名在对应信息112中对应起来。
当然,也可以代替资源/文件对应表504a而在资源依赖关系表505a中设置标志字段。或者,也可以将资源/文件对应表504a和资源依赖关系表505a汇总为1个表。
此外,图1的结构信息113例如与从图6的结构信息619提取并存储在包信息DB606(即图5的包信息DB506)中的信息对应。
而且,图1的识别部103的识别结果114与进程组成员表502对应。即,对进程组进行识别的识别部103与进程组判定部501对应。
而且,在图1中,控制进程的控制部105与进程控制模块503、存储器管理模块525或者它们的组合对应。此外,输入部106与输入部510对应,资源监视部107与探测器509和依赖关系管理部508的组合对应。而且,存储器监视部108与存储器管理模块525对应。
此外,第2实施方式和(13a)~(13h)的变形例中具有以下那样的各种优点。
如上所述,由进程组判定部501判定的进程组作为进程控制模块503的控制的单位是合适的。而且,如上所述,通过利用适当的进程组,能够提高用户感受到的性能。
此外,进程控制模块503进行暂时停止控制的情况下,第2实施方式和(13a)~(13h)的变形例中还具有消耗功率降低的效果。
此外,如上所述,进程组的识别和基于进程组的进程的控制是自动地进行的。此外,智能手机500的OS或者应用的设计者等不需要预先进行调整。
例如,虽然资源/文件对应表504是预先生成的信息,但是设计者不需要特别地对资源/文件对应表504进行调整。能够根据智能手机500的硬件结构和OS的规格单纯地定义资源/文件对应表504。
此外,根据实施方式的不同,有时预先生成监视对象资源文件列表518,但该情况下,也能够根据智能手机500的硬件结构和OS的规格单纯地定义监视对象资源文件列表518。同样地,根据实施方式的不同,有时预先生成强制结束除外进程列表530,但也能够根据OS的规格单纯地定义强制结束除外进程列表530。
此外,包信息DB506可以是由安装器617自动地生成的既有的DB,也可以是提取既有的DB中所包含的信息的一部分而得到另外的DB。无论哪种情况,包信息DB506的各条目都是从应用包中所包含的既有的信息中提取的,因此,不会为了生成包信息DB506而使应用开发者麻烦地进行新的数据生成。
此外,在例如产业用机器人的控制用的计算机等仅安装了限定的应用的环境下,有时依照根据与限定的应用有关的知识而调整的方针来管理进程组。但是,在智能手机500那样可以安装任意的应用的环境下,那样的调整是困难且不现实的。
例如,一般的用户不具有足以进行调整的知识。此外,即便对于作为专家的应用开发者而言,对于在相同的智能手机500中所安装的非常多的其他应用也不一定具有足够的知识。
根据第2实施方式及其变形例,不进行困难的调整,通过利用能够根据智能手机500的硬件结构和OS的规格而单纯地定义的设定文件,自动地进行基于适当的进程组的控制。不需要用于进程组管理的调整是非常大的优点。此外,应用开发者不需要进行考虑到其他的应用的调整,因此还能期待应用开发的自由度提高。
此外,根据第2实施方式及其变形例,为了进程组的识别而使用的信息是预先决定的信息或者是发生了某个特定的事件时所取得的信息。换言之,即使没有实时地跟踪进程的全部行为的机制,根据第2实施方式及其变形例,也能够识别适当的进程组。实时的跟踪的负荷非常大,其是使用户感到性能下降的主要原因,因此不需要实时的跟踪是大的优点。
例如,虽然探测器509对系统呼叫进行监视,但是与跟踪进程的全部行为相比,探测器509的负荷极小。此外,探测器509的监视对象是被限定的,相应地,负荷也较小。此外,通过(13b)、(13c)或者组合其双方的变形,探测器509的负荷进一步被减轻。
此外,在某种OS中,通过参照用于等待资源的获得的队列,能够检测进程间的资源的竞争。例如,如果当第1进程请求资源的获得时第2进程已经正在利用该资源,则第1进程被登记在队列中,在资源被释放之前进行等待。
但是,在智能手机、平板终端、PC等中一般的OS中没有那样的队列。因此,如果当第1进程请求资源的获得时第2进程已经正在利用该资源,则仅是马上对要求返回“获得失败”这样的结果。因此,在智能手机、平板终端、PC等一般的OS上,无法根据队列检测资源的竞争。
但是,根据第2实施方式及其变形例,根据资源依赖关系表505判明哪个进程当前正在打开哪个资源文件,该资源依赖关系表505由依赖关系管理部508基于来自探测器509的通知进行改写。此外,根据包信息DB506来判明哪个应用的进程利用哪个资源的可能性是否存在。因此,即便在使用不具有用于资源获得等待的队列的OS的环境下,也能够检测资源的竞争,并能够实现与检测结果对应的适当的控制。
特别是根据进程控制模块503包含竞争判定部524的(13e)的变形例,能够避免其他的应用的进程确保资源并暂时停止而引起的副作用。
此外,在(13f)的变形例中,由进程选择部526选择当存储器不足时要强制结束的进程的基准,在“尽量不使用户感到不便”这一观点上非常优良。
例如,作为第1比较例,考虑单纯地按照从利用频度低的应用的进程起依次进行强制结束的方针。但是,刚刚安装的应用的利用频度低。因此,根据第1比较例,如果当用户在前台利用刚刚安装的应用时出现存储器不足,则有时会将用户正在利用的应用强制结束,极为不便。
此外,作为第2比较例,为了克服第1比较例的缺点,考虑利用每单位时间的利用频度的方针。但是,在第2比较例中存在耗费计算每单位时间的利用频度的成本这样另外的缺点。虽然增长单位时间能够降低计算成本,但是如果单位时间过长,则在比单位时间短的时间以内安装的应用的利用频度成为零,发生与第1比较例相同的问题。相反,如果单位时间短,则在每次单位时间的经过时进行的计算的成本增大。
此外,作为第3比较例,考虑随机地将进程强制结束的方针。但是,属于当前在前台执行中的应用的进程组的进程可能被偶然强制结束。
此外,作为第4比较例,考虑以预先固定地决定的顺序来强制结束进程的方针。但是,在能够安装任意的应用的环境下,预先固定地定义顺序是不现实的。
与以上的第1~第4比较例相比,(13f)的变形例中的进程选择部526的选择基准优良。
这是因为,第1,由于使用应用利用时刻表529,因此属于在前台执行中的应用的进程组的进程不会比其他的应用的进程先强制结束。即,即便在前台执行中的应用是最近安装的应用,也不会发生“由于从安装起的经过时间短而先被强制结束”这样的情况。
此外,第2是因为,向应用利用时刻表529进行时刻的登记的成本与在每次经过单位时间时计算每单位时间的利用频度计算的成本相比非常小。
而且,第3是因为,不需要预先固定地定义强制结束进程的顺序。
此外,第4是因为,进程选择部526将应用中关注的1个或多个进程汇总进行选择,而并非分散地选择各个进程。在多进程的应用中仅强制结束了1个进程的情况下,可能发生“虽然应用本身不再进行动作,但由于剩余的其他进程未结束,因此无用地消耗存储器”这样的情况。但是,根据进程选择部526避免了这样的情况,因此避免了无用的存储器消耗。
此外,如图28那样存储器管理模块525包含在内核513内的情况下,避免了“当用户存储器空间中的存储器不足时,为了选择要强制结束的进程而进一步消耗用户存储器空间的存储器”这样的本末倒置的情况。这是因为,存储器管理模块525的进程选择部526为了选择进程而进行的处理的工作区位于内核存储器空间内。
另外,本发明不限于上述的实施方式及其变形例,能够进行各种变形。
例如,存在通过多线程执行的进程的情况下,识别部103或者进程组判定部501也可以不识别进程组而识别线程组。进程组和线程组仅是粒度不同,用于组的识别的方法是相同的。
例如,通过“ps”命令也能够得到线程的一览。因此,识别部103或者进程组判定部501与识别进程组同样地,也能够利用“ps”命令的输出来识别与应用关联的线程组。
此外,在例如图4中,名称为“C”的应用的包中所包含的主任务用的程序的名称是“C1”,但是,主任务用的程序的名称也可以是与应用的名称相同的“C”。
而且,虽然程序的名称也是进程的名称,但当进程的名称非常长时,可能在“ps”命令的输出结果中只包含进程名称的一部分。该情况下,参照进程一览507从进程名中得到PID的处理包含针对进程名进行部分一致检索的处理,来代替针对进程名进行字符串的完全一致检索。
此外,在上述的说明中劣势了列表和表等数据结构,但是,当然也可以利用其他适当的数据结构。此外,例如为了表示进程集合可以使用PID的列表,但无关于在列表内的PID的顺序,列表表示的进程集合是相同的。
而且,例示了各种流程图,但是流程图中的步骤的顺序仅是一例。步骤的顺序也可以在不产生矛盾的前提下适当地调换。
标号说明
100:终端装置
101,102,104:第1~第3存储部
103:识别部
105:控制部
106,510:输入部
107:资源监视部
108:存储器监视部
111:使用资源信息
112:对应信息
113,413,619,621:结构信息
114:识别结果
200,300,400,500,600:智能手机
201:CPU
202:RAM
203:无线LAN接口
204:闪存
205:卡读/写
206:输入键
207,604:显示器
208:麦克风
209:扬声器
210:3G通信机
211,409,601:GPS接收机
212,602:加速度传感器
213:总线
220:SD存储卡
301:动态图像再现应用
302:动态图像再现模块
303:下载模块
304,401,513,607:内核
305,402~405:服务
306,603:声音设备
310:服务器
311:动态图像DB
312:文件传输服务
313:动态图像文件
320:WAN
331~333:动态图像片断
406,511,616:应用管理管理器
407,615:窗口系统
408,617:安装器
410,605:文件系统
411,506,506a,606:包信息DB
412:设定文件
414,618,620:依赖关系信息
501:进程组判定部
502,502a:进程组成员表
503:进程控制模块
504,504a:资源/文件对应表
505,505a:资源依赖关系表
507,507a:进程一览
508:依赖关系管理部
509:探测器
512:切换事件通知部
514,608:设备驱动程序
515:物理设备
516,609~612:资源文件
517:进程
518,518a:监视对象资源文件列表
519:应用信息分析部
520,520a:资源/进程名对应表
521:监视资源过滤部
522:已知成员检测部
523:父子关系判定部
524:竞争判定部
525:存储器管理模块
526:进程选择部
527:进程强制结束部
528:进程组成员表的缓存
529,529a:应用利用时刻表
530,530a:强制结束除外进程列表
613:位置管理器
614:声音守护
700:树形图
701:进程组
Claims (18)
1.一种终端装置,其特征在于具有:
第1存储部,其存储使用资源信息,该使用资源信息示出安装于所述终端装置中的应用使用的资源的集合;
第2存储部,其存储对应信息,该对应信息将通过特定进程提供访问的1个以上的特定资源分别与所述特定进程进行了对应;以及
识别部,其识别与所述应用关联的进程组,该进程组包含通过所述对应信息与包含于由所述使用资源信息示出的所述资源的所述集合中的任意一个资源进行了对应的所述特定进程的集合。
2.根据权利要求1所述的终端装置,其特征在于,
所述识别部还将通过所述应用的执行生成的进程识别为所述进程组的要素。
3.根据权利要求2所述的终端装置,其特征在于还具有第3存储部,该第3存储部存储包含程序识别信息的结构信息,该程序识别信息分别识别所述应用的包所包含的1个以上的程序,
所述识别部通过参照所述结构信息来识别通过所述应用的执行生成的所述进程。
4.根据权利要求3所述的终端装置,其特征在于,
所述包包含第1资源识别信息,该第1资源识别信息识别所述应用使用的各资源,
所述使用资源信息通过从所述包中提取的所述第1资源识别信息、或者第2资源识别信息,示出所述应用使用的所述资源的所述集合,其中,该第2资源识别信息是为了识别所述终端装置能够使用的各资源而与所述第1资源识别信息对应地决定的。
5.根据权利要求2至4中的任意一项所述的终端装置,其特征在于,
所述识别部还将属于识别出的所述进程组的任意的进程的子孙进程识别为所述进程组的要素。
6.根据权利要求2至5中的任意一项所述的终端装置,其特征在于还具有控制部,当所述应用被起动时、所述应用从暂时停止状态被重新开始时、所述应用从后台的执行状态转变到前台的执行状态时、或者所述应用在前台执行中时,该控制部对包含于所述进程组中的进程和不包含于所述进程组中的进程进行不同的控制。
7.根据权利要求6所述的终端装置,其特征在于,
所述控制部将包含于所述进程组中的进程的优先级设定为高于不包含于所述进程组中的进程的优先级。
8.根据权利要求6所述的终端装置,其特征在于,
所述控制部使包含于所述进程组中的进程继续执行,使不包含于所述进程组中的进程暂时停止。
9.根据权利要求8所述的终端装置,其特征在于,
在确保中进程不包含于所述进程组中的情况下,
在所述确保中进程是暂时停止中时,所述控制部重新开始所述确保中进程,
在所述确保中进程是执行中时,所述控制部使所述确保中进程继续执行,
其中,所述确保中进程是确保了包含于由所述使用资源信息示出的所述资源的所述集合中的任意一个资源的进程。
10.根据权利要求9所述的终端装置,其特征在于还具有资源监视部,该资源监视部至少监视针对包含于由所述使用资源信息示出的所述资源的所述集合中的资源中的、未通过所述对应信息与所述特定进程进行对应的资源的打开操作和关闭操作,
所述控制部根据所述资源监视部的监视结果来识别所述确保中进程。
11.根据权利要求6至10中的任意一项所述的终端装置,其特征在于,
所述控制部使包含于所述进程组中的进程继续执行,使不包含于所述进程组中的进程的至少一部分强制结束。
12.根据权利要求11所述的终端装置,其特征在于还具有存储器监视部,该存储器监视部监视所述终端装置具有的存储器的空闲容量是否为基准以上,
当所述存储器监视部检测到所述存储器的空闲容量低于所述基准时,所述控制部使不包含于所述进程组中的进程的至少一部分强制结束。
13.根据权利要求6至12中的任意一项所述的终端装置,其特征在于还具有输入部,该输入部受理用于使所述应用执行于前台的指示的输入,
所述控制部以所述输入部受理了所述指示的所述输入为契机,对包含于所述进程组中的进程和不包含于所述进程组中的进程进行不同的控制。
14.根据权利要求1~9、11~13中的任意一项所述的终端装置,其特征在于还具有资源监视部,该资源监视部监视针对所述终端装置中能够使用的多个资源中的至少一部分的打开操作和关闭操作,当检测到所述打开操作时,将通过检测到的所述打开操作而打开的资源与调用检测到的所述打开操作的进程进行对应,当检测到所述关闭操作时,解除通过检测到的所述关闭操作而关闭的资源与调用检测到的所述关闭操作的进程之间的对应,
所述对应信息中的至少一部分是以下信息:当所述资源监视部检测到某个特定进程对某个特定资源的打开操作时,所述资源监视部将所述某个特定资源与所述某个特定进程进行对应,由此生成该信息,且该信息存储在所述第2存储部中。
15.根据权利要求1~14中的任意一项所述的终端装置,其特征在于,
所述对应信息是使用第1区别信息和第2区别信息的一方或双方、文件名和逻辑资源识别信息的一方或双方以及所述特定进程中唯一的进程识别符和程序识别信息的一方或双方来将所述特定资源与所述特定进程进行了对应的信息,其中,
该第1区别信息对所述特定资源与所述特定资源以外的资源进行区别,该第2区别信息对所述特定进程与所述特定进程以外的进程进行区别,
该文件名表示所述特定资源,该逻辑资源识别信息独立于所述文件名而在逻辑上识别所述特定资源,
该进程识别符是在通过特定程序的执行生成所述特定进程时动态地分配给所述特定进程的,该程序识别信息识别所述特定程序。
16.根据权利要求1~15中的任意一项所述的终端装置,其特征在于,
所述终端装置能够使用的各资源是,
内置于所述终端装置或者与所述终端装置连接的物理设备,或者
所述终端装置存储的数据库或其他预定文件。
17.一种进程管理方法,由计算机执行,该进程管理方法的特征在于包含以下步骤:
取得使用资源信息,该使用资源信息示出安装于所述计算机的应用使用的资源的集合;
取得对应信息,该对应信息将通过特定进程提供访问的1个以上的特定资源分别与所述特定进程进行了对应;以及
识别与所述应用关联的进程组,该进程组包含通过所述对应信息与包含于由所述使用资源信息示出的所述资源的所述集合中的任意一个资源进行了对应的所述特定进程的集合。
18.一种进程管理程序,其特征在于,其使计算机执行包含以下步骤的处理:
取得使用资源信息,该使用资源信息示出安装于所述计算机的应用使用的资源的集合;
取得对应信息,该对应信息将通过特定进程提供访问的1个以上的特定资源分别与所述特定进程进行了对应;以及
识别与所述应用关联的进程组,该进程组包含通过所述对应信息与包含于由所述使用资源信息示出的所述资源的所述集合中的任意一个资源进行了对应的所述特定进程的集合。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/056666 WO2012127596A1 (ja) | 2011-03-19 | 2011-03-19 | 端末装置、プロセス管理方法、およびプロセス管理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103443770A true CN103443770A (zh) | 2013-12-11 |
CN103443770B CN103443770B (zh) | 2017-12-12 |
Family
ID=46878793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180069208.3A Active CN103443770B (zh) | 2011-03-19 | 2011-03-19 | 终端装置、进程管理方法以及进程管理程序 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9424085B2 (zh) |
JP (1) | JP5783246B2 (zh) |
CN (1) | CN103443770B (zh) |
WO (1) | WO2012127596A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268022A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮(北京)电子信息产业有限公司 | 一种操作系统中进程的资源分配方法及系统 |
CN106502767A (zh) * | 2015-09-08 | 2017-03-15 | 大唐移动通信设备有限公司 | 一种进程管理方法及其装置 |
WO2018045934A1 (zh) * | 2016-09-09 | 2018-03-15 | 华为技术有限公司 | 应用进程的管理方法和终端设备 |
CN113157439A (zh) * | 2016-03-29 | 2021-07-23 | 华为技术有限公司 | 一种资源统计方法、装置及终端 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372716B1 (en) * | 2013-09-23 | 2016-06-21 | Amazon Technologies, Inc. | Download prioritization |
CN104636177A (zh) * | 2013-11-11 | 2015-05-20 | 中兴通讯股份有限公司 | 一种终端及其控制后台投影的方法 |
KR102148948B1 (ko) * | 2013-12-06 | 2020-08-27 | 삼성전자주식회사 | 전자 장치의 멀티 태스킹 방법 및 그 전자 장치 |
KR102277258B1 (ko) * | 2014-02-27 | 2021-07-14 | 엘지전자 주식회사 | 디지털 디바이스 및 상기 디지털 디바이스에서 애플리케이션 처리 방법 |
US9871741B2 (en) * | 2014-03-10 | 2018-01-16 | Microsoft Technology Licensing, Llc | Resource management based on device-specific or user-specific resource usage profiles |
US20160005433A1 (en) * | 2014-07-07 | 2016-01-07 | Oaluwaseun Adedeji | Application for enhancing a multimedia usage on an electronic device |
CN105468441A (zh) * | 2014-08-28 | 2016-04-06 | 中兴通讯股份有限公司 | 任务进程的处理方法及装置 |
CN104239094B (zh) * | 2014-08-29 | 2017-12-08 | 小米科技有限责任公司 | 后台应用程序的控制方法、装置及终端设备 |
CN104536822B (zh) * | 2014-12-31 | 2018-03-23 | 中科创达软件股份有限公司 | 一种进程调度优化方法、进程执行方法及相关装置 |
US10019461B2 (en) * | 2015-03-26 | 2018-07-10 | Ca, Inc. | Transparent and near-real time code deploys |
RU2632141C2 (ru) * | 2015-06-30 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и компьютерное устройство для динамической индексации и загрузки кодов модулей |
CN105653952B (zh) * | 2015-12-23 | 2019-03-12 | 北京奇虎科技有限公司 | 一种远程控制程序的识别方法及装置 |
DE102016200777A1 (de) * | 2016-01-21 | 2017-07-27 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem |
KR102500608B1 (ko) * | 2016-01-28 | 2023-02-16 | 삼성전자주식회사 | 어플리케이션을 제어하는 전자 장치와 이의 동작 방법 |
CN107632888A (zh) * | 2016-07-18 | 2018-01-26 | 中兴通讯股份有限公司 | 一种应用管理方法及装置、移动终端 |
US10037230B2 (en) * | 2016-07-29 | 2018-07-31 | Hewlett Packard Enterprise Development Lp | Managing data processing resources |
US10860369B2 (en) * | 2017-01-11 | 2020-12-08 | International Business Machines Corporation | Self-adjusting system for prioritizing computer applications |
CN110312995B (zh) * | 2017-04-19 | 2022-12-16 | Oppo广东移动通信有限公司 | 应用程序加速启动方法、装置及终端 |
CN107463403B (zh) * | 2017-07-31 | 2020-04-21 | Oppo广东移动通信有限公司 | 进程控制方法、装置、存储介质以及电子设备 |
WO2019167157A1 (ja) | 2018-02-28 | 2019-09-06 | 三菱電機株式会社 | リソース制御装置、リソース制御方法及びリソース制御プログラム |
JP7155584B2 (ja) * | 2018-03-30 | 2022-10-19 | 株式会社リコー | 情報処理装置、情報処理方法及び情報処理プログラム |
CN109246080B (zh) * | 2018-08-03 | 2021-08-27 | 广东工业大学 | 一种资源共享方法、装置、设备及计算机可读存储介质 |
CN110955498B (zh) * | 2019-11-21 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种进程处理方法、装置、设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09251390A (ja) * | 1996-03-15 | 1997-09-22 | Sharp Corp | プロセスのプライオリティ設定方法 |
JP2002244869A (ja) * | 2001-02-19 | 2002-08-30 | Hitachi Ltd | メモリ管理装置 |
CN1480855A (zh) * | 2002-07-31 | 2004-03-10 | ���µ�����ҵ��ʽ���� | 信息处理终端和信息处理方法 |
US20060277600A1 (en) * | 2005-06-02 | 2006-12-07 | Seagate Technology Llc | Drive security session manager with security session termination functionality |
JP2009048358A (ja) * | 2007-08-17 | 2009-03-05 | Nec Corp | 情報処理装置及びスケジューリング方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0357026A (ja) * | 1989-07-26 | 1991-03-12 | Hitachi Ltd | タスク制御方式 |
JPH0877025A (ja) | 1994-09-01 | 1996-03-22 | Kokusai Electric Co Ltd | タスクの優先度制御方法、タスクの優先度制御装置 |
JP3262689B2 (ja) * | 1995-05-19 | 2002-03-04 | 富士通株式会社 | 遠隔操作システム |
JP2003015892A (ja) | 2001-06-29 | 2003-01-17 | Casio Comput Co Ltd | 情報端末装置及びアプリケーション管理プログラム |
JP2003067201A (ja) | 2001-08-30 | 2003-03-07 | Hitachi Ltd | コントローラとオペレーティングシステム |
JP2004078936A (ja) * | 2002-07-31 | 2004-03-11 | Matsushita Electric Ind Co Ltd | 情報処理端末及び情報処理方法 |
JP2004310615A (ja) * | 2003-04-09 | 2004-11-04 | Sony Corp | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム |
-
2011
- 2011-03-19 WO PCT/JP2011/056666 patent/WO2012127596A1/ja active Application Filing
- 2011-03-19 CN CN201180069208.3A patent/CN103443770B/zh active Active
- 2011-03-19 JP JP2013505671A patent/JP5783246B2/ja active Active
-
2013
- 2013-09-11 US US14/024,105 patent/US9424085B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09251390A (ja) * | 1996-03-15 | 1997-09-22 | Sharp Corp | プロセスのプライオリティ設定方法 |
JP2002244869A (ja) * | 2001-02-19 | 2002-08-30 | Hitachi Ltd | メモリ管理装置 |
CN1480855A (zh) * | 2002-07-31 | 2004-03-10 | ���µ�����ҵ��ʽ���� | 信息处理终端和信息处理方法 |
US20060277600A1 (en) * | 2005-06-02 | 2006-12-07 | Seagate Technology Llc | Drive security session manager with security session termination functionality |
JP2009048358A (ja) * | 2007-08-17 | 2009-03-05 | Nec Corp | 情報処理装置及びスケジューリング方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268022A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮(北京)电子信息产业有限公司 | 一种操作系统中进程的资源分配方法及系统 |
CN104268022B (zh) * | 2014-09-23 | 2017-06-27 | 浪潮(北京)电子信息产业有限公司 | 一种操作系统中进程的资源分配方法及系统 |
CN106502767A (zh) * | 2015-09-08 | 2017-03-15 | 大唐移动通信设备有限公司 | 一种进程管理方法及其装置 |
CN113157439A (zh) * | 2016-03-29 | 2021-07-23 | 华为技术有限公司 | 一种资源统计方法、装置及终端 |
CN113157439B (zh) * | 2016-03-29 | 2024-03-01 | 华为技术有限公司 | 一种资源统计方法、装置及终端 |
WO2018045934A1 (zh) * | 2016-09-09 | 2018-03-15 | 华为技术有限公司 | 应用进程的管理方法和终端设备 |
CN107807847A (zh) * | 2016-09-09 | 2018-03-16 | 华为技术有限公司 | 应用进程的管理方法和终端设备 |
CN107807847B (zh) * | 2016-09-09 | 2022-04-29 | 华为技术有限公司 | 应用进程的管理方法和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
US9424085B2 (en) | 2016-08-23 |
US20140013331A1 (en) | 2014-01-09 |
WO2012127596A1 (ja) | 2012-09-27 |
JPWO2012127596A1 (ja) | 2014-07-24 |
CN103443770B (zh) | 2017-12-12 |
JP5783246B2 (ja) | 2015-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103443770A (zh) | 终端装置、进程管理方法以及进程管理程序 | |
KR20200060421A (ko) | 리소스 관리 방법 및 단말 장치 | |
CN103024329B (zh) | 一种监控录像的存储管理方法 | |
CN104142858A (zh) | 阻塞任务调度方法及装置 | |
JP3595073B2 (ja) | 計算機システムおよびそのシステムで使用されるファイル管理方法 | |
CN109960589B (zh) | 嵌入式系统的系统软件层的实现方法、装置及可读介质 | |
CN110289993B (zh) | 一种连接池管理方法、装置、设备及转接系统 | |
CN102314368A (zh) | 更新服务器程序的配置数据的方法及设备 | |
CN110597614A (zh) | 一种资源调整方法及装置 | |
US6779028B1 (en) | System application management method and system, and storage medium which stores program for executing system application management | |
CN103595566A (zh) | 一种检测空闲ip地址的方法及装置 | |
CN113886069A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
JP5405663B2 (ja) | メモリ管理装置、メモリ管理方法、メモリ管理プログラム、メモリ管理プログラムを記録したコンピュータ読み取り可能な記録媒体及び集積回路 | |
JP2008090798A (ja) | データ処理システムのバックアップ制御装置及びシステム | |
CN111526315B (zh) | 视频数据的存储方法、装置、系统及设备 | |
CN105022590B (zh) | 共享存储器数据存取方法及装置 | |
CN109426563B (zh) | 一种进程管理方法及装置 | |
CN115967821A (zh) | 视频云存储方法、装置、设备及存储介质 | |
JPWO2008010598A1 (ja) | 情報通信処理装置、情報通信端末、情報通信システム、機能切替方法及び機能切替プログラム | |
CN114650501A (zh) | 北斗rdss无线资源动态分配方法、系统、服务终端及存储介质 | |
CN103078926A (zh) | 分布式存储系统的文件访问方法和装置以及系统 | |
CN102426535A (zh) | 动态进程虚拟化 | |
JP3961301B2 (ja) | デジタル機器、タスク管理方法及びそのプログラム | |
CN109815001A (zh) | 应用处理方法、装置及托管系统 | |
CN115827229A (zh) | 内存页面处理方法、装置以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |