[发明专利]对来自多处理器系统上的多线程程序的存储器访问进行管理的方法和系统无效
申请号: | 200780047152.5 | 申请日: | 2007-06-15 |
公开(公告)号: | CN101563674A | 公开(公告)日: | 2009-10-21 |
发明(设计)人: | M·韦特斯;D·萨布赫拉维蒂;P·贝格埃奥德 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F11/36 |
代理公司: | 北京市金杜律师事务所 | 代理人: | 吴立明 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 来自 处理器 系统 多线程 程序 存储器 访问 进行 管理 方法 | ||
技术领域
本发明总体上涉及在多处理器系统上执行的多线程应用程序之间的共享存储器访问;更具体地,本发明涉及使共享存储器访问成为确定性事件,以用于例如促进虚拟化的多线程应用的复制。
背景技术
对线程之间的共享存储器访问进行虚拟化的一种安全而简单的方式是:登记对存储器的每个访问以及在复制机器中重放(replay)这些访问。这在性能方面尤其低效。
因此,需要使多线程程序的共享存储器访问具有确定性,例如以便能够通过简单地在复制机器上重新执行应用程序的代码而在备份机器上对在主机器上虚拟化的应用进行复制。
一个主要的用途可能是在容错系统中。在容错系统中,应用运行在主机器上,并且其执行被完全复制在第二机器上(以便在主机器失效时进行恢复)。通过记录和重放产生非确定性结果的事件或者重新执行用于复制产生确定性结果的事件的代码来实现复制。使得多线程程序进行的共享存储器访问具有确定性的另一种用途是调试虚拟化程序,该调试通过将代码(此情况下在同一机器上)重新执行所需的次数来进行。
进程针对可写共享存储器区域的交替执行是一种潜在的非确定性资源。为了能够使得共享存储器访问具有确定性,需要记录并发进程访问共享存储器的顺序。在单处理器机器的情况下,可以仅仅通过每个调度周期登记一条记录来优化记录操作。代替登记对共享存储器区域的每个访问,如果记录指定进程标识符,连同在调度周期内所访问的第一条指令的位置以及在该调度周期结束以前该进程所执行的用户指令的数目,则在访问共享存储器区域的每个调度周期登记一条记录是足够的。因此,对于一个调度周期,共享存储器访问已变为确定性事件。为了在备份机器中重现此事件,恢复调度周期的记录以及重新执行此周期的代码就已足够。
为了将此优化法扩展至多处理器机器,需要将单处理器互斥属性强制为对共享存储器区域的串行访问。转让给国际商业机器公司的法国专利申请WO2006/077261描述了如何实现多处理器系统上的多进程应用的确定性重放。其中描述了共享存储器访问控制机制;该机制使用处理器的存储器管理单元(MMU)。对访问共享存储器的控制是通过对一个处理器的MMU(存储器管理单元)硬件设备进行编程以允许授权访问存储器页面来实现的,其他处理器的MMU被编程为拒绝对同一页面的任何访问。
在调度周期内,在多处理器机器上,给予每个单独的进程对共享存储器的排他性访问权。利用进程的页表在每个调度周期内将访问权选择性地授予单个进程。然而,在多线程程序的情况下,参与的进程共享它们的地址空间;通过利用共享页表来应用单处理器解决方案会影响整个线程组。进一步地,与单处理器环境中的进程相比,整个地址空间会在线程之间共享,并且为了监视和控制这些地址,必须跟踪对共享地址空间的可写部分的任何访问。这意味着,即使存储器页面是共享的,每个任务也可以具有其自己的私有存储器描述符集合。对于多线程程序却不是这种情况,在多线程程序中,所有的存储器描述符是共享的。此专利申请建议:为了跟踪创建不止一个线程的一个任务的共享存储器访问,页表条目的结构需要扩展为在每个任务内克隆的每个线程,其中每个任务按照本发明所描述地进行监视。该发明的原理可以应用到每个任务或者一个任务内的每个线程,对共享存储器页面的访问在调度器所定义的激活周期的整个持续时间内是排他的。在此周期期间,共享存储器页面保持一致。
因此,需要扩展内核的虚拟存储器管理模块以使得现有技术的共享存储器访问串行化机制能够应用于完全共享其整个存储器空间的多线程程序(而不是只共享其存储器空间的子集的进程)。
美国专利号6854108描述了一种用于确定性地重放在多处理器上的分布式多线程程序的可观察运行时间行为的方法。该方法依赖于对JVM中锁定例程的使用。此方案意味着改动JVM并且受限于运行在JVM顶层的纯Java应用,还受限于所有存储器访问必须由JVM将进行的锁定来保护的事实。
需要提供一种应用于多处理器计算机上的多线程进程的共享存储器访问控制,该共享存储器访问控制是通用的并且可透明地应用于任何类型的应用。
发明内容
因此,本发明的一个目的是使得多线程程序的共享存储器访问可监视且可控制,以便串行化这些访问并将其变成确定性事件。
本发明的另一目的是提供一种透明地实施于应用的方法。
本发明的又一目的是使用已有方法来管理对多处理器环境中的共享资源的访问,该方法以更有效的方式为任何任务或线程提供了排他性访问。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200780047152.5/2.html,转载请声明来源钻瓜专利网。