程序处理设备和方法以及图像形成设备转让专利

申请号 : CN201610133690.7

文献号 : CN105955806B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 坂井克也

申请人 : 佳能株式会社

摘要 :

本发明涉及图像处理设备和方法以及图像形成设备。管理特定处理期间所生成的线程,其中,将启动处理期间所生成的线程的运行核固定为特定核,并且不设置在启动处理完成之后所生成的针对特定处理的线程的运行核。此外,启动处理完成的时刻之前所生成的针对特定处理的线程的运行核的设置恢复为原始设置。

权利要求 :

1.一种程序处理设备,用于执行多个线程,所述程序处理设备包括:存储器,用于存储控制程序;以及

多核处理器,包括多个处理器核以及所述多个处理器核各自的高速缓存,其中在所述控制程序被所述多核处理器执行的情况下,所述控制程序使得所述多核处理器执行包括如下步骤的方法:存储所生成的线程的标识符;

在特定程序开始应用程序的启动处理的情况下,设置运行状态为启动处理状态,以及在正在执行的应用程序的所述启动处理完成之后,设置所述运行状态为启动处理完成状态,其中所述应用程序在所述启动处理状态完成后继续执行;以及当所述运行状态为所述启动处理状态时,将所述特定程序的所生成的线程固定地分配给特定处理器核,以及在所述运行状态被设置为所述启动处理完成状态之后,将所述特定程序的所述所生成的线程分配给操作系统所确定的多个处理器核。

2.根据权利要求1所述的程序处理设备,其中,当所述运行状态是所述启动处理状态时,通过将所述特定程序的所述所生成的线程固定地分配给所述特定处理器核,以不将同一数据高速缓冲存储在所述多个处理器核各自的高速缓存中。

3.根据权利要求1或2所述的程序处理设备,其中,

所述特定程序是用于执行所述应用程序的虚拟机。

4.根据权利要求1所述的程序处理设备,其中,所述特定处理器核是所述多个处理器核中的一个特定的处理器核。

5.根据权利要求3所述的程序处理设备,其中,所述虚拟机是Java虚拟机,并且所述应用程序是Java应用。

6.一种图像处理设备,包括:

程序处理装置,用于执行多个线程,其中所述程序处理装置包括:

存储器,用于存储控制程序;以及

多核处理器,包括多个处理器核以及所述多个处理器核各自的高速缓存,其中在所述控制程序被所述多核处理器执行的情况下,所述控制程序使得所述多核处理器执行包括如下步骤的方法:存储所生成的线程的标识符;

在特定程序开始应用程序的启动处理的情况下,设置运行状态为启动处理状态,以及在正在执行的应用程序的所述启动处理完成之后,设置所述运行状态为启动处理完成状态,其中所述应用程序在所述启动处理状态完成后继续执行;以及当所述运行状态为所述启动处理状态时,将所述特定程序的所生成的线程固定地分配给特定处理器核,以及在所述运行状态被设置为所述启动处理完成状态之后,将所述特定程序的所述所生成的线程分配给操作系统所确定的多个处理器核;

扫描器,用于读取图像;

打印机,用于打印图像;以及

控制部,用于提供所述扫描器、所述打印机以及所述程序处理装置所执行的应用程序之间的接口。

7.一种程序处理方法,用于利用多核处理器执行多个线程,所述多核处理器包括多个处理器核和所述多个处理器核各自的高速缓存,所述程序处理方法包括:存储所生成的线程的标识符;

在特定程序开始应用程序的启动处理的情况下,设置运行状态为启动处理状态,以及在正在执行的应用程序的所述启动处理完成之后,设置所述运行状态为启动处理完成状态,其中所述应用程序在所述启动处理状态完成后继续执行;以及当所述运行状态为所述启动处理状态时,将所述特定程序的所生成的线程固定地分配给特定处理器核,以及在所述运行状态被设置为所述启动处理完成状态之后,将所述特定程序的所述所生成的线程分配给操作系统所确定的多个处理器核。

8.根据权利要求7所述的程序处理方法,其中,当所述运行状态是所述启动处理状态时,通过将所述特定程序的所述所生成的线程固定地分配给所述特定处理器核,以不将同一数据高速缓冲存储在所述多个处理器核各自的高速缓存中。

9.根据权利要求7或8所述的程序处理方法,其中,所述特定程序是用于执行所述应用程序的虚拟机。

10.根据权利要求7所述的程序处理方法,其中,所述特定处理器核是所述多个处理器核中的一个特定的处理器核。

11.根据权利要求9所述的程序处理方法,其中,所述虚拟机是Java虚拟机,并且所述应用程序是Java应用。

12.一种计算机可读介质,其存储有程序,所述程序用于使计算机执行使用包括多个处理器核和所述多个处理器核各自的高速缓存的多核处理器的多个线程,以执行包括如下步骤的处理:存储所生成的线程的标识符;

在特定程序开始应用程序的启动处理的情况下,设置运行状态为启动处理状态,以及在正在执行的应用程序的所述启动处理完成之后,设置所述运行状态为启动处理完成状态,其中所述应用程序在所述启动处理状态完成后继续执行;以及当所述运行状态为所述启动处理状态时,将所述特定程序的所生成的线程固定地分配给特定处理器核,以及在所述运行状态被设置为所述启动处理完成状态之后,将所述特定程序的所述所生成的线程分配给操作系统所确定的多个处理器核。

13.根据权利要求12所述的计算机可读介质,其中,当所述运行状态是所述启动处理状态时,通过将所述特定程序的所述所生成的线程固定地分配给所述特定处理器核,以不将同一数据高速缓冲存储在所述多个处理器核各自的高速缓存中。

14.根据权利要求12或13所述的计算机可读介质,其中,所述特定程序是用于执行所述应用程序的虚拟机。

15.根据权利要求12所述的计算机可读介质,其中,所述特定处理器核是所述多个处理器核中的一个特定的处理器核。

16.根据权利要求14所述的计算机可读介质,其中,所述虚拟机是Java虚拟机,并且所述应用程序是Java应用。

说明书 :

程序处理设备和方法以及图像形成设备

技术领域

[0001] 本发明涉及在多核处理器上执行多线程程序的情况下动态地改变向程序的线程的运行核的分配的程序处理设备和方法以及图像形成设备。

背景技术

[0002] 近年来,设置有多个核(进行运算处理的部分)的处理器已成为主流。以这种方式配置的处理器被称为“多核处理器”,并且各处理器核可以同时执行多个线程(处理的执行单位)。多核处理器不仅被配置为安装在台式PC和服务器设备中,而且还被配置为安装在诸如图像形成设备等的嵌入式装置中。在多核处理器安装在图像形成设备的情况下,经常使用针对各核设置高速缓存并且共用RAM的结构。在这种结构的情况下,由于用于维持高速缓存一致性(即,维持各核的高速缓存和RAM之间的一致性)的处理,因而依赖于正在运行的程序而频繁发生高速缓存丢失。具体地,在存在针对两个以上核的表示同一数据的高速缓存的情况下,如果其中一个核改变了该数据,则在另一核中高速缓冲的数据变为无效并且可能发生高速缓存丢失。该问题通常被称为假共享(false sharing)。在假共享频繁发生的情况下,使高速缓存同步的开销变得极大,因此与利用单核处理器进行工作的情况下的性能相比,性能显著下降。
[0003] 已知有通过将特定线程固定地分配给特定核来降低高速缓存丢失的频率并高效地执行程序以解决这些问题的技术(例如,参见日本特开2012-133682,第0075-0076段等)。
[0004] 然而,在由于假共享所引起的性能下降局限于执行特定线程上的特定处理时的情况下,如果运行该线程的核始终是固定的,则在没有执行该特定处理的情况下的性能下降。例如,在诸如仅在进行用于启动图像形成设备中的特定程序的处理时由于假共享而性能下降等的情况下,如果针对该特定程序的线程的运行核保持固定,则即使防止了启动时的性能下降,也存在性能会在用户使用启动后的图像形成设备的功能的情况下发生劣化的担忧。因而,无法提供具有本应实现的性能的产品,因此用户友好性受损。

发明内容

[0005] 在本发明中,通过采用在执行特定处理时使线程的运行核固定并且在该特定处理完成之后恢复相关线程的运行核的设置的结构,使得特定处理的执行期间的运行性能与特定处理完成之后的运行性能相平衡。
[0006] 本发明具有以下结构。
[0007] 根据本发明的一方面,提供一种程序处理设备,所述程序处理设备用于使用多核处理器执行多个线程,所述多核处理器包括多个处理器核和各处理器核所用的高速缓存,所述程序处理设备包括:线程管理部,用于存储所生成的线程的标识符;分配部,用于在预定运行状态下将特定程序的所生成的线程固定地分配给特定处理器核;以及用于在检测到取消了所述预定运行状态的情况下、解除具有所述线程管理部所管理的标识符的线程向所述特定处理器核的固定分配的部件。
[0008] 根据本发明的另一方面,提供一种图像处理设备,所述图像处理设备包括:程序处理装置,用于使用多核处理器执行多个线程,所述多核处理器包括多个处理器核和各处理器核所用的高速缓存,其中所述程序处理装置包括:线程管理部,用于存储所生成的线程的标识符,分配部,用于在预定运行状态下将特定程序的所生成的线程固定地分配给特定处理器核,以及用于在检测到取消了所述预定运行状态的情况下、解除具有所述线程管理部所管理的标识符的线程向所述特定处理器核的固定分配的部件;扫描器,用于读取图像;打印机,用于打印图像;以及控制部,用于提供所述扫描器、所述打印机以及所述程序处理装置所执行的应用程序之间的接口。
[0009] 根据本发明的又一方面,提供一种程序处理方法,所述程序处理方法用于利用多核处理器执行多个线程,所述多核处理器包括多个处理器核和各处理器核所用的高速缓存,所述程序处理方法包括:存储所生成的线程的标识符;在预定运行状态下将特定程序的所生成的线程固定地分配给特定处理器核;以及在检测到取消了所述预定运行状态的情况下,解除具有所存储的标识符的线程向所述特定处理器核的固定分配。
[0010] 根据本发明的再一方面,提供一种程序处理设备,所述程序处理设备用于使用多核处理器执行多个线程,所述多核处理器包括多个处理器核和各处理器核所用的高速缓存,所述程序处理设备包括:生成部,用于生成应用程序的线程;以及分配部,用于将所述应用程序的线程分配给所述多个处理器核中的一个处理器核,其中,所述分配部在所述应用程序的启动期间,将所述应用程序的线程固定地分配给第一处理器核,并且在所述应用程序的启动完成之后,不将所述应用程序的线程固定地分配给所述第一处理器核。
[0011] 根据本发明,通过采用在执行特定处理时使线程的运行核固定并且在该特定处理完成之后恢复相关线程的运行核的设置的结构,使得特定处理的执行期间的运行性能与特定处理完成之后的运行性能相平衡,因而用户友好性得到改善。
[0012] 通过以下参考附图对典型实施例的说明,本发明的其它特征将变得明显。

附图说明

[0013] 图1是示出图像形成设备的硬件结构的框图。
[0014] 图2是示出图像形成设备的软件结构的框图。
[0015] 图3是示出根据本发明的软件中所包括的特征功能的框图。
[0016] 图4是针对使用线程生成控制部所生成的线程的处理的流程图。
[0017] 图5是Java(注册商标)应用管理部的启动处理的流程图。

具体实施方式

[0018] 以下将参考附图来详细说明根据本发明的实施例。注意,以下实施例并不限制根据权利要求书的范围的本发明,并且实施例中所述的特征的所有组合也不被限制为对于根据本发明的解决方案而言是必须的。此外,实施例中所出现的Java是注册商标,但由于在此明确陈述了该事实,因此将该事实从以下说明中省略。
[0019] 第一实施例
[0020] 图1是示出作为本发明所适用的程序处理设备的示例的图像形成设备的硬件结构的框图。图1中的图像形成设备包括操作部131、作为图像输入设备的扫描器部132、作为图像输出设备的打印机部133和管理图像形成设备的控制的控制器100。操作部131包括触摸面板显示器等并且具有向用户显示信息和接收来自用户的输入的功能。扫描器部132进行用于读取该扫描器部132上所放置的原稿上的图像的操作以生成图像数据。打印机部133使从控制器100接收到的图像数据在薄片上形成为打印数据。控制器100电气地连接至操作部131、扫描器部132和打印机部133,并且还经由网络I/F 106连接至LAN 140,并且可以从外部装置接收打印作业。
[0021] CPU 101基于ROM 103中所存储的控制程序等对控制器100中所进行的各种处理进行一体化控制。
[0022] 此外,作为多核处理器的CPU 101具有2个内部处理器核(核0 121和核1 122)、与各处理器核相对应的高速缓冲存储器(高速缓冲存储器0 124和高速缓冲存储器1 125)以及控制高速缓冲存储器的高速缓冲控制部123。
[0023] 核0 121和核1 122是构成处理器的中央核的部分,并且进行实际的运算处理。高速缓冲存储器是用于对程序所使用的RAM 102上的数据进行高速缓冲的高速存储器。高速缓冲存储器0 124对核0 121所处理的数据进行高速缓冲,并且高速缓冲存储器1 125对核1 122所处理的数据进行高速缓冲。注意,RAM 102和高速缓冲存储器之间的速度差通常极大,因此通常安装二级高速缓存和三级高速缓存以缓解该速度差,但为了便于说明,将说明仅包括主高速缓存的示例。
[0024] 高速缓冲控制部123控制高速缓冲存储器0 124和高速缓冲存储器1 125中的数据。此外,高速缓冲控制部123进行用以维持高速缓存一致性(RAM 102和高速缓冲存储器中的数据之间的一致性)的控制。例如,在将同一数据高速缓冲在两个高速缓冲存储器中的情况下,如果核0 121改变了高速缓冲至高速缓冲存储器0 124的数据,则高速缓冲至高速缓冲存储器1 125的数据的内容变为无效。由于该原因,高速缓冲控制部123进行用以使高速缓冲在高速缓冲存储器1 125中的数据无效的控制以使得不使用无效的高速缓存。在这种情况下,如果核1 122尝试参考同一数据则发生高速缓存丢失,并且产生从RAM 102再次读取数据的需求,因而速度下降。
[0025] RAM 102是CPU 101运行时所使用的系统工作存储器,并且是用于临时存储图像数据的存储器。设备的引导程序存储在ROM 103中。HDD 104是可以存储系统软件和图像数据的硬盘驱动器。此外,在根据本实施例的图像形成设备中,还可以安装作为应用程序的Java应用并增强图像形成设备的功能,并且所安装的Java应用也存储在HDD 104中。操作部I/F 105是用于使系统总线110和操作部131相连接的接口部。操作部I/F 105从系统总线110接收用于操作部131上的显示的图像数据并将图像数据输出至操作部131,并且将从操作部
131输入的信息输出至系统总线110。网络I/F 106连接至LAN 140和系统总线110并且进行信息输入和输出。扫描器I/F 107对从扫描器部132接收到的图像数据进行校正、处理和编辑。注意,扫描器I/F 107具有基于所接收到的图像数据来判断原稿是彩色原稿还是黑白原稿以及原稿是文本原稿还是照片原稿的功能。图像处理部108对图像数据进行方向转换、图像压缩、解压缩处理等。打印机I/F 109接收从图像处理部108发送来的图像数据并且在参考所接收到的图像数据所附的属性数据的情况下将图像数据形成为图像。将图像形成之后的图像数据输出至打印机部133。
[0026] 软件结构
[0027] 图2是示出图像形成设备的软件结构的框图。该软件保存在HDD 104中并且在利用ROM 103中的引导程序被读出至RAM 102之后被CPU 101所执行。
[0028] OS 201是针对各种程序生成处理单位(线程)的对称多处理型(symmetric multi-processing type,SMP)操作系统。OS 201将各线程分配给执行线程的核。通常,线程处于可以在所有核中运行的状态,并且OS 201根据预定算法来确定线程的运行核。此外,程序可以设置可运行线程的核。例如,通过将核1设置为可运行特定线程的唯一核,可以使该特定线程仅在核1中运行。
[0029] 在根据本发明的图像形成设备中,主控制部202进行本地应用203和Java VM启动控制部204的启动控制,并且针对作为图像形成设备的主要功能的复印机、扫描器和打印机等进行各种作业的管理和执行控制。此外,主控制部202提供用于使用图像形成设备根据Java应用所提供的功能的接口。本地应用203是将来自作为图像形成设备的主要功能的复印机和扫描器的指令的执行所用的UI显示在操作部131上的、以及接收来自用户的操作指令并且输入各种作业的应用。此外,本地应用203使用OS 201的功能来生成线程并执行应用处理。没有设置可运行所生成的线程的核,因此基于OS 201所作出的决定,在核0或核1中执行所生成的线程。因此,多个线程可以同时运行,并且利用多核的性能来进行处理。
[0030] 主控制部202所启动的Java VM启动控制部204控制Java VM(Java虚拟机)205的启动。此外,Java VM启动控制部204具有在从Java VM 205接收到线程生成请求的情况下向OS 201进行请求以生成线程并且管理由此生成的线程的功能。
[0031] Java VM 205是用于执行以Java语言编写的程序(以下称为“Java程序”或“特定程序”)的虚拟机。注意,Java VM 205采用如下结构:在Java VM 205启动Java应用207的情况下,多个所生成的线程频繁访问特定存储器区域。由于该原因,如果在没有对在执行Java程序时所生成的线程的核进行固定的情况下执行了启动,则假共享频繁发生,引起性能的显著下降。在启动完成之后,并行执行Java应用207的线程的频率降低,因此即使在没有将线程固定至特定核的情况下假共享发生的频率也降低。
[0032] Java应用管理部206是在启动Java VM 205的情况下所执行的第一个Java程序,并且进行各种Java应用207的管理(例如,安装、卸载、启动和停止控制)。此外,Java应用管理部206管理Java应用207的启动状态(开始或停止),因此可以知道是否已完成针对所有Java应用207的启动处理。此外,Java应用管理部206具有与特定处理状态管理部306进行通信并且通知针对Java应用组的启动处理已完成的功能。
[0033] Java应用207是用于诸如添加识别功能、可运行性定制和与外部设备的协调运行等的扩展图像形成设备的功能的应用。在根据本实施例的图像形成设备中,可以安装多个Java应用207并同时运行多个Java应用207。
[0034] 注意,本实施例被配置为以使得在MFP(multi-function printer,多功能打印机)启动的情况下多个Java线程同时执行初始化处理。此外,在进行初始化处理的情况下经常访问彼此接近的存储器地址。由于该原因,假共享可能会发生。因此,通过在启动时将运行Java线程的核限制为这些核其中之一,可以抑制假共享发生的频率并且可以改善性能。
[0035] 另一方面,根据用户的使用需求,针对启动后的处理可以考虑到各种状况,并且不进行诸如启动时等的特征处理。由于该原因,为了更好地获得多核CPU的益处,将启动处理完成之后的向核的线程分配留给OS。
[0036] 功能块
[0037] 图3是本实施例在图2所示的OS 201和Java VM启动控制部204的各软件层中提供的特征功能的框图。
[0038] 线程生成部301是OS 201中所包括的根据来自上层程序(higher level program)的请求而生成线程的功能。此时,从上层程序传递来与入口点函数(entry  point function)和该入口点函数的自变量有关的信息。入口点函数是在线程开始时首先由线程所执行的函数,并且入口点函数与线程的处理内容相对应。此外,在线程生成部301生成线程的情况下,线程生成部301还生成并管理用于唯一识别所生成的线程的标识符(被称为线程ID)。
[0039] 核分配控制部302是OS 201中所包括的根据来自上层程序的请求而设置可运行线程的核的功能。此时,上层程序针对线程指定运行核的集合。OS 201从所指定的核的范围中确定要运行线程的核。因此,如果仅指定一个特定核,则可以进行控制以使得该线程仅在所指定的核中运行。可以指定可运行线程的多个核,因此,如果处理器具有三个以上核,则可以进行仅在两个特定核中执行处理的控制。
[0040] 线程生成控制部303是Java VM启动控制部204中所包括的响应于来自Java VM 205的请求来生成线程的功能。这些请求中包括作为Java程序的处理内容的入口点函数和该入口点函数的自变量。在生成线程时,线程生成控制部303指定在线程生成部301上进行后面利用图4所述的处理的入口点函数。此外,将从Java VM 205传递来的入口点函数及其自变量的组合指定为自变量。
[0041] 动态核分配控制部304根据在Java VM 205上运行的程序(例如,Java应用207)的运行状态来控制所生成的线程的运行核。具体地,在程序正进行启动处理的情况下,以使得线程仅在核1中运行的方式进行核分配,并且在程序没有正进行启动处理的情况下,以使得线程可以在核0和核1两者中运行的方式进行核分配。也就是说,在Java应用207的运行状态是预定运行状态的情况下,动态核分配控制部304将该Java应用207的线程固定地分配给预定核。然后,在Java应用207的运行状态不再处于预定运行状态的情况下,动态核分配控制部304解除该Java应用207的线程的固定分配。因此,根据上述的OS 201的预定算法来将该Java应用207的线程灵活地分配给多个核中的任意核。此时,从特定处理状态管理部306获得程序的运行状态。此外,由特定处理线程管理部305管理的向运行核的线程分配响应于来自特定处理状态管理部306的请求而动态地发生改变。
[0042] 特定处理线程管理部305管理经由线程生成控制部303所生成的线程。具体地,特定处理线程管理部305保持线程管理列表,并且在该列表中保持经由线程生成控制部303所生成的线程中的存在的线程的线程ID。线程ID是为了在上述的线程生成部301生成了线程的情况下对线程进行标识而分配的标识符。
[0043] 特定处理状态管理部306保持与在Java VM 205上运行的程序有关的运行状态信息(启动处理状态/启动处理完成)。特定处理管理部306所保持的运行状态信息在从Java应用管理部206接收到通知时发生改变。
[0044] 线程处理流程图
[0045] 图4是示出线程生成控制部303在使用线程生成部301生成线程时所指定的入口点函数,即,经由线程生成控制部303所生成的线程的处理的流程。
[0046] 在步骤S401中,线程生成控制部303所生成的线程首先从OS 201获得该线程自身的线程ID。
[0047] 接着,过程移至步骤S402,并且线程将步骤S401中所获得的线程ID添加至特定处理线程管理部305所保持的线程管理列表。
[0048] 接着,过程移至步骤S403,并且线程从特定处理状态管理部306获得与程序有关的运行状态信息并且判断运行状态是否是预定运行状态,即,启动处理状态。特定处理状态管理部306所保持的与程序运行状态有关的信息是由Java应用管理部206(后面利用图5所述)所设置的。在步骤S403中,如果判断为该状态是启动处理状态,则过程移至步骤S404,并且如果判断为该状态不是启动处理状态,则过程移至步骤S405。
[0049] 在步骤S404中,线程使用动态核分配控制部304将核1固定为该线程的运行核。因此,Java程序的线程将仅在核1中运行,并且由于核0和核1对同一RAM区域的访问频率降低而引起假共享发生的可能性变小。自然地,将线程分配给核1是一个示例,并且将线程固定至多核处理器的任何一个特定处理器核就足够了。指定要执行线程的处理器核,这被设置为操作系统的功能,并且在步骤S404中,通过使用该功能来指定处理器核。在所指定的处理器核不是当前正在执行线程的处理器核的情况下,将执行该线程的处理器核切换为所指定的处理器核。
[0050] 在步骤S405中,执行Java VM 205所指定的入口点函数(Java线程的实际处理)。
[0051] 接着,过程移至步骤S406,并且线程将步骤S401中所获得的该线程的线程ID从特定处理线程管理部305所保持的线程管理列表中删除。因而,该线程结束。
[0052] 通过执行步骤S401~S406,可以仅在启动处理期间将与Java VM有关的线程的执行核固定为一个核,并且可以改善Java VM上的程序的启动性能。此外,可以管理与Java VM有关的存在的线程,因此可以通过执行下述的步骤来动态地改变线程所分配到的运行核。
[0053] Java应用管理部启动时的流程图
[0054] 图5是示出Java应用管理部206启动时的处理的流程的流程图。
[0055] 在步骤S501中,Java VM 205所启动的Java应用管理部206将Java应用管理部206的特定处理状态管理部306所保持的状态设置为启动处理状态。因此,在图4中的步骤S403的判断中的运行状态将被确定为启动处理状态,因此线程生成控制部303所生成的线程(以及已经生成了但是处理尚未到达步骤S403的线程)的运行核后面将被固定为核1。
[0056] 接着,过程移至步骤S502,并且Java应用管理部206判断是否存在要从Java应用组中启动的任何Java应用。如果判断为存在要启动的Java应用,则过程移至S503。
[0057] 在步骤S503中,Java应用管理部206从要启动的Java应用的组中启动头一个Java应用。注意,要在步骤S503的启动处理期间生成的线程是经由线程生成控制部303所生成的并且由特定处理线程管理部305所管理的。因此,按照图4中的过程进行这里要生成的线程的处理。在步骤S503中,在启动处理完成的情况下,过程返回至步骤S502,并且重复进行步骤S502和S503,直到不再存在要启动的Java应用为止。在步骤S502中,如果判断为不存在要启动的应用(即如果要启动的所有Java应用的启动已完成),则过程移至步骤S504。
[0058] 在步骤S504中,Java应用管理部206将特定状态管理部306所保持的运行状态改变为启动处理完成状态。步骤S502中检测到不存在要启动的Java应用的状态是启动处理状态已取消的状态,因此,在步骤S504中,预定运行状态从启动处理状态改变为启动处理完成状态。因此,在图4中的步骤S403的判断中,状态将被判断为不是启动处理状态,因此,线程生成控制部303此后生成的线程将可以在核0或核1中的任一核中运行。
[0059] 接着,过程移至步骤S505,并且动态核分配控制部304针对与特定处理线程管理部305所保持的线程ID相对应的各线程改变可以运行线程的处理器核的设置,以使得线程可以在核0和核1两者中运行。自然地,如果处理器核的数量大于2,则设置可以被改变为以使得线程可以在所有处理器核中运行。例如,使用与步骤S404相同的功能来进行步骤S505。在OS的管理下根据新的设置在处理器核中执行由于可运行的核处理器设置发生了改变而解除了设置的线程。因此,一些线程在没有改变处理器核的情况下被执行,而其它线程在切换至其它处理器核之后被执行。
[0060] 注意,尽管为了便于说明而从上述的流程图中省略了细节,但线程生成和结束时的线程管理列表操作(步骤S402和步骤S406)和步骤S505中的处理是互斥处理。因此,采用线程管理列表在用于改变核分配的处理期间不发生改变的结构。
[0061] 利用上述的操作,在Java VM 205上运行的程序的启动处理期间,可以将运行与Java VM有关的线程的核固定为核1,因此,可以抑制假共享的频率并且可以改善性能。此外,在Java VM 205上运行的程序的启动处理完成之后,所有的与Java VM有关的线程可以被设置为可以在核0或核1中运行,因此,可以维持启动之后的性能。因此,启动时的性能可以与正常处理时的性能相平衡并且可以改善用户友好性。
[0062] 第二实施例
[0063] 接着,将说明根据本发明的第二实施例。在第一实施例中,线程生成控制部303采用了针对进行启动处理时所生成的各线程来设置核的结构。然而,在子线程(所生成的线程)继承父线程(进行生成的线程)的属性的情况下,可以采用如下结构:作为用于进行启动Java VM的处理的线程的并且生成要启动的Java应用的线程的父线程的核设置被改变为使得被分配给特定核,并且不改变针对Java应用的线程的核设置。在这种情况下,要按照图4中的过程进行处理的唯一线程是父线程并且不针对子线程执行步骤S403和S404。然而,需要针对该时间点存在的各线程进行图5的步骤S505中针对所分配的核的改变操作。
[0064] 在第一和第二实施例中,示出Java程序的启动处理慢的情况作为特定程序的特定处理的示例。然而,根据本实施例的本发明不限于此,并且无需说明,本发明可以适用于其它程序的其它处理中的假共享引起性能问题的所有处理。
[0065] 其它实施例
[0066] 本发明的实施例还可以通过如下的方法来实现,即,通过网络或者各种存储介质将执行上述实施例的功能的软件(程序)提供给系统或装置,该系统或装置的计算机或是中央处理单元(CPU)、微处理单元(MPU)读出并执行程序的方法。
[0067] 尽管已经参考典型实施例说明了本发明,但是应该理解,本发明不限于所公开的典型实施例。所附权利要求书的范围符合最宽的解释,以包含所有这类修改、等同结构和功能。