多任务系统中的系统启动方法 【技术领域】
本发明涉及一种在多任务系统中生成任务、 对象 ( 信号量 (Semaphore)、 事件标志 等 ) 的方法, 尤其是涉及一种通过使系统的启动时间缩短来使启动高速化的技术。背景技术
近年来, 随着程序控制的进步, 能够同时处理 2 个以上的作为计算机的工作单位 的任务的多任务系统已得到了普及。通过利用该多任务系统, 能够高效地对多个任务进行 切换并执行。而且最近, 一般利用可以提高内嵌软件的开发效率的操作系统 ( 以下, 略称为 “OS” )。作为面向内嵌的 OS, 一般地, uITRON4.0 被广泛地渗透。根据该 OS, 能够按照每一 功能将应用程序进行任务化, 能够提高资产转用性。
在以下的说明中, 将在出厂时进行面向用户的各种软件的内嵌后进行销售的个人 计算机称为 “商品组” 。 在商品组的近来的动向中, 多功能化、 高功能化正在加速。 与之相伴, 嵌入商品组中的软件的规模也存在増大化 / 复杂化的倾向, 并且存在有要求通过软件与其 他领域的资产 ( 任务 ) 进行结合的情况。尽管在现有的商品组所内嵌的软件中, 计算机所 要求的任务数为 10 ~ 20 个的程度, 但是, 在要求与其他领域的资产 ( 任务 ) 进行结合的软 件中, 其任务数超过 100, 由此使任务的设计变得复杂化。
作为对商品组的要求中的一个, 是要求系统启动时间的缩短。在启动时间的缩短 时, 存在这样的课题, 即, 随着任务数的増加, 系统的启动时任务的生成以及初始化所需的 时间也将増加。
图 11 是以时间轴表示利用了一般 OS 的现有技术的多任务系统中的系统启动的初 始化的图。从时刻 t0 至时刻 t1, 进行总线的设定以及各种寄存器的设定等硬件初始化。从 时刻 t1 至时刻 t2, 进行分区 (section) 的初始化。最后, 从时刻 t2 至时刻 t3, 进行 OS 初 始化, 在所有的初始化完成后, 成为用户可使用任意功能的状态。
在 OS 初始化中, 进行 OS 所使用的变量的初始化与任务 / 对象的生成。 “任务 / 对 象” 是指包含任务与对象中的至少一个。尤其是, 在任务 / 对象的生成中, 需要与生成个数 对应的初始化时间, 成为近年来的大规模系统 ( 任务数增大的商品组 ) 中启动时间増加的 要因。
OS 所使用的任务 / 对象的生成中, 存在有系统启动时进行生成的静态生成、 以及 启动完成后在应用程序内调出特定的系统调用来进行生成的动态生成。 尽管进行与静态生 成不同的动态生成关系到系统的启动时间的缩短, 其反面, 需要任务的选定以及设计的变 更, 难以避免繁杂化。
作为将系统的启动时间缩短的其他的现有技术, 例如有专利文献 1 记载的系统启 动装置。在多任务系统中, 在该装置中将系统的启动时各任务的信息从信息表以及状态表 中读入至任务信息存储部, 并参照系统所需的各任务的与上次系统停止有关的状态, 通过 仅启动上次停止时处于启动状态的任务来使系统的启动时间缩短。图 12 是以时间轴表示 专利文献 1 的多任务系统中的系统启动的初始化的图。从时刻 t0 至时刻 t1 进行硬件初始化, 从时刻 t1 至时刻 t2 实施分区初始化, 从时刻 t2 至时刻 3 仅启动上次处于启动状态的 任务。根据该启动装置, 通过集中于上次处于启动状态的任务, 来使系统的启动时间缩短。
专利文献 1 : JP 特开平 8-286936 号公报
在现有技术中, 通过将要启动的任务集中于上次停止时处于启动状态的任务来谋 求启动时间的缩短, 但是如果所有的任务均已处于启动状态的情况下, 则不能实现系统的 启动时间的缩短。 也就是说, 随着处于启动状态的任务数量增加, 启动时间缩短的效果则变 小。
另外, 由于作为近年的商品组中的任务构成, 通过将各种资产进行转用而形成一 个系统, 因此, 即使仅仅 1 个任务处于启动状态, 也存在为了启动该任务而有多个任务在前 后进行了动作的可能性。 在该情况下, 在仅启动处于启动状态的任务, 作为系统则并未进行 必要的处理, 由此, 存在并未正常地进行动作的可能性。
而且, 在现有技术中, 初次启动时或进行与上次不同的处理与如图 11 所示的通常 初始化同样, 需要较长的时间, 从而不能使系统的启动时间实现缩短。 发明内容 本发明是鉴于上述原因而作出的, 其主要的目的在于 : 有效地缩短系统中的系统 启动时间。
本发明的多任务系统的系统启动方法包括伴随着多任务系统的电源接通分别执 行的下述步骤 : 对硬件进行初始化的第 1 步骤、 对分区进行初始化的第 2 步骤、 对操作系统 进行初始化的第 3 步骤, 在所述第 3 步骤中, 任务 / 对象的初始访问时间等于或小于规定的 阈值时, 静态生成所述任务 / 对象, 而在所述初始访问时间大于所述阈值时, 在所述多任务 系统的启动完成后, 动态生成所述任务 / 对象。在此, 初始访问时间是对各任务 / 对象初次 进行访问的情况下所花费的时间长度。在多任务系统的静态生成中, 一般在启动时间内生 成任务 / 对象。另外, 在动态生成中, 一般是在系统的启动处理的完成后至系统的使用开始 前生成任务 / 对象。在该情况下, 作为动态生成, 优选在系统启动处理的完成后的空闲状态 下生成任务 / 对象。
如上所述, 本发明对作为 OS 初始化的一定时间内中进行静态生成对象的任务 / 对 象在数量上进行限制。即, 对于初始访问时间相对短的任务 / 对象, 执行静态生成, 而对于 初始访问时间在一定以上的较长的任务 / 对象, 在 OS 初始化的一定时间内不执行生成, 而 滞后至启动完成后 ( 进行动态生成 )。
如此, 关于从系统启动起一定时间内的 OS 初始化下成为所需的任务 / 对象, 预先 将其初始访问时间设定得相对较短, 由此, 能够将要生成的任务 / 对象的数目设为尽量少。 对于一定时间以上没有被访问可能性的任务 / 对象的生成, 在 OS 初始化时则不进行。 如此, 在本发明中, 通过对 OS 初始化时生成的任务 / 对象的数目进行限制, 来将从系统的启动开 始至启动完成为止的时间长度 ( 系统的启动时间 ) 进行缩短, 从而使启动高速化。而且, 即 使为启动某个任务而在其前后需要使多个任务进行动作的情况下, 也能够将这些必要的某 些任务积极地设为启动对象。由此, 作为系统, 能够可靠地进行必要的处理, 并能够确保正 常的动作。
另外, 即使在进行初次的启动或者与上次不同的处理的情况下, 集中于从系统启
动在一定时间内成为必要的任务 / 对象来进行生成, 由此, 能够实现系统启动时间的缩短。
另外, 对于现有技术中进行了动态生成的任务 / 对象, 如果其是利用频度高的任 务 / 对象, 可以对其进行静态生成。其结果, 能够提高针对利用频度高的任务 / 对象而发生 了请求时的响应性。
另外, 优选的方式是 : 在所述第 3 步骤中, 基于所述任务 / 对象的每一个处的所述 多任务系统的启动时间, 来计算所述阈值。系统的启动时间设为从启动开始至启动完成为 止的处理时间长度。 在启动时间内, 除了硬件初始化与分区初始化, 将能够保证应可接受任 意功能的该功能的任务 / 对象的访问的时间长度设定为所述阈值。
另外, 优选的方式是 : 根据用户的利用状况来更新所述初始访问时间。 根据用户的 利用状况来变动从启动完成开始至实际由用户产生启动请求且任务 / 对象被访问为止的 时间长度 ( 实际访问时间 )。由此, 在根据该用户的利用状况, 将实际访问时间进行反馈并 使之反映在初始访问时间中时, 能够在基于用户的使用状况 / 喜好的状态下, 更有效地推 动系统启动时间的缩短。例如, 能够优先地进行使用频度高的功能的初始化。尤其是, 对于 现有技术中进行了动态生成的任务 / 对象, 能够静态生成其利用频度高的任务 / 对象, 并且 能够期待在请求发生时的响应性的提高。
另外, 作为在基于用户的使用状况的初始访问时间的更新方法的优选方式, 存在 依次对实际访问时间进行累计并平均化的方法。
另外, 在上述的系统启动方法中, 优选的是 : 关于所述初始访问时间, 能够由用户 来任意地设定所述初始访问时间。该方法是与上述不同的初始访问时间的设定方法, 由于 优先地生成用户要使用的功能的任务 / 对象, 用户能够自由地对该对象的初始访问时间进 行设定。
另外, 在上述的系统启动方法中, 优选的方式是 : 所述多任务系统被构成为保持 有: 使用特定的功能所需的对象一览、 以及以使用的功能为单位的初始访问时间的信息, 并 基于所述对象的一览与所述初始访问时间信息来设定所述对象的初始访问时间。 预先以功 能为单位对使用的任务 / 对象进行分组, 设定 / 更新以功能为单位的初始访问时间, 由此, 易于进行对多功能化或通用性扩展的展开。
根据本发明, 在多任务系统的启动中, 基于任务 / 对象的初始访问时间与规定的 阈值之间的比较结果, 来对是将系统启动方法设为静态生成还是设为动态生成进行切换。 即, 对于初始访问时间相对较短的任务 / 对象, 对其执行静态生成, 而对于初始访问时间为 一定以上的较长的任务 / 对象, 在 OS 初始化的一定时间内不执行其生成, 而滞后至启动完 成后。由此, 即使在任务 / 对象的生成数目増加的状况下, 也能够提高系统启动时间缩短的 效果, 促进系统启动的高速化。
例如, 在为启动某个任务而在其前后需要使多个任务进行动作的情况下, 能够将 这些必要的某些任务积极地设为启动对象。由此, 作为系统, 能够可靠地进行必要处理, 并 确保正常的动作, 还能使系统启动时间的缩短。
另外, 即使在进行初次的启动或者与上次不同的处理的情况下, 集中于从系统启 动在一定时间内成为必要的任务 / 对象来进行生成, 由此, 能够实现系统启动时间的缩短。
另外, 对于现有技术中进行了动态生成的任务 / 对象, 如果其是利用频度高的任 务 / 对象, 能够易于对其进行静态生成, 由于能够提高针对利用频度高的任务 / 对象而产生了请求时的响应性。 附图说明
图 1 是表示本发明的实施方式的系统启动方法所适用的多任务系统的构成的方框图。 图 2 是用于说明本发明的实施方式的多任务系统中的系统启动方法的系统的启 动时间、 初始访问时间的图。
图 3 是表示本发明的实施方式的多任务系统中的系统启动方法的处理的顺序的 流程图。
图 4 是表示图 3 中的步骤 S4 的 OS 初始化的详细处理内容的流程图。
图 5A 是表示在本发明的实施方式的多任务系统中的系统启动方法中追加了初始 访问时间的生成信息表的一个示例的图。
图 5B 是表示在本发明的实施方式的多任务系统中的系统启动方法中追加了初始 访问时间的生成信息表的一个示例的图。
图 6 是与图 5A、 图 5B 关联的初始访问时间和任务 / 对象的生成 / 未生成的说明 图。
图 7 是表示图 3 中的步骤 S7 的包含调度器进行的动态生成的处理顺序的流程图。
图 8 是表示在本发明的实施方式的多任务系统中的系统启动方法中初始访问时 间更新的处理顺序的流程图。
图 9 是表示在本发明的实施方式的多任务系统中的系统启动方法中以功能为单 位的初始访问信息的保持的一个示例的图。
图 10 是以时间轴表示在本发明的实施方式的多任务系统中的系统启动方法中系 统启动的初始化的图。
图 11 是以时间轴表示利用了一般 OS 的现有技术中的多任务系统的系统启动的初 始化的图。
图 12 是以时间轴表示现有的多任务系统的系统启动的初始化的图。
具体实施方式
以下, 利用附图, 对本发明所涉及的多任务系统的系统启动方法的实施方式进行 详细地说明。图 1 是表示本发明的实施方式中的系统启动方法所适用的多任务系统 A 的构 成的方框图。该多任务系统 A 具备 : OS 初始化部 1、 调度器 2、 对象生成部 3、 初始访问时间 设定部 4、 生成信息表 5、 控制块 9。
OS 初始化部 1 进行 OS 初始化处理。调度器 2 基于来自各任务的系统调用的发布 来切换由多任务系统 A 所执行的任务。对象生成部 3 生成任务 / 对象。任务 / 对象至少包 含任务和对象中的一者。初始访问时间设定部 4 设定通过多任务系统 A 初次访问任务 / 对 象时所需的时间长度 ( 以下, 称为 “初始访问时间 Ta” )。可由用户对初始访问时间设定部 4 来执行初始访问时间 Ta 的设定。生成信息表 5 保持有用于生成控制块 9 的数据, 该控制 块 9 进行访问的控制。控制块 9 保持有 : 系统 A 保证的该系统启动时间 ( 以下, 称为启动时 间 Tm)、 成为初始访问时间 Ta 的比较基准的阈值 To、 每一对象的状态。在此所说的每一对象的状态中包含有任务、 信号量、 事件标志等。
图 2 是系统 A 中的启动时间 Tm 与初始访问时间 Ta 的说明图。启动时间 Tm 是指 系统 A 中作为商品而受到保证的时间长度之一, 具体而言, 是指从开始启动至启动完成的 时间段长度。其包括 : 对系统 A 所具备的硬件进行初始化时所需的时间长度 ( 以下, 称之为 硬件初始化时间 )、 对系统 A 中的分区进行初始化所需的时间长度 ( 以下, 称之为分区初始 化时间 )、 对内嵌于系统 A 中的 OS 进行初始化所需的时间长度 ( 以下, 称之为 OS 初始化时 间 )、 以及生成系统 A 中的任务 / 对象所预计的时间长度 ( 以下, 称之为对象生成时间 )。
对初始访问时间 Ta 进一步具体说明, 初始访问时间 Ta 是指在系统 A 的启动完成 后初次访问任务 / 对象时进行该访问时该访问所花费的时间长度。初始访问时间 Ta 是由 初始访问时间设定部 4 针对各个任务 / 对象的每一个而设定的。
阈值 To 是基于系统的启动时间 Tm 所计算出的。即, 在从系统的启动时间 Tm 中减 去硬件初始化时间以及分区初始化时间而得到减法结果, 将阈值 To 设定为在该减法结果 Tb 中, OS 的任务 / 对象的生成所能花费的最大时间长度。
返回至图 1, 生成信息表 5 针对每一任务 / 对象而存在, 保持有 ID6、 任务名 7、 状态 8 以及初始访问时间 Ta 等。生成信息表 5 的实际样式如图 5A、 图 5B 所例示。 控制块 9 分别与任务 / 对象的各个相对应。在控制块 9 中, 10 为 ID, 11 为任务名, 12 为状态。 在静态生成任务 / 对象时或动态生成任务 / 对象时, 作为其生成的前提条件, 从 生成信息表 5 中读出必要事项来生成控制块 9。
其次, 按照图 3 所示的流程图, 对包含有上述那样构成的 OS 的多任务系统中的系 统启动方法的处理顺序进行说明。
在步骤 S1 中, 基于系统 A 的用户请求而使电源接通。 接下来, 在步骤 S2 中, 进行硬 件的初始化。 作为被初始化的硬件, 例如有总线以及各种寄存器等。 接下来在步骤 S3 中, 进 行分区的初始化。接下来在步骤 S4 中, 进行 OS 的初始化。在此所说的 OS 的初始化包含有 任务 / 对象的生成的初始化与 OS 区域的设定的初始化。关于在该步骤 S4 中的详细处理, 将参照图 4 如后所述。接下来, 在步骤 S5 中, 完成一系列的启动处理。由此, 成为可接收基 于用户请求的任意功能的状态。接下来, 在步骤 S6、 S7 中, 进行待机, 直到用户执行想要使 用的功能的启动请求为止。步骤 S7 处的详细处理将参照图 7 如后所述。当在步骤 S7 中, 确认已发生用户的启动请求时, 接下来在步骤 S8 中, 开始 OS 的任务 / 对象的使用, 并使已 存在请求的功能进行动作。
从电源接通的定时 ( 步骤 S1) 至系统的启动完成的定时 ( 步骤 S5) 为止的处理所 需要的时间长度为系统的启动时间 Tm。 启动时间 Tm 是作为对系统的要求而应保证的时间。 另外, 从步骤 S5 的启动完成开始至实际从用户产生启动请求且进一步在步骤 S8 中任务 / 对象被访问为止所需的时间长度为初始访问时间 Ta。在步骤 S4 中, 仅生成在 OS 初始化下 成为必需的任务 / 对象, 对于在一定时间以上没有被访问可能性的任务 / 对象, 通过在启动 完成后返回其生成, 来使系统的启动时间 Tm 缩短。
接下来, 参照图 4 至图 6, 对在步骤 S4 的处理中为了使启动时间缩短而实施的处 理内容进行详细说明。图 4 表示图 3 的步骤 S4 的 OS 初始化的详细处理内容的流程图, 图 5A、 图 5B 是表示追加了初始访问时间的生成信息表 5 的一个示例的图。
在步骤 S11 中, OS 初始化部 1 针对任意的任务 / 对象, 取得在生成信息表 5 所包含
的初始访问时间 Ta。设定了初始访问时间 Ta 的生成信息表 5( 图 5A、 图 5B 进行例示 ) 针 对每一任务 / 对象而存在。对象中包含有信号量、 事件标志。
接下来, 在步骤 S12 中, OS 初始化部 1 将所取得的初始访问时间 Ta 与阈值 To 进行 比较。在 OS 初始化部 1 判断出初始访问时间 Ta 与阈值 To 相等或者小于阈值 To(Ta ≤ To) 时, 进行至步骤 S13, 该步骤 S13 是任务 / 对象的一系列的静态生成处理组的在先处理。在 OS 初始化部 1 判断出初始访问时间 Ta 大于阈值 To(Ta > To) 时, 跳过步骤 S13 ~ S15 而进 行至图 3 的步骤 S5。
在步骤 S13 中, 对象生成部 3 确保在生成控制块 9 时所需的存储器。接下来在步 骤 S14 中, 对象生成部 3 基于生成信息表 5 的数据来进行控制块 9 的生成。接下来在步骤 S15 中, 对象生成部 3 将生成信息表 5 的状态 8 的生成完成标志设置为 “1” 。
由于对于被判断为初始访问时间 Ta 大于阈值 To(Ta > To) 的对象, 在此不被初始 化, 而通过后面的图 8 中所示的动态生成步骤来进行生成, 因此, 将生成信息表 5 的状态 8 的生成完成标志保持为 “0” 。
图 5 所示的示例中, 在将阈值 To 设为 10s( 秒 ) 的情况下, 静态生成的任务 / 对象 为任务 1、 任务 2 以及 sem1、 sem2、 flg1, 而对于余下的任务 / 对象, 在系统启动后生成。由 此, 从系统启动起, 仅选择性生成在一定时间内的 OS 初始化中成为所必需的任务 / 对象, 对 于一定时间以上没有被访问的可能性的任务 / 对象, 使其的生成滞后。由此, 能够使系统的 启动时间 Tm 缩短。图 6 是与图 5A、 图 5B 关联的初始访问时间与任务 / 对象的生成 / 未生 成的说明图。 其次, 对步骤 S7 中的处理进行详细说明。该处理是以不被视为静态生成的处理对 象的任务 / 对象作为处理对象, 具体处理内容为动态生成处理。图 7 是表示包含有图 3 中 的步骤 S7 的调度器 2 所进行的动态生成的处理顺序的流程图。
系统的启动完成后, 在步骤 S7 中, 如产生了用户的启动请求, 在切换任务时, 将调 出调度器 2。其后, 所被调出的调度器 2 在步骤 S21 中取得接下来进行启动的任务。接下来 在步骤 S22 中, 调度器 2 对所取得的接下来启动的任务是否是空闲任务 (idle task) 进行 判断。在判断接下来启动的任务为空闲任务的情况下, 进行到步骤 S23, 在判断其不为空闲 任务的情况下进行到步骤 S25。
在步骤 S23 中, 对象生成部 3 从生成信息表 5 中取得在启动时未进行静态生成的 状态标志被设为 “0” ( 启动时未进行静态生成 ) 的对象的信息。而且, 对象生成部 3 通过调 出进行任务 / 对象的生成的步骤 S13 至 S15, 在相应的任务 / 对象在一系列的启动处理中 成为所需的时刻之前, 生成该任务 / 对象 ( 在此的对象生成为动态生成 )。接着, 通过步骤 S25, 调度器 2 进行任务的切换。
另外, 作为取得步骤 S23 处的未生成对象的方法, 可以从在未生成的任务 / 对象 中、 初始访问时间 Ta 最短的任务 / 对象开始, 优先地进行生成。 另外, 也可以考虑 : 按照每一 功能, 将对象进行分组, 从多个的位置, 优先地进行生成被调用的可能性高的任务 / 对象。
另一方面, 在进行到步骤 S24 时, 调度器 2 对表示接下来被启动的任务的状态的生 成完成标志是否为 “0” 进行判断。在生成完成标志为 “0” 的情况下, 与前述同样地, 通过调 出任务 / 对象的生成的步骤 S13 ~步骤 S15 来进行相应的任务 / 对象的生成 ( 在此的对象 生成是动态生成 )。另一方面, 在生成完成标志不为 “0” 的情况下, 进行到步骤 S25, 并进行
任务的切换。
其次, 利用图 8 所示的流程图来说明对初始访问时间 Ta 进行更新的方法。在步骤 S31 中进行系统的启动处理。接下来在步骤 S32 中, 实际地对任务 / 对象进行访问。接下 来, 在步骤 S33 中, 将从步骤 S31 的系统的启动处理至步骤 S32 的访问完成为止所需的实际 时间长度更新为初始访问时间 Ta。 在该初始访问时间 Ta 的更新中, 任务 / 对象的初始访问 时间 Ta 与初始访问时间 Ta 的上次值进行相加并进行平均化后来进行设定。通过依次进行 多次的更新, 能够根据用户的使用状况 / 喜好, 来优先地进行使用频度高的功能的初始化。
作为初始访问时间 Ta 的其他的设定方法, 可考虑 : 设计时作为初始值来保持的方 法、 或者使用初始访问时间设定部 4 按照优先地生成用户要使用的功能的方式进行设定的 方法。 另外, 这些信息如图 9 所示那样, 能够以功能为单位将要使用的任务 / 对象进行分组, 对以功能为单位的初始访问时间 Ta 进行设定 / 更新。另外, 关于进行动态生成的任务, 也 可以进行静态生成。如果这样做, 能够提高使用频度高的功能的响应性。
图 10 是以时间轴表示本实施方式的系统启动的初始化的图。 从时刻 t0 至时刻 t1 的时间段实施硬件初始化, 从时刻 t1 至时刻 t2 的时间段实施分区初始化。从时刻 t2 至时 刻 t3 所进行的 OS 初始化步骤中, 实施初始访问时间与阈值的比较, 并基于该比较结果, 仅 静态生成从系统启动起一定时间内的 OS 初始化中成为必需的任务 / 对象。也就是说, 使一 定时间以上没有被访问可能性的任务 / 对象的生成被滞后。 在时刻 t3, 启动完成后, 在从时 刻 t4 至时刻 t5 的时间段, 动态生成在系统初始化时未生成的对象。另外, 本发明并不仅限 于上述的实施方式, 在本发明的宗旨范围内能够实施各种的变形。
产业上的利用可能性
本发明的多任务系统的系统启动方法在作为搭载有多任务 OS 的系统中, 用作一 种通过使系统的启动时间缩短来使启动高速化的技术。
符号说明
A 多任务系统
1 OS 初始化部
2 调度器
3 对象生成部
4 初始访问时间设定部
5 生成信息表
Ta 初始访问时间
Tm 启动时间
To 阈值