在单处理器或多处理器计算机系统中优化多任务应用的存入和重放的方法

文档序号:6566522阅读:908来源:国知局
专利名称:在单处理器或多处理器计算机系统中优化多任务应用的存入和重放的方法
技术领域
本发明涉及一种用于管理的方法,更具体地,涉及用于通过在计算机或 计算机网络中执行的多任务应用内的一个或多个软件任务的运行的外部、透
明的和非侵入(non-intrusive)的控制进行的管理的方法。本管理具体包括以 存入(logging)数据形式对这些任务的运行进行记录(record),以及从这种 存入数据中重放该运行,以便呈现与存入时所获得的那些数据相对应的行为 和结果。
本发明还涉及一种在管理所执行的软件应用的运作(functioning )中实现 这种方法的系统。
背景技术
实现关于所管理的应用的非侵入的、透明的运作管理是非常有用的,具 体地,用于使得能够在其原始状态("遗产(legacy)应用")并具有更大的灵 活性、或可靠性、或性能地来使用大量现有应用。
专利申请FR 04 07180中,相同申请人已经提出了通过中间捕获以及通 过在同步点或重启点("检查点,,)期间的应用状态的恢复(restoration)进行 的非侵入运作管理技术。以补充方式,具体地,在专利申请FR 05 00605到 FR05 00613中,相同申请人已经提出了非侵入存入和重放技术。
但是, 一个或多个事件的存入对于所存入的应用或执行它的系统来说仍 然体现出工作量过大,且将它尽可能最小化是非常令人感兴趣的。
在组成应用的执行的事件中,那些具有与应用的状态相对的非确定性行 为必须通过将它们的结果存储到存入数据中来被存入和重放,用于在后面的 重放期间使能施行(force)或重新注入(reinject)该结果。因此,令人感兴 趣的是,尽可能减少必须被当作非确定性的事件的数量。
例如,之前引用的应用中所描述的,应用或执行它的系统外部的事件通 常具有本质上非确定性的行为,且总体上必须被存储。
如果来自运行部分的所有事件都是确定性的,则仅仅通过存储应用的开 始状态,例如以重启点的形式,就可以简单地以经济的方式存入所有此部分。
然后,例如通过将应用恢复成如所存储的重启点状态,并通过启动(launch) 这些确定性事件的执行,来得到重放。然后可以使用包括仅由确定性事件组 成的确定性部分的组的术语"分段确定性执行模型"。因此,总体上,由例如 最初的外部消息的到来以及最后的另 一 非确定性事件的非确定性事件构成确 定性部分的边界。

发明内容
本发明的一个目的是简化或优化这种确定性部分的存入和重放。
以上所引用的某些文档描述了(通过启发式或预测式的压缩)使能减少 存储的计算成本的技术。其他则提出装备能够变为非确定性的特定系统调用 例程,来使它们的行为为确定性。
但是,在最大量的内部事件中,某些具有可能是非确定性或非确定性的 起因的行为,具体地,存取诸如共享存储器区域或标记符(semaphore)或互 斥(mutex)的共享资源的内部事件。
本发明的另 一个目的是减少在存入和/重放期间必须当作非确定性的事 件的数量。
另外,计算机结构的特定类型可以包括有时是它们本身特性固有的非确 定性起因,具体地,有时被规定为物理或实际的并行性的并行结构系统。
总体上这种并行环境被设计并用于从现有硬件元件中获得大得多的计算 功率。时常,在考虑这个而从根本上设计的技术或科学的应用内,这应用于
进行繁重和复杂的计算。
可以通过在单个计算机内集成多个处理器来产生这种环境,这将它所需 的计算工作分发给它们。有时也可以在网络中合并和管理多个计算机,以便 于在它们之间共享特定的工作负载,而几乎不或不受用户干涉。
当这些不同的特定元件、处理器或计算机,能够在同一时刻工作于随后 将重新排序的不同任务时,使用例如与通过在多个虚拟工作区域中共享单个 元件的工作时间来才莫拟的并行相对(oppose)的术语物理并行性(physical parallelism )。
被附予(endow )物理并行性能力的包含多处理器或多计算机的现有环境,
通常被设计和优化,以便获得最大的整体计算功率。由于此,不同的元件尽
可能地分离地(decoupled)工作,且在它们之间具有非常少的协调 (coordination )。
例如,由于成本或灵活性的原因,经常寻求单独或成组的微型计算机或 工作站,来替代大型的中央计算机。这种机器以多处理器版本存在,并行地 工作以获得更大的功率,或被组合以便在网络本身内并行地工作,该网络组 成与外界相对的单个并行工作环境,即,如与外界相对的单个响应者那样行 为。
因此,令人感兴趣的是使用这种并行环境来执行不同的应用或比完全沉 重的计算应用更多变化的应用,具体地,在公司管理领域或工作站网络或通 信网络中普遍的事务型的多任务应用。这种应用通常具有更多变化的结构, 且通常包括在相同环境内使用共享资源的多个任务。
但是,因为这些操作系统或这些应用被设计为单处理器机器,它们通常 不会被设计用于管理如物理并行性的情况那样、在相同时刻实际执行的两个 任务之间的接口。因此,当在相同时刻执行的多个任务必须存取单个数据("赛 跑情况(race condition)")时,由任务读取的结果可以根据在该读取前或后是 否由另 一任务进行了修改而变得非常不同。
而且,大多数多任务操作系统没有被相像用于管理以实际并行方式工作 的环境,且甚至更少用于以直接存取的方式管理共享资源。在共享存取的类 型中,通过从程序指令寻址(address )而可存取的那些,诸如由"映射(map )" 类型的指令来初始定义的共享的存储器区域,可以被规定(qualify)为直接 存取。
相对于需要系统调用的其他共享资源,诸如用诸如"打开"、"读取"或 "写入"的系统调用来传递"管线(pipe)"或"套接字"类型的消息的资源, 由并行的多个任务通过直接存取而对这类共享资源的存取通常很少或根本不 由系统软件来管理。因此,对通过直接存取来存取共享资源的管理通常几乎 全部是并行环境中应用的任务。
因此,本发明的另一个目的是便利于或优化存入和重放功能的实现,且 减少并行环境中非确定性的起因,具体地,对于多任务应用。
在冗余结构的运作管理的情况中,本发明的另一个目的是使并行环境中 执行的多任务应用的运作可靠。
从这些技术开始,本发明提出在系统软件内管理至少两个应用任务的运 作,该系统软件在被赋予包括能够在至少两个算术单元中同时执行多个应用
任务的计算装置的并行结构的计算机系统中按顺序激活(activation)来管理 所述任务的执行。对于存取至少一个共享资源的这种应用任务,该方法一方 面包括以下步骤
-存入在第一算术单元中的一个或其他这些任务的激活时期的第一系列 (succession); 以及
-存入在第二算术单元中的一个或其他这些任务的激活时期的第二系
列;
-以及响应于对所述目标资源的存取请求,对于所述任务中的所谓存取 任务,存入对所述目标资源被称为排他的存取的属性的系列,即,在对于存 取的所述请求之后紧邻的存取任务的激活时期的全部剩余期间中,通过这些 任务的另 一个来对所述目标资源排除任何存取的属性。
另一方面,本方法还包括以被称为重放编序(serialisation)的顺序结构 来合并表示每个算术单元中激活时期的系列的存入数据与表示所定性 (attributed)的排他存取的系列的存入数据。安排该合并以维护相对于所述 共享资源且在每个任务内的激活时期的系列的顺序。
根据本发明,可以在重放计算机系统中使用重放编序数据,用于重放所 存入任务的所存入运行。
另外,本发明可以包括在存入期间、在重放计算机系统内、对所存入任 务可存取的软件资源的所有或部分虚拟化。
因此,根据本发明的方法可以在例如构成由一个或多个中间件类型的运 作管理应用所管理的集群的网络的计算机网络中的至少一个节点内实现。因 此,本方法使得能够扩展或优化该运作管理的性能和功能,具体地通过指令 序列的存入和重放。
在相同的上下文中,本发明还提出应用于一个或多个并行类型或构成并 行系统的计算机系统、且可能用于网络的实现该方法的系统。
因此,根据本发明的方法可以在例如构成由一个或多个中间件类型的运 作管理应用所管理的集群的网络的计算机网络的至少一个节点内实现。因此, 本方法使能扩展或优化该运作管理的性能和功能,具体地,通过指令序列的 存入和重放。
在相同的上下文中,本发明还提出应用于一个或多个并行类型或构成并 行系统的计算机系统、且可能用于网络中的实现本方法的系统。


本发明的其他特征和优点将从实施例的详细描述而变得明显,但这决不
是限制,附图中
图1和2图示了根据本发明的、通过对任务计数而进行的处理器内任务 执行的调度(scheduling)的存入;
图3和4图示了根据本发明的、通过对处理器中的指令计数而进行的任 务的激活时期的重放;
图5图示了根据本发明的、从处理器中的任务调度的、通过计数指令的 存入中获得的在单处理器系统中的多任务应用的确定性重放;
图6是根据现有技术的、在由来自单一环境的两个不同处理器并行执行 的两个任务之间共享的存储器的存取的运作的图示;
图7图示了根据本发明的、在任务内的、使能在来自单一环境的各个不 同处理器上并行执行的多个任务之间共享的存储器页的存取控制的结构的创 建和维护;
图8图示了根据本发明的、由来自单一环境的两个不同处理器上并行执 行的两个任务所共享的存储器页的存取控制的运作;
图9图示了根据本发明的、多处理器计算机上的多任务应用的存入、和 单处理器机器上的它的逐步(onthe flow)重放。
具体实施例方式
这里描述的技术对应于使用在PC型的计算机中使用的类型的处理器的 某种特征的本发明的实施例,例如,来自AMD公司的Athlon型处理器或者 来自英特尔公司的奔腾(Pentium)处理器。例如在工作站中使用的其它现有 处理器,或未来的处理器,当然可以呈现全部或部分的这些特性或相似的特 性,并且可以被使用以实施本发明。
图1至2呈现了用于存入由单yProX处理器或算术单元连续执行的确定 性内部事件的不同部分的技术。
如图1中所图示的,可以由调度器SCH连续启动的被称为激活时期Schl
至Sch3的部分来执行不同的任务TA和TB,其形成管理这些交替或交织的 被称为上下文管理器的系统代理的部分。
在计算机系统或处理器内执行的不同任务中,某些可能是寻求管理的那 一个应用的部分,且将被规定为"被监视的"任务。这些任务由在任务描述 符中通常不被使用的数据位的状态(置为1 )来标识,这里被称为管理位MmA 或MmB (见图7)。被监视的任务和其它不被监视的任务可以在处理器中执 行的激活时期的系列内交替。
对于其在图2中用字母"m"标记的被监视的任务TA和TB,选择激活 时期以便于它们仅由确定性事件组成。由一个或多个存入软件代理定义这些 确定性时期。该存入代理可以包括在计算机系统的用户存储器空间中执行的 元件,作为运作管理应用的任务。该存入代理还可以包括或使用在系统软件 中、例如在调度器中修改或添加的元件。
因为应用的大多数事件是内部事件,并且它们中的很多都是确定性的, 所以每个被管理的任务的大部分由确定性事件组成。每次当不确定性事件发 生时,存入代理结束(close)确定性时期。然后可能以未监视的任务的形式 执行所检测到的非确定性事件,且用根据已知方法得到的其结果来存入该非 确定性事件。当完成该非确定事件时,存入代理定义新的确定性部分的开始, 并再次启动指令的计数。
在确定性激活时期以外,或在内核(kernel)模式KLv中的执行时期Kl 或K2中的示例,即,当处理器特权模式处于值0,相对于用户模式UIv的值 3,执行非确定性事件的存入及可能的处理。
为了能够以与存入时相同的方式重放每个激活时期,本发明对当存入时 该确定性部分期间所执行的指令进行计数。在后面的这些任务的重放RSCH (见图3和4)期间,该所存入的部分从而只需要从与存入时相同的状态来 启动,使它自己执行直到与存入时由相同部分所执行的用于相同任务的指令 数量精确地对应的数量的重放指令。因此无需任何干涉而实施该重放,使得 结果处于确定性部分内,因为后者仅包含确定性事件。
当确定性部分延展至由调度器建立的多个激活时期时,这些激活时期的 每个包括该确定性部分的部分,其可以自己被作为完整的确定性部分处理。 在本说明书的剩余部分,将仅描述确定性激活时期的存入,但明显的是,多 个确定性激活时期可以在单一确定性部分中相继跟随。
根据本发明,确定性激活时期的指令的这种计数使用例如来自于英特尔 公司的奔腾家族的奔腾2以后的目前作为大量处理器中现有硬件特征的性能 和监视计数器。提供该性能和监视计数器,以便在持续时间中或在多个事件 中来测量处理器的运作,而且,通过对其值进行周期性采样,其被主要用于
测量性能,例如为了实施应用概略(profile )的统计分析。处理器制造商还指 出,这些性能计数器没有受保障的精确度,且其必须被用于对于优化应用的 相关(relative)或差别(differential)测量。
本发明提出使用该性能计数器PMC的一个特征,也就是,被称为退休的、 即被解决的或已剩下而要被执行的指令列表的指令的计数,其独立于能够具 有由于性能原因而提前执行的特定指令的各种推测(speculative )或緩冲技术。
但是,该退休指令的计数呈现出从英特尔和AMD公司的文档中描述的 一定限制特征。这些特征之一是对于该计数器的读取指令("RDPMC")没有 直接集成在要被解决的指令中,其在本发明中对该计数器的使用没有直接的 因果关系。
另一方面,其他两个限制特征可能引起用于存入和重放的指令的计数不 精确,且应该予以考虑。
能构成障碍的第四个特征是这样一个事实,即由计数器溢出带来的执行 的中断可能发生在导致该溢出的指令以后特定的延迟。
这些不精确性限制涉及, 一方面,如果在解决之前被中断则可能计数两 次的某些复杂指令的情况,以及另一方面,具有可能导致指令不计数的硬件 中断的指令的情况。为了克服这种不精确性,本发明使用补充的确认技术, 其使能消除关于精确确定激活时期结束的怀疑。
如图1所图示的,在y ProX处理器中执行的确定性激活时期的系列Schl 、 Sch2和Sch3,被存入并记录在存入文件J ja ProX中。
在处理器正执行所监视的任务TA的存入的激活时期Sch3期间,对计数 器PMC的值UICX的一个或多个读取RDPMC提供退休的指令的数量NJ3。 在该时期NJ3的暂停(suspension)(结束Sch3 )时,存入代理JSCH使用由 任务TA和其上下文的状态输出的一个或多个状态数据项目,来计算以足够 单意的方式表示该状态的一个或多个数据项目,用于消除可能存在的关于该 激活时期Sch3期间执行的指令的精确数量的怀疑。该状态数据构成对应于该 时期结束(结束Sch3 )的记号(signature ) SG3。该记号具体地包括在该时期
的最后指令之后紧邻的指令指针的精确值IPJX3,即在任务TA的4丸行中最后
执行的程序指令的位置的精确标识。该记号还包括根据在来自在该暂停(结
束Sch3 )上的任务TA的上下文的寄存器RefDG和调用桟Pile (堆)JX3中 读取的值所计算的控制数据("校验和")。
对于每个所存入的时期SchJ (图3 ),该处理器的日志JjaProX从而具体 地包括与下列相关的行(line):
-在该时期中执行的任务TJ的标识idJ,例如该任务的"PID";
-由计数器PMC所发送的撤销指令NJ的数量值;
-对于该时期的结束所计算的记号SGJ。
因此,对于图1所图示的任务TA然后TB然后TA的系列,处理器|u ProX 的曰志J )iProX包括下列连续行 "idA: NJ3: SG3 idB: NJ2: SG2 idA: NJ1: SGI"
如图2所图示的,在给出的uProX处理器内,所存入的应用APPJ的存 入的不同任务的系列还可以最初被存入代理JSCH传输到FIFO("先进先出") 类型的存入队列QJ)aProX。或者通过本地MEM,或者通过到另一节点或备 用站或外围设备的传输TRAN,由存入存储任务TJ jLt ProX来读取在该队列的 输出的存入行,该存入存储任务TJ ja ProX在该处理器的日志J ji ProX中以排 序的方式初始化这些行的存储。使用这种存入队列具体地用作緩冲器区域, 以便规范存入数据流,且避免干扰所存入的应用或执行该存入的应用。
在全局结构的情况下,即,存入数据随着它的发生而逐步传输到重放相 同运行的例如在备用机器上的另一应用,以便实施具有容错性和连贯性的服 务的运作,特别希望这种益处。
在该计数技术中,优点在于使用系统调用指令作为对于指令的计数的同 步点。因此,这包含利用系统调用例程,以便它们使系统调用计数器递增。 因此,由硬件计数器PMC对指令的计数可以在持续低的值上工作,这改善了 它的性能。
图3和4呈现了在重放处理器uProZ中所存入时期SchJ的重放技术。图 3代表处理器内重放的任务TR的最近状态TR1到TR4。图4代表用于实施 这种重放的方法的流程图。依赖于实施例或使用参数,根据如对于不同的重
放处理器来说相同的原理,还可以在与存入相同的处理器中进行重放,例如 对于应用跟踪类型的运作管理。
在这种重放期间,例如,由调度器SCH调度的、可能被修改以便包括重
放代理RSCH的激活时期,进行中的任务TJ用所述处理器中其上下文来恢复, 然后此任务被释放41,其执行被启动。
为了能够在不同于进行存入的重放计算机系统的重放计算机系统中被恢 复和执行,任务或应用可存取的所有或部分资源必须净皮虚拟化,即,例如以 虚拟的方式被实例化或再造,以便显得如同以与存入时相同的方式重放的应 用。通常包含的项目是用于线程TIP或处理PID的任务标识符、与由应用存 取的并依赖于主机系统的多数资源。根据在此存入期间所存储的数据,在重 放的〗壬务或应用的起初进行该虛拟化,并在重放期间^修改该虚拟化,以^更以 与存入期间相同的方式改变。
优点在于,以内核模式进行该虚拟化,这具体地使能避免性能计数器 PMC将虛拟化的操作考虑进指令的计数中。
来自英特尔公司的文档指出,由于硬件中断带来的错误被限制于+1或-1 个指令的相对误差。对于包括至多一个单一硬件中断、即导致其终止的中断 的存入确定性时期,监视需要考虑计数器PMC的两个值重放时期开始时的 值和在监视点的值。因此,最大相对误差是+2或-2个指令。
贯穿对于所存入的任务TJ的重放的重放任务TR的执行,重放代理RSCH 通过读取RDPMC实施重放的处理器p ProZ的计数器PMC,且通过比较该读 取与对应于该存入的任务TJ的存入数据IdJ、 NJ、 SGJ,来监视退休的指令 的数量。安排该监视以便一旦到达了在该重放执行中的其顺序值等于NJ-2的 指令,则中断重放任务TR的执行。例如通过编程,使在期望值的计数器PMC 溢出,来完成该中断。
由于上述的第四个限制特征,可以通过以一定空白(margin)对该溢出 进行编程41(图4),来补偿在溢出和中断之间的延迟时间的存在,以便确定 在期望值NJ-2之前产生中断。可以通过实^r来确定该空白,例如可以是50 个指令的顺序。
因此在NJ-50和NJ-2之间的指令数量时中断重放时期SchR的初始冲丸行。 然后,在重放任务TR的执行中,重放代理RSCH在与存储在记号SGJ中的 指令指针的值IPJ对应的程序指令BKI上设置42执行断点BK。然后,重新
启动该执行,直到由该断点BK带来中断43,持续地检验44来自计数器PMC 的指令的数量,直到重放指令的数量大于或等于所存入的指令的数量-2个指 令,即NR〉NJ-2。
因此,存入时期SchJ的实际结束的精确位置位于四个随后的单式指令执 行InstrO到Instr3,具有各自的顺序值NJ-1到NJ+2,即,在被包括在相比于 该相同时期SchJ的暂停终点的位置NJ的-2和+2之间的相对位置。
在随后的单式指令执行Instrl到Instr4之后,确认阶段40 (图4 )然后通 过比较记号SGJ与、从重放任务TR的状态TR1到TR4以相同方式计算的值 SG1到SG4 (图3 ),来使能确定该实际位置。
在该确认阶段的开始时,重放代理在先前的监视所导致的中断之后,立 即检查45根据重放任务TR的状态所计算的重放记号SGR的值SGO。
根据本发明,如果记号SGJ和SGO不对应,则任务TR的执行重新启动, 并在该断点指令BKI的第一个新执行TR2时停止46。
但是,可能存在关于该新的停止位置TR2的怀疑,例如,如果存入任务 TJ通过在暂停之前多次执行该断点指令BKI已经实施了很短的循环。在该断 点指令BKI上的执行的每个停顿TR2、 TR4时,重放代理再次核实47记号 SGJ和SGR的匹配,且重新启动执行,直到获得该匹配。当记号对应(此例 中SG^SG4)时,意味着断点指令BKI的最后执行Instr4对应于在存入时期 SchJ中所存入的最后操作。然后,该重放代理结束48该重放时期SchR。
本发明还设想了安全机制,例如在一定数量的指令的特定执行后,例如 在8个单式指令执行结束时,为了避免错误情况下的无限循环,检验49中断 重i欠TR并返回401重i欠错误。
为了重放多个存入时期,例如,在重放对应于存入应用APPJ的重放应 用APPR (图5 )时,重放代理RSCH连续地读取日志J jli ProX的不同行,并 使用这些的每个,以便重放对应于进行中的行的激活时期。
如图5所图示的,通过在重放处理器!LiProZ中执行的日志读取任务Tju ProZ,该日志J jli ProX的不同行直接TRANS接收或本地MEM读取。
然后,将每个对应于存入时期的该日志JjaProX的所有行以它们存入的 顺序传输到FIFO类型的重放队列QJjuProZ。在该队列的输出,重放代理 RSCH使用这些日志行的每个,来使得它代表的时期由与存入任务TA、 TB 和TC对应的重放任务TA,、 TB,和TC,重放。
为了重放处理器U ProZ内实施这些时期的调度,在存在于无语义 (semantic)变化的标准系统软件中时,重放代理RSCH使用调度器SCH的 运作。该方面具体地使能维护与相同处理器中执行的其他TNM任务的兼容 性。为了获得与存入时相同的调度,无需干扰调度器SCH的正常运作,重放 代理RSCH在其自身内充实阻止55b、 55c每个重放任务TB,、 TC,的释放 (release ),只要它们的标识符TID或PID不对应于存储在必须重放的行中的 标识符idA。
用于存入和重放确定性时期的这些技术使能优化在一个或多个单处理器 计算机内的如上所引用的申请中描述的运作管理应用的性能和功能。
在并行结构的情况下,诸如多处理器计算机或包括多个并行工作的计算 机的网络,多个任务可存取的共享资源的使用增加了非确定性起因,其可能 出现在该运作管理的上下文中显著的性能损失的源头,或甚至不可能完成特 定重要和有用的功能。
为了消除非确定性的这些起因的全部或一些,本发明提出方法,其使能 管理或控制对共享资源的存取,具体地,直接存取资源,以便每个任务在其 由系统激活的整个时期都可以获得对共享资源的排他存取。
在图6中,图示了并行多处理器环境的运作示例,其包括在多处理器环 境例如Linux型系统中的第一处理器|i ProX和第二处理器p ProY。这两个处 理器每个在单一工作存储器空间RAM中分别执行并行的任务TA和TB,且 由调度器来协调。在每个任务TA和TB的激活时期期间,来自其程序EXEA、 EXEB的指令序列SchA、 SchB将在处理器y ProX、 jj ProY中执行。在来自 该序列的指令InstrA、 InstrB的执行期间,处理器将能够使用其内部资源,诸 如寄存器RegA、 RegB,栈PilA、 Pi旧。
在工作存储器RAM中,许多共享存储器区域ShMPi到ShMPk例如由"映 射,,类型的指令定义,且其可通过它们的物理地址直接从不同任务TA和TB 存取。
图6图示来自现有技术的情况,任务TA和TB在普通时期中并行执行, 且每个包括请求存取单一共享存储器区域ShMPi的指令InstrA和InstrB。这 两个存取请求将由每个处理器的存储器管理器单元MMU以独立方式处理 11、 13,且将彼此独立地到达12、 14该共享存储器区域。
对于仅从系统调用类型的特定指令中可存取的资源,可能利用实施这些
指令的系统例程,即,修改这些例程或向系统插入截取或应对(react)这些 系统调用的元件。在通过存入和重放进行的运作管理的上下文中,该利用可 以具体地使能记录它们的行为,以便能够以后同样地重放它,或修改该行为 以便它变成确定性的且不需要被记录。
相反,对于不用系统调用而直接可存取的资源,因此,潜在地从任何程 序指令,大多数操作系统和具体地Unix或Linux型的那些,不能在该共享存 储器区域ShMPi级控制这些存取的到达。
为了解决该问题,如图7和8所图示的,本发明提出修改特定系统软件 元件的代码,或增加特定的其他元件,以便于修改或扩展目前用于其他功能 的特定的现有硬件功能。
具体地,可以通过修改Unix或Linux型的系统软件的小数量元件来解决 该问题,而不需要修改现有处理器的硬件特征。因此,可以使用普通型的机 器,因此经济且耐用,以便通过对现有系统软件带来增加了功能而没有妥协 于它们的向上兼容性的仅少量修改,来执行和管理略微修改或未修改的多任 务应用。
本发明用于存在于多个近来的微处理器的该特定机制,所述微处理器诸 如用在PC型结构中的处理器,例如,来自英特尔公司的奔腾处理器、或来 自AMD公司的Athlon。这些处理器,具体地,自从奔腾2以来,在它们的 存储器管理单元中集成了虚拟存储器管理机制。该机制被用于在硬盘上"卸 载"当它们不用时被定义在工作存储器中的特定页,且在那里存储它们以释 放物理存储器内的相应空间。对于现有的运行应用,这些页仍然被列于工作 存储器中,但它们必须在物理存储器中从硬盘再次"装载",以便任务可以实 际地存取它。
为了管理该虚拟存储器,如图8所图示的,该系统软件包括虚拟存储器 管理器VMM,其为可虚拟化的存储器的每页创建每个不同应用处理中的页 表入口 ("P.T.E.")。因此,对于每个以处理的形式、即用专属它的执行上下 文来执行的两个任务TA和TB,页ShMPi到ShMPk的每个将得到任务TA 的处理中的页表入口 PTEiA到PTEkA,以及任务TB的处理中的页入口表 PTEiB到PTEkB。
虚拟存储器管理器VMM包括页装载器软件PL,其装载或卸载存储器页 到^Jt上的"交换(swap)"文件,例如来自^t软^^司的Windows系统中带有扩展名".swp"的文件。在ShMPi页的每个装载或卸载期间,在物理存储 器中它存在或不存在的状态由VMM管理器在对应于它的页表入口 PTEiA和 PTEiB的每个中被存储并维护30。在这些表PTEiA和PTEiB中,该存在状 态分别以数据位PriA和PriB的形式存储,值1用于存在,值0用于不存在。
在每个处理器ja ProX和|a ProY中,存储器管理器MMUX或MMUY包 括页错误中断机制PFIntX或PFIntY,通过其传递从执行的程序指令InstrA或 InstrB引起的任何存取请求。如果来自由处理器ju ProX执行的任务TA的指 令InstrA请求33关于存储器页ShMPi的存取,则处理器的中断机制PFIntX 通过读取相应的入口表PTEiA中其存在位PriA的值,来核实该页是否存在于 物理存储器RAM中。
如果该位PriA指示该页的存在,则中断机制PFIntX授权该存取。在相 反的情况中,该中断机制PFIntA中断任务TA的执行,并向包含于系统软件 的虚拟存储器管理器VMM中的"页错误处理器"软件代理PFH传输错误的 参数。然后该错误处理器PFH在系统软件中且相对于应用而被执行,并管理 该错误的后果。
图7图示了根据本发明、这些现有机制如何被修改并调整或转移,以便 管理对共享资源的存取。
为了管理来自于在这种并行环境中执行的应用APP的这些存取,如图7 所图示的,启动器软件LCH被用于启动该应用的执行,例如在Unix或Linux 型的系统中。在它启动时,以包括执行"线程"ThrAl并使用形成任务描述 符TDA的数据表的处理的形式,用第一任务TA来创建应用APP。
在该任务描述符TDA中,启动器存储21如下事实,即通过修改通常不 用的数据位、这里被称为管理位MmA的状态为1,使得该任务TA必须被管 理,或"监视"。
在工作存储器中的不同的共享资源区域,这里规定为共享存储器页 ShMPi、 ShMPj和ShMPk,被列于在形成页存储器结构PMStrA的数据表中 的任务TA中。在该结构PMStrA中,共享页以页表入口 PTEiAl到PTEkAl 的形式一皮描述并4皮更新,每个页表入口 PTEiAl到PTEkAl合并了由前述虚 拟存储器管理器VMM使用的数据位PriAl到PrKAl。典型地,该页结构 PMStrA以与任务TA相同的时间被创建,并伴随着共享存^f诸器中的任何改变, 通过确保这些改变的不同系统例程,诸如"映射"类型的例程,而更新20。
在执行所管理的应用APP期间,通过"创建,,类型的指令CRE,可以从 该第一任务TA或从以相同方式创建的其他任务中创建其他任务。所创建的 任何新任务TB还包括线程ThrBl和任务描述符TB、以及页存储器结构 PMStrB。通过来自其亲(parent)任务的继承关系,新的页存储器结构PMStrB 还包括带有其存在位PriBl到PrkBl的不同页表入口 PTEiBl到PTEkBl,其 以相同方式一皮维护更新。
在从监视的任务TA创建CRE新任务TB时,新任务描述符TDB还包括 管理位MmB,其值从来自亲任务的管理位MmA的值继承INH。
在执行所管理的应用APP期间,可以在以单线程ThrBl的处理的形式初 始地运作的任务TB内创建其他线程。
在现有和监视的任务TB中,由诸如"复制(clone )"指令的系统调用来 创建任何新的线程ThrB2。典型地,以多线程处理的形式的任务仅包括在其 页结构PMStrB中的一组入口表PTEiBl到PTEkBl。根据本发明,能够创建 诸如"复制"系统调用的新线程的任何系统例程的运作例如通过将补充部分 CSUP集成其中而被修改。该修改被设计,以便现有任务TB中的新线程ThrB2 的任何创建包括与相同的共享页ShMPI到ShMPk相对应、并特别地用新线 程ThrB2来运作的现有的一组表PTEiBl到PTEkBl的读取22和新的一组页 表入口 PTEiB2到PTEkB2的创建23 。例如,如在来自相同申请人的专利FR 2 820 221中所描述的,可以用通过装载系统内共享库的动态插入技术的这些 例程CLONE的使用来进行该修改。
以确保新表PTEiB2到PTEkB2以与它们的亲表PTEiBl到PTEkBl类似 的方式也被维护更新24、 25的方式,或者通过在管理该更新的系统例程MAP 中注册它们用于更新,或者还通过利用这些系统例程MAP,例如通过将补充 部分MSUP集成到它们中,来进行该创建。
图8图示了用应用于包括在两个处理器juProX和jaProY中并行执行的 两个单线程任务TA和TB的示例的这种结构的存取管理的运作。应该注意,
相同的方式管理来自属于监视任务的所有线程的任何存取,不论它们是单线 程还是多线程。
在这里所描述的实施例中,安排根据本发明的存取管理,以便在处理TA 或TB方面以及在每个线程ThrBl和ThrB2方面,对每个任务保证在整个激活时期持续时间中排他地对共享存储器页的存取,在该激活时期期间由系统 软件来保证它们的一致性(连贯性)。这里描述这种时期作为由系统软件的调 度器SCH所分配并管理的激活时期。清楚的是,可以以相同的精神选择其他 类型的一致时期。 '
而且,在这里,以被定义为特定存储器区域或存储器页的共享存储器的 形式描述管理或控制对其的存取的共享资源。还可以通过类似地利用对应于 它们的系统例程,来将相同的概念应用到其他类型的资源。
本发明的实现可以包括系统软件的某些元件的修改,以便它们如下所描 述地运作。修改的必要级别当然可以依赖于系统软件的类型或版本而改变。
在Linux类型的系统情况下,这些修改通常包括如前所述的"复制"和"映 射"类型例程的利用、以及在产生调度器SCH、页错误处理器PFH和页装载 器PL的代理内的修改和代码增力口。要被修改以产生这里描述的存取控制的类 型的系统功能,相比于标准系统的功能来说可以优势地构成完全的扩展,即, 无需消除功能或至少无需妥协于与针对标准系统版本所开发的应用的向上兼 容性。
另外,虽然使用在用于虚拟存储器管理的处理器中设想的硬件机制,所 描述的存取控制可以不必然需要该虚拟存储器的失活(deactivation),且可以 与它兼容。例如,页装载器PL可以被利用或修改,以便于如果已经由另一任 务TA使用了该页ShMPi,对于虛拟页ShMPi的物理存储器RAM的装载不 由监视的任务TB反映在该页的存在位PriB中。
如图8所图示的,在一个其激活时期SchA的开始时,在时刻SCHAL, 调度器SCH释放任务TA。在释放该任务之前,调度器SCH检测31该任务 TA的管理位MmA来建立是否必须对它应用存取控制。如果是这种情况,则 调度器SCH将32与由该存取控制所涉及的所有共享页相对应的页表入口 PTEiA到PTEkA的所有存在位PriA到PrkA设为0,使得由该任务TA进行 的任何存取请求都默认地导致对于其中该任务TA将能够被执行的所有处理 器|i ProX中的中断机制PFIntX中的页错误。
在处理器M ProX内的该激活时期SchA期间,指令InstrA请求33对共享 存储器页ShMPi的存取。因为相应的存在位PriA处于0,因此,处理器jaProX 的中断机制PFIntX暂停该存取请求的执行,并调用系统软件的页错误处理器 PFH,与此同时将它传输到页和进行中的任务的标识。
当处理该错误时,页错误处理器PFH的补充功能PFHSUP因而在形成系
结构")代理的数据表中实施检测和/或修改。
典型地,该内核存储器结构KMStr以单意的方式为所有工作环境、或所 有工作存储器存储代表存储器资源的结构和它们的发展的数据。根据本发明, 该内核存储器结构KMStr还包括一组数据位,此处被称为存取位KSi、 KSj 和KSk,其对于进行中的共享页ShMPi到ShMPk的每个代表这样的事实, 即,对于任务,对该页的存取目前被准予(位为1)或不被准予(位为0)。
当页错误处理器PFH处理由处理器ju ProX传输的错误时,它咨询34对 应于进行中的ShMPi页的存取位KSi。如果该存取位没有指示任何当前的存 取,则它修改34该存取位KSi,以便存储它准予对该页的存取,还修改35 与进行请求的任务TA相对应的存在位PriA (位改变为1 ),以便存储这样的 事实,即,该任务TA现在具有对进行中的页ShMPPi的排他存取。
应该注意,内核存储器结构KMStr的存取位KSi的这些校验和修改操作 构成以原子方式实现的操作34,即,保证了它甚至在多处理器环境中也能全 或无地完成。
一旦页错误处理器PFInt在所请求的页ShMPi上赋予排他性,则它重新 启动指令InstrA的执行,以便它实际地存取36该页的内容。
然后,如果来自由另 一处理器ia ProY并行执行的任何另 一监视任务TB 的指令InstrB请求37对于该已赋予的页ShMPi的存取,则该处理器的中断 机制PFIntY还将针对请求任务TB而咨询该页的存在位PriB 。因为任务TB 是监视的任务,因此所咨询的存在位PriB处于不存在位置(值为0)。因此中 断机制PFIntY将暂停请求指令InstrB,并传输38错误到页错误处理器PFH。
此时,该页错误处理器PFH注意到,该页的存取位KSi为l,其指示已 经对另一任务在该页ShMPi上准予了排他性。因此该页错误处理器PFH将开 启39整个请求任务TB的暂停,例如通过在系统软件上下文改变管理器中结 束其激活时期。在其下一个激活时期中,因此该任务TB将精确地在它被中 断的点而重复其执行,且将能够多次尝试存取该相同页ShMPi。
在请求任务是属于多线程处理的线程ThrB2 (图7)的情况下,特定于该 单一线程ThrB2的一组页表入口 PTEiB2的存在使能仅暂停请求存取已经在 排他存取中分配的页的线程,而不是不会用此排他性来进入冲突的其他线程ThrBl。
当每个任务的激活时期SchA完成SCHAS时,调度器暂停该任务的执行, 并备份其执行上下文。
当该暂停SCHAS或当在已经分配的页请求上的暂停39时,本发明还设 想了关于该任务对其接收排他存取的所有共享存储器页的释放阶段。因此, 如果调度器SCH通过管理位MmA注意到301暂停的过程中的任务TA被监 视,则它扫描该任务的所有页表入口 PTEiA到PTEkA,通过咨询不同的存在 位PriA到PrkA的状态,来建立在哪些页上它具有排他存取。基于该信息, 然后它将通过把内核存储器结构KMStr中它们的存取位KSi重新设置为0, 来释放所有这些页ShMPi。
在其他未呈现的变体中,还可能例如通过设想单一任务描述符中的许多 管理位,来将管理或监视的概念分离到许多管理类型中。因此任务可以被监 视,以便从关于任务的特定类别的排他存取中获益。类似地,可以仅由任务 的特定类别来排除任务。
因此,通过暂停寻求存取已经分配的页的所有任务,对于请求它的第一 任务来获得该页的排他性,无需干扰因此而暂停的其他任务的执行的一致性。
通过避免由同时执行的两个任务共享的单 一存储器区域的任何修改,因
存储器区域的已给定的初始状态,在存取它的任务的每个激活时期的开始时,
务执行的指令的给定序列,例如调度的激活时期,且通过从已知初始状态开 始,因此可以获得相对于该任务是确定且可重复的该序列的执行。
操作,该方法使能避免或减少寻求竟争地存取它的多个任务之间共享的单一 资源的死锁风险。
通过与这些存取控制技术(图7到8)合并上述用于存入确定性时期的 技术(图1到5)、以及以上所引用的申请中所描述的检查点和存入以及重放 技术,本发明还提出在并行结构系统中实现前述的不同类型的运作管理。
因此,图9图示了,根据本发明的、在多处理器系统MP1上存入多任务 应用APPJ以及在单处理器系统UP2中所需的其重放。
对于所存入的应用APPJ,存入代理JSCH为每个处理器ia ProX或ju ProY
存入对于不同监视的任务TA、 TB和TC的所有激活时期的系列。如上所述, 它分离地传输它们,分别作为队列QJ ju ProX和QJ ja ProY。应该注意,如果 任务在处理器中执行一次并在另一处理器中执行一次,对于该任务的激活时 期将存在于两个队列中。
用由存入的应用APPJ所存取的共享资源ShMPi到ShMPk,存入代理 JVMM为这些资源的每个记录表示在该资源上分配的排他存取的系列的存入 数据。通过页错误处理器PFH,伴随着它分配给不同任务的排他存取,在虚 拟存储器管理器VMM中生成该排他存取存入数据。
该存取存入数据的每个记录具体包括
-进行中的共享资源的单义标识符,例如,关于共享存储器区域的地址;
-关于获得该存取的任务的标识符(PID或TIP );
-例如通过这里描述的计数技术获得的该排他存取的持续时间;
-允许补偿该计数的不准确性的补充数据,例如前述的记号;
-以及有用的特定补充数据,例如,关于系统资源和不同外部或输入/输 出事件的虚拟化。
该存入数据被传输到FIFO型的存入队列QJShMPi。
取决于实施例,可能在一个或多个日志文件中存储这些队列QJjuProX、 QJjnProY和QJjuMPi的内容,例如,用于以后4吏用。
从这些队列,不同的存入数据通过诸如计算机通信网络的通信装置被传 输到重放系统UP2。
分别由对应于该发布队列的重放队列QR ja ProX、QR ja ProY和QR jn MPi 来接收来自每个存入队列QJ |i ProX、 QJ n ProY和QJ ja MPi的数据。
在这些重》文队列的输出中,不同的存入的处理器iiProX和nProY的存 入数据根据存取存入数据被合并到一起,以便恢复所存入的激活时期和所分 配的(连续的)排他存取所合并的编序。
在重放系统中,定义了该重放编序或重放调度之后,在重放处理器中启 动重力文的扭J亍。
应该注意,只要以不破坏该重放编序的调度的方式在这些处理器中分发 任务,在重放的性能之外,重放处理器的数量可能不重要。
应该注意,这里描述的不同的机制以与硬件部分脱离的方式使用软件部 分。在处理器或计算机的情况下,因而获得关于硬件的良好的独立性,具体
是,通过允许该结构自己最佳地管理不同计算元件的并行,使得更简单且更 可靠的实施,且保持良好的性能。
另外,由于本发明最常见完全由软件实现,因此可以使用具有所有隐含 的优点的标准硬件。
本发明具体地使得能够将关于在单个计算元件上的共享时间中运作的多 任务应用而发展的运作管理技术扩展到并行环境。因此,本发明使得能够集 成这种并行环境到网络或集群器,其中在中间件类型的应用中实现该运作管
理,例如,为了管理提供"按需(on-demand)"服务的分布式应用或变量配 置应用。
显然,本发明不局限于已描述的示例,在不脱离本发明框架的情况下, 可以对其进行多种修改。
权利要求
1.一种用于管理至少两个应用任务(TA、TB)的运作的方法,该方法在系统软件中实现,该系统软件通过顺序激活来在并行结构的计算机系统中管理所述任务(TA、TB)的执行,包括能够在至少两个算术单元(μProX、μProY)同时执行多个应用任务的多个计算装置,这两个应用任务(TA、TB)存取至少一个共享资源(ShMPi),该方法包括-在第一算术单元(μProX)中存入这些任务的一个或其他的激活时期的第一系列;以及-在第二算术单元(μProY)中存入这些任务的一个或其他的激活时期的第二系列;-以及,响应于对所述目标资源的存取请求(InstrA),对于所述任务中的所谓存取任务,存入被称为对所述目标资源排他的存取的属性的系列,即,在对于存取的所述请求之后紧邻的存取任务的激活时期(SchA)的全部剩余时间期间,排除由这些任务的另一个对所述目标资源(ShMPi)的任何存取的属性;所述方法还包括以被称为重放编序的顺序结构来合并表示每个算术单元中激活时期的系列的存入数据和表示所定性的排他存取的系列的存入数据,以便维护相对于所述共享资源且在每个任务内的激活时期的系列顺序。
2. 根据权利要求1所述的方法,其特征在于,在重放计算机系统中使用 重放编序数据,以便重放所存入任务的所存入运行。
3. 根据权利要求1或2之一所述的方法,其特征在于,包括在存入期 间,在重放计算机系统内,对所存入任务可存取的软件资源的全部或部分的 虚拟化。
4. 根据权利要求1至3之一所述的方法,其特征在于,其在计算机网络 中的至少一个节点内实现。
5. —种实现根据权利要求1至4之一的方法的计算机系统。
全文摘要
本发明涉及用于管理的系统和方法,更具体地,涉及通过对计算机或计算机网络上执行的多任务应用内的一个或多个软件任务的运行进行外部、透明的和非侵入的控制的管理的系统和方法。本管理具体包括以存入数据形式对这些任务的运行进行记录,以及从这种存入数据重放该运行,以便呈现对应于存入时所获得的那些的行为和结果。本发明还涉及实施管理其所执行的软件应用的运作的这种方法的系统。
文档编号G06F11/14GK101107596SQ200680002985
公开日2008年1月16日 申请日期2006年1月24日 优先权日2005年1月24日
发明者吉勒斯·古艾尔拉德特, 菲利普·伯格豪德, 马克·弗特斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1