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

文档序号:6615564阅读:308来源:国知局
专利名称:操作系统的物理内存存取的方法
技术领域
本发明涉及一种操作系统的物理内存存取的方法,特别是涉及一种应用于
Linux操作系统的非易失性内存存取的方法。
背景技术
对于嵌入式系统(Embedded System)的操作系统(Operation System, OS),目前所使用的产品很多,诸如Palm0S、 Windows CE、 Linux等。其中由于Linux操作系统具有免费授权的特性,因此目前大量地应用于嵌入式系统中。
Li皿x执行程序时可以分作两个部份,第一个为核心区间(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)来完成。这样一来所花的时间要比较长,另外也需要较复杂的程序。

发明内容
本发明的目的在于提供一种操作系统的物理内存存取的方法,主要应用
Liruu操作系统在执行程序时,所分别使用的核心区间(Kernel Space)及使用者区间(User Space)的两个内存区块,通过两者之间内存地址的映像,使得在对使用者区间操作存取时,即对应于核心区间进行存取,而达到快速存取物理内存的目的。
为了实现上述目的,本发明提供了一种不需通过驱动程序(driver)的方式,即能快速存取操作系统的非易失性物理内存(NVRAM)的方法。如图2所示,为本发明的操作系统的存取核心区间(Kernel Space)的示意图。应用本发明的技术,使得在操作系统(0S)进入使用者区间200的情况下,若是需要存取核心区间100中的数据,不必通过驱动程序即能够存取到NVRAM的数据,节省系统的资源,加快存取的速度。
因为嵌入式系统硬件架构较为单纯,所以在一些硬件配置部份可以由开发者自行决定,故NVRAM装置可以对应到某一块内存中。因此将NVRAM所在的地址设定在OxXXXXXXXX的实体地址,而Linux就可以利用此地址存取。然后再设定此地址再对应到核心区间内存地址(如OxYYYYYYYY)。所以当存取到OxYYYYYYYY就如同存取到该NVRAM—样,因为是在核心区间中,所以到了使用者区间就没有办法再对OxYYYYYYYY做存取,可使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中的该线性地址,用来将某个文件内容映像(m即ping)到内存中,故对该内存区域的存取,即是直接对该文件内容的读写。因此,当对使用者区间200的内存进行存取时,事实上就是由核心区间IOO的线性地址,所对应到的物理内存中那一块内存进行存取。如此,就不必再通过认何驱动程序(driver),即可达
到快速存取物理内存的目的。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情
况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这
些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种操作系统的物理内存存取的方法,其特征在于,至少包含步骤借助一操作系统的一核心程序对映一核心区间的一线性地址到一物理内存的一实体地址;通过该操作系统执行的一内存映像函式将该使用者区间中的一线性地址映像至该核心区间的该线性地址;以及借助该使用者区间中的该线性地址转换成相对的该实体地址来存取该物理内存。
2、 根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该操作系统为一 Linux操作系统。
3、 根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该操作系统执行程序时分别使用该核心区间及该使用者区间。
4、 根据权利要求l所述的操作系统的物理内存存取的方法,其特征在于,该物理内存提供该核心程序储存核心程序代码及核心数据的内存区间。
5、 根据权利要求4所述的操作系统的物理内存存取的方法,其特征在于,该物理内存为一非易失性内存。
6、 根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该实体地址指该物理内存的实际地址。
7、 根据权利要求l所述的操作系统的物理内存存取的方法,其特征在于,该线性地址通过该核心程序的转换,而对映到该实体地址。
8、 根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该核心程序于该核心区间中执行设定相关的硬件配置。
9、 根据权利要求l所述的操作系统的物理内存存取的方法,其特征在于,该内存映像函式在该使用者区间中被执行。
10、 根据权利要求1所述的操作系统的物理内存存取的方法,其特征在于,该内存映像函式,提供将该核心区间的该线性地址映像至该使用者区间的该线性地址。
全文摘要
本发明公开了一种操作系统的物理内存(Physical Memory)存取的方法,主要应用操作系统在执行程序时,通过内存实体地址(Physical Address)与线性地址(Linear Address)的映像,使得在对使用者区间(User Space)作存取时而对应到核心区间(Kernel Space)进行存取物理内存的目的。
文档编号G06F12/02GK101464835SQ200710301849
公开日2009年6月24日 申请日期2007年12月18日 优先权日2007年12月18日
发明者郑仰民 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1