首页 重叠地址空间的二次重定向研究

重叠地址空间的二次重定向研究

举报
开通vip

重叠地址空间的二次重定向研究重叠地址空间的二次重定向研究 吴贞海~刘福岩~李雪敏~等:重叠地址空间的二次重定向研究 计算机工程与设计 Computer Engineering and Design() 3003 2010,31 13 体系结构与外围设备 重叠地址空间的二次重定向研究 吴贞海~ 刘福岩~ 李雪敏~ 易松 ( ) 上海大学 计算机工程与科学学院~上海 200072 (摘 要:为了提高操作系统内核在地址空间切换时候的效率~利用 ARM 处理器上的快速上下文切换扩展fast context switching )extensi...

重叠地址空间的二次重定向研究
重叠地址空间的二次重定向研究 吴贞海~刘福岩~李雪敏~等:重叠地址空间的二次重定向研究 计算机 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 与设计 Computer Engineering and Design() 3003 2010,31 13 体系结构与外围设备 重叠地址空间的二次重定向研究 吴贞海~ 刘福岩~ 李雪敏~ 易松 ( ) 上海大学 计算机工程与科学学院~上海 200072 (摘 要:为了提高操作系统内核在地址空间切换时候的效率~利用 ARM 处理器上的快速上下文切换扩展fast context switching )extension~FCSE~实现任务地址空间的二次重定向。该方法首先将任务地址空间重定向到一个大的单地址空间~内存管理单 元再进行从虚拟地址空间到物理地址空间的重定向。单地址空间到物理地址空间的地址转换信息始终保持有效。因而~内存 ()()管理单元memory management unit~MMU在任务切换的时候不必清空转换查询 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf translation look-aside buffer~TLB~可提高处理器 在任务切换时候的效率。通过在 ARM920RT 处理器上的实验发现~按该方法设计实现的内核可以稳定地运行在虚拟机上。 关键词:地址空间; 嵌入式处理器; 快速上下文切换扩展; 操作系统; 内存管理单元 () 中图法分类号:TP316 文献标识码:A 文章编号:1000-7024 201013-3003-04 Research on re-redirection of overlapped address spaces WU Zhen-hai, LIU Fu-yan, LI Xue-min, YI Song ()School of Computer Engineering and Science, Shanghai University, Shanghai 200072, China (Abstract:To improve the performance of operating system kernel, while switching between multiple tasks, using FCSE fast context ) switching extensionof ARM920T embedded processors, re-redirection of address spaces is implemented. Firstly, address spaces of task is redirected to a segment of single address space. Secondly, this segment is redirected to physical memory space by memory mana- gement unit. As information of address translation from single address space to physical memory address space keeps valid, there is no () ()necessary for MMU memory management unitto flush the TLB translation look-aside buffer, and performance of kernel could be improved. Finally a stable kernel is implemented on virtual machine. embedded processors; fast context switching extension; operating system; memory management unit Key words:address-space; 0 引 言 1 传统操作系统中的地址空间切换 在传统的多地址空间操作系统之中,应用程序的用户态在传统的 IA32 架构上的操作系统上,应用程序的用户态 地址空间重叠。当任务切换的时候,重叠的用户态地址空间 和核心态占据整个可以寻址的 4G 地址空间,系统内核为每一 需要切换,TLB 中的地址转换信息对于换入的新任务是失效 个应用程序在内核地址空间保留一份页表,系统内核根据这 信息,TLB 需要被刷新,这样的时间代价很大。因此,单地址 个页表把应用程序的虚拟地址空间映射到物理地址空间,如 空间的概念被提出来,尤其是在那些寻址空间很大的 64 位 1 所示,在进程切换的时候通过写入控制寄存器 CR3 来切 图处理器平台上,每一个任务占据这个 64 位虚拟地址空间中 换系统当前运行程序的一级页表,一级页表也叫做页目录, 的一个区域,每个任务占据的区域可以看作是这个 64 位地 CR3 指向的内存位置存放一级页表。一级页表的每一个条目 ()址空间中的一个段,而且这些段互不重叠,进程切换也就不 PDEpage directory entry,它指向一个二级页表。MMU 负 叫做 需要执行地址空间的切换,TLB 数据保持有效,进而不必清 责将程序的虚拟地址转换成实际的物理地址,并通过页表中 TLB。单地址空间系统要求任务地址空间不重叠,这就要 空存放的权限信息对访问进行控制。如果遇到没有映射到页或 求:?任务在编写的时候明确知道任务的加载地址,但是这 者页访问授权冲突,处理器进入缺页异常或者访问违规处理 显然不现实;?任务在加载的时候可以被操作系统软件重定 例程,由操作系统内核来处理这一错误。传统操作系统中地 向,这样会加重操作系统内核的负担,并且需要软件在重新 址空间切换到特点是,随着这个进程的换出,这个进程的地址 ARM920T 处理器的 FCSE 编译时候加入重定向信息。借助于空间对于即将换入的进程是失效的,于是操作系统内核负责 可以实现任务地址空间到单地址空间再到物理地址空间的 进行地址空间的换入和换出,这当中必须要清空MMU 中 TLB 二次重定向。的地址翻译缓存信息。 收稿日期:2009-07-16;修订日期:2009-10-09。 ()()作者简介:吴贞海 1984,,男,安徽肥东人,硕士研究生,研究方向为嵌入式操作系统;刘福 岩 1965,,男,河北滦南人,博士,副教 ()()授,研究方向为计算机操作系统;李雪 敏 1985,,女,安徽宿州人,硕士研究生,研究方向为计算机操作系统、计算机图形学易;松 1985,, 男,湖北松滋人,硕士研究生,研究方向为计算机操作系统、计算机图形学。E-mail:zhhwu@shu.edu.cn 2 单地址空间 当前任务 内存管理 物理地址 虚拟地址 单元 空间 当前任务当前任务虚拟 []空间0-4G 0-4G 地址空间 [() ]4 n-1G-4nG 内存管理 物理地址 图 1 传统操作系统中的地址空间转换 单元 空间 FCSE 就绪任务虚拟 地址空间 就绪任务2 单地址空间操作系统中的地址空间切换 0-4G [] 0-4G 在单地址空间中,所有任务各自的地址空间依然是 4G , (但是这些任务共享一个非常大的单地址空间,比如说,第 n n 图 3 到单地址空间的硬件重定向 )()为正整数个任务的地址空间可以是 4n-1G 到 4nG,如图 2 所 64 64 位平台上,单地址空间的大小可以设计为 2字节。 示,在) 所示。PA,最后根据物理地址访问物理内存,具体过程如图 4 所有任务的地址空间转换信息全部保存在一张大的页表中。 3.2 使用 FCSE 应该注意的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 FCSE 3 由于使用了,那么有个需要特别注意到地方:?在 这张页表也是系统中唯一的一张页表,进程切换时候就不存 调度过程中,一旦协处理器 CP15 的进程 ID 寄存器被写入新 在页表的切换。所有使用过的地址空间转换信息都有可能缓 MMU 的 TLB 中,具体哪些页表信息缓存在 TLB 中,取决 ID,处理器在低端 32M 虚拟地址空间的寻址就会立即 的进程存在 TLB 的更新策略。 于 FCSE 修改,也就是说,这条写入指令和后面的指令实际上 被 并不一定是相邻的,因此,包含调度代码的系统核心应该放在 地址空间中大于 32M 的高端某个固定位置。?每一个正在运 () 行的任务,使用低端的 32M 地址空间,同时有一个别名Alias2 单地址空间 (任务位于当前进程 ID 重定向的位置。?中断向量表interrupt ) 当前任务虚拟 vector table,IVT默认在内存 0x00000000 位置,由于启用了 地址空间 FCSE,所以为了避免在每个任务的地址空间内重复定义一份 [() ]4 n-1G-4nG 内存管理 物理地址 IVT,通过设置协处理器 CP15 的控制寄存器的 V 位,把 IVT 定 单元 空间 义到地址空间高端的 0xFFFF0000 位置。 就绪任务虚拟 地址空间 []0-4G 4 地址空间二次重定向系统设计 图 2 单地址空间操作系统的地址空间转换 4.1 基本原理 3 任务地址空间到单地址空间的硬件重定向 ARM920T 的虚拟地址空间是 4G,低端的 2G 地址空间可 以看作是一个包含 64 个 32M 地址空间的集合。这些任务的 既然在单地址空间中,所有任务的地址空间共同存在于地址空间并存于低端 2G 地址空间中,并且不重叠。系统核心 一个大的单地址空间中,那么,这些任务的地址空间就不可以 2G 以上。任务切换的时候,用于物理寻址的地址翻 位于高端是重叠在一起的。进而,导致一个问题,这些任务在内存的位 译信息,缓存在 TLB 中,由于任务地址空间不重叠,所以没有 置必须在编译的时候已经确定,或者,任务在加载的时候,已 TLB 中的数据。由于 FCSE 硬件的存在,使得在程 必要清空 经被操作系统重新定向了。这里的重定向是软件方式的重定 序员看来,任务始终运行在低端 32M 地址空间内。 4.2 任务状态切换 向,也就是操作系统根据任务重定向信息将任务分派到单地 址空间中互不重叠的不同位置。如果在 ARM 处理器平台上, 为了验证地址空间二次重定向设计方法,实现了一个实 FCSE,可以实现硬件方式的任务地址空间 借助于这个平台的验性质的操作系统调度核心。在这个实验项目中,每一个任 []3到单地址空间的重定向,如图 3 所示。使用软件方式或者硬 3 个状态:就绪,运行,挂起。这是嵌入式系统中任务经 务有件方式的到单地址空间重定向,其意义在于,使得在程序员看 3 种状态,如图 5 所示。 常使用的来任务始终运行在固定的地址空间,比如说常见的 0-4G。 任务创建时候的初始状态为就绪,如果使用时间片轮转 3.1 ARM920T 上的 FCSE[] 1FCSE 是ARM 公司在ARMv4 架构的处理上新增的一个 () 硬件地址翻译机构,作用是将虚拟地址 virtual address,VA转 []4-5 策略 ,那么每一个这样的就绪任务将在系统调度中按顺序()换为修改过的虚拟地址modified virtual address,MVA,MVA 和 运行。一旦某个任务自身休眠,或者请求某个没有信号的资VA 的转换关系如下 VA FCSE MVA 就绪 = ; <32 , = + ×32 ; 32 MMU 处理器核心发出的 VA 寻址请求首先到达 FCSE,FCSE 根 挂起 运行 ()据当前的进程标志符process identifier,PID,对这个地址进行修 PA []2 MVA,将 MVA 发送给虚拟缓存或者 MMU,MMU 对这 改,得到 (个修改过的虚拟地址进行翻译,得到物理地址physical address, 图 4 使用 FCSE 后的 CPU 寻址过程 图 5 任务的状态切换 () 3005 吴贞海~刘福岩~李雪敏~等:重叠地址空间的二次重定向研究2010,31 13 源,那么这个任务将进入挂起状态。 一旦某个任务时间片耗 4.3.2 基于域的访问控制 [] 6尽,那么这个任务将进入就绪状态。在休眠时间结束,或者某 在ARM920T 中,域控制系统用于主要控制,而页表控制 用于次要控制。在共享一个虚拟地址空间的时候,域将一块 个资源变成有信号状态,任务进入就绪状态,等待调度器的调 地址空间和另外一块地址空间隔离,以控制虚存的基本访问。 度,如果被调度器选中,那么这个任务将获得处理器运行时间 [] 16 个域可以通过 ARM 处理器的一级页表项的位8:5来分 有片,进入运行状态。配给相应的 1M byte 内存段。当一个域分配给一个段的时候, 4.2.1 挂起任务上下文的保护 这个段必须遵守分配给这个域的访问权限。域的访问权限在 正在运行的任务被中断,在中断例程入口处,首要的一件 ARM 的协处理器 CP15 中的寄存器 C3 中设置。协处理器 CP15 事情就是保护被挂起的任务的上下文信息,主要是寄存器信 ( C3 寄存器又称为域访问控制寄存器 domain access control 的息。在实验中,寄存器内容被推入到内核栈中,然后将栈指针 )register,DACR。这是一个 32 位寄存器,每个域使用这个寄存 ()作为参数调用 save_contextconst unsigned long * context函数, 器中的 2 个位来定义访问权限。域定义信息如表 1 所示。 把上下文信息存到任务队列中。 表 1 域定义信息 4.2.2 任务调度 ()在保护好了上下文以后,中断例程调用 schedule函数, 访问位域值说明 从就绪队列中寻找并设置即将换入的就绪任务指针。11 管理者 不受控制 4.2.3 就绪任务上下文的恢复 10 保留不可预料 在寻找并设置好就绪任务指针后,中断例程将当前栈指 01 客户 不受页表项的权限控制 () 针作为参数调用 load_contextunsigned long * context函数,该 00 可访问 产生域错误 函数从任务队列中将就绪任务的上下文信息保存到 context 指 针指向的栈中,内核栈中数据被修改,最后,在中断例程的返 任务间的通信4.4 回代码中,恢复已经被修改的内核栈中的数据。到此时,处理 考虑到保护任务数据,任务间被隔离,并通过各种措施保 [] 7器回到指定的就绪任务的上下文中运行。是必不可少的一项 护任务地址空间的访问,但是任务间通信4.3 任务间的隔离 操作系统功能。在传统的多地址空间操作系统中,任务间的 各个任务私有空间内的数据,只有任务本身可以访问,其 通信效率低,原因在于,操作系统内核需要多次切换处理器状 他任务需要访问,必须通过一些授权机制进行授权访问。在 态,进出内核态和用户态,在内核态和多个用户态之间复制通 传统的多任务地址空间中,任务的地址空间是重叠的,任务的 信数据。在单地址空间操作系统中,通信数据的传递,可以通 换出,整个地址空间也换出了,任何一个任务都看不到另外一 过地址空间的重新映射,或者地址空间授权访问信息的修改 个任务的地址空间信息,任务的通信需要通过操作系统核心 来完成。因为在单地址空间中,各个任务间的地址空间对其 他任务是可见的。如图 6 所以,当 Task2 需要发送消息给 Task0 来完成大量的通信数据的复制操作。然而在单地址空间当中, ( )的时候,消息的参数阴影部分可以不必通过内核去复制,只 任务的地址空间平铺在整个单地址空间中,任何一个任务都 要将 Task2 中包含参数的内存区域重新映射一份到 Task0 的 可以看到另外一个任务的虚拟地址空间信息。只要任务对于 Task0 对这个内存区域相应的权限,Task0 就 地址空间,并赋予单地址空间中某一个区域拥有访问权限,那么该任务就可以 可以获取来自 Task2 的消息参数了。 操作这一块地址中的数据。关于访问权限的控制,目前有两 种方式,一种是基于传统的段和页的控制方式,另一种是基于 域的控制方式。4.3.1 基于段和页的内存访问保护机制 单地址空间() 在大多数 x86 类似的平台上,硬件提供了基于段Segment Kernel ()和页Page的内存访问保护机制。在 x86 平台上,段保护和页 保护是基本的内存保护措施,如果忽略段寄存器权限检查机 Task2 Linux,那么页表系统就是唯一的内存保护系统了。 制,比如说 物理内存系统页表中的一个页表项负责将虚拟地址空间中一页映射到 Task1 物理内存中的一帧。一个页表项其实是一个 32 位的字,页表 MMU () (项不仅存储了当前页表项对应的物理帧 Frame的位置 使用 )高端的 20 位来描述,同时还存储了物理帧的访问权限信息 Task0 ()使用低端的 12 位来描述。如果一个内存区域没有映射到任 务的虚拟地址空间,或者已经映射但没有相应的访问权限,那 图 6 通过内存重新映射传递任务通信数据么对于这块内存区域的访问被禁止。如果在这样的平台上实 现单地址空间操作系统,并且仅仅使用基于段和页的任务存 4.5 任务的切换储空间保护,那么代价巨大。因为每一次任务的切换,都需要 如果现在有 3 个任务 A, B, C 在运行,每个任务的私有地 修改大量的页表信息。ARM920T 提供了一种新的域控制系 址空间都为 0-32M。3 个任务的进程 ID 分别为 0,1,2,3 个任 统,用来保护休眠的任务,实现任务地址空间的快速隔离。务地址空间分别隶属于域 0,1,2。在 2G 单地址空间中,这 3 个任务的私有地址空间,分别被重定向到 0-32M,32M-64M, 64M-96M 的地址空间。由于使用了 FCSE,那么,操作系统内 核在进程切换的时候,除了和传统的多地址空间操作系统一 样要保护休眠任务的上下文和恢复唤醒任务的上下文,另外 还需要:?把唤醒进程 ID 写到进程 ID 寄存器,实现地址空间 的重映射。?由于使用域来隔离任务的地址空间,所以要对 系统的域访问控制寄存器做相应的设置,保护挂起任务的地 址空间,激活即将运行的任务的地址空间。 4.6 地址空间的二次重定向 如图 7 所示,如果任务 Task1 的进程 ID 为 1,那么当它访 问私有 32M 地址空间中某个位置,比如,0x00001000,那么经 过 FCSE 第一次重定向以后,虚拟 cache 看到的寻址信号为 0x02001000,如果虚拟 cache 没有命中,MMU 看到的也是0x02001000,MMU 根据页表信息把 0x02001000 再次重定向到 物理内存的某个位置,处理器开始内存读写。 单地址空间 () () 图 8 任务 1 pid=1换出~任务 2 pid=2换入Kernel []10 Task2 TLB 的失效重建需要耗费大约 64×24cycles= 1536cycles ,处 64K-96M (理器的工作频率为 266MHz,那么,理论上节省的时间为1536+ 任务地址空间 )42/266MHz=5.9us。 () Task1 运行时Task1 32K-64M Kermel 6 结束语 Task0 Task1 FCSE 0-32M 0-32M 为了降低传统操作系统中地址空间切换时候清空 TLB 所 带来的时间消耗,首先分析了操作系统内核清空TLB 的原因, 图 7 Task1 在运行时候的地址空间第一次重定向 以及单地址空间操作系统这种空间换时间的解决思路,接着 分析单地址空间在地址空间重定向上的缺点,提出了一种基 为 2,当 Task2 在获得系统时间片 类似地,Task2 的进程ID 于 ARM 处理器快速上下文切换扩展的地址空间二次重定向 开始运行并访问私有地址空间的 0x00001000 的时候,将被重 设计方法,最后成功实现了一个简单的操作系统内核,内核稳 定向到 0x04001000 的虚拟地址。最后需要注意,如果 Task2 直 SKYEYE 虚拟机上,并在理论上分析了性能提升。 定运行在接访问 0x04001000 的时候,由于这个地址大于 32M,不会被 FCSE 机构重定向,那么将和访问 0x00001000 得到同样的结 果,这就是上面提到过的任务异名问题。参考文献: [][]1 Andrew N Sloss.ARM 嵌入式系统开发-软件设计与优化M.5 实验与分析 沈建华,译.北京:北京航空航天大学出版社,2005. S3C2410a-200MHz & 266MHz 32-bit RISC microprocessor []为了验证该设计方法的可行性,修改并成功编译了一份 2 []操作系统引导代码,实现 3 个任务的调度,该实验内核稳定运 user's manualM.Revision 1.0.Korea: Samsung Electronics,2004. [] 8 SKYEYE 虚拟机上。 行在[]张克非. 嵌入式实时操作系统分析 J. 计算机工程与设计, []3 5.1 实验方法()2005,268:2020-2023. () 1代码修改编译阶段:下载 vivi 源代码,修改 Head.S,使 []宋丰末.关于 RTOS 抢占式调度及优先级反转的几点探讨J. []4 []9, 用汇编语言实现用户模式,服务模式,中断模式的堆栈设置()计算机工程与设计,2007,2819:4719-4921. 在中断例程中实现任务调度和快速地址空间切换 。加入 fast_ 张曦煌, 邹治锋. 基于用户级别的进程调度策略的研究与实现 []5 switch.c 文件实现 3 个任务地址空间在单地址空间中的设置,加 []()J.计算机工程与设计,2006,2720:3928-3930. 刘云生,胡吴入task_list.c 文件,实现一个简单的任务队列,用于存储 3 个任务 []明.嵌入式实时操作系统中基于页的内存保护J. 计算机工的任务信息。修改 command.c 文件加入 fast_switch 命令支持。 ()程,2005,3118:53-57. 郭杨,王新社.嵌入式操作系统的硬实时[]6 ()2虚拟机在线调试阶段:配置 skyeye.conf,将编译好的内 []()微内核设计J.计算机 工程与设计,2008,291:115-118. 陈渝,核映像加载到虚拟机起始的 2M 物理地址。接下来运行虚拟 李明,杨哗.源码开放的嵌入式系统软件分析与实践,基 于 []7 机,vivi 在完成必要的硬件初始化后进入到交互模式,输入自 []SkyEye 和 ARM 开发平台M.北京:北京航空航天大学出 fast_switch 命令,内核开始设置单地址空间,启用中断, 定义的版社,2004. 步入到用户态的IDLE 进程,接下来系统就通过时钟中断来不 []8 师黎, 蔡国锋, 黄俊杰, 等. 基于 S3C2410A 的嵌入式操作系统 停的在 3 个任务之间切换运行,如图 8 所示。 []()uC/OS-II 的移植与实现 J. 计算机工程与设计, 2008,29 10: 5.2 实验结果 2523-2525. ()1实验证明使用了二次重定向技术的内核可以稳定的运 []9 []Cortex-A8 technical reference manualM.revisionr3 p1. United 行在虚拟机上。 Kingdom: ARM Limited, 2006. () 2在处理器中执行 TLB 的清空函数需要耗费 42cycles, []10
本文档为【重叠地址空间的二次重定向研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_654168
暂无简介~
格式:doc
大小:56KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-11-13
浏览量:21