首页> 中国专利> 排他控制检查装置、排他控制检查方法、排他控制检查程序

排他控制检查装置、排他控制检查方法、排他控制检查程序

摘要

排他控制检查装置确定出作为检查对象的计算机程序中所包含的语句的执行顺序以及执行路径(S02),基于语句的执行顺序以及执行路径确定锁定区间(S03),提取出锁定区间的暂停时间(S04)。而且,对于各执行路径,计算出锁定区间的执行所需要的时钟数(S05、S06),对于各锁定区间,计算出时钟数的最大值(S07),并输出(S11)。

著录项

  • 公开/公告号CN104885061A

    专利类型发明专利

  • 公开/公告日2015-09-02

    原文格式PDF

  • 申请/专利权人 日产自动车株式会社;

    申请/专利号CN201380069267.X

  • 发明设计人 长谷川美和子;

    申请日2013-12-25

  • 分类号

  • 代理机构北京天昊联合知识产权代理有限公司;

  • 代理人何立波

  • 地址 日本神奈川县

  • 入库时间 2023-12-18 10:40:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-09

    授权

    授权

  • 2015-09-30

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20131225

    实质审查的生效

  • 2015-09-02

    公开

    公开

说明书

技术领域

本发明涉及一种排他控制检查装置、排他控制检查方法、排他控 制检查程序。

背景技术

已知一种锁定动作测定方法(参照专利文献1),其为了计算出 在计算机程序内的锁定区间中使用的信号量的繁忙率以及冲突率,利 用实际时间分别对作为测定对象而指定出的信号量的从锁定获取到锁 定释放为止的锁定时间、以及信号量的从等待锁定获取到锁定获取为 止的等待锁定解除时间进行测定。

专利文献1:日本特开平11-085574号公报

发明内容

在专利文献1中所公开的锁定动作测定方法,是使系统动作而测 定上述时间这样的动态检查方法,因此仅将实际执行的锁定区间、等 待锁定解除处理作为对象。因此不能将实际未执行的锁定区间、分支 路径作为测定对象。因此,不能针对可执行的各个锁定区间,分别把 握锁定时间的最大值,因此不能确定出系统的响应性恶化的锁定区间。 即,专利文献1所公开的锁定动作测定方法具有如下述的课题,即: 无法充分实现对在计算机程序中所使用的锁定区间的执行所需的时间 (锁定时间)、发生冲突关系、暂停的情况进行把握,对是否满足施 加于系统的要求进行检验这样的目的。

本发明是鉴于上述课题而提出的,其目的在于提供一种排他控制 检查装置、排他控制检查方法、排他控制检查程序,其能够针对在计 算机程序中可执行的锁定区间,使用户注意到系统的响应性有可能恶 化的部分。

本发明的一个方式所涉及的排他控制检查装置,确定作为检查对 象的计算机程序中所包含的语句的执行顺序以及执行路径,基于确定 出的语句的执行顺序以及执行路径,确定下述锁定区间,其中,该锁 定区间由对计算机程序中所包含的多个任务能够利用的共享资源执 行排他控制的一组语句构成。而且,对于确定出的锁定区间中所包含 的各执行路径,计算锁定区间的执行所需要的时钟数。而且将确定出 的执行顺序以及执行路径、锁定区间、计算出的时钟数等的信息作为 检查结果而输出。

优选本发明的一个方式所涉及的排他控制检查装置针对各锁定 区间,提取出能够等待对共享资源的访问限制解除的暂停时间,将属 于与锁定区间所属于的任务不同的其他任务的其他锁定区间确定为 产生冲突的任务,在锁定区间的时钟数的最大值大于其他锁定区间的 暂停时间的情况下,判断为其他锁定区间有可能被跳过。

附图说明

图1是表示本发明的实施方式所涉及的排他控制检查装置的硬件 结构的框图。

图2是表示CPU11的功能的构成的框图。

图3是表示利用本发明的实施方式所涉及的排他控制检查装置执 行的信息处理的流程的流程图。

图4(a)、图4(b)、图4(c)是作为利用源代码输入部21读 入的源代码D01,表示出利用C语言编写的计算机程序的一个例子的 图。

图5是表示在将图4(a)的函数“Task1”作为入口点的情况下 的语句(代码)的执行顺序以及执行路径的表(执行顺序/执行路径表 T01)。

图6是表示入口点一览D02的一个例子的表。

图7是表示锁定开始命令/解除命令列表D03的一个例子的表。

图8是表示所需时钟数一览D04的一个例子的表。

图9是表示图3的步骤S03~S05所示的信息处理F01的详细的 处理流程的一个例子的流程图。

图10是作为图9的流程图的执行结果的一个例子,表示出针对图 4(a)的函数“Task1”的执行结果的表(锁定区间确定表T02)。

图11是作为图3的步骤S06以及S07的执行结果的一个例子,表 示出执行路径的各自的时钟数、以及在锁定区间的执行中所需要的时 钟数的最大值的表(时钟数合计管理表T03)。

图12是作为图3的步骤S08的执行结果的一个例子,表示出存在 冲突关系的程序块区间的组合的表(排他控制结构管理表T04)。

图13是表示排他控制检查结果D05的一个例子的表。

具体实施方式

参照附图说明本发明的实施方式。在附图的记载中,对于相同部 分标注相同标号并省略说明。

【排他控制检查装置的硬件结构】

本发明的实施方式所涉及的排他控制检查装置例如能够应用在下 述处理中,即:对在利用搭载于车辆的电子控制装置(ECU)而执行 的计算机程序中所包含的排他控制进行检查的处理。

在计算机程序的执行中,对于多个任务(包含应用程序)能够利 用的共享资源(包含数据、文件、数据库),在由于来自多个任务的 同时访问而导致产生冲突的情况下,为了确保共享资源的一致性,设 为在一方的任务独占地利用共享资源的期间,另一方的任务不能利用 共享资源。将此称为排他控制。具体而言,在一方的任务使用共享资 源的一定区间,锁定另一方的任务的启动。被锁定的另一方的任务在 锁定的一方的任务释放信号量之后被启动,执行向共享资源的访问。

本发明的实施方式所涉及的排他控制检查装置,是对排他控制进 行检查的装置,该排他控制是针对从在计算机程序中所包含的多个任 务能够利用的共享资源执行的。

参照图1,对本发明的实施方式所涉及的排他控制检查装置的硬 件结构进行说明。作为排他控制检查装置的硬件结构,能够使用通用 计算机。例如,排他控制检查装置具有:输入输出装置12,其从存储 介质读入作为检查对象的计算机程序(源代码D01)以及检查中所必 需的数据(包含入口点一览D02、锁定开始命令/解除命令列表D03、 所需时钟数一览D04);存储装置14,其对利用输入输出装置12读入 的源代码D01、解析的中间数据进行存储;CPU(中央处理装置)11, 其执行各种运算而对源代码D01进行解析;输入装置13,其用于使用 户输入解析中所必需的信息;以及显示装置15,其对从CPU11输出的 检查结果(包含排他控制检查结果D05)进行显示。检查结果也能够 使用输入输出装置12而写入到存储介质中。作为存储装置14,能够列 举出存储器、硬盘等,在存储装置14和CPU(中央处理装置)11之 间进行数据的输入输出。

在存储装置14中存储的中间数据利用CPU11进行更新。作为中 间数据,能够列举出:后述的执行顺序/执行路径表T01、锁定区间确 定表T02、时钟数合计管理表T03、排他控制结构管理表T04等。

此外,排他控制检查装置也能够作为客户端服务器模型而实现。 例如,经由计算机网络而将通用个人计算机(客户端)连接到服务器 上。由此,能够将具有图1中所示的CPU11的置于远程环境中的服务 器经由计算机网络,而连接到客户端所具有的输入输出装置12、输入 装置13、存储装置14、或者显示装置15上。在该情况下,排他控制 检查装置主要通过CPU11(服务器)构成,输入输出装置12、输入装 置13、存储装置14、或者显示装置15未包含在排他控制检查装置中。

参照图2说明CPU11的功能的构成。将用于使具有CPU11的计 算机作为排他控制检查装置而起作用的计算机程序(排他控制检查程 序)安装到具有CPU11的计算机上并执行。由此,CPU11作为以下所 示的各信息处理部而起作用。另外,此处表示出利用软件实现排他控 制检查装置的例子,当然,也可以准备用于执行以下所示的各信息处 理的专用的硬件,而构成排他控制检查装置。

CPU11作为源代码输入部21、顺序路径确定部22、锁定区间确 定部23、时钟数计算部24、最大时钟数计算部25、以及检查结果输出 部29而起作用。

源代码输入部21从输入输出装置12或输入装置13读取作为检查 对象的计算机程序(源代码D01),并存储至存储装置14中。

顺序路径确定部22对利用源代码输入部21所读取的计算机程序 中所包含的语句的执行顺序以及执行路径进行确定。具体而言,使用 从输入输出装置12或输入装置13输入的入口点一览D02,确定将从 输入装置13输入的入口点(程序的开始点)作为起点而执行的语句的 执行顺序以及执行路径。对于入口点一览D02,参照图6在后面叙述。 入口点一览D02作为文件形式或者数据库而记录在存储装置14中。入 口点一览D02利用来自CPU11的指示而进行读取。利用顺序路径确定 部22确定出的语句的执行顺序以及执行路径,利用顺序路径确定部22 而记录在执行顺序/执行路径表T01(图5)中。执行顺序/执行路径表 T01作为文件形式或者数据库而记录在存储装置14中。

锁定区间确定部23基于利用顺序路径确定部22确定出的语句的 执行顺序以及执行路径,确定出锁定区间。“锁定区间”由针对下述 共享资源执行排他控制的一组语句构成,其中,该共享资源是在计算 机程序中所包含的多个任务能够利用的共享资源。换言之,锁定区间 是一方的任务排他地使用共享资源的一定区间。在锁定区间中,另一 方的任务的启动被锁定,共享资源的使用被禁止。

具体而言,锁定区间确定部23按照在执行顺序/执行路径表T01 中记录的语句的执行顺序以及执行路径的信息,确定出从锁定开始命 令到解除命令为止的区间(锁定区间)。锁定区间确定部23基于从输 入输出装置12或者输入装置13输入的锁定开始命令/解除命令列表 D03,确定锁定开始命令、以及锁定解除命令的语句。对于锁定开始命 令/解除命令列表D03,参照图7在后面叙述。锁定开始命令/解除命令 列表D03作为文件形式或者数据库而记录在存储装置14中。锁定开始 命令/解除命令列表D03利用来自CPU11的锁定区间确定部23的指示 而读取。

时钟数计算部24针对利用锁定区间确定部23确定出的锁定区间 中所包含的各个执行路径,分别计算出在锁定区间的执行中所需要的 时钟数。具体而言,基于从输入输出装置12或者输入装置13输入的 所需时钟数一览D04,计算出在利用锁定区间确定部23确定出的锁定 区间中所包含的各语句的执行中所需要的时钟数。其中,在所需时钟 数一览D04中,针对记述在语句中的命令的种类的每一种,记录有该 命令的执行中所必需的时钟数。对于所需时钟数一览D04,参照图8 在后面叙述。所需时钟数一览D04作为文件形式或数据库而记录在存 储装置14中,利用来自CPU11的时钟数计算部24的指示而读取。

利用时钟数计算部24计算出的各语句的执行中所需要的时钟数 利用时钟数计算部24而记录在锁定区间确定表T02(图10)中。锁定 区间确定表T02作为文件形式或者数据库而记录在存储装置14中。

而且,时钟数计算部24针对各执行路径,计算出各语句的执行中 所需要的时钟数的合计值,并将该合计值与利用锁定区间确定部23确 定出的锁定区间所涉及的信息一起,记录在时钟数合计管理表T03(图 11)中。时钟数合计管理表T03作为文件形式或者数据库而记录在存 储装置14中。

最大时钟数计算部25参照时钟数合计管理表T03,针对该锁定区 间,分别计算出利用时钟数计算部24计算出的时钟数的最大值。具体 而言,在1个锁定区间中包含大于或等于2个的执行路径的情况下, 即,在1个锁定区间中基于分支条件而进行大于或等于2个的分支处 理的情况下,在大于或等于2个的执行路径中,提取出最大的时钟数。 在1个锁定区间只包含1个执行路径的情况下,利用时钟数计算部24 计算出的时钟数直接成为该锁定区间中的时钟数的最大值。利用最大 时钟数计算部25计算出的时钟数的最大值利用最大时钟数计算部25 而记录在时钟数合计管理表T03中。

检查结果输出部29至少将利用最大时钟数计算部25计算出的时 钟数的最大值作为排他控制检查结果D05而向显示装置15或者在输入 输出装置12中插入的存储介质输出。对于利用检查结果输出部29而 输出的时钟数的最大值,参照图11在后面叙述。

CPU11还作为暂停时间提取部26、冲突锁定区间确定部27、以 及暂停判断部28而起作用。

暂停时间提取部26针对各锁定区间,提取出能够等待向共享资源 的访问限制被解除的暂停时间。具体而言,参照与锁定区间对应的锁 定开始命令的自变量,而提取暂停时间。

通过一方的任务进行的共享资源的使用,共享资源的使用被禁止 的另一方的任务能够以下述暂停时间等待一方的任务的信号量释放, 该暂停时间是利用与该另一方的任务的锁定区间对应的锁定开始命令 的自变量而设定的。但是,在即使经过暂停时间,一方的任务仍未释 放信号量的情况下,另一方的任务不执行,而跳转至下一个处理。

冲突锁定区间确定部27参照时钟数合计管理表T03,针对各锁定 区间,确定出属于与锁定区间所属于的任务不同的其他的任务的其他 的锁定区间。在能够排他地利用相同的共享资源的多个任务中的一方 的任务获得信号量的情况下,其他方的任务不能获得相同信号量。在 使用相同信号量的大于或等于2个的锁定区间中,属于不同的任务的 锁定区间对于该信号量的获得产生冲突。冲突锁定区间确定部27针对 各锁定区间,确定出对于信号量的获得产生冲突的其他锁定区间。即, 确定出存在冲突关系的锁定区间的组合。确定出的存在冲突关系的锁 定区间的组合利用冲突锁定区间确定部27记录在排他控制结构管理表 T04(图12)中。排他控制结构管理表T04作为文件形式或者数据库 而记录在存储装置14中。

暂停判断部28参照时钟数合计管理表T03以及排他控制结构管 理表T04,获取锁定区间的时钟数的最大值、以及存在冲突关系的其他 锁定区间的暂停时间。而且暂停判断部28在锁定区间的时钟数的最大 值大于其他锁定区间的暂停时间的情况下,判断为其他的锁定区间有 可能被跳过。具体而言,暂停判断部28在存在冲突关系的大于或等于 2个的锁定区间中,对一方的锁定区间的执行所需要的时钟数的最大值 与利用另一方的锁定区间限定出的暂停时间进行比较。

时钟数表示在微型计算机进行的定时控制中所使用的内部时钟的 数量。对于时钟数,通过微型计算机的每1个时钟的执行时间乘以时 钟数,而求出锁定区间的执行所需要的时间。此外暂停时间表现为在 微型计算机进行的定时控制中所使用的内部时钟的数量。因此,暂停 判断部28对一方的锁定区间的执行所需要的时钟数的最大值、与利用 时钟数表现出的其他锁定区间的暂停时间进行比较。

在一方的锁定区间的执行所需要的时钟数的最大值大于另一方的 锁定区间的暂停时间的情况下,即使经过暂停时间,一方的锁定区间 也不释放信号量,因此暂停判断部28能够判断为另一方的锁定区间有 可能被跳过。

检查结果输出部29将利用暂停判断部28得到的判断结果,与利 用最大时钟数计算部25计算出的时钟数的最大值一起作为排他控制检 查结果D05而输出。对于排他控制检查结果D05,参照图13在后面叙 述。

【利用排他控制检查装置执行的信息处理的顺序】

下面,参照图3~图13,作为本发明的实施方式所涉及的排他控 制检查方法的一个例子,对利用图1以及图2所示的排他控制检查装 置执行的信息处理的顺序进行说明。

首先,在步骤S01中,源代码输入部21将作为检查对象的源代码 D01例如从输入输出装置12读入,存储至存储装置14中。另外,源 代码D01也可以是预先使用输入输出装置12,而由用户读入排他控制 检查装置内,并存储在存储装置14中。在该情况下,不需要步骤S01 的处理。图4(a)、图4(b)、图4(c)作为读入的源代码D01,表 示出用C语言记述的计算机程序的一个例子。作为检查对象的计算机 程序跨越图4(a)、图4(b)、图4(c)所示的3个文件而记述。图 4(a)的文件名是“File1.c”,图4(b)的文件名是“File2.c”,图4 (c)的文件名是“File3.c”。在用C语言记述的计算机程序的一个例 子中,在各文件的左端部记载的从1开始的连续编号表示各文件的“行 编号”。

然后,在步骤S02中,顺序路径确定部22使用入口点一览D02, 确定出将入口点(程序的开始点)作为起点的控制流程,即语句的执 行顺序以及执行路径。

在图4(a)、图4(b)、图4(c)所示的计算机程序中,记述 有4个函数。在图4(a)的“File1.c”中,记述有函数“Task1”。函 数“Task1”在调用2个函数“Func1”以及函数“Func2”之后结束。 函数“Func1”以及函数“Func2”记述在图4(b)的“File2.c”中。 在图4(c)的“File3.c”中,记述有函数“Task2”。函数“Task2”在 调用函数“Func2”之后结束。如图6所示,作为程序的开始点的入口 点是“Task1”以及“Task2”。

图5的表表示在将图4(a)的函数“Task1”作为入口点的情况 下的语句(代码)的执行顺序以及执行路径的一个例子。在图5的表 中,“语句ID”是对源代码D01内的语句赋予的从“1”开始的连续 编号。即,“语句ID”对在构成源代码D01的图4(a)、图4(b)、 图4(c)所示的3个文件的各行中所记载的执行命令,赋予行编号的 顺序。

对于各行的记载是空(例如图4(a)的第10行)、或者只由程 序的块分隔符(“{”、“}”等括号)构成的行(例如图4(a)的 第3、12、15行等),能够判断为在程序执行时,不产生执行时间。 因此,顺序路径确定部22将如上所述的行从当前以及以后的处理的对 象中去除,因此,不对如上所述的行赋予“语句ID”。当然,即使对 如上所述的行赋予语句ID,也不会影响当前以及以后的处理。以将能 够判断为在程序执行时有可能产生执行时间的行全部设为处理的对象 的方式赋予语句ID即可,语句ID的施加方法不限定于本实施方式的 例子。

“前执行语句ID”表示向在该语句之前执行的语句赋予的语句 ID。“下一个执行语句ID”表示向在该语句的下一个执行的语句赋予 的语句ID。

在语句是分支命令、函数调用命令、重复命令的情况下,将与跳 转目的地的语句对应的语句ID登记为下一个执行语句ID。跳转目的地 通常不限于1个,有时也会存在多个,因此,作为下一个执行语句ID, 利用顺序路径确定部22将1个或多个语句ID记录在执行顺序/执行路 径表T01中。在语句不是分支命令、函数调用命令、重复命令的任何 一者的情况下,将源代码D01上的与下一个行编号的位置处所记载的 语句对应的语句ID登记为下一个执行语句ID。

前执行语句ID能够在对源代码D01中所包含的所有的语句登记 下一个执行语句ID之后,登记至执行顺序/执行路径表T01中。例如, 在对源代码D01的语句L01登记前执行语句ID的情况下,参照执行顺 序/执行路径表T01,读取将与语句L01对应的语句ID记录为下一个执 行语句ID的语句L02。即,从在语句L02的后一个执行语句L01,可 知在语句L01的前一个执行的语句是语句L02。因此,对于语句L01, 作为前执行语句ID,记录与语句L02对应的语句ID。通过对源代码 D01的所有的语句,重复同样的操作,能够记录所有的前执行语句ID。

另外,在对于语句L01记录有多个下一个执行语句ID的情况下, 能够通过对所记录的下一个执行语句ID的各自重复同样的处理,而记 录前执行语句ID。

顺序路径确定部22从包含在源代码D01中的语句中对条件分支 进行检测。在条件分支中,包含if~else句法、switch~case句法、循 环语句(for语句、while语句)、3项运算符“:”。顺序路径确定部 22将开始条件分支的语句判断为“分支开始点”,将结束条件分支的 语句判断为“分支结束点”。对确定出的大于或等于2个的“分支开 始点”、“分支结束点”赋予“分支ID”而进行识别。但是对于分支 开始点和与该分支开始点对应的分支结束点,为了明确对应关系而赋 予相同的分支ID。

而且,顺序路径确定部22对于在分支开始点和分支结束点之间存 在的语句,确定出由于条件分支而生成的大于或等于2个的执行路径。 而且,对于确定出的大于或等于2个的执行路径,赋予“路径ID”而 进行识别。

在图5中,例示出将函数“Task1”作为入口点的情况,但即使对 于将函数“Task2”作为入口点的情况,顺序路径确定部22也与图5 同样地,确定出执行顺序以及执行路径。

另外,在图5的例子中,顺序路径确定部22针对位于分支开始点 的语句,确定出由于条件分支而生成的大于或等于2个的执行路径, 另一方面,针对位于分支结束点的语句,不确定执行路径。对于分支 开始点以及分支结束点的语句,是否进行执行路径的确定不限定于本 实施方式的例子。

此外,在图5的例子中,即使在通过条件分支而行进至多个执行 路径中的某个执行路径的情况下,由于在条件语句的评价时产生时钟 数,因此包含条件语句的表示条件分支的语句视为所属于多个执行路 径的语句而处理。如上所述,顺序路径确定部22对于判断为在多个执 行路径中执行的语句,赋予指示出对应的多个执行路径的多个路径ID。

如上述所述,顺序路径确定部22生成如图5的表中所示的在源代 码D01中包含的语句(代码)的执行顺序/执行路径表T01。

如果使用在执行顺序/执行路径表T01中记录的前执行语句ID以 及下一个执行语句ID,则注意到下述性质,即能够提取出在语句的上 游以及下游执行的语句。即,通过参照前执行语句ID,能够依次参照 前1个执行的语句,因此对于某个语句,能够提取出在其上游执行的 语句。此外,通过参照下一个执行语句ID,能够依次参照后1个执行 的语句,因此能够提取出在下游执行的语句。

然后,执行步骤S03~S05所示的信息处理F01。在步骤S03中, 锁定区间确定部23基于图7所示的锁定开始命令/解除命令列表D03, 确定出从锁定开始命令到解除命令为止的区间(锁定区间)。在步骤 S04中,暂停时间提取部26针对确定出的各锁定区间,提取暂停时间。 在步骤S05中,时钟数计算部24基于图8所示的所需时钟数一览D04, 计算出在锁定区间中包含的各语句的执行所需要的时钟数。

图7的表表示锁定开始命令/解除命令列表D03的一个例子。作为 锁定开始命令,定义出“Sem_Lock”,作为锁定解除命令,定义出 “Sem_UnLock”。用于识别在源代码D01中所使用的多个信号量的信 号量ID,利用在“Sem_Lock”以及“Sem_UnLock”中分别被引用的 第1自变量进行指定。此外,暂停时间利用在“Sem_Lock”中被引用 的第2自变量进行指定。例如,在图4(a)的第4行所示的“Sem_Lock (ID1,100)”表示通过以信号量ID为“ID1”进行识别的信号量决 定的锁定区间的开始命令,表示从第4行开始的锁定区间的暂停时间 是100(时钟数)。在图4(a)的第9行目所示的“Sem_UnLock(ID1)” 表示通过信号量ID为“ID1”的信号量决定的锁定区间的解除命令。

图8的表表示所需时钟数一览D04的一个例子。针对在语句中记 述的每个命令,定义出该命令的执行中所必需的时钟数。

此处,步骤S03~S05能够并行地实施。参照图9的流程图,对 步骤S03~S05所示的信息处理F01的详细的处理顺序的一个例子进行 说明。

首先,在步骤S101中,对用于识别锁定区间的区间ID进行初始 化。在步骤S102中,对用于识别在源代码D01中所包含的任务的任务 ID进行初始化。进入步骤S103,读入利用在步骤S102中初始化的任 务ID确定出的函数“Task1”中的最前面的语句(语句ID=1)。

锁定区间确定部23参照图7的锁定开始命令/解除命令列表D03, 判断所读入的语句是否与锁定开始命令“Sem_Lock”或者锁定解除命 令“Sem_UnLock”一致。在与锁定开始命令“Sem_Lock”一致的情况 下,进入步骤S105。在与锁定解除命令“Sem_UnLock”一致的情况下, 进入步骤S107。在与锁定开始命令“Sem_Lock”以及锁定解除命令 “Sem_UnLock”的任意一者均不一致的情况下,进入步骤S108。

在步骤S105中,对区间ID进行累加。进入步骤S106,将作为语 句类别的锁定开始命令(“开始”)、区间ID、信号量ID、以及暂停 时间记录在锁定区间确定表T02中。此处记录的信号量ID、以及暂停 时间通过参照锁定开始命令的第1自变量以及第2自变量而得到。然 后,进入步骤S113。

另一方面,在步骤S107中,将作为语句类别的锁定解除命令(“解 除”)、信号量ID相同的上游的锁定开始命令的区间ID、以及信号量 ID记录在锁定区间确定表T02中。然后,进入步骤S113。

在步骤S107中,信号量ID通过参考锁定解除命令的第1自变量 而得到。此外,上游的锁定开始命令能够通过使用执行顺序/执行路径 表T01的前执行语句ID而提取。能够通过参照与所读入的语句对应的 前执行语句ID,而提取出在前1个执行的语句。在该语句不是锁定开 始命令的情况下,参照前执行语句ID,而提取出再前1个执行的语句。 能够通过重复同样的操作,而最终提取出上游的锁定开始命令。而且 对上游的锁定开始命令的信号量ID是否与锁定解除命令的信号量ID 相同进行判定。在相同的情况下,将上游的锁定开始命令的区间ID记 录在锁定区间确定表T02中。另外,有时在前执行语句ID中,记载有 与在前1个执行的语句对应的多个语句ID,因此也可能会出现存在多 个上游的锁定开始命令的情况。

在步骤S108中,锁定区间确定部23对所读入的语句是否位于从 锁定开始命令到锁定解除命令为止的锁定区间内进行判定。在位于锁 定区间内的情况下(步骤S108中YES),进入步骤S109。另一方面, 在不位于锁定区间内的情况下(步骤S108中NO),进入步骤S110, 锁定区间确定部23作为语句类别,而将“区间外”记录在锁定区间确 定表T02中。然后,进入步骤S113。

在步骤S110中,锁定区间确定部23作为语句类别,而将“区间 内”以及区间ID记录在锁定区间确定表T02中。进入步骤S111,时 钟数计算部24提取出在所读入的语句中记述的所有命令。进入步骤 S112,时钟数计算部24基于图8所示的所需时钟数一览D04,计算出 从所读入的语句中提取出的所有命令的执行中所必需的时钟数的总 和。由此,时钟数计算部24能够求出所读入的语句的执行中所需要的 时钟数。时钟数计算部24将计算出的时钟数记录在锁定区间确定表 T02中。然后,进入步骤S113。

在步骤S113中,判断所读入的语句是否是锁定区间内的最后的语 句。在不是锁定区间内的最后的语句的情况下(步骤S113中NO), 参照执行顺序/执行路径表T01的下一个执行语句ID,读入下一个语句 (S118),返回步骤S104。另一方面,在所读入的语句是锁定区间内 的最后的语句的情况下(步骤S113中YES),进入步骤S114。在存 在尚未进行判定的语句的情况下(S114中YES),进入步骤S115,读 入尚未进行判定的语句,返回步骤S104。

另一方面,在没有尚未进行判定的语句的情况下(S114中NO), 进入步骤S116,判断利用在步骤S102中初始化的任务ID确定出的函 数“Task1”是否是最后的任务。如果不是最后的任务(步骤S116中 NO),则使任务ID递增(步骤S117),并返回步骤S103。而且,对 于函数“Task2”,执行上述的流程。另一方面,如果是最后的任务(步 骤S116中YES),则图9的流程图结束。

所读入的语句是否位于从锁定开始命令到锁定解除命令为止的锁 定区间内的判定通过下述过程进行,即,使用执行顺序/执行路径表T01 的前执行语句ID以及下一个执行语句ID,对在所读入的语句的上游以 及下游执行的语句进行检索,判断是否存在锁定开始命令、锁定解除 命令。对于检索而得到的锁定开始命令和锁定解除命令,如果信号量 ID以及区间ID相同,则锁定区间确定部23能够判断为所读入的语句 包含在利用区间ID指定出的锁定区间中。此外,通常在源代码D01 包含条件分支的情况下,有可能会出现所读入的语句在多个锁定区间 中的情况。

在上游以及下游执行的语句的检索中,对于在任务中所包含的所 有的锁定开始命令以及锁定解除命令,需要进行向锁定区间确定表T02 的记录,但在图9的流程图的处理中以简化的方式示出。

图10的表作为图9的流程图的执行结果的一个例子,表示出针对 图4(a)的函数“Task1”的执行结果,表示出针对图4(a)的函数“Task1” 的锁定区间确定表T02。将语句ID=2~7的一组语句确定为利用区间 ID=1识别出的锁定区间。在与区间ID=1的锁定区间的锁定开始命令 “Sem_Lock”一致的语句ID=2处,记录有信号量ID=1以及暂停时间 =100。对于在语句ID=2~7处执行的语句ID=3~6的一组语句中,分 别记录有“区间内(区间ID=1)”,对于语句ID=3~6的一组语句, 分别记录有语句中所包含的命令列表以及语句的执行所需要的时钟 数。对于与锁定区间(区间ID=1)的锁定解除命令“Sem_UnLock” 一致的语句ID=7的语句,记录有信号量ID=1。另外,在锁定区间(区 间ID=1)中,在1个锁定区间中存在有分支为以路径ID(1,1)(1, 2)分别识别出的2个执行路径的分支处理。

同样地,将按照语句ID=9、10、15、16、14的顺序执行的一组 语句确定为以区间ID=2识别出的锁定区间。此外,将按照语句ID=12、 13、17、18、14的顺序执行的一组语句确定为以区间ID=3识别出的锁 定区间。在锁定区间(区间ID=2)以及锁定区间(区间ID=3)中使用 的信号量(信号量ID=ID2)是共通的。另一方面,在锁定区间(区间 ID=2)以及锁定区间(区间ID=3)中使用的信号量(信号量ID=ID2) 与在锁定区间(区间ID=1)中使用的信号量(信号量ID=ID1)不同。 另外,锁定区间(区间ID=2)以及锁定区间(区间ID=3)存在于2个 执行路径中,该2个执行路径将语句ID=8的语句作为分支开始点(分 支ID=2),将语句ID=14的语句作为分支结束点(分支ID=2),而分 别以路径ID(2,1)(2,2)进行识别。

如上述的方式,锁定区间确定部23以及时钟数计算部24以执行 顺序/执行路径表T01作为基础,生成如图10的表所示的在源代码D01 中所包含的语句(代码)的锁定区间确定表T02。在该锁定区间确定表 T02中记录由锁定区间确定部23所确定出的语句类别、区间ID、信号 量ID、暂停时间。而且,记录由时钟数计算部24所提取出的语句内的 命令、或者该命令的类别、时钟数。

返回图3,在步骤S06中,时钟数计算部24对于利用锁定区间确 定部23确定出的锁定区间中所包含的各个执行路径,分别计算出锁定 区间的执行所需要的时钟数。具体而言,将图9的步骤S112中计算出 的、各语句的执行所需要的时钟数从在存储装置14中记录的锁定区间 确定表T02中读取出,对于各锁定区间中所包含的所有的语句,合计 时钟数。由此,对于各执行路径,能够计算出锁定区间的执行中所需 要的时钟数。此时,在锁定区间(锁定ID=1)内存在大于或等于2个 的执行路径(路径ID(1,1)(1,2))的情况下,对于各执行路径, 计算出锁定区间的执行所需要的时钟数。计算出的锁定区间的执行所 需要的时钟数记录在图11所示的时钟数合计管理表T03中。

在图11的时钟数合计管理表T03中,“区间内语句的时钟数合 计”,是针对函数“Task1”以及函数“Task2”中所包含的锁定区间 (锁定ID=1~4),表示锁定区间的执行所需要的时钟数。对于锁定区 间(锁定ID=1),在锁定区间内存在有2个执行路径(路径ID(1,1) (1,2)),因此针对每个执行路径表示出锁定区间的执行所需要的 时钟数。例如,如图10所示,在以路径ID(1,1)识别出的执行路径 中包含语句ID=3、4的一组语句。语句ID=3的语句的执行所需要的时 钟数是“1”,语句ID=4的语句的执行所需要的时钟数是“3”。因此, 如图11所示,对于利用路径ID(1,1)识别出的执行路径,锁定区间 (锁定ID=1)的执行所需要的时钟数是“1+3”=“4”。

在步骤S07中,最大时钟数计算部25参照时钟数合计管理表T03 中的“区间内语句的时钟数合计”,针对各锁定区间,计算出在步骤 S06中计算出的时钟数的最大值。如图11所示,对于锁定区间(锁定 ID=1),对以路径ID(1,1)识别出的执行路径的时钟数(=4)和以 路径ID(1,2)识别出的执行路径的时钟数(=3)进行比较,选择较 大一方的时钟数(=4)。在1个锁定区间中只包含有1个执行路径的 情况下,在步骤S06中计算出的时钟数直接成为该锁定区间中的时钟 数的最大值。

如图11所示,实施方式所涉及的排他控制检查装置能够将作为检 查对象的源代码D01中所包含的排他控制所涉及的构造可视化。换言 之,作为在源代码D01中所包含的排他控制所涉及的构造,能够确定 出入口点、区间ID、信号量ID、路径ID、路径中所包含的语句ID。 而且,能够通过静态的解析方法,对于在作为检查对象的源代码D01 中可执行的各个锁定区间,分别求出锁定区间的执行所需要的时钟数 的最大值。因此,对于在计算机程序中可执行的锁定区间,能够不发 生遗漏地确定出有可能发生系统的响应性恶化的位置。

返回图3,在步骤S08中,冲突锁定区间确定部27参照时钟数合 计管理表T03,对于各锁定区间,确定出属于与锁定区间所属于的任务 不同的其他任务的其他锁定区间。此外,在实施方式中,在源代码D01 中,使用多个种类的信号量(信号量ID=ID1以及ID2)。如果信号量 不同,则不会产生与信号量的获取相关的冲突关系。因此,在使用相 同信号量的锁定区间中,确定出属于不同的任务的锁定区间的组合。 图12表示排他控制结构管理表T04。在排他控制结构管理表T04中, 记录存在冲突关系的程序块区间的组合。在步骤S08中,利用冲突锁 定区间确定部27对排他控制结构管理表T04进行读取或者更新。

锁定区间(锁定ID=1)属于函数“Task1”,且使用信号量(信 号量ID=ID1)。锁定区间(锁定ID=2)以及锁定区间(锁定ID=3) 属于函数“Task1”,且使用信号量(信号量ID=ID2)。另一方面,锁 定区间(锁定ID=4)属于函数“Task2”,且使用信号量(信号量ID=ID2)。

因此,锁定区间(锁定ID=2)、锁定区间(锁定ID=3)、以及 锁定区间(锁定ID=4)针对相同的共享资源,使用相同的信号量(信 号量ID=ID2)而执行排他控制。此处,锁定区间(锁定ID=2)和锁定 区间(锁定ID=4)属于不同的任务“Task1”、“Task2”,因此对于 信号量ID=ID2的信号量的获取,存在冲突关系。同样地,锁定区间(锁 定ID=3)和锁定区间(锁定ID=4)对于信号量ID=ID2的信号量的获 取存在冲突关系。另一方面,锁定区间(锁定ID=2)和锁定区间(锁 定ID=3)使用相同信号量ID=ID2的信号量,但属于相同的任务 “Task1”,因此对于信号量ID=ID2的信号量的获取,不会产生冲突。

对于锁定区间(锁定ID=1),与其他的锁定区间(锁定ID=2)、 锁定区间(锁定ID=3)、锁定区间(锁定ID=4)相比所使用的信号量 不同,因此不会产生冲突。

如上述所述,冲突锁定区间确定部27对于各锁定区间,使用该锁 定区间所属于的任务、以及所使用的信号量的信息,而确定是否与其 他锁定区间产生冲突。在执行步骤S08后,排他控制结构管理表T04 成为存储有下述信息的状态,该信息是由冲突锁定区间确定部27确定 出的、关于存在冲突关系的程序块区间的组合的信息。

然后,进入步骤S09,暂停判断部28判断锁定区间的时钟数的最 大值是否大于产生冲突的其他锁定区间的暂停时间。具体而言,暂停 判断部28参照在锁定区间确定表T02中记录的各锁定区间的暂停时 间、以及在排他控制结构管理表T04中记录的存在冲突关系的程序块 区间的组合的信息。然后,在步骤S08中确定出的存在冲突关系的锁 定区间的组合中,对一方的锁定区间的执行所需要的时钟数的最大值、 与另一方的锁定区间的暂停时间进行对比。另外,如前所述,暂停时 间表现为在微型计算机进行的定时控制中所使用的内部时钟的数量, 因此能够与时钟数的最大值进行比较。

在一方的锁定区间的执行中所需要的时钟数的最大值大于另一方 的锁定区间的暂停时间的情况下(步骤S09中YES),暂停判断部28 判断为有可能跳过另一方的锁定区间(步骤S10)。

在一方的锁定区间的执行所需要的时钟数的最大值小于或者等于 另一方的锁定区间的暂停时间的情况下(步骤S09中NO),暂停判断 部28判断为有可能跳过另一方的锁定区间(步骤S12)。

暂停判断部28对于在步骤S09中确定出的所有程序块区间的组 合,执行步骤S09的判断。

进入步骤S11,检查结果输出部29将利用暂停判断部28得到的 判断结果,与利用最大时钟数计算部25计算出的时钟数的最大值一起, 作为排他控制检查结果D05而输出。图13是表示排他控制检查结果 D05的一个例子的表。例如,一方的锁定区间(锁定ID=3)的时钟数 的最大值(=6)大于产生冲突的另一方的锁定区间(锁定ID=4)的暂 停时间(=5)。即,在一方的锁定区间(锁定ID=3)对信号量ID=ID2 的信号量进行锁定的期间,另一方的锁定区间(锁定ID=4)不去获取 信号量ID=ID2的信号量,而有可能以等待信号量解除的状态,经过暂 停时间。因此,暂停判断部28判断为在函数“Task1”的执行中有可 能跳过锁定区间(锁定ID=4)。同样地,一方的锁定区间(锁定ID=4) 的时钟数的最大值(=11)大于产生冲突的另一方的锁定区间(锁定 ID=2)的暂停时间(=10)。因此,暂停判断部28判断为在函数“Task2” 的执行中有可能跳过锁定区间(锁定ID=2)。

与此相对,一方的锁定区间(锁定ID=2)的时钟数的最大值(=5) 不大于产生冲突的另一方的锁定区间(锁定ID=4)的暂停时间(=5)。 同样地,一方的锁定区间(锁定ID=4)的时钟数的最大值(=11)不 大于产生冲突的另一方的锁定区间(锁定ID=3)的暂停时间(=15)。 因此,对于这些锁定区间的组合,能够判断为不可能以等待信号量的 解除的状态经过暂停时间。另外,在图13中记载有使用信号量ID=ID1 的信号量的锁定区间(锁定ID=1),但在源代码D01中不存在使用信 号量ID=ID1的信号量的其他锁定区间,因此不存在冲突关系。

【实施方式的效果】

在计算机程序中,在多个任务、应用程序访问相同的资源 (resource)的情况下,为了避免由于访问的冲突而导致的数据破坏, 采取下述处理,即通过信号量等的排他控制,而暂时禁止来自其他任 务的访问。即,在一方的任务使用资源的一定区间,对其他方的任务 的启动进行锁定。被锁定的任务在锁定的任务释放信号量之后启动, 执行向资源的访问。此处,如果对来自其他任务的资源访问进行锁定 的区间(锁定区间)设定错误,则会产生锁定的任务以不合理的时间 占有资源,使其他任务的动作延迟这样的问题。其结果,会导致任务 的响应时间延长,系统的动作迟钝这样的问题。

为了避免如上所述的问题,将系统的响应性限制在容许范围内, 对等待信号量的释放,即等待锁定解除的暂停时间进行设定。在超过 暂停时间,信号量未被释放的情况下,跳过向资源的访问处理,执行 其之后的处理。

然而,如果由于遗留代码的沿用、扩张而导致锁定区间预料之外 地变长,则会引起相对于所设定的暂停时间,锁定区间的平均处理时 间变长,暂停频发这样的问题。此外,在大规模的软件中,存在不能 掌握锁定的冲突关系,设定不恰当的暂停时间这样的问题。

因此,实施方式所涉及的排他控制检查装置利用顺序路径确定部 22,确定出作为检查对象的源代码D01(计算机程序)中所包含的语 句的执行顺序以及执行路径,基于确定出的语句的执行顺序以及执行 路径,锁定区间确定部23确定出下述锁定区间,其中,该锁定区间 由对计算机程序中所包含的多个任务可利用的共享资源执行排他控 制的一组语句构成。而且,对于确定出的锁定区间中所包含的各执行 路径,时钟数计算部24计算出锁定区间的执行所需要的时钟数。由 此,对于执行排他控制的各锁定区间,能够求出锁定时间的最大值。 利用检查结果输出部29,将确定出的执行顺序以及执行路径、锁定区 间、计算出的时钟数等的信息作为检查结果而输出,因此对于在计算 机程序中可执行的锁定区间,能够使用户注意到系统的响应性有可能 恶化的位置。由此,能够将暂停时间适当化,改善系统的响应性。此 外,能够通过利用静态方法解析计算机程序,从而能够将实际中未执 行的锁定区间、等待锁定解除处理作为检查对象,因此抑制检验的遗 漏。

此外,排他控制检查装置利用暂停时间提取部26对于各锁定区 间,提取出能够等待对共享资源的访问限制解除的、在锁定区间中设 定的暂停时间,基于锁定区间所获取的信号量、以及锁定区间所属于 的任务的信息,利用冲突锁定区间确定部27针对各锁定区间,确定 出形成冲突关系的其他锁定区间。而且,暂停判断部28在形成冲突 关系的一方的锁定区间的时钟数的最大值大于形成冲突关系的另一 方的锁定区间的暂停时间的情况下,判断为另一方的锁定区间有可能 被跳过,该判断结果利用检查结果输出部29被输出。由此,能够使 用户注意到例如由于遗留代码的移植错误、分散开发的源代码的结合 错误而导致设定有不恰当的暂停时间的位置。因此,能够实现暂停时 间的适当化,抑制暂停的频发。

作为其他的变形例,也可以是例如在图3的步骤S09以及S10中, 针对判断为有可能发生跳过的、存在冲突关系的锁定区间的组合,排 他控制检查装置将另一方的锁定区间的暂停时间相对于一方的锁定区 间的时钟数的最大值的比例计算为检验优先级,而作为排他控制检查 结果D05而输出。该比例(检验优先级)越高,即越接近100%,排 他控制所涉及的检验优先级越高。在作为有可能发生跳过的位置,输 出对多个锁定区间的组合进行确定的信息的情况下,能够向用户告知 作为检验对象的优先级,因此能够提高用户的检验作业的效率。通过 对检验优先级小于100%但非常接近100%的值的锁定区间的组合进行 检查,能够高效地发现由于遗留代码的移植错误、分散开发的源代码 的结合错误而导致设定有不恰当的暂停时间的位置。

上面,对本发明的实施方式进行了说明,但这些实施方式仅是为 了便于理解本发明而记载的例示,本发明不限定于该实施方式。本发 明的技术范围不限于在上述实施方式中所公开的具体的技术问题,也 包含能够容易从其中导出的各种变形、变更、替代技术等。本领域技 术人员从该公开内容能够得到各种的替代实施方式、实施例以及应用 技术。

本申请基于2013年1月21日申请的日本专利申请第2013-008356 号申请优先权,将该申请的全部内容作为参照引入本说明书中。

工业实用性

根据本发明,能够利用静态方法对计算机程序进行解析,能够对 执行排他控制的各锁定区间,求出锁定时间的最大值。因此,对于在 计算机程序中可执行的锁定区间,能够使用户注意到系统的响应性有 可能发生恶化的位置。

标号的说明

21 源代码输入部

22 顺序路径确定部

23 锁定区间确定部

24 时钟数计算部

25 最大时钟数计算部

26 暂停时间提取部

27 冲突锁定区间确定部

28 暂停判断部

29 检查结果输出部

D01 源代码(计算机程序)

D02 入口点一览

D03 锁定开始命令/解除命令列表

D04 所需时钟数一览

D05 排他控制检查结果

T01 执行顺序/执行路径表

T02 锁定区间确定表

T03 时钟数合计管理表

T04 排他控制结构管理表

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号