CN1508695A - 物理内存的映射和读写方法 - Google Patents
物理内存的映射和读写方法 Download PDFInfo
- Publication number
- CN1508695A CN1508695A CNA021578141A CN02157814A CN1508695A CN 1508695 A CN1508695 A CN 1508695A CN A021578141 A CNA021578141 A CN A021578141A CN 02157814 A CN02157814 A CN 02157814A CN 1508695 A CN1508695 A CN 1508695A
- Authority
- CN
- China
- Prior art keywords
- address
- mapping
- physical memory
- reading
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种物理内存的映射和读写方法,通过对物理内存的映射,实现按照需要对物理内存进行准确的直接访问,包括如下步骤:初始化驱动程序;调用读写函数,从应用程序中传进一个结构体;根据结构体参数,驱动程序对地址进行映射,并将映射后的地址返回应用程序;按照返回的地址进行内存读写;取消地址映射,释放虚拟地址。这种访问物理内存的方法简单易行而且很安全,避免了许多无法预料的错误,可以准确的访问指定的内存空间的地址以及长度,效率很高,使用起来也很灵活。
Description
技术领域
本发明涉及一种物理内存的读写方法,特别涉及一种可以使应用程序对物理内存直接访问的方法。
背景技术
在计算机***中,物理内存(Physical Memory)是非常重要的,所有应用程序和大部分的设备驱动程序都要用到它。正是由于它的重要性,所以操作***就将其保护起来,使其经常处于保护模式下,以避免用户对它有意或无意的破坏。
但是,这样做也会带来一些不便,在这种情况下,用户申请的内存地址不是物理地址而是虚拟内存的地址,而虚拟内存是由物理内存和硬盘上的一部分空间组成的。例如,对于物理内存是0xFEC71的内存单元,我们访问它的时候,不能在程序中直接访问0xFEC71,因为这时候的地址被看作虚拟地址,我们真正要访问的是对它进行映射后的地址。
按照传统的方法,内存访问通过申请大块地址来实现的,这样做不仅效率低,而且不能控制申请地址的位置,因为,我们向***申请一块内存空间时,***将这部分空间相对应的虚拟内存的起始地址返回来,完成我们的需求,它只包括应用程序层。这种方法,在某些应用中,例如测试内存的时候,就存在比较大的缺陷。
请参阅表1,为物理内存地址区块示意图。
地址块1 | 0X10000000 |
地址块1 | 0X10100000 |
地址块1 | 0X10200000 |
地址块1 | 0X10300000 |
地址块1 | 0X10400000 |
表1
假定某物理内存地址由地址块1-5组成,如果采用现有的申请内存空间的方法用于某些应用,如用于测试内存,则存在如下问题:首先,我们不知道我们申请的内存在物理内存中所处的位置,即无法确定占用的物理内存是地址块1还是地址块2,这就造成了申请内存空间的不确定性;其次,由***分配的虚拟内存表面上看是连续的,而实际上却可能分成若干个小块分散在物理内存中,即有可能占用地址块1和3而不是地址块1和2,这就造成内存测试的不连贯性;最后,当我们多次申请内存空间的时候,***每一次分配的物理内存区域有可能重复,即第一次占用地址块1和2,而第二次占用了地址块1和3而不是我们希望的地址块3和4,这就造成测试的重复和不全面。
发明内容
本发明所要解决的技术问题是提供一种物理内存的映射和读写方法,可以通过对物理内存的映射,而实现按照需要的地址位置,对物理内存进行准确的直接访问。
为实现上述目的,本发明提供一种物理内存的映射和读写方法,至少包括如下步骤:
初始化驱动程序;
调用读写函数,从应用程序中传进一个结构体;
根据结构体参数,驱动程序对地址进行映射,并将映射后的地址返回应用程序;
按照返回的地址进行内存读写;及
取消地址映射,释放虚拟地址。
本发明为一种物理内存的映射和读写方法,这种访问物理内存的方法简单易行而且很安全,避免了许多无法预料的错误,可以准确的访问指定的内存空间的地址以及长度,效率很高,使用起来也很灵活。本发明可适用于任何需要读写内存的模块,例如应用于内存的测试中,可以实现准确、连续、不重复和全面的测试效果。
为使本发明的目的、特征及其功能有进一步的了解,配合附图详细说明如下:
附图说明
图1为本发明物理内存的映射和读写方法的应用环境示意图;及
图2为本发明物理内存的映射和读写方法流程图。
其中,附图标记说明如下:
10--用户,20--读写内存模块,21--应用程序层,22--驱动程序层,步骤301--初始化驱动程序,步骤302--调用读写函数,从应用程序中传进一个结构体,步骤303--根据结构体参数,驱动程序对地址进行映射,并将映射后的地址返回应用程序,步骤304--按照返回的地址进行内存读写,步骤305--取消地址映射,释放虚拟地址。
具体实施方式
本发明适用于任何需要读写内存的模块。请参见图1,本发明的应用环境示意图。用户10可以通过接口函数指定包括起始地址、长度和数据缓冲区(Buffer)等读写函数参数。在读写内存模块20中,包括应用程序层21和驱动程序层22。应用程序层21负责初始化、卸载驱动程序,传递功能代码和参数,以及读写内存的工作。驱动程序层主要负责映射特定位置和大小的内存块,返回当前进程的线性地址。
请参阅图2,本发明物理内存的映射和读写方法流程图。首先,初始化驱动程序(步骤301);然后,调用读写函数,从应用程序中传进一个结构体(步骤302);根据结构体参数,驱动程序对地址进行映射,并将映射后的地址返回应用程序(步骤303);按照返回的地址进行内存读写(步骤304);最后,取消地址映射,释放虚拟地址(步骤305)。
在上述步骤之后,最好再执行一卸载驱动程序的步骤。虽然其不是必需的,但卸载驱动程序后可以释放驱动程序所占用的内存,节省了资源。
上述驱动程序是事先创建好的一个处于内核模式(Kernel Mode)的驱动,其功能在于实现地址的映射。用户可以通过封装的类来管理驱动,而数据的读写是调用类的公共成员函数来完成。
上述初始化驱动程序的步骤,其作用是加载驱动程序,包括删除旧版本驱动、安装驱动、和激活驱动等动作,如果加载成功就进行下一步。
上述调用读写函数的步骤,可供选择的读写函数有多种,主要区别在于读写的长度不同。读写函数的参数包括起始地址、长度和数据缓冲区,这些参数可由用户自己指定。
上述从应用程序中传进的结构体中,包括需要映射的物理内存起始地址、地址的长度和映射后的地址三个基本数据。
读写函数将用户提供的起始地址和长度传递给驱动程序,在驱动程序中对地址进行映射并将映射后的地址返回给应用程序。这个地址和应用程序访问的普通虚拟地址一样,使用普通的内存访问方法就可以读写数据。
读写结束后,需要取消映射,目的是释放我们占用的虚拟地址,将它归还给***继续使用。
虽然本发明的实施例公开如上所述,然其并非用以限定本发明,任何熟习相关技艺者,在不脱离本发明的精神和范围内,可作进一步的更动与润饰,因此本发明所要保护的权利范围应以权利要求书所要求保护的范围为准。
Claims (7)
1.一种物理内存的映射和读写方法,其特征在于包括如下步骤:
初始化驱动程序;
调用读写函数,从应用程序中传进一个结构体;
根据结构体参数,驱动程序对地址进行映射,并将映射后的地址返回应用程序;
按照返回的地址进行内存读写;及
取消地址映射,释放虚拟地址。
2.如权利要求1所述物理内存的映射和读写方法,其特征在于在取消地址映射,释放虚拟地址步骤之后,可包括一卸载驱动程序的步骤。
3.如权利要求1所述物理内存的映射和读写方法,其特征在于所述驱动程序是处于内核模式,用于实现地址的映射。
4.如权利要求1所述物理内存的映射和读写方法,其特征在于所述初始化驱动程序的步骤,包括删除旧版本驱动、安装驱动和启动驱动等动作。
5.如权利要求1所述物理内存的映射和读写方法,其特征在于所述调用读写函数的步骤,读写函数的参数包括起始地址、长度和数据区。
6.如权利要求5所述物理内存的映射和读写方法,其特征在于所述读写函数的参数可由用户指定。
7.如权利要求1所述物理内存的映射和读写方法,其特征在于所述从应用程序中传进的结构体,包括需要映射的物理内存起始地址、地址的长度和映射后的地址三个基本数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02157814 CN1266613C (zh) | 2002-12-19 | 2002-12-19 | 物理内存的映射和读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02157814 CN1266613C (zh) | 2002-12-19 | 2002-12-19 | 物理内存的映射和读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1508695A true CN1508695A (zh) | 2004-06-30 |
CN1266613C CN1266613C (zh) | 2006-07-26 |
Family
ID=34236718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02157814 Expired - Fee Related CN1266613C (zh) | 2002-12-19 | 2002-12-19 | 物理内存的映射和读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1266613C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309819A (zh) * | 2013-05-30 | 2013-09-18 | 苏州亮智科技有限公司 | 嵌入式***及其中的内存安全管理方法 |
CN104346275A (zh) * | 2013-08-07 | 2015-02-11 | 鸿富锦精密工业(深圳)有限公司 | 内存测试***及方法 |
-
2002
- 2002-12-19 CN CN 02157814 patent/CN1266613C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309819A (zh) * | 2013-05-30 | 2013-09-18 | 苏州亮智科技有限公司 | 嵌入式***及其中的内存安全管理方法 |
CN103309819B (zh) * | 2013-05-30 | 2016-06-22 | 苏州亮智科技有限公司 | 嵌入式***及其中的内存安全管理方法 |
CN104346275A (zh) * | 2013-08-07 | 2015-02-11 | 鸿富锦精密工业(深圳)有限公司 | 内存测试***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1266613C (zh) | 2006-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9785370B2 (en) | Method and system for automatically preserving persistent storage | |
EP0882264B1 (en) | Flash memory mass storage system and associated method | |
US6516397B2 (en) | Virtual memory system utilizing data compression implemented through a device | |
Park et al. | A high performance controller for NAND flash-based solid state disk (NSSD) | |
CN1223945C (zh) | 改进的闪速文件*** | |
AU2007239066B2 (en) | Describing and querying discrete regions of flash storage | |
US20070094445A1 (en) | Method to enable fast disk caching and efficient operations on solid state disks | |
CN103150256B (zh) | 提高usb闪存写入性能的方法和器件 | |
US20120173803A1 (en) | Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system | |
US20060253645A1 (en) | Method and system for facilitating fast wake-up of a flash memory system | |
CN1584848A (zh) | 用于在计算机***上存储数据的***和方法 | |
JP2005505818A (ja) | 順次書き込みのみを用いるフラッシュ管理システム | |
KR102443600B1 (ko) | 하이브리드 메모리 시스템 | |
CN1722109A (zh) | 增量归并方法和使用该方法的存储*** | |
CN1991796A (zh) | 用于嵌入式***的请求调页设备和方法 | |
TW201015328A (en) | Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method | |
JP4222917B2 (ja) | 仮想記憶システムおよびその動作方法 | |
US6574705B1 (en) | Data processing system and method including a logical volume manager for storing logical volume data | |
US6223267B1 (en) | Dynamically allocable RAM disk | |
US7861074B2 (en) | Electronic systems using flash memory modules as main storage and related system booting methods | |
Park et al. | Anti-aging lfs: Self-defragmentation with fragmentation-aware cleaning | |
CN1740981A (zh) | 一种计算机硬盘数据多时间点快速存储与恢复方法 | |
CN1266613C (zh) | 物理内存的映射和读写方法 | |
US6948009B2 (en) | Method, system, and article of manufacture for increasing processor utilization | |
CN1673979A (zh) | 一种内存分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060726 Termination date: 20101219 |