用于访问4gb以上物理内存地址空间的方法及装置制造方法

文档序号:6624007阅读:509来源:国知局
用于访问4gb以上物理内存地址空间的方法及装置制造方法
【专利摘要】本发明公开了一种用于访问4GB以上物理内存地址空间的方法及装置。基于本发明,完整的Memory-map信息在32位工作站操作系统开始加载之前被查询并存放在预定物理内存段中,以使该Memory-map信息得以保留至32位工作站操作系统开始加载之后、并被搜寻读取;由于完整的Memory-map信息至少能够真实反映板载内存的全部内存映射布局,因此,即便4GB以上的物理内存地址空间在32位工作站操作系统下不可见,通过对该Memory-map信息的读取也能够识别出板载内存中位于4GB以上物理内存地址空间的物理内存资源;并且,将识别出的板载内存中位于4GB以上物理内存地址空间的物理内存资源映射至虚拟内存地址空间,也能够规避32位工作站操作系统仅装载4GB以下的物理内存地址空间的强制性限制。
【专利说明】用于访问4GB以上物理内存地址空间的方法及装置

【技术领域】
[0001]本发明涉及内存访问技术,特别涉及适用32位工作站操作系统的一种用于访问4GB以上物理内存地址空间的方法及装置。

【背景技术】
[0002]随着内存技术的不断发展,越来越多的计算机被配置4GB甚至4GB以上的板载内存(俗称“内存条”)。
[0003]然而,对于32 位工作站版本的 Windows2000、Windows XP、Windows Vista 或Windows7等Windows NT核心系列操作系统(后文简称为“32位工作站操作系统”)来说,由于其仅装载了 4GB以下的物理内存地址空间,因而即便板载内存容量达到4GB、甚至超过4GB,在这些32位工作站操作系统下实际可用的板载内存都会少于4GB。具体说:
[0004]物理内存地址空间是指对物理内存编码的范围,所谓的编码通常也称作编址,是对所有物理内存的每一个物理存储单元(即一个字节)分配唯一的地址代码,只有被分配有地址代码的物理存储单元才能够被访问。
[0005]然而,需要被编址的物理内存资源不但包括板载内存,而且还包括例如主板的B1S (Basic Input Output System,基本输入输出系统)芯片中的 ROM (Read Only Memory,只读存储器)、显卡内存、以及PCI (Peripheral Component Interconnect1n,周边兀件扩展接口)/PC1-E (PCI Express,快速PCI)设备的存储器等大约1.25GB的其他物理内存资源。也就是说,4GB以下的物理内存地址空间中约有1.25GB的地址资源则需要保留给其他物理内存资源,因而只有大约2.75GB的地址资源能够分配给板载内存。
[0006]其中,4GB以下的物理内存地址空间中分配给板载内存的2.75GB的地址资源分布在0-2.75GB的地址段,为其他物理内存资源保留的1.25GB的地址资源则分布在2.75-4GB的地址段。为了避免板载内存中超过2.75GB的物理内存资源与保留的2.75-4GB地址段发生冲突,4GB板载内存中超过2.75GB的1.25GB物理内存资源会被映射至4GB以上的物理地址空间。同理,对于8GB的板载内存,4GB以下的物理内存地址空间中同样只会为其分配约
2.75GB的地址资源,而8GB板载内存中超过2.75GB的5.25GB物理内存资源同样会被映射至4GB以上的物理地址空间。
[0007]也就是说,无论是配置了 4GB还是例如8GB等高于4GB的板载内存,在32位工作站操作系统下都只有其中的2.75GB物理内存资源能够被正常访问。
[0008]虽然现有技术提出了一种基于PAE (Physical Address Extens1n,物理地址扩展)技术,旨在使32位操作系统通过启用PAE模式而支持4GB以上的物理内存地址空间的访问,但PAE技术仅对Server (服务器)版本的32位操作系统(可简称为“32位服务器操作系统”)产生实际效用,而由于32位工作站操作系统所装载的物理内存地址空间被强制限制在4GB以内,因而无论是否在32位工作站操作系统下启用PAE模式,4GB以上的物理内存地址空间在32位工作站操作系统下都不可见,从而,使得板载内存中位于4GB以上物理内存地址空间的物理内存资源不能被正常访问。
[0009]由此可见,现有技术在32位工作站操作系统下无法正常访问4GB以上物理内存地址空间,因而对4GB或4GB以上的板载内存造成了物理内存资源浪费。


【发明内容】

[0010]有鉴于此,本发明提供了适用32位工作站操作系统的一种用于访问4GB以上物理内存地址空间的方法及装置。
[0011]本发明提供的一种用于访问4GB以上物理内存地址空间的方法,该方法适用于32位工作站操作系统、并包括:
[0012]由Bootloader在32位工作站操作系统开始加载之前,通过调用B1S例程查询物理内存资源的完整Memory-map信息、并将查询到的Memory-map信息存放在预定物理内存段中;
[0013]由高端物理内存管理驱动在32位工作站操作系统开始加载之后,利用对物理内存地址空间的扫描搜寻预定物理内存段中存放的Memory-map信息;
[0014]若从Memory-map信息中识别出位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,则由高端物理内存管理驱动将位于4GB以上物理内存地址空间的物理内存资源映射到32位工作站操作系统的虚拟内存地址空间。
[0015]优选地,Bootloader在32位工作站操作系统开始加载之前截获系统控制权、在完成对Memory-map信息的查询及保存之后将系统控制权转交给32位工作站位操作系统。
[0016]优选地,存放于预定物理内存段中的Memory-map信息携带有标识头,用于在搜寻时予以识别。
[0017]优选地,所述的预定物理内存段为物理内存地址空间中不会被开始加载后的32位工作站操作系统写覆盖的地址段。
[0018]优选地,当32位工作站操作系统的虚拟内存地址空间不足时,进一步由高端物理内存管理驱动解除部分位于4GB以上物理内存地址空间的物理内存资源与32位工作站操作系统的虚拟地址空间的映射关系。
[0019]本发明提供的一种用于访问4GB以上物理内存地址空间的装置,该装置适用于32位工作站操作系统、并包括:
[0020]Bootloader模块,在32位工作站操作系统开始加载之前,通过调用B1S例程查询物理内存资源的完整Memory-map信息、并将查询到的Memory-map信息存放在预定物理内存段中;
[0021]高端物理内存管理驱动模块,在32位工作站操作系统开始加载之后,利用对物理内存地址空间的扫描搜寻预定物理内存段中存放的Memory-map信息;
[0022]若从Memory-map信息中识别出位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,则高端物理内存管理驱动模块将位于4GB以上物理内存地址空间的物理内存资源映射到32位工作站操作系统的虚拟内存地址空间。
[0023]优选地,Bootloader模块在32位工作站操作系统开始加载之前截获系统控制权、在完成对Memory-map信息的查询及保存之后将系统控制权转交给32位工作站位操作系统。
[0024]优选地,存放于预定物理内存段中的Memory-map信息携带有标识头,用于在搜寻时予以识别。
[0025]优选地,所述的预定物理内存段为物理内存地址空间中不会被开始加载后的32位工作站操作系统写覆盖的地址段。
[0026]优选地,当32位工作站操作系统的虚拟内存地址空间不足时,高端物理内存管理驱动模块进一步解除部分位于4GB以上物理内存地址空间的物理内存资源与32位工作站操作系统的虚拟地址空间的映射关系。
[0027]由此可知,基于本发明,完整的Memory-map信息在32位工作站操作系统开始加载之前被查询并存放在预定物理内存段中,以使该Memory-map信息得以保留至32位工作站操作系统开始加载之后、并被搜寻读取;由于完整的Memory-map信息至少能够真实反映板载内存的全部内存映射布局,因此,即便4GB以上的物理内存地址空间在32位工作站操作系统下不可见,通过对该Memory-map信息的读取也能够识别出板载内存中位于4GB以上物理内存地址空间的物理内存资源;并且,将识别出的板载内存中位于4GB以上物理内存地址空间的物理内存资源映射至虚拟内存地址空间,也能够规避32位工作站操作系统仅装载4GB以下的物理内存地址空间的强制性限制。从而,本发明能够支持在32位工作站操作系统下访问4GB以上的物理内存地址空间,从而使得在32位工作站操作系统下可被访问的板载内存接近甚至达到其真实的容量,以避免对4GB或4GB以上的板载内存的物理内存资源浪费。

【专利附图】

【附图说明】
[0028]图1为本发明实施例中用于访问4GB以上物理内存地址空间的方法的示例性流程示意图。

【具体实施方式】
[0029]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
[0030]如【背景技术】部分所述,对于Windows2000、WindowsXP、Windows Vista或Windows7等32位工作站操作系统来说,4GB以上的物理内存地址空间是被强制性限制为不可见的。
[0031]而且,对于4GB以及高于4GB的板载内存来说,虽然其超过2.75GB的部分会被映射至4GB以上的物理内存地址空间,但这并不意味着其在4GB以上物理内存地址空间的地址段就必然是以4GB为起始地址,例如,有可能以4.5GB、或5GB、或其他地址为起始地址。因此,以4GB为起始地址直接进行估算,并不一定就能够得到板载内存中超过2.75GB的部分在4GB以上物理内存地址空间的所处地址段。
[0032]为此,本实施例提供一种用于访问4GB以上物理内存地址空间的方法,该方法适用于32位工作站操作系统,旨在能够在32位工作站操作系统下获取板载内存对应在物理内存地址空间的全部内存映射布局信息,包括4GB以下物理内存地址空间的内存映射布局信息及可能存在的4GB以上物理内存地址空间的内存映射布局信息,并借助虚拟内存映射技术实现在32位工作站操作系统下对其中4GB以上物理内存地址空间的访问。
[0033]请参见图1,本实施例中用于访问4GB以上物理内存地址空间的方法包括:
[0034]步骤101,在32位工作站操作系统开始加载之前,由Bootloader (引导加载程序)通过调用B1S (Basic Input Output System,基本输入输出系统)例程查询物理内存资源的完整Memory-map (内存映射布局)信息,并将查询到的Memory-map信息存放在预定物理内存段中。
[0035]在执打本步骤之如,由Bootloader截犾系统控制权,截犾系统控制权后的Bootloader可以执行相关初始化并调用B1S例程,例如Int 15h E820,以查询B1S提供的完整Memory-map信息。其中,该Memory-map信息至少能够真实反映板载内存对应在物理内存地址空间的全部内存映射布局,例如对于8GB的板载内存,可以包括:4GB以下的物理内存地址空间中分配给板载内存的2.75GB的地址资源分布在0-2.75GB的地址段,以及,4GB以上的物理内存地址空间中分配给板载内存的5.25GB的地址资源分布在4_9.25GB的地址段。
[0036]在执行完本步骤之后,Bootloader即可通过调用B1S例程Intl3h来读取MBR(Master Boot Record,主引导记录)、即装载32位工作站操作系统的引导代码,然后执行该引导代码,以将系统控制权转交给32位工作站位操作系统,即开始该32位工作站位操作系统的加载。
[0037]步骤102,在32位工作站操作系统开始加载之后,由高端物理内存管理驱动EXT4GMEM.SYS通过对物理内存地址空间的扫描搜寻预定物理内存段中存放的Memory-map信息。
[0038]为了确保Memory-map信息能够被高端物理内存管理驱动搜寻读取、而不会被开始加载之后的32位工作站操作系统写覆盖,本实施例中可以将物理内存地址空间的0-1024KB的地址段设置为预定物理内存段。
[0039]并且,为了便于在扫描搜寻时准确识别在O-1024KB预定物理内存段中存放的Memory-map信息,前述的步骤101可以由Bootloader在存放的Memory-map信息中携带标识头。相应地,高端物理内存管理驱动EXT4GMEM.SYS在其初始化例程中对上述预定物理内存段进行扫描以搜寻定位该标识头。该标识头可以根据实际需要选用任意的格式。
[0040]另外,本实施例所述的高端物理内存管理驱动EXT4GMEM.SYS中的“高端”,主要用于将该物理内存管理驱动EXT4GMEM.SYS区别于用于常规访问4GB以下物理内存地址空间的传统物理内存管理驱动。在实际应用中,本领域技术人员可以用任意表述方式替代上述的“闻端”。
[0041]步骤103,由高端物理内存管理驱动EXT4GMEM.SYS检查Memory-map信息、以及检查32位工作站操作系统所支持的物理内存地址空间访问的能力,即,判断Memory-map信息中是否存在位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统是否具有支持访问4GB以上物理内存地址空间的能力;
[0042]若从Memory-map信息中识别出存在位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,则执行步骤 104 ;
[0043]否则结束当前流程。
[0044]其中,此处所述的32位工作站操作系统所具有的支持访问4GB以上物理内存地址空间的能力,可以由通过启用PAE模式予以实现。即,若探测出32位工作站操作系统启用了PAE模式,则表示32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,反之,则表示32位工作站操作系统不具有支持访问4GB以上物理内存地址空间的能力。
[0045]例如,对于Windows NT核心系列的32位工作站操作系统是否启用PAE模式的探测,可以通过读取注册表“System\CurrentControlSet\Control\Sess1n Manager\MemoryManagement”路径下的键值项PhysicalAddressExtens1n的值来判断。若成功读取并且取得的值为非0,则表示32位工作站操作系统启用了 PAE模式,反之,若读取失败或者取得的值为0,则表示32位工作站操作系统未启用PAE模式。
[0046]步骤104,由高端物理内存管理驱动EXT4GMEM.SYS将位于4GB以上物理内存地址空间的物理内存资源映射到32位工作站操作系统的虚拟内存地址空间。
[0047]对于4GB以上的物理内存地址空间到32位工作站操作系统的虚拟内存地址空间的映射,可以由高端物理内存管理驱动EXT4GMEM.SYS首先建立虚拟映射索引表,该虚拟映射索引表可以分段记录位于4GB以上物理内存地址空间的物理内存资源的虚拟映射索引信息,分段粒度可以为32KB、64KB或IMB等任意粒度值,该虚拟映射索引表的每个分段表项中填写对应的物理内存资源分段的物理起始地址(PhysicalStartAddress)和虚拟起始地址(VirtualStartAddress),然后即可通过空闲链表算法或者slab算法等内存分配管理算法建立物理内存资源管理,并通过内部导出的内存分配、释放、建立映射、解除映射等访问接口供32位工作站操作系统中的其他程序使用,从而使得4GB以下的物理内存地址空间与映射在虚拟内存地址空间的4GB以上的物理内存地址空间均能够在32位工作站操作系统下予以访问。
[0048]另外,当32位工作站操作系统的虚拟内存地址空间不足时,高端内存管理驱动还可以进一步解除部分位于4GB以上物理内存地址空间的物理内存资源与32位工作站操作系统的虚拟地址空间的映射关系。
[0049]基于上述方法,在32位工作站操作系统下即可实现对4GB以上的物理内存地址空间的访问,从而使得在32位工作站操作系统下可被访问的板载内存接近甚至达到其真实的容量。例如,对于8GB的板载内存,其分布在4GB以下的物理内存地址空间的2.75GB的物理内存资源可以按照32位工作站操作系统已支持的常规方式来访问,而对于其超过
2.75GB且被分布在4GB以上物理内存空间的5.25GB的物理内存资源,则通过映射到32位工作站操作系统的虚拟内存地址空间亦同样能够得到访问。即,8GB的板载内存所具有的8GB物理内存资源理论上均能够在32位工作站操作系统下被访问。
[0050]以上是对本实施例中用于访问4GB以上物理内存地址空间的方法的详细说明。实际应用中,该方法能够以计算机程序来实现,因此,对应于该访问方法,本实施例还提供了一种用于访问4GB以上物理内存地址空间的装置。
[0051]Bootloader模块,在32位工作站操作系统开始加载之前,通过调用B1S例程查询物理内存资源的完整Memory-map信息信息,并将查询到的Memory-map信息存放在预定物理内存段中;
[0052]高端物理内存管理驱动模块,在32位工作站操作系统开始加载之后,通过对物理内存地址空间的扫描搜寻预定物理内存段中存放的Memory-map信息;
[0053]若从Memory-map信息中识别出位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,则高端物理内存管理驱动模块将位于4GB以上物理内存地址空间的物理内存资源映射到32位工作站操作系统的虚拟内存地址空间。
[0054]其中,对于Bootloader模块、以及高端物理内存管理驱动模块,可以分别参照前文方法部分对于Bootloader、以及高端物理内存管理驱动EXT4GMEM.SYS的说明,此处不再赘述。
[0055]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种用于访问4GB以上物理内存地址空间的方法,其特征在于,该方法适用于32位工作站操作系统、并包括: 由Bootloader在32位工作站操作系统开始加载之前,通过调用B1S例程查询物理内存资源的完整Memory-map信息、并将查询到的Memory-map信息存放在预定物理内存段中; 由高端物理内存管理驱动在32位工作站操作系统开始加载之后,利用对物理内存地址空间的扫描搜寻预定物理内存段中存放的Memory-map信息; 若从Memory-map信息中识别出位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,则由高端物理内存管理驱动将位于4GB以上物理内存地址空间的物理内存资源映射到32位工作站操作系统的虚拟内存地址空间。
2.根据权利要求1所述的方法,其特征在于,Bootloader在32位工作站操作系统开始加载之前截获系统控制权、在完成对Memory-map信息的查询及保存之后将系统控制权转交给32位工作站位操作系统。
3.根据权利要求1所述的方法,其特征在于,存放于预定物理内存段中的Memory-map信息携带有标识头,用于在搜寻时予以识别。
4.根据权利要求1所述的方法,其特征在于,所述的预定物理内存段为物理内存地址空间中不会被开始加载之后的32位工作站操作系统写覆盖的地址段。
5.根据权利要求1所述的方法,其特征在于,当32位工作站操作系统的虚拟内存地址空间不足时,进一步由高端物理内存管理驱动解除部分位于4GB以上物理内存地址空间的物理内存资源与32位工作站操作系统的虚拟地址空间的映射关系。
6.一种用于访问4GB以上物理内存地址空间的装置,其特征在于,该装置适用于32位工作站操作系统、并包括: Bootloader模块,在32位工作站操作系统开始加载之前,通过调用B1S例程查询物理内存资源的完整Memory-map信息、并将查询到的Memory-map信息存放在预定物理内存段中; 高端物理内存管理驱动模块,在32位工作站操作系统开始加载之后,利用对物理内存地址空间的扫描搜寻预定物理内存段中存放的Memory-map信息; 若从Memory-map信息中识别出位于4GB以上物理内存地址空间的物理内存资源、且32位工作站操作系统具有支持访问4GB以上物理内存地址空间的能力,则高端物理内存管理驱动模块将位于4GB以上物理内存地址空间的物理内存资源映射到32位工作站操作系统的虚拟内存地址空间。
7.根据权利要求6所述的装置,其特征在于,Bootloader模块在32位工作站操作系统开始加载之前截获系统控制权、在完成对Memory-map信息的查询及保存之后将系统控制权转交给32位工作站位操作系统。
8.根据权利要求6所述的装置,其特征在于,存放于预定物理内存段中的Memory-map信息携带有标识头,用于在搜寻时予以识别。
9.根据权利要求6所述的装置,其特征在于,所述的预定物理内存段为物理内存地址空间中不会被开始加载之后的32位工作站操作系统写覆盖的地址段。
10.根据权利要求6所述的装置,其特征在于,当32位工作站操作系统的虚拟内存地址空间不足时,高端物理内存管理驱动模块进一步解除部分位于4GB以上物理内存地址空间的物理内存资源与32位工作站操作系统的虚拟地址空间的映射关系。
【文档编号】G06F12/02GK104182352SQ201410409091
【公开日】2014年12月3日 申请日期:2014年8月19日 优先权日:2014年8月19日
【发明者】邝耀华 申请人:湖北盛天网络技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1