• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 27
    • 下载费用:30 金币  

    重庆时时彩在线购买: 排他控制检查装置、排他控制检查方法、排他控制检查程序.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN201380069267.X

    申请日:

    2013.12.25

    公开号:

    CN104885061A

    公开日:

    2015.09.02

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20131225|||公开
    IPC分类号: G06F11/36 主分类号: G06F11/36
    申请人: 日产自动车株式会社
    发明人: 长谷川美和子
    地址: 日本神奈川县
    优先权: 2013-008356 2013.01.21 JP
    专利代理机构: 北京天昊联合知识产权代理有限公司11112 代理人: 何立波; 张天舒
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201380069267.X

    授权公告号:

    ||||||

    法律状态公告日:

    2016.11.09|||2015.09.30|||2015.09.02

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

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

    权利要求书

    权利要求书
    1.  一种排他控制检查装置,其对计算机程序中所包含的排他控制进行检查,
    该排他控制检查装置的特征在于,具有:
    顺序路径确定部,其确定作为检查对象的所述计算机程序中所包含的语句的执行顺序以及执行路径;
    锁定区间确定部,其基于利用所述顺序路径确定部确定出的所述语句的执行顺序以及执行路径,确定下述锁定区间,其中,该锁定区间由对所述计算机程序中所包含的多个任务能够利用的共享资源执行排他控制的一组语句构成;
    时钟数计算部,其对于利用所述锁定区间确定部确定出的所述锁定区间中所包含的各执行路径,计算所述锁定区间的执行所需要的时钟数;
    最大时钟数计算部,其对于各所述锁定区间,计算利用所述时钟数计算部计算出的所述时钟数的最大值;以及
    检查结果输出部,其输出利用所述最大时钟数计算部计算出的所述时钟数的最大值。

    2.  根据权利要求1所述的排他控制检查装置,其特征在于,还具有:
    暂停时间提取部,其对于各所述锁定区间,提取能够等待对所述共享资源的访问限制解除的暂停时间;
    冲突锁定区间确定部,其对于各所述锁定区间,确定属于与所述锁定区间所属于的任务不同的其他任务的其他锁定区间;以及
    暂停判断部,其在所述锁定区间的所述时钟数的最大值大于所述其他锁定区间的暂停时间的情况下,判断为所述其他锁定区间有可能被跳过,
    所述检查结果输出部输出利用所述暂停判断部得到的判断结果。

    3.  一种排他控制检查方法,其对计算机程序中所包含的排他控制进行检查,
    该排他控制检查方法的特征在于,
    确定作为检查对象的所述计算机程序中所包含的语句的执行顺序以及执行路径;
    基于所述语句的执行顺序以及执行路径,确定下述锁定区间,其中,该锁定区间由对所述计算机程序中所包含的多个任务能够利用的共享资源执行排他控制的一组语句构成;
    对于所述锁定区间中所包含的各执行路径,计算所述锁定区间的执行所需要的时钟数;
    对于各所述锁定区间,计算所述时钟数的最大值;以及
    输出所述时钟数的最大值。

    4.  一种排他控制检查程序,其对计算机程序中所包含的排他控制进行检查,
    该排他控制检查程序的特征在于,使计算机实现下述功能:
    确定作为检查对象的所述计算机程序中所包含的语句的执行顺序以及执行路径的功能;
    基于所述语句的执行顺序以及执行路径,确定下述锁定区间的功能,其中,该锁定区间由对所述计算机程序中所包含的多个任务能够利用的共享资源执行排他控制的一组语句构成;
    对于所述锁定区间中所包含的各执行路径,计算所述锁定区间的执行所需要的时钟数的功能;
    对于各所述锁定区间,计算所述时钟数的最大值的功能;以及
    输出所述时钟数的最大值的功能。

    说明书

    说明书排他控制检查装置、排他控制检查方法、排他控制检查程序
    技术领域
    本发明涉及一种排他控制检查装置、排他控制检查方法、排他控制检查程序。
    背景技术
    已知一种锁定动作测定方法(参照专利文献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?!跋乱桓鲋葱杏锞銲D”表示向在该语句的下一个执行的语句赋予的语句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 排他控制结构管理表

    关 键 词:
    排他 控制 检查 装置 方法 程序
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:排他控制检查装置、排他控制检查方法、排他控制检查程序.pdf
    链接地址://www.4mum.com.cn/p-5894511.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03