操作系统的物理内存存取的方法技术方案

技术编号:2912387 阅读:204 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种操作系统的物理内存(Physical Memory)存取的方法,主要应用操作系统在执行程序时,通过内存实体地址(Physical Address)与线性地址(Linear Address)的映像,使得在对使用者区间(User Space)作存取时而对应到核心区间(Kernel Space)进行存取物理内存的目的。

【技术实现步骤摘要】

本专利技术涉及一种操作系统的物理内存存取的方法,特别是涉及一种应用于Linux操作系统的非易失性内存存取的方法。
技术介绍
对于嵌入式系统(Embedded System)的操作系统(Operation System,OS),目前所使用的产品很多,诸如Palm OS、Windows CE、Linux等。其中由于Linux操作系统具有免费授权的特性,因此目前大量地应用于嵌入式系统中。Linux执行程序时可以分作两个部份,第一个为核心区间(Kernel Space),另一个为使用者区间(User Space)。有关硬件相关的存取控制都是在核心区间执行,而一般使用者写的程序都是在使用者区间执行。使用者区间和核心区间是两个不同的区域,两个并无法直接使用对方的资源,需要通过一些系统的呼叫才能进行,系统呼叫会对呼叫者的权限和操作做检查,以保护核心程序(Kernel)的运行。当要存取硬件时,会通过系统呼叫(System Call)的方式从使用者模式(User Mode)跳到核心区间去执行,如通过驱动程序(driver)存取硬件信息。而在嵌入式系统中静态储存数据的硬件,通常为闪存(Flash)、非易失性内存(Non-Volatile Random Access Memory,NVRAM)或电子擦除式只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)。一般都将写好的程序放入Flash,而相关的设定就放在NVRAM或EEPROM中。因在Linux的核心区间,可以方便的存取NVRAM,但在进入使用者区间时就无法直接存取NVRAM。如图1所示,在使用者区间200要存取有关核心区间100中的硬件信息,需要通过驱动程序(driver)来达成。因此当OS加载完成后已在使用者区间的情况下,若必须设定NVRAM的值,要将值写入到NVRAM需要通过驱动程序(driver)来完成。这样一来所花的时间要比较长,另外也需要较复杂的程序。-->
技术实现思路
本专利技术的目的在于提供一种操作系统的物理内存存取的方法,主要应用Linux操作系统在执行程序时,所分别使用的核心区间(Kernel Space)及使用者区间(User Space)的两个内存区块,通过两者之间内存地址的映像,使得在对使用者区间操作存取时,即对应于核心区间进行存取,而达到快速存取物理内存的目的。为了实现上述目的,本专利技术提供了一种不需通过驱动程序(driver)的方式,即能快速存取操作系统的非易失性物理内存(NVRAM)的方法。如图2所示,为本专利技术的操作系统的存取核心区间(Kernel Space)的示意图。应用本专利技术的技术,使得在操作系统(OS)进入使用者区间200的情况下,若是需要存取核心区间100中的数据,不必通过驱动程序即能够存取到NVRAM的数据,节省系统的资源,加快存取的速度。因为嵌入式系统硬件架构较为单纯,所以在一些硬件配置部份可以由开发者自行决定,故NVRAM装置可以对应到某一块内存中。因此将NVRAM所在的地址设定在0xXXXXXXXX的实体地址,而Linux就可以利用此地址存取。然后再设定此地址再对应到核心区间内存地址(如0xYYYYYYYY)。所以当存取到0xYYYYYYYY就如同存取到该NVRAM一样,因为是在核心区间中,所以到了使用者区间就没有办法再对0xYYYYYYYY做存取,可使NVRAM受到保护。因使用者区间和核心区间是两块不同的区域。本专利技术所提出的操作系统的物理内存存取的方法,即利用特殊的内存映像函式(mmap),而将核心区间100的地址对应到使用者区间200。当对使用者区间200的这块内存进行存取时,事实上就是对核心区间100的那一块内存进行存取。因此,即可通过这样的方式存取嵌入式系统的非易失性内存(NVRAM)。下面结合附图和具体实施例对本专利技术进行详细描述,但不作为对本专利技术的限定。附图说明图1为公知技术通过驱动程序(driver)存取核心区间(Kernel Space)中硬件信息的示意图;-->图2为本专利技术的操作系统的存取核心区间(Kernel Space)的示意图;图3为本专利技术的操作系统存取物理内存的方法的步骤流程图;图4为本专利技术的物理内存的实体地址及核心区间与使用者区间中的线性地址的映像示意图。其中,附图标记:100:核心区间(Kernel Space)200:使用者区间(User Space)300~380:方法步骤实施方式本专利技术为一种操作系统的物理内存存取的方法,通过内存地址的映像,使得在对使用者区间操作存取时,即对应于核心区间进行存取,而达到快速存取物理内存的目的。以下配合图示并应用本专利技术方法技术的较佳实施例,详细说明本专利技术方法的步骤流程。配合参考图3,为本专利技术的操作系统的存取物理内存的方法的步骤流程图。如图所示,首先,借助操作系统的一核心程序(Kernel)对映一核心区间(Kernel Space)的一线性地址(Linear Address)到一物理内存(PhysicalAddress)的一实体地址(步骤300),其中该实体地址指该物理内存的实际地址,而该线性地址则必须通过该核心程序的转换而对映到该实体地址。接着,加载一开机程序(步骤310),该开机程序(Boot_Code)为可支持多重开机功能的开机管理程序(Bootloader),用以读取操作系统的核心程序(Kernel)并控制核心程序(Kernel)的加载。在加载开机程序时,同时判断是否为第一次开机(步骤320)。在步骤320中,若该为第一次开机,则通过该开机程序加载一核心程序(Kernel)(步骤340),以进入核心模式(Kernel Mode)中,以供操作系统抓取相关硬件配置。当核心程序设定完硬件配置之后,接下来就进入使用者模式(User Mode)(步骤350),此即于使用者区间(User Space)中执行的处理程序,以设定操作系统的其它相关环境参数。然后,在使用者模式中,通过执行的一内存映像函式(mmap)将该使用者区间中的一线性地址映像至该核心区间的该线性地址(步骤360)。如此,使用者模式中的应用程序才能借助线性地址转换成相对的该实体地址来存取该物理内存(步骤370)。最后,即完成开机设-->定(步骤380),并结束本流程。此外在步骤320中若该操作系统的不是第一次开机,则开机程序即依照先前的系统环境设定,直接完成开机(步骤330),并结束本流程。接着,配合参考图4,为本专利技术的物理内存的实体地址及核心区间与使用者区间中的线性地址的映像示意图。如图所示,上述步骤360的该内存映像(mmap)将该核心区间100中的该线性地址映像(mapping)至该使用者区间200中的该线性地址,用来将某个文件内容映像(mapping)到内存中,故对该内存区域的存取,即是直接对该文件内容的读写。因此,当对使用者区间200的内存进行存取时,事实上就是由核心区间100的线性地址,所对应到的物理内存中那一块内存进行存取。如此,就不必再通过认何驱动程序(driver),即可达到快速存取物理内存的目的。当然,本专利技术还可有其他多种实施例,在不背离本专利技术精神及其实质的情况下,熟悉本领域的技术人员可根据本专利技术作本文档来自技高网
...

【技术保护点】
一种操作系统的物理内存存取的方法,其特征在于,至少包含步骤: 借助一操作系统的一核心程序对映一核心区间的一线性地址到一物理内存的一实体地址; 通过该操作系统执行的一内存映像函式将该使用者区间中的一线性地址映像至该核心区间的该线性地址;以及 借助该使用者区间中的该线性地址转换成相对的该实体地址来存取该物理内存。

【技术特征摘要】
1、一种操作系统的物理内存存取的方法,其特征在于,至少包含步骤:借助一操作系统的一核心程序对映一核心区间的一线性地址到一物理内存的一实体地址;通过该操作系统执行的一内存映像函式将该使用者区间中的一线性地址映像至该核心区间的该线性地址;以及借助该使用者区间中的该线性地址转换成相对的该实体地址来存取该物理内存。2、根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该操作系统为一Linux操作系统。3、根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该操作系统执行程序时分别使用该核心区间及该使用者区间。4、根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该物理内存提供该核心程序储存核心程序代码及核心数据的内存区间。5、根据...

【专利技术属性】
技术研发人员:郑仰民
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1