模拟powerpc平台linux,操作Linux内核页表加速模拟PowerPC体系结构的方法

专利名称::操作Linux内核页表加速模拟PowerPC体系结构的方法

技术领域:

:本发明涉及计算机虚拟技术,特别是涉及一种操作Linux内核页表加速模拟PowerPC体系结构的方法。

背景技术:

:随着嵌入式设备普及,例如个人数字助手(PDA),手机等,基于便携移动设备的应用大量涌现。而嵌入式设备上的应用程序一般都在与目标平台异构的机器环境下开发,而且嵌入式设备又非常的昂贵,因此采用软件仿真模拟是一种必要的手段。计算机系统模拟器技术是在某种架构的计算机中通过模拟目标架构计算机的硬件特征和其指令执行的过程,从而实现在一台计算机上虚拟出多台计算机的技术。流行的计算机系统模拟器例如Bochs,可以在多种体系结构的机器上模拟多台Intel80×86体系的计算机,并运行Linux、freebsd等操作系统的Intel80×86版本;armulator,可以在Intel80×86体系结构的机器上模拟ARM体系的计算机,并运行ucLinux的ARM移植版本等。为了在模拟器上高效的运行操作系统,传统的全系统模拟有一定的局限性,为了突破瓶颈,必然要采用部分虚拟技术,即从硬件的角度看,他知道运行其上的是那种操作系统,并知晓这种操作系统的一些特性和细节,从而进行优化管理,达到提高运行效率的目的。PowerPC体系结构与传统的X86体系结构不同的一点是其采取的是虚页表,即硬件并不知道页表的格式,更不会去操作页表,。硬件只知道TLB的存在,而通过访问页表进行TLB的更新全部是软件行为。操作系统访问页表是一个特别频繁的过程,而对与Linux操作系统,内核页表更是频繁被访问,因为所有进程进入内核态都采用同一个页表,因此采用传统的模拟方法必然会导致模拟效率的低下。

发明内容本发明的目的在于提供一种操作Linux内核页表加速模拟PowerPC体系结构的方法,从硬件的角度对其进行管理和优化访问必然会提高模拟的效率。本发明采用的技术方案其步骤如下1)针对Linux操作系统,从硬件的角度来管理PowerPC软页表的部分模拟技术;2)首先进入地址监控模块,对操作系统的读写请求地址进行监控分发;当虚拟机侦测到对操作系统内核页表所在物理地址的读写操作,则进入相应的管理模块,否则按一般的读写操作对待;3)其次组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行具体的读写模块的操作;4)然后处理对内核页表的读和写操作;处理读操作时,当所访问的页为脏时,将该页写操作队列中的请求完成;当读缓冲中含有所需的数据时,直接返回,否则进行被模拟操作系统的访存操作;处理写操作时,对内核页表页的写操作采取延后策略,即对每个页表所在页维持一个写请求队列,当对应页的写请求到来时,首先将该页标志为脏页,然后将此请求加入该队列;6)内核页表所在物理页的监控模块,该模块相当一个守护进程,主要有两个作用首先,每隔一段时间,对达到一定长度的内核页表页的写请求队列进行刷新;其次,由于操作系统会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间,对一级页表进行监测,当某一项由0变为非0时,二级页表则增加了一页,这时就相应的增加一个缓冲让虚拟机来维护,反之则去调一个缓冲,从而减少主机的内存资源占用。本发明与

背景技术:

相比,具有的有益的效果是首先在于从硬件的角度对软件掌控的资源进行管理和优化,充分利用计算机科学中的时间,空间局部性的原理,对频繁的内核页表读写进行控制,提高系统cache命中率,弥补了PPCLinux本身的缺憾,从而达到模拟效率的提高;其次,并不需要修改操作系统源代码,具有充分的移植性和高度的可易用性。附图是发明的操作流程图。具体实施例方式在某PowerPC的模拟器中,已经实现了指令的解释执行以及对MMU的模拟,并准备运行PPCLinux-2.4.25。1)首先进入地址监控模块(如附图所示),对操作系统的读写请求地址进行监控分发;当操作系统的访存请求到来时,首先根据地址确定是否是对Linux内核空间的访问,即访问地址要大于PAGE_OFFSET,往往是3G,因为内核页表以及普通进程的页表都是存储在内核空间的。如果经检测访问属于内核空间,则进行进一步的地址检测,否则将其视为一般的读写请求;接下来进一步根据地址判断是否是对页表的访问[address_dispatch()],由于内核的globalpagetable是静态定义在数据段中的(声明在asm-ppc/pgtable.hexternpgd_tswapper_pg_dir[PTRS_PER_PGD]),其起始地址可从System.map通过命令”grepswapper_pg_dirSystem.map”得到,而二级页表的地址在一级页表的表项中,即起始地址后的每四个字节的值即一个二级页表的起始值,从pgd_offset()得到。当虚拟机侦测到对操作系统内核页表所在物理地址的读写操作,则进入相应的管理模块,否则按一般的读写操作对待。2)其次组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行具体的读写模块的操作;PPCLinux的一级页表占两张物理页,共8K,一共有2048项即一级和二级页表最多占2048+2=2050页,即维护一个含2050项的静态数据,每项是对应页读写缓冲的数据结构的指针。当读写地址大于swapper_pg_dir并且小于swapper_pg_dir+8k时,是对一级页表的访问,否则是对二级页表的访问,然后轮询一级页表的每个非零表项,从而确定访问的具体是哪一张二级页表。根据读写地址便可分发到对应页的缓冲,进行读写操作[handle_pgt_read(),handle_pgt_write()]。3)处理读请求时,当所访问的页为脏,即其dirty_flag=true时,将该页写操作队列中的请求完成[flush_write_queue()],即将先前写请求数据刷新到虚拟机系统的对应内存区域中;当读缓冲中含有所需的数据时,直接将该值返回,否则进行被模拟操作系统的访存操作,并将访存返回后的数据存储在维护该页表的缓冲区中;4)处理写请求时,采取的是延后写操作策略。首先将该页标志为脏页,即置该页的dirty_flag=true,然后将此请求加入该页写请求队列[addto_write_queue()],并未真正的对虚拟机系统的对应内存区进行写更新操作。5)同时,还有一个对页表页进行监控的守护进程在工作,每隔一段时间(2分钟左右,过长导致内存数据一致性较差,过短又加重系统负荷),对达到一定长度(80~100请求数)的内核页表页的写请求队列进行刷新[flush_write_queue()];其次,由于操作系统会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间(5~8分钟),对一级页表进行监测,当某一项由0变为非0时,二级页表则增加了一页,这时就相应的增加一个缓冲[add_page_buffer()]让虚拟机来维护,反之则去调[del_page_buffer()]一个缓冲,从而减少主机的内存资源占用。权利要求1一种操作Linux内核页表加速模拟PowerPC体系结构的方法,其特征在于1)针对Linux操作系统,从硬件的角度来管理PowerPC软页表的部分模拟技术;2)首先进入地址监控模块,对操作系统的读写请求地址进行监控分发;当虚拟机侦测到对操作系统内核页表所在物理地址的读写操作,则进入相应的管理模块,否则按一般的读写操作对待;3)其次组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行具体的读写模块的操作;4)然后处理对内核页表的读和写操作;处理读操作时,当所访问的页为脏时,将该页写操作队列中的请求完成;当读缓冲中含有所需的数据时,直接返回,否则进行被模拟操作系统的访存操作;处理写操作时,对内核页表页的写操作采取延后策略,即对每个页表所在页维持一个写请求队列,当对应页的写请求到来时,首先将该页标志为脏页,然后将此请求加入该队列;6)内核页表所在物理页的监控模块,该模块相当一个守护进程,主要有两个作用首先,每隔一段时间,对达到一定长度的内核页表页的写请求队列进行刷新;其次,由于操作系统会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间,对一级页表进行监测,当某一项由0变为非0时,二级页表则增加了一页,这时就相应的增加一个缓冲让虚拟机来维护,反之则去调一个缓冲,从而减少主机的内存资源占用。全文摘要本发明公开了一种操作Linux内核页表加速模拟PowerPC体系结构的方法。本发明方法通过截取对内核页表区域的读写操作,并将其进行缓冲队列管理,充分利用计算机科学中的时间,空间局部性的原理,对频繁的内核页表读写进行控制,提高系统cache命中率,弥补了PPCLinux本身的缺憾,从而达到模拟效率的提高。文档编号G06F9/455GK1746866SQ200510060990公开日2006年3月15日申请日期2005年10月8日优先权日2005年10月8日发明者陈纯,卜佳俊,周晨枫,柯化成,戚凌杰申请人:浙江大学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值