计算装置中的可抢占语境切换的制作方法

文档序号:6568460阅读:132来源:国知局
专利名称:计算装置中的可抢占语境切换的制作方法
计算装置中的可抢占语境切换本发明涉及改进多任务计算装置的性能、响应性和效率,并且具体地,涉及通过使用可抢先(pre-emptible或称可抢占)的语境切 换来提供这些种改进。5 术语"计算装置"包括但不限于,台式及膝上型计算机、个人数字助理(PDA)、移动电话、智能手机、It码相机以及数字音乐 播放器。它还包括合并了一种或多种上述装置的功能的集成装置, 和许多其他形式的、在其功能上^衣靠于软件的工业与家用电子i殳 备。10 多数先进的计算装置是由操作系统(OS )控制的,该操作系统控制着装置的所有操作。在OS中,内核代表中心核,它具有超越装置中其它所有^:件和^i件之上的、非常高的控制等级;典型地,所述内核在特权管理程序^^莫式下运行,由此它就;故信任去做普通应 用程序(在用户模式下运行)不被信任去做的任务。15 多任务计算装置可在若千单独指令串中的任一个的执行之间快速切换,其中,每个连贯的串被称为线程。因此,线程被当作该 装置上的执行单元。线程间的切换:帔称为语境切换。计算装置上的内存在不同的进程之间被分割,其中,每个进程 都由一个或多个线禾呈组成。当进禾呈由多于一个的线禾呈组成时,该进 20 程中的所有线程都可以访问同一个共享内存;但一个进程中的线程除了访问其自身进程的内存以外不能访问其他进程的内存。因此, 该进程可被当作装置上的内存保护单元。由此得出,当计算装置在第 一进程中的第 一线程和第二进程中 的第二线程之间切换时,从第 一线程到第二线程的执行的转移也必 5 然伴随着在所使用的活动存储器中的、从第一进程的第一线程到第 二进程的第二线程的某种形式的切换。为实现这个,最普通的方案之一就是利用这样的事实,即,现 代计算装置上的存储器通常处于非常严密的管理之下,典型处在内 核的控制之下。那些本领域的普通技术人员将意识到,装置上的内10 存被分组为地址连续的多个页面,并且装置上所有可能的可寻址的 内存位置的全体(totality)被称为虚拟内存地址。实际一皮安装的内 存地址的全体^皮称为物理内存地址,且计算装置包括由内存管理单 元或MMU所维护的乂人虚拟内存页面地址到物理内存页面地址的映 射。通过改变那些保存此映射的页面目录项的内容, 一组虚拟内存15 ;也址可用来指向所有可寻址的物理内存的期望区i或。在如上所述的 方案中,不同进程中线程间的语境切换伴随着内存的重新映射以使^ ^f呆护其线程已孚皮切出(be switched out)的进,呈的内存,且以4更可i^ 问其线程已,皮切入(be switched in )的进程的内存。为加速对相对緩慢的主存储器的访问,计算装置经常利用局部 20 (locality)的现象,该研究延续了三十多年。局部就是指"内存访问在程序寺丸行期间趋于被群集在小内存区域中的现象" (选自《用于在共享内存多处理器系统中改进内存访问局部的排序函数》作者Youfeng Wu,关于微架构目录的第25年度国际研讨会会议学报,1992年)因此,计算装置维护高速緩存,它由保存了已被读取的内存最 后几页内容的少量更快的内存组成。当一项读取内存的请求访问了 已被标识成在该高速緩存内的页面时,就称为发生了高速緩存命 中,且可以从更快的高速緩存存储器而不是相对緩慢的主存储器对5内存进4亍i方问。然而,通常在很多计算装置上,用于高速緩存的内存地址是虚 拟内存地址而不是物理内存地址。这意。未着当在不同进程的线程之 间发生语境切换时,在该高速缓存工作方式之后的逻辑就—皮无效, 且因为所请求的内存访问恰好匹配被保存的虚拟地址,故从该高速 10 緩存读取数据就几乎肯定是错的。因而,这种语境切换需要使该高 速緩存的整个内容无效从而对之前保存在该高速緩存内的虚拟内 存地址的任何访问将导致高速缓存未命中,这就迫使一次来自物理 内存的读取。这种高速緩存内容的无效叫做刷新高速緩存。以上所有操作对 15于本^支术领域工作人员都是熟知的。从上述描述可以看出,由于来回移动潜在的大量内存映射的需 求以及在利用被虚拟标记的数据高速緩存的硬件结构上刷新数据 高速緩存的需求,所以属于不同用户方进程的线程间的语境切换可 能是个耗时的过程。在这期间,该装置典型是不响应的,这是因为 20 这些操作一般在禁用抢占的情况下运行;这表明两进程间的语境切 换并不允许被准备运行的第三进程所抢先。冲丸行语境切换的所库4时长已在ARM结构4与5处理器上纟皮测 量。在最坏的情况下,这可能包括如下操作* ^f奮改页面目录项以移动附于前一进禾呈的所有内存的虛拟 25 地址*保护附于前一进程的所有内存* <奮改页面目录项以移动附于新进禾呈的所有内存的虚拟;也 址*刷新该处理器数据高速緩存5 在具有大数据高速緩存和慢速内存接口的处理器上,这将耗费500jus以上,这在计算期间是相当大的延迟。这是来自一个这种系 统的测量值。在禁用抢占的情况下,如果所有这些工作都由计算装 置的调度程序直接执行,则这将为最坏情况下的线程等待时间(从10 时间)加上半毫秒或更多。这个延迟对于很多现代计算装置都是不 可接受的,现代计算装置需要更好更快的实时性以保证操作将在更 短的^f呆^E时间内完成时间紧急的4壬务。根据本发明的第一方面,提出了一种在计算装置上的不同用户 进程的线程间切换语境的方法,在该计算装置中,在启动抢占的情 15况下,涉及页面目录项的修改或数据高速緩存的刷新的语境切换的 那些部分被执行,并且其中,对于那些部分,该语境切换被内核线 程所抢占。才艮据本发明的第二方面,提出了一种被安排来根据第一方面的 方法进行操作的计算装置。20 根据本发明的第三方面,提出了一种用于使计算装置根据第一方面的方法进行操作的才喿作系统。现在将参照附图仅通过另 一个实例来描述本发明的实施方式, 其中-.

图1示出了才艮据本发明的可抢占语境切换的实施方式。本发明背后的理解是,并非来自用户进程中运行的线程的所有 语境切换都需要上文所概括列出的所有操作。特别地,从用户进程中的线程到内核线程(运行在管理程序才莫5 式下的特权线程)与某些固定用户进程(见下文)中的线程的切换 都会更快的发生,故应该具有更短的保证等待时间。为达到此目的, 本发明考虑到了在启动抢占的情况下进行页面目录项的修改以及 数据高速緩存的刷新。这里描述的本发明的下一个实施方式涉及Symbian OS操作系 10统,用于凄t字启动的高级移动电话的全^求开》文性工业标准才喿作系 统。并々支i殳下面的解释乂于于那些熟悉Symbian OS习'贯用i吾的4支术 人员是容易理解的。存储器模型提供了具有当需要地址空间切换时就应当被使用 的回叫的线程调度程序(内核的一部分)。下列说明描述了当调度 15禾呈序调用该回叫时所发生的事<牛序列。參根据先前说明的,因为切换用户模式地址空间是复杂的操 作,且可能要求有相当多的时间周期,所以地址空间切换 在启动4仓占的情况下就^皮冲丸-f亍。*基本上,内核恢复用于新线程的寄存器,以便该系统使用 20 新线禾呈的管理:程序堆一戈,然后在恢复正确的MMU配置之前重豸斤启动才仓占。于是,该豸斤线禾呈"i殳定其自己的MMU酉己 置。*用户模式地址空间在内核中是个共享的数据对象,这是因为多于一个的线程会希望访问不同进程的用户模式内存; 例如,在进程间通信(IPC)或装置驱动程序数据传输期间。 显然,重新启动抢占需要某些其他保护手段以避免多个线 5 程同时l奮改页面目录项。这是通过确保当4丸行这些操作时代码保持系统锁定快速互斥体而被提供的。在PCT/GB2005/001300的专利申请中公开了系统锁以及快速 互斥体的纟乘作。 这个决策对内核方软件具有显著影响,尤其是对内存模型 10 有显著影响——无i仑何时另一进程的用户才莫式的内存正—皮访问,系统锁定都必须^皮保持以确4呆用户才莫式内存的一致 性碎见图。*语境切换是个如此长时间的操作,以至于为整个持续期间 保持系统锁定会对OS的实时性能整体上产生影响,这是因 15 为内核线程也需获得这种锁以传输来自用户模式内存的数据和传输至用户才莫式内存的数据。*才艮据本发明,通过在语境切换期间定期冲企查来处理这个问 题,以查看另一线程是否在等待系统锁定。如果找到了等 待线程,则就推测出该线程一定是内核线程,这是因为它 20 们是唯一一皮允许保持系统锁定的线程。所以,在这种情况下,语境切换一皮》文弃,且等待线程:故允许运行。*这4吏用户才莫式地址空间维持在半一致的状态内核软件可 定位和操作所需地址空间的任何用户模式程序块,但当用 户才莫式线程一皮再次调度时,更多操作就^皮要求来完成地址 25 空间切4奐。图1中示出了一典型过程。此过程起始于os内核开始切换语境至所调度的线程的时间。然后,用于所调度线程的寄存器就被恢复,且4仓占就#皮启动。当已启动4仓占时,就可在4壬一点4仓占i吾境切 换。5 然后,调度程序获得系统锁定并调用内存才莫块回叫以切换地址空间并为该线禾呈'恢复正确的MMU配置。i也址空间切4灸以及上文所 述的高速緩存刷新被分解为更短的操作序列,而这些更短的操作然 后就被依次执行。因此,如图1所示,序列中的下一操作被执行。 然后,确定更高优先级的线程是否在等待系统锁定。如果答案是否, 10 操作的序列被继续,在序列中的每个操作之后,对在等待系统锁定 的更高优先级的线程进^于4企查,直到该序列完成。 一旦该序列完成, 系统锁定就一皮解除且i吾境切换完成。如果在操作序列执行期间的任何时候都确定更高优先级的线 程在等待系统锁定,则系统锁定一皮解除,语境切4灸就在那时^皮;故弃, 15且系统让步于更高优先级的等待线程。这个过程可在图l中看出。上文提到,某些用户进程中的线程被允许抢占语境切换。所讨 论的线程是那些固定进程的一部分。内核线程和属于使用MMU域 的用户进程(称为固定进程)的用户线程这两者都能在任意点处抢 占语境切换并立刻运行。属于其他用户进程的线程仍可以抢占语境 20 切换,但仅在对系统锁定的争用被检查的点处。之后,MMU表必 须在新线程可以运行前就被调整。固定进程的优点在于不需刷新数 据高速緩存。只有重要的且频繁使用的服务器进程被标记为固定进程。将其 与普通用户进程进行区分以及使其能够抢占语境切换的那些就是, 25OS内存才莫块将在内核部分中分配凄t据程序块,且这些程序块从不 被移动,而并不在用于用户进程的普通凄t据,殳中为这些进程分配数据程序块。如果有可能,内存模块还分配MMU域以为固定进程内存提供保护。其结果是,传至或来自固定进程的语境切换与传至或来自内核 进程的切换相似,而不需页面目录项的任何修改或者高速緩存的刷5 新。使用该特征的 一 个结果是,只有固定进程的单 一 实例可以不断 地运行,但这对OS中的大部分服务器进程来说是个相当合理的约 束。在本实施方式中,-故标记为固定的典型进程是文件服务器、通 信服务器、窗口服务器、字体/位图服务器以及数据库服务器。当这 10 个属性被有效地用于装置中时,它就使整体性能得到了显著的改 善。固定进程优化依赖于所述跟踪若干进程的内存模块。其保存了 以下进程的i己录TheCurrentProcess:这是内核值,实际上是当前一皮调度线牙呈的 15固有(owning)进程。TheCurrentVMProcess:这是最后已运行的用户模式进程。其'拥 有,用户模式内存映射,而其内存是可访问的。TheCurrentDataSectionProcess:这是用户才莫式进禾呈,其在^>共 地址范围(即数据段)内至少具有一个移动程序块。20 TheCompleteDataSectionProcess:这是用户才莫式进禾呈,其在凄史据段内具有其全部的移动程序块。应注意,因为净皮;改弃的语境切换或进程终止,这些值中的某些 可能是空的。由进程语境切换所使用的算法如下1. 如果新进程是内核或具有MMU域,则跳过所有这些步骤。2. 如果新进程是固定的,则转到步骤7。3. 如果新进碎呈不是TheCompleteDataSectionProcess,贝'J因 5 为至少一个程序块将不得不一皮移动,乂人而刷新ft据高速緩存。4. 如果进程(而非新进程)占用了数据段,则将其所有的 程序块移至起始4殳(home section)并保护这些程序块。5. 如果进程(非新进程)是最后的用户进程,则保护其所 10 有#呈序块。6. 将新进程的程序块移至数据賴(如果已不是当前的)并 且不保护它们。转到步-骤9。7. [固定进程]保护TheCurrentVMProcess的程序块。8. 不保护新进程的程序块。15 9.如果任何程序块被移动或许可被改变,则刷新翻译后援緩沖器(TLB)。从上述描述应当理解,由于来回移动潜在的大量内存映射的需 求以及在使用虚拟标记的数据高速緩存的硬件结构上刷新数据高 速緩存的需求,所以属于不同用户方进程的线程间的语境切换是个 20 耗费时间的过程。本发明允许在启动抢占情况下,在语境切换期间 发生修改页面目录项和刷新数据高速緩存;如果第三进程需要在语 境切换期间运4亍,且此第三进程不拥有或不需要页面表的任何用户内存小务改,则现在是可能的。通过本发明,至内核线禾呈及固定用户进程中的线程的切换可以发生地更加快速;这些线程不属于拥有任 何用户内存的进程且恰好是需要用更低的确保等待时间来运行以 确保实时性能的线程。因此,本发明通过允许用户模式线程间的有限数量的语境切换 的抢占来改善操作系统的实时性能,从而提供了现有技术之上的更 显著的优势。虽然已参考具体实施例描述了本发明,但应理解,在由所附权 利要求所限定的本发明的范围内进行的任何修改都是有效的。
权利要求
1.一种在计算装置上的不同用户进程中的线程间切换语境的方法,其中,在启动抢占的情况下,涉及页面目录项修改或数据高速缓存刷新的语境切换的那些部分被执行,并且其中,对于那些部分,所述语境切换是被内核线程所抢占的。
2. 才艮据冲又利要求1所述的方法,其中,所述内核线程保存^又被内 核线程所要求的数据对象,并且其中,所述计算装置在所述语 境切换期间查看在所述对象上是否存在等待的任何线程。
3. 根据权利要求2所述的方法,其中,所述数据对象是互斥体。
4. 根据权利要求1至3中任一项所述的方法,其中,所述语境切 换的部分被在进程中运行的用户线程所抢占,所述进程使其内 存净皮分配在一皮正常保留全合MMU域和所述内核所用的那部分 存储器中。
5. —种被配置为以根据权利要求1至4中任一项所述的方法进行 操作的计算装置。
6. —种用于使计算装置根据权利要求1至4中任一项所述的方法 进行操作的操作系统。
全文摘要
由于来回移动潜在的大量内存映射的需求以及在利用虚拟标记的数据高速缓存的硬件结构上刷新数据高速缓存的需求,所以属于不同用户方进程的线程间的语境切换是个耗时的过程。本发明在启动抢占的情况发生时,允许在语境切换期间修改页面目录项和刷新数据高速缓存;如果第三进程需要在语境切换期间运行,且该第三进程不拥有或不需要页面表的任何用户内存修改,则现在是可能的。通过本发明,至内核线程及固定用户进程中的线程的切换可以发生地更加快速;这些线程不属于拥有任何用户内存的进程且恰好是需要用更低的保证等待时间来运行以确保实时性能的线程。
文档编号G06F9/46GK101238441SQ200680028671
公开日2008年8月6日 申请日期2006年8月8日 优先权日2005年8月10日
发明者丹尼斯·梅 申请人:西姆毕恩软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1