CN1622058A - 一种写存储器的实现方法 - Google Patents
一种写存储器的实现方法 Download PDFInfo
- Publication number
- CN1622058A CN1622058A CN 200410104050 CN200410104050A CN1622058A CN 1622058 A CN1622058 A CN 1622058A CN 200410104050 CN200410104050 CN 200410104050 CN 200410104050 A CN200410104050 A CN 200410104050A CN 1622058 A CN1622058 A CN 1622058A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- storer
- file system
- internal memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000013507 mapping Methods 0.000 claims abstract description 33
- 238000005516 engineering process Methods 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种写存储器的实现方法,该方法为:在内存中建立映射表,并将文件***中描述文件存储位置的存储位置描述表信息映射到该映射表中;文件***将需要写入存储器的数据保存到内存中,并在所述映射表中记录在存储器中为该数据分配的存储位置和在内存中的实际存储位置之间的对应关系;当文件***接收到操作所述数据的请求时,根据该数据在存储器中的存储位置查询所述映射表得到数据在内存的实际存储位置,并在内存操作所述数据;以及至少在***空闲或卸载文件***时,根据所述存储位置描述表和映射表中对所述数据的存储位置描述,将保存在内存中所述数据写入存储器的对应位置并修改所述存储位置描述表。
Description
技术领域
本发明涉及计算机及通信领域的信息存储技术,尤其涉及一种写存储器的实现方法。
背景技术
在计算机***中,由文件***对存储器中的数据进行管理。当需要对存储器中的数据进行读写操作时,由文件***确定需要操作的存储位置,然后从存储器中读出数据或将数据写入存储器。
闪存(FLASH)作一种非易失存储器,在计算机***中被广泛地应用于存储数据。文件***向FLASH写数据和从FLASH读数据的最小操作单位一般为512-528个字节(Bytes);由于FLASH的特性,文件***在向FLASH写入数据时,如果欲写入位置已经存在数据,则需将该单元位置数据擦除后,方能写入,一般需要擦除16-32Kbytes。
例如,文件***需要向FLASH中已存在数据的第3扇区写入一个512字节的数据时,此时需要将该第1-32扇区的内容读入内存,在内存中将第3扇区的内容替换掉,并擦除1-32扇区的所有内容,然后再写回FLASH 1-32扇区的内容。
由于文件***在对FLASH中已存储数据的位置进行写操作时,需要进行读数据、擦除数据和写入数据各一次,因而存在以下缺点:
1、由于FLASH的擦除数据和写入数据速度较慢,因此,导致整个写操作的执行效率低。
2、每次向FLASH写入数据时,要对FLASH进行多次操作,而对存储器的高频率的操作,导致存储器的使用寿命缩短。
发明内容
有鉴于此,本发明提供一种写存储器的实现方法,以解决现有的文件***每次执行写操作时多次对存储器操作而导致执行效率低和影响存储器使用寿命的问题。
一种写存储器的实现方法,包括如下步骤:
A、在内存中建立映射表,并将文件***中描述文件存储位置的存储位置描述表信息映射到该映射表中;
B、所述文件***将需要写入存储器的数据保存到内存中,并在所述映射表中记录在存储器中为该数据分配的存储位置和在内存中的实际存储位置之间的对应关系;
C、所述文件***接收到操作所述数据的请求时,根据该数据在存储器中的存储位置查询所述映射表得到数据在内存的实际存储位置,并在内存操作所述数据;
D、至少在***空闲或卸载文件***时,根据所述存储位置描述表和映射表中对所述数据的存储位置描述,将保存在内存中所述数据写入存储器的对应位置并修改所述存储位置描述表。
所述步骤B包括如下步骤:
B1、文件***在接收到向存储器写入数据的请求时在存储器中为该数据分配存储位置并记录在所述映射表中;
B2、在内存中为所述数据分配实际存储位置并记录在所述映射表中,在该表中使数据在存储器的存储位置与在内存的实际存储位置形成对应关系;以及
B3、将所述数据写入内存的实际存储位置。
所述步骤C包括如下步骤:
C1、接收到从存储器读取数据的请求时查询映射表确定该数据在存储器的存储位置;
C2、查询所述存储器的存储位置是否对应有数据在内存的实际存储位置,如果是,则从内存的该实际存储位置获取数据完成操作,否则,从存储器获取数据完成操作。
步骤D中,当***空闲时将能整除存储器最小擦写单位数据量的所述数据写入存储器未使用的数据区,修改所述存储位置描述表和映射表,以及释放相应的内存。
步骤D中,当***卸载文件***或存储器时,将内存中所有的所述数据写入存储器,并在所述存储位置描述表中记录数据在存储器中的位置。
本发明在文件***执行写操作时先将数据暂存在内存中,并且后续对该数据的读写操作在内存中进行,在***空闲或卸载文件***时才将数据写入到存储器,避免了每次执行写操作都需要对存储器进行读、擦和写操作,减少了擦、写存储器的频率。因此,本发明不仅写操作的效率高,而且能够延长存储器的使用寿命。
附图说明
图1为FAT表映射到内存的示意图;
图2为本发明的流程图;
图3为内存映射表与FAT表中对应的存储位置关系示意图。
具体实施方式
本实施例主要以文件分配表(File Allocation Table,FAT)文件***对本发明进行说明,其中存储位置描述表对应FAT表。本发明所称数据可以是一个文件的全部数据,也可以是一个文件中的部分数据。
计算机***中的文件***主要完成三项功能:跟踪记录存储器上中被耗用的空间和自由空间,维护目录名和文件名,跟踪记录每一个文件的物理存储位置。FAT文件***采用文件描述表(FDT)来记录文件的属性信息,如存储文件的起始位置、文件长度(大小)等;通过FAT表来记录文件的物理存储位置,FAT表是在FAT文件***中用于磁盘数据(文件)索引和定位的一种链式表,表中记录存储各文件的簇号。簇(Cluster)是将某一线形范围的物理位置(地址)形成一个管理单位,如磁盘的最小单位是一个扇区,一个簇可以根据需要包含两个、四个甚至更多的扇区。FLASH的读写操作最小单位为一个页/扇区(Page/Sector),擦除的最小单位为一个块(Block),每块包含16-64或更多个扇区不等(视不同的存储器)。
为了提高FAT文件***执行写操作的效率,本发明在执行写操作时,先将数据暂存到内存而不直接对存储器进行操作,以提高执行效率和访问速度,在***空闲或卸载文件***时再将数据写回存储器。
为了使数据在存储器的存储位置与在内存的存储位置保持对应关系,在每次装载(mount)存储器时,先获得FAT表所描述的最大的簇数量,并建立相应的内存映射表,参阅图1所示。
建立内存映射表时先获知文件***中的FAT表在存储器上的容量,即存储器上的总簇数;然后在内存中建立一个同FAT表所描述的簇数量相同的FAT内存映射表,该映射表描述每簇单位数据的包含下一个簇的簇号和地址,簇号的存储宽度与FAT表相同,地址的存储宽度包括但不限于8位、12位、16位、32位、64位,该地址为数据在内存的实际地址。
当文件***接收到写存储器请求时,根据数据量大小按现有的方法查询和在存储器中分配要写的簇,并在FAT映射表中记录这些簇;然后在内存中为数据分配存储空间,将数据写入内存并在FAT映射表中记录对应的内存地址,使为数据分配的簇号与数据在内存的地址间形成对应关系,即根据该簇号能获得数据在内存的地址。
当文件***响应后续的读、写操作时,首先查询FAT内存映射表,若发现要操作的簇对应有内存地址,则从内存的该位置读数据或重新在该位置写数据;若没有对应内存地址,对于读操作而言则根据簇号从存储器的读取数据,对于写操作而言则按上述方式将数据写到内存。
结合图2说明向存储器写数据和后续读取该数据的过程:
在步骤10,文件***接收到访问存储器的请求;在步骤20,文件***确定是读还是写操作,如果是写操作进行步骤30,如果是读操行进行步骤50;在步骤30,文件***按现有方式在存储器中为这些数据分配簇号,将这些簇号记录在FAT内存映射表中;在步骤40,根据数据量分配内存,将数据写入内存并记录在FAT内存映射表中;在步骤50,确定数据所在的簇号;在步骤60,根据步骤50确定的簇号查询FAT内存映射表,判断该簇号是否对应有内存地址(即判断该数据是否暂存在内存中),如果是则进行步骤70,否则进行步骤80;在步骤70,文件***根据对应的内存地址从内存读取数据;在步骤80,文件***根据簇号从存储器中读取数据。
当***空闲时,将能整除存储器最小擦写单位的数据量的内存数据区数据写入存储器未使用数据区,并调整FAT表及释放内存数据区写入后的数据。***空闲主要是指***休眠、待机或处理器资源使用较少的情况。
当***卸载(un-mount)文件***/存储器时比较FAT表和FAT映射表,然后将将所有应保存到存储器而暂存在内存的数据写到存储器中,并在FAT表中记录这些位置在存储器的位置。
以下以一实例进行说明:
参阅图3所示,假设文件***为FAT32***,存储器为FLASH,每簇占4个扇区(每扇区512字节)。内存中用于映射存储器剩余空间的起始地址为:0xC0000000,FAT内存映射表单位数据类型为32位。FAT表描述30个簇,一共占用120个字节,同样FAT内存映射表也是占用120个字节30x4bytes(32bit)。簇15-簇19位连续链表,由簇15描述簇16,簇16描述簇17......
当***欲对文件ABC的17、18簇进行写操作时:其数据已存在于存储器中,这时数据实际写入在0xC0000000-0xc0001000的内存区内。修改FAT内存映射表在簇16的值为0xC0000000,簇17的值为0xC0000800。
当***欲读取17、18簇内容时,首先需要通过FAT内存映射表查找簇15依次找到簇16;通过簇16描述下一个簇的位置为簇17。其间簇15在FAT内存映射表中未对应内存地址(即未被赋值),因此在FAT映射表中继续查询,发现其下一个簇为16;再在FAT内存映射表中进行查询,发现簇16在映射表中已被赋值,其指向下一簇17的地址为内存地址0xC0000000,表明簇17的内容位于内存区的0xC0000000-0xC00007ff,因此从内存的该区域读取数据;再在FAT内存映射表中进行查询簇17,发现簇17在映射表中已被赋值,其指向下一簇18的地址为内存地址0xC0000800,表明簇18的内容位于内存区的0xC0000800-0xC0000FFF,因此,从内存的该区域读取数据。
上述的内存是指易失性存储器,如RAM、SRAM、SDRAM等。上述存储包括但不限于软盘、硬盘和闪存等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1、一种写存储器的实现方法,其特征在于包括如下步骤:
A、在内存中建立映射表,并将文件***中描述文件存储位置的存储位置描述表信息映射到该映射表中;
B、所述文件***将需要写入存储器的数据保存到内存中,并在所述映射表中记录在存储器中为该数据分配的存储位置和在内存中的实际存储位置之间的对应关系;
C、所述文件***接收到操作所述数据的请求时,根据该数据在存储器中的存储位置查询所述映射表得到数据在内存的实际存储位置,并在内存操作所述数据;
D、至少在***空闲或卸载文件***时,根据所述存储位置描述表和映射表中对所述数据的存储位置描述,将保存在内存中所述数据写入存储器的对应位置并修改所述存储位置描述表。
2、如权利要求1所述的方法,其特征在于,所述步骤B包括如下步骤:
B1、文件***在接收到向存储器写入数据的请求时在存储器中为该数据分配存储位置并记录在所述映射表中;
B2、在内存中为所述数据分配实际存储位置并记录在所述映射表中,在该表中使数据在存储器的存储位置与在内存的实际存储位置形成对应关系;以及
B3、将所述数据写入内存的实际存储位置。
3、如权利要求1所述的方法,其特征在于,所述步骤C包括如下步骤:
C1、接收到从存储器读取数据的请求时查询映射表确定该数据在存储器的存储位置;
C2、查询所述存储器的存储位置是否对应有数据在内存的实际存储位置,如果是,则从内存的该实际存储位置获取数据完成操作,否则,从存储器获取数据完成操作。
4、如权利要求1所述的方法,其特征在于,步骤D中,当***空闲时将能整除存储器最小擦写单位数据量的所述数据写入存储器未使用的数据区,修改所述存储位置描述表和映射表,以及释放相应的内存。
5、如权利要求4所述的方法,其特征在于,所述***空闲时是指***休眠、待机或占用处理器资源较少时。
6、如权利要求1所述的方法,其特征在于,步骤D中,当***卸载文件***或存储器时,将内存中所有的所述数据写入存储器,并在所述存储位置描述表中记录数据在存储器中的位置。
7、如权利要求1至6任一项所述的方法,其特征在于,所述存储器包括但不限于软盘、硬盘和闪存。
8、如权利要求7所述的方法,其特征在于,所述文件***包括但不限于FAT文件***和NTFS文件***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004101040500A CN1295616C (zh) | 2004-12-31 | 2004-12-31 | 一种写存储器的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004101040500A CN1295616C (zh) | 2004-12-31 | 2004-12-31 | 一种写存储器的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1622058A true CN1622058A (zh) | 2005-06-01 |
CN1295616C CN1295616C (zh) | 2007-01-17 |
Family
ID=34766885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004101040500A Expired - Fee Related CN1295616C (zh) | 2004-12-31 | 2004-12-31 | 一种写存储器的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1295616C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100456264C (zh) * | 2006-03-02 | 2009-01-28 | 腾讯科技(深圳)有限公司 | 一种磁盘空间管理方法及*** |
CN101876956B (zh) * | 2009-12-15 | 2015-05-06 | 北京中星微电子有限公司 | Sd卡的文件存取方法及装置 |
CN106293494A (zh) * | 2015-05-18 | 2017-01-04 | 高德软件有限公司 | 读取信息的方法及装置、写信息的方法及装置 |
WO2020037982A1 (zh) * | 2018-08-24 | 2020-02-27 | 深圳市德名利电子有限公司 | 一种基于 fat 文件的数据删除方法、数据存储设备及*** |
CN118114320A (zh) * | 2024-03-14 | 2024-05-31 | 广州迪茂信息科技有限公司 | 一种以防病毒形式的FatFs快速读取SD卡大文件数据的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1148659C (zh) * | 1999-05-07 | 2004-05-05 | 英业达集团(南京)电子技术有限公司 | 一种新型的快擦写存储器结构及操作方法 |
US7024532B2 (en) * | 2001-08-09 | 2006-04-04 | Matsushita Electric Industrial Co., Ltd. | File management method, and memory card and terminal apparatus that make use of the method |
-
2004
- 2004-12-31 CN CNB2004101040500A patent/CN1295616C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100456264C (zh) * | 2006-03-02 | 2009-01-28 | 腾讯科技(深圳)有限公司 | 一种磁盘空间管理方法及*** |
CN101876956B (zh) * | 2009-12-15 | 2015-05-06 | 北京中星微电子有限公司 | Sd卡的文件存取方法及装置 |
CN106293494A (zh) * | 2015-05-18 | 2017-01-04 | 高德软件有限公司 | 读取信息的方法及装置、写信息的方法及装置 |
CN106293494B (zh) * | 2015-05-18 | 2020-04-10 | 高德软件有限公司 | 读取信息的方法及装置、写信息的方法及装置 |
WO2020037982A1 (zh) * | 2018-08-24 | 2020-02-27 | 深圳市德名利电子有限公司 | 一种基于 fat 文件的数据删除方法、数据存储设备及*** |
CN118114320A (zh) * | 2024-03-14 | 2024-05-31 | 广州迪茂信息科技有限公司 | 一种以防病毒形式的FatFs快速读取SD卡大文件数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1295616C (zh) | 2007-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110678836B (zh) | 用于键值存储的持久性存储器 | |
US10922235B2 (en) | Method and system for address table eviction management | |
US8626987B2 (en) | Flash memory system and defragmentation method | |
US9092325B2 (en) | Fast block device and methodology | |
US8898371B2 (en) | Accessing logical-to-physical address translation data for solid state disks | |
KR101185617B1 (ko) | 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법 | |
CN101493794B (zh) | 一种闪存数据处理方法及装置 | |
US7792882B2 (en) | Method and system for block allocation for hybrid drives | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
US20050015557A1 (en) | Nonvolatile memory unit with specific cache | |
US20140068152A1 (en) | Method and system for storage address re-mapping for a multi-bank memory device | |
US20100082537A1 (en) | File system for storage device which uses different cluster sizes | |
US20060218347A1 (en) | Memory card | |
EP3752905B1 (en) | Append only streams for storing data on a solid state device | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
US8209513B2 (en) | Data processing system with application-controlled allocation of file storage space | |
CN116364148A (zh) | 一种面向分布式全闪存储***的磨损均衡方法及*** | |
CN1295616C (zh) | 一种写存储器的实现方法 | |
CN113031866B (zh) | 一种应用于SSD的Trim管理方法 | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
CN112559384B (zh) | 一种基于非易失存储器的混合固态盘动态分区方法 | |
KR101020781B1 (ko) | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 | |
CN1308836C (zh) | 数据储存的方法及*** | |
CN114610228A (zh) | 文件管理***及其文件管理方法、装置 | |
CN117149085B (zh) | 一种基于zns固态硬盘的快速寻址方法 |
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: 20070117 Termination date: 20111231 |