发明名称 使用监控线程对二进制翻译程序执行流程动态监控的方法
摘要 本发明提出了一种使用监控线程对二进制翻译程序执行流程动态监控的方法。首先为原有动态二进制翻译系统创建新的程序监控线程MT,然后为每一个翻译生成的基本块插桩代码,使每个基本块执行时均将自身的入口地址写入队列中,队列溢出的情况使用线程间等待的方式来避免。监控线程MT负责按序将各个入口地址取出并查找对应的中间指令基本块,根据该基本块的结束类型更新相应的数据结构,完成程序监控的目的。最后,监控线程MT参照收集的剖分信息,以决策者的身份完成构建热路径的优化。与传统的程序监控方法相比,本发明具有软件开销小,硬件成本低,程序分析监控与程序执行并行进行,获取的监控信息完整准确等多种优良特性。
申请公布号 CN101593125B 申请公布日期 2012.03.14
申请号 CN200910054325.7 申请日期 2009.07.02
申请人 上海交通大学 发明人 管海兵;梁阿磊;李晓龙;倪志晨;邓海鹏
分类号 G06F9/45(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F9/45(2006.01)I
代理机构 上海新天专利代理有限公司 31213 代理人 张泽纯
主权项 一种使用监控线程对二进制翻译程序执行流程动态监控的方法,其特征在于包括如下步骤:1)将原有动态二进制翻译系统执行流程作为主线程,并在原有系统上新创建一条监控线程MT,用于完成对二进制翻译程序执行行为的实时监视工作;主线程和监控线程MT独立工作在多核处理器平台的不同核心上;2)借鉴传统插桩技术的原理,为每一个经动态二进制翻译系统翻译生成的二进制基本块头,插入一段机器代码,在执行该基本块的时候,这段机器代码负责将该基本块的入口地址写入队列Q中;在此写入过程中,一旦队列Q被填满,主线程必须暂停,等待监控线程MT处理完队列中的所有数据后发出的再次启动信号Signal,当主线程收到该再次启动信号时才能继续执行;3)监控线程MT依次从队列Q中获取基本块的入口地址,并通过查找该入口地址对应的中间指令基本块,来了解该中间指令基本块具体的程序行为,收集需要的各种剖分信息,并将结果存放于监控线程MT自建的数据结构中;如果当该基本块入口地址存放的位置是队列Q的最大可存储位置时,监控线程MT将清空队列Q,并发送再次启动信号Signal通知主线程继续进行;4)根据收集到的剖分信息,如果监控线程MT检测到某条程序路径执行的次数大于设定的阈值时,监控线程MT将以决策者的身份,完成构建热路径的优化过程;5)对当前入口地址对应的基本块的剖分信息收集工作完成后,监控线程MT将继续获取队列Q中下一个入口地址,重复步骤3)、4)中的操作,以实现对二进制翻译程序执行流程的动态监控。
地址 200240 上海市闵行区东川路800号