专利名称:通过利用可扩展的线程状态对计算装置进行操作的方法
技术领域:
本发明涉及一种对计算装置进行操作的方法,尤其涉及在操作系统(OS)内核中利用扩展了范围的线程状态来向装置添加新的个 性层(personality layer )。
背景技术:
对于制造商和设法将现有的计算技术实施在新的平台上以重新 使用他们现有的软件素材的其他人来说,这是非常有利的。对于那 些相对于产品开发所冲殳入的时间而拥有举交短产品寿命的i者如移动电 话的用户装置来i兌尤为重要;可以采用任何可以缩短开发周期而揭二 高开发岁文率,并且降4氐总i殳备成本的方法。通信找 (Communications stacks ) 和协议实现 (protocol implementation )是制造商设法在现代用户电子装置中重新使用的软 件素材的较好的实例。对于这种装置的统一 (converge)有着增长 的趋势,因此越来越多地在许多种不同的情况中需要通信和连网能 力。这种^:件素材倾向于具有以下共同特;f正*它们是大型的复杂的^l件包(piece of software),其中,有关 的电话制造商已经做了相当可观的财务投资*它们具有显著的实时要求*它们一般被开发用于在一些类型的实时操作系统(RTOS) 上运4亍。这些实时操:作系统既包4舌专属系统(proprietary system)又包4舌i者如Nucleus Plus 、 VRTX、或OSE的才示准商 业系统(commercial system )。这种斩J牛 一皮称为原有实时应用#呈序(legacy real time application, 简称LRTA )。将LRTA结合到新的装置平台上有许多方式。一种相对直接的方法是将LRTA组件运行在其自己的CPU (与 用于处理该装置的其余功能的CPU分开)上。该解决方案有一些优 点不需要修改LRTA,以及将其与装置上的其余的软件完全隔离 开的事实减小了集成的负担。但是,该方法也有一些缺点最值得注意的是额外的处理器的 成本以及装置中所需的物理存储器的增加。因为现代的计算装置上的成本压力,并且这些成本压力首先对 4吏用LRTA的决定负责,所以经常出现由于分离处理器的方案过于 昂贵而被否决的情况。这不可避免地意p木着LRTA必须和装置上的 软件的其余部分运行在同一个CPU上,并且将需要在用于该CPU 的本地的操作系统(OS)下运行。本领域的技术人员将会意识到完 成这些有三种主要的方式1.修改LRTA的源代码(和可能的设计),以直接在用于该CPU 的本地OS下运行。因为LRTA通常是由相对低等级(level) 的组件组成,所以这通常通过将LRTA重组为纯内核才莫式的 装置驱动器或者内核模式和用户模式的组件的组合来实现。 但是,由于修改LRTA所花费的时间、这么做所伴随的风险、 以及由于为L RTA创建第二个截然不同的W反本而为装置制造商增加的运行维护负担的问题,这种选4奪在商业上也是不切 实际的。2. 实现一种本地OS和LRTA RTOS同时运行在其中的系统。 这可以通过在关键位置(strategic place )(中断以及可能的其 他异常向量)上》文置异常分支(hook)到CPU本地OS内核 中以允i午RTOS运4亍来完成,或者通过实^见在两个才喿作系统 之间执行上下文切换的某种"管理程序(hypervisor)"来完 成。这需要对两个操作系统都进行改进,以向管理程序发出 呼叫来指示线程切换、优先级改变等。然而,这第二个选4奪也有其问题。由于在每次中断时以 及在每次执行呼叫时所呼叫的异常分支(即使它们和LRTA 不相关)而使性能降低。由于在中断时会出现更多的异常分 支和整个额外的处理层,管理程序系统会^f吏性能更加严重的降低。另外,这些异常分支给代码的特别敏感的区域增添了 额外的复杂度和缺陷的风险。而且,由于LRTA中的低优先 级的线程会优先于本地OS中的高优先级的线程,所以向本 地OS内核插入异常分支以允许RTOS随时运行会石皮坏其实 时性能。管理程序系统没必要面对这种问题,但是会更加复 杂并会导致更大的性能损失。另外,如果需要将多于一个的 RTOS集成到装置上时,异常分支会变得异常复杂和难以管 理;例如,如果既需要GSM信令栈又需要蓝牙栈,并且它 们每个都使用不同的RTOS,这会是必要的。3. 在本地OS内核上实现个性层,个性层4是供和最初的RTOS 一才羊的应用编程j妾口 (API),或者至少和LRTA所要求的一 样。贝'J RTOS本身可以,皮省却,LRTA能够利用本地OS内 核作为下层实时内核(当然假设其具有该能力)运行。发明内容对于该问题,使用个性层是优选的解决方案,而本发明旨在换: 供这样的解决方案。然而,实现个性层的当前方法不能实时处理多个特性。本发明 提出了 一种实现这种实时操作的方法。根据本发明的第一方面,提出了一种在运行第二操作系统的计 算装置上实现用于第一"t喿作系统的个性层的方法,该方法通过以下 步骤使得为第 一操作系统所写的软件能够运行在该装置上a.由个性层向运行在计算装置上的执行的线程添加额外状态; 以及层中的处理禾呈序(handler )。根据本发明的第二方面,提供了 一种被配置为根据第 一 方面的 方法进行操作的计算装置。根据本发明的第三方面,提供了 一种使计算装置根据第 一方面 的方法运4亍的才喿4乍系纟充。
现在将仅利用进一步的实例并参考附图来描述本发明的实施 例,其中图1示出了用于通过利用个性层来处理线程状态以扩展内核可 操作性的本发明的一个实施例;以及图2示出了将线程指向个性层的操作。
具体实施方式
本发明使内核可扩展,并通过使其变为可能来添加额外的线程 状态,这使得个性层(PL)的开发变得可能。个性层可被看作位于 内核上部并才莫拟供已经存在的应用程序^f吏用的另 一个操作系统的 API的一个层。本发明的 一个实施例可以如下进行操作参考图1, PL被安排用于创建线程可以等待的额外的等待对象 (wait object)(包括但不限于信号量、消息队列、及事件标记)。当 线程等待这些新的等^寺对象之一时,PL使该线程处于一个内核未知 的新的PL特定的状态。因此,如果线程处于这些新状态之一,内 核无法在对于其状态(例如结束,暂停,改变优先级)壽丈感的线程 上进行操作,从而PL呼叫内核以使线程阻塞在PL等待对象上。图 1中示出了该过^E。然而,当OS内核需要在线程上^Vf亍l喿作时,OS内核才企查该线 禾呈的状态。如果该线禾呈处于该内核已知的状态,则OS内核处理该 线程所定义的操作。4旦是,如果该线程处于该内核未知的状态,则 该内核将该才乘作重定向到PL中的处理程序。因此,该才喿作:故重定 向到处理这种情况的PL中的处理禾呈序。由于通过^是供添加的个性 层,可以将该内核用于运行为另一个RTOS所写的LRTA,从而扩 展了该内核。图2中示出了该过程。现在将阐述关于Symbian OS EKA2超微内核(Nanokernel)的 一个详细实例。这对于Symbian OS操作系统编程领域的技术人员 来说是能够较容易理解的。超微内核不支持标准的实时操作系统所提供的同步(synchronisation)和通信原语。因此,需要在个性层中实现LRTA (原有实时应用程序)所需的任何这样的原语。这主要意味着需要 个性层本身来定义线程可以等待的新类型的对象。这反过来需要定 义新的N-状态(见下面)来表示线程正在等待一个新类型的对象; 一般地,每个新类型的等待对象都会需要附随的新的N-状态。因此, 为了使线程真正阻塞在新类型的等待对象上,可以使用以下的超4效 内4亥功肯fe:Void NKern::NanoBlock (TUint 32 aTimeout, TUint aState, TAny* aWaitObj);可以如下定义超微线程(nanothread)生命周期和超微线程N-状态超孩i内核线程可以处于由NThreadState枚举以及由NThread的 iNState成员^t据确定的若干种状态之一。现在将描述这些状态中的 一些iNState==Eready:此状态下的线程适于一皮选来冲丸行。它们^皮《连 4妄到就绪列表中。最高优先级的EReady线程是将在任意给定时间 而实际上执行的线程,除非其被阻塞在快速互斥体(fast mutex )上。iNState==Esuspended:处于该状态的线程已经明确地净皮另 一个 线程暂停,而不是被阻塞在等待对象上。iNState==EwaitFastSemaphore:处于该状态的线程;故阻塞,等 待将被以信号通知(signal)的快速信号量。iNState==EwaitDfc:该线程是DFC-处理线程,其被阻塞,等 待将一皮添加到其正在维护的DFC队列的DFC。 ( DFC是延时功能呼叫(delayed function call ),是OS中所4吏用的才几制,用于4吏用户才莫 式动作能够^C中断所触发)。iNState==Esleep:处于该状态的线程;故阻塞,等纟寺特定时限结束。iNState==Eblocked:处于该状态的线程被阻塞于在超微内核上 方的一个层中实现的等待对象上。这一般意味着其被阻塞在信号量 或互斥体上。iNState = Edead:处于该一犬态的线禾呈已经纟冬止并且不会再次扭^行。应该注意到,如果正在创建个性层,则有可能考虑到超微线程 具有额外的状态;即,iNState将能够采用除了那些上述的值之外的 值。为了实现这一点,可以在NThread中提供iStateHandler,如果 在用于该超孩i线程的状态中存在转换,则内核—皮安排用于呼叫该功 能——如果其纟皮重新开始、纟皮阻塞等。因此,本发明使得多个个性层能够辟皮实时实现,这反过来有助 于将现有实时软件植入新的装置,减少装置开发时间。因此,可以如下总结本发明。运行在才喿作系统内核上的个性层 将该个性层所负责的任意线程放入该内核未知的新状态中。这防止 内核在已经被设置为处于这些新的状态之一的线程上执行操作,其 中,这些操作对线程本身的状态(例如,取消、暂停、改变优先级) 很敏感。相反,内核将这些线程操作重定向到该个性层中的处理程 序,然后其处理该才喿作。所以在本质上,内核可以通过^f吏用增加的 个性层而扩展,因此其能够被用于运行为其他实时操作系统所写的 原有实时应用程序。虽然已参考特定实施例描述了本发明,但是应了解,可在所附 权利要求限定的本发明的范围内进行各种修改。
权利要求
1.一种在运行第二操作系统的计算装置上实现用于第一操作系统的个性层的方法,所述方法通过以下步骤使得为所述第一操作系统所写的软件能够运行在所述装置上a.由所述个性层向运行在所述计算装置上的执行的线程添加额外状态;以及b.所述第二操作系统的内核将处于这些额外状态的线程调度给所述个性层中的处理程序。
2. —种计算装置,被配置为根据权利要求1所述的方法进行操 作。
3. —种操作系统,用于使计算装置根据权利要求1所述的方法进 行操作。
全文摘要
运行在操作系统内核之上的个性层使该个性层所负责的任意线程处于该内核未知的新状态。这防止内核在已经被设置为处于这些新状态之一的线程上执行操作,其中,这些操作对线程本身的状态(例如,取消、暂停、改变优先级)很敏感。相反,内核将这些线程操作重定向到该个性层中的处理程序,然后其处理该操作。所以本质上,内核可以通过使用增加的个性层而扩展,因此其能够被用于运行为其他实时操作系统所写的原有实时应用程序。
文档编号G06F9/46GK101238439SQ200680028888
公开日2008年8月6日 申请日期2006年8月8日 优先权日2005年8月10日
发明者丹尼斯·梅 申请人:西姆毕恩软件有限公司