当前位置: 首页 > 专利查询>微软公司专利>正文

事务型处理过程的数据流分析的方法和系统技术方案

技术编号:2865035 阅读:204 留言:0更新日期:2012-04-11 18:40
提供一种XLANG/s编译方法,它用一个程序信号流图的数据流分析来确定一个数据对象的使用周期。根据抽象计算机指令创建一个信号流图。对基本程序块指定一个深度优先次序并确定基本程序块两两之间的支配关系。确定信号流图内是否存在循环,如果存在循环,标识该循环。还确定关于数据对象的一个创建点,撤消点和锁定点。在计算机代码中插入指令以在创建点创建数据对象,在撤消点撤销数据对象和在锁定点锁定数据对象。

【技术实现步骤摘要】
专利说明事务型处理过程的数据流分析 专利
本专利技术总地涉及计算机软件编译程序。具体地,本专利技术涉及在编译时执行程序代码的静态数据流分析的一种XLANG/s编译方法。更具体地,本专利技术涉及这样一种方法,其借助于静态数据流分析而在编译时自动确定数据对象创建,锁定和撤消点。
技术介绍
商行可以经由一个诸如国际互联网或万维网那样的分布式环境用网络服务来与其他实体相互作用。为了确保成功地完成这样一个交互,必须设置一个或多个协议用于传送信息给参加者或传送来自参加者的信息,而且还必须在每一个参加者结束处安装特殊的商务应用程序。这种交互是信息驱动地。例如,购买者发送一个订货单给销售者。然后销售者核查他的存货清单来确定它是否能够提供所列项目。如果可以提供,销售者发送一个带有价格的回执返回给购买者。最后,购买者接受或拒绝销售者的报价(和/或可能发出另一个订单)。就如该实例中显然的,每一个参加者商务应用程序对信息的收到作出反应。 网络服务使用基于软件代码的计算机程序来执行诸如以上所描述的那些基于信息的业务往来。用一种程序设计语言交替地执行这种软件代码。程序设计语言一般允许程序员声明一个或多个保持程序状态的数据对象,诸如一个变量。 在一种能够执行上述业务往来的面向消息的语言中,数据对象可以是来自一些外部信号源并作为输入的一个信息。这样一个信息可以很大,因而存储多个数据对象可能损耗大量的存储资源。因此,一旦软件的正常运行不再需要一个数据对象的时侯就应该删除或“撤消”该数据对象。通常,由程序员手工地往软件代码中插入撤消点,该撤消点是用来撤消一个或多个数据对象的代码指令。程序员通常会选择将要撤消的特定数据对象以及代码内将要发生这个删除的位置。通常,程序员会试图在最后使用该数据对象之后立即设置撤消点。照这种方式,将数据对象在存储器中保持尽可能简短的持续时间。 作为手工执行的结果,这种传统的撤消数据对象的方法因而在设置撤消点和选择将要删除的数据对象中存在潜在的人为误差。在正执行一个基于信息的事务处理的程序的上下文中存在一个额外的缺陷。例如,在这样一个程序中,可以中断信息或者发生其他调用特殊“补偿”软件部分的误差,这些软件部分可以再发送一个信息或者尝试其他的处理来校正或补偿该误差。补偿部分对软件代码增加了复杂性,从而使程序员选择代码内专用位置的任务变得更为困难,其中应该设置一个撤消点。另外,用于基于信息的事务处理的程序代码也许是特别复杂的,带有许多并行处理的操作,具有不能完成某些操作或者可以在运行时间调用一个补偿部分的可能性。因此,在这样一种情况下选择一个有关一个撤消点的位置是困难的,如同必须考虑在处理过程中所采用的每一个可能的逻辑路径。 上述传统设置撤销点的缺陷同样适用于“创建”和“锁定”点以及其他任何类型数据对象处理操作。创建点是软件代码内的一个位置,其中创建一个数据对象。理论上,应该在第一次使用该数据对象之前立即设置一个创建点,再一次减少存储器资源的损耗。锁定点是软件代码内的一个位置,其中使不涉及当前事务处理的程序部分得不到诸如变量那样的一组共享对象。因此在事务处理期间,一个外部元件不能改变分配给数据对象的值,因而在处理过程期间避免误差。就像创建点那样,应该尽可能接近于使用数据对象而设置锁定点来避免不必要的变量锁定。然而,在执行基于信息的事务处理的软件程序中,不适当地设置一个锁定点可能会导致程序带有错误或甚至停止操作。在复杂的软件中,保持所有可能的逻辑路径的轨迹和伴随的补偿部分来在最适合的位置设置锁定点对程序员而言变得越来越困难,该最合适的位置是尽可能接近于使用数据对象而不在如果误差发生时会导致错误的位置。 本领域技术人员应该知道,编译程序将程序员所使用的高级代码转换成在运行时间能够快速执行的机器可读的语言。编译时,编译程序制订程序映射出不同的可能的逻辑路径来创建这种逻辑路径的一个信号流图。该信号流图用于程序正确性的语义分析和产生最有效的代码。 传统编译程序缺少分析程序,和/或产生信号流图的功能,以这样一种方式能够确定创建点,锁定点和/或撤消点最合适的设置。另外,传统编译程序缺少在程序中插入这些点的能力,所以将会在运行时在适当的点创建,锁定和/创建相应的数据对象。 因此,需要诸如XLANG/s那样的一种用于分析软件的方法,它能够以这样一种关于能够确定有关数据对象操作的适合点的方式执行基于信息的事务处理。特别地,需要一种创建程序信号流图的方法,该程序能够支持对数据对象的程序处理的分析。特别地,需要一种编译计算机代码的方法,此代码涉及产生一个数据流图并在该数据流图上执行静态数据流分析来确定对于程序中数据对象而言合适的创建点,锁定点和撤消点。更特别地,需要一个执行与这样一个程序相关联的信号流图分析并确定在运行时是否发生数据对象误差的编译程序。 专利技术概述 考虑到上述的局限性和缺点,提供一种XLANG/s编译方法,它用一个程序信号流图的数据流分析来确定其诸如变量那样的数据对象的使用期。根据该方法,根据抽象的计算机指令来创建一个信号流图,其中该信号流图具有多个基本程序块和一个数据对象,而且其中从计算机代码所形成的一个语义分析树中翻译出该抽象指令。对基本程序块指定一个深度优先次序并确定基本程序块两两之间的支配关系。确定关于信号流图内是否存在有循环,如果存在有循环,标识该循环。还确定关于数据对象的应用,并根据该应用,标识的循环,支配关系和多个基本程序块的深度优先次序,确定关于数据对象的一个创建点,撤消点和锁定点。在计算机代码中插入指令以在创建点创建数据对象,在撤消点撤销数据对象和在锁定点锁定数据对象。 附图的简要说明 连同附图来阅读将更好地理解上述摘要和以下优选实施例的详细描述。为了举例说明本专利技术,在附图中显示了本专利技术了示范性实施例;然而,本专利技术并不局限于所公开的特定方法和工具。在附图中 附图说明图1是一个显示可以实现本专利技术的特征的示范性计算环境的框图; 图2是一个显示可以实现本专利技术的特征的示范性网络计算环境的框图; 图3是一个显示根据本专利技术一个实施例的一个示范性分解的框图; 图4是一个举例说明根据本专利技术一个实施例的一种示范性XLANF/s代码编译方法的流程图; 图5是一个显示根据本专利技术一个实施例的抽象指令的示范性信号流图的框图; 图6A-F是显示根据本专利技术一个实施例的基本程序块的示范性信号流图的框图; 图7是一个显示根据本专利技术一个实施例的带有分配给每一个基本程序块的深度优先编号的示范性信号流图的框图; 图8是一个显示根据本专利技术一个实施例的带有赋值循环的一个示范性信号流图的框图; 图9是一个举例说明根据本专利技术一个实施例的一种为一个数据对象计算一个或多个创建点的示范性方法的流程图; 图10是一个举例说明根据本专利技术一个实施例的一种为一个数据对象计算一个或多个撤消点的示范性方法的流程图;以及 图11A-B是一个举例说明根据本专利技术一个实施例的一种为一个数据对象设置锁定点的示范性方法的流程图。 示意性实施例的详细说明 概述 提供一种把XIANG/s代码分解成一个或多个表示代码的逻辑操作的信号流图的XIANG/s编译方法。例如,该方法在信号流图中标识诸如变量那样的一个数据对象本文档来自技高网...

【技术保护点】
一种编译计算机代码的计算机执行方法,包括:根据抽象计算机指令创建一个信号流图,其中该信号流图具有多个基本程序块和至少一个数据对象,其中将抽象指令转换成由计算机代码形成的一个语义分析树;对多个基本程序块指定一个深度优先次序;   确定多个基本程序块两两之间的支配关系;确定信号流图内是否存在有循环,如果存在有循环,标识该循环;确定至少一个数据对象的应用;根据该应用,标识的循环,基本程序块的支配关系和深度优先次序来为至少一个数据对象确定一个 创建点,撤消点和锁定点;以及在计算机代码中插入指令以在创建点创建至少一个数据对象,在撤消点撤消至少一个数据对象并在锁定点锁定至少一个数据对象。

【技术特征摘要】
US 2003-8-26 10/648,4611.一种编译计算机代码的计算机执行方法,包括根据抽象计算机指令创建一个信号流图,其中该信号流图具有多个基本程序块和至少一个数据对象,其中将抽象指令转换成由计算机代码形成的一个语义分析树;对多个基本程序块指定一个深度优先次序;确定多个基本程序块两两之间的支配关系;确定信号流图内是否存在有循环,如果存在有循环,标识该循环;确定至少一个数据对象的应用;根据该应用,标识的循环,基本程序块的支配关系和深度优先次序来为至少一个数据对象确定一个创建点,撤消点和锁定点;以及在计算机代码中插入指令以在创建点创建至少一个数据对象,在撤消点撤消至少一个数据对象并在锁定点锁定至少一个数据对象。2.根据权利要求1所述的计算机执行方法,其中确定一个创建点进一步包括标识至少一个数据对象的第一次使用并标识一个第一基本程序块,在该基本程序块中第一次使用发生自多个基本程序块,其中该至少一个数据对象的第一次使用是初始创建点;标识至少一个数据对象在第一次使用后的一次使用并标识一个第二基本程序块,在该基本程序块中接下来的使用发生自多个基本程序块;计算第一基本程序块的预支配顶点与第二基本程序块的预支配顶点的交集;确定交集是否包含第一基本程序块;以及如果交集不包含第一基本程序块,则从交集中选择一个新创建点。3.根据权利要求2所述的计算机执行方法,其中从交集中选择一个新创建点包括确定是否新创建点与初始创建点在不同的循环内,如果是这样,那么选择一个新创建点,它绕过在初始创建点和新创建点之间的所有内部循环。4.根据权利要求1所述的计算机执行方法,其中确定一个撤消点包括标识至少一个数据对象的最后一次使用并标识一个第一基本程序块,在该基本程序块中最后一次使用发生于多个基本程序块,其中该至少一个数据对象的最后一次使用是初始撤消点;标识至少一个数据对象在最后一次使用前的一次使用并标识一个第二基本程序块,在该基本程序块中先前的使用发生自多个基本程序块;计算第一基本程序块的在后支配顶点与第二基本程序块的在后支配顶点的交集;确定交集是否包含第一基本程序块;以及如果交集不包含第一基本程序块,则从交集中选择一个新撤消点。5.根据权利要求4所述的计算机执行方法,其中从交集中选择一个新的撤消点包括确定是否新撤消点与初始撤消点在不同的循环内,如果是这样,那么选择一个新撤消点,它绕过在初始撤消点和新撤消点之间的所有内部循环。6.根据权利要求1所述的计算机执行方法,其中确定一个锁定点包括确定一组至少一个数据对象;从多个向至少一个数据对象进行写操作的基本程序块中创建第一组基本程序块;从多个对至少一个数据对象进行读操作的基本程序块中创建第二组基本程序块;从不包含在一个同步范围内的第一和第二组多个基本程序块的任何一组中消除;以及确定要为每一个至少一个数据对象设置的一类锁定。7.根据权利要求6所述的计算机执行方法,其中确定对每一个至少一个数据对象的一类锁定包括在第一集合为空时,选择对至少一个数据对象的一个读锁定,否则选择一个写锁定。8.根据权利要求6所述的计算机执行方法,其中确定一个锁定点进一步包括标识至少一个数据对象的第一次使用并标识一个第一基本程序块,在该基本程序块中第一次使用发生自多个基本程序块,其中该至少一个数据对象的第一次使用是初始锁定点;标识至少一个数据对象在第一次使用后的一次使用并标识一个第二基本程序块,在该基本程序块中接下来的使用发生自多个基本程序块;计算第一基本程序块的预支配顶点与第二基本程序块的预支配顶点的交集;确定交集是否包含第一基本程序块;以及如果交集不包含第一基本程序块,则从交集中选择一个新锁定点。9.根据权利要求8所述的计算机执行方法,其中从交集中选择一个新的撤消点包括确定是否新锁定点与初始锁定点在不同的循环内,如果是这样,那么选择一个新锁定点,它绕过在初始锁定点和新锁定点之间的所有内部循环。10.根据权利要求1所述的计算机执行方法,其中该计算机代码是XLANG/s。11.根据权利要求1所述的计算机执行方法,其中该至少一个数据对象是变量。12.根据权利要求1所述的计算机执行方法,其中该至少一个数据对象是标记。13.根据权利要求1所述的计算机执行方法,其中该至少一个数据对象是一个消息。14.根据权利要求1所述的计算机执行方法,其中该信号流图相当于一个长期运行的事务处理。15.根据权利要求1所述的计算机执行方法,其中该信号流图相当于一个原子事务处理。16.根据权利要求1所述的计算机执行方法,其中该信号流图相当于带有一个异常处理程序的长期运行的事务处理。17.根据权利要求1所述的计算机执行方法,其中该信号流图相当于带有补偿的长期运行的事务处理。18.根据权利要求1所述的计算机执行方法,其中该信号流图相当于带有补偿的原子事务处理。19.根据权利要求1所述的计算机执行方法,其中该信号流图相当于带有一个异常处理程序和补偿的长期运行的事务处理。20.一种带有编译计算机代码的计算机可执行指令的计算机可读介质,该方法包括根据抽象计算机指令创建一个信号流图,其中该信号流图具有多个基本程序块和至少一个数据对象,其中将抽象指令转换成由计算机代码形成的一个语义分析树;对多个基本程序块指定一个深度优先次序;确定多个基本程序块两两之间的支配关系;确定信号流图内是否存在有循环,如果存在有循环,标识该循环;确定至少一个数据对象的应用;根据该应用,标识的循环,基本程序块的支配关系和深度优先次序来为至少一个数据对象确定一个创建点,撤消点和锁定点;以及在计算机代码中插入指令以在创建点创建至少一个数据对象,在撤消点撤消至少一个数据对象并在锁定点锁定至少一个数据对象。21.根据权利要求20所述的计算机可读介质,其中确定一个创建点进一步包括标识至少一个数据对象的第一次使用并标识一个第一基本程序块,在该基本程序块中第一次使用发生自多个基本程序块,其中该至少一个数据对象的第一次使用是初始创建点;标识至少一个数据对象在第一次使用后的一次使用并标识一个第二基本程序块,在该基本程序块中接下来的使用发生自多个基本程序块;计算第一基本程序块的预支配顶点与第二基本程序块的预支配顶点的交集;确定交集是否包含第一基本程序块;以及如果交集不包含第一基本程序块,则从交集中选择一个新创建点。22.根据权利要求21所述的计算机可读介质,其中从交集中选择一个新创建点包括确定是否新创建点与初始创建点在不同的循环内,如果是这样,那么选择一个新创建点,它绕过在初始创建点和新创建点之间的所有内部循环。23.根据权利要求20所述的计算机可读介质,其中确定一个撤消点包括标识至少一个数据对象的最后一次使用并标识一个第一基本程序块,在该基本程序块中最后一次使用...

【专利技术属性】
技术研发人员:DJ麦克拉迪PF林塞斯B米赫塔
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1