CN102622431A - 基于flash的流式文件***以及文件读取写入的方法 - Google Patents
基于flash的流式文件***以及文件读取写入的方法 Download PDFInfo
- Publication number
- CN102622431A CN102622431A CN2012100473345A CN201210047334A CN102622431A CN 102622431 A CN102622431 A CN 102622431A CN 2012100473345 A CN2012100473345 A CN 2012100473345A CN 201210047334 A CN201210047334 A CN 201210047334A CN 102622431 A CN102622431 A CN 102622431A
- Authority
- CN
- China
- Prior art keywords
- data
- bunch
- file
- flash
- stream
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于flash的流式文件***以及在该***上读写文件的方法,所述基于flash的流式文件***包括将flash划分多个存储单元,所述存储单元分为***簇和数据簇;***簇用于存储日志、备份、文件目录表、文件分配表;数据簇用于存储数据。这样,对文件的读写就可以先遍历各个簇的簇头信息,获取各个簇的类型以及空间使用情况,由于仅读取簇头部信息,因此花费的时间少;通过对***簇的读取,就可以获得如文件的起始簇、大小、修改时间以及文件存储分布情况等信息,从而更有效率的找到匹配的簇,再对文件进行读写;同时,由于已经获知各个簇的空间使用情况,就有效分配这些空闲的簇,从而使得对存储空间的管理更为高效。
Description
技术领域
本发明涉及一种流式文件***领域,尤其涉及一种基于flash的流式文件***以及基于该***的文件读取或写入的方法。
背景技术
随着各种卡片被应用于消费交易中,pos也被广泛应用于各类商家。通常而言pos机都需要存储各类的交易数据,比如交易商家、地点、时间、交易类型、***等信息,原有的pos只需提供记录式的文件***记录这些流水数据就可以满足需求。但随着pos应用形式的多样化,pos机不仅要存储交易流水数据,还要存储其他形式的数据,比如用户个性化的界面数据、字体、图形、或者各种脚本数据。这样一来,原有记录式的文件***不能满足日益增长的用户需求。因此一种简单、易用、移植性强、对硬件要求低的流式文件***就呼之欲出。
目前可用的流式文件***有比较多,比如最常用的有jffs2、yaffs、ext、fat、ntfs等文件***。
(1)jffs2(Journaling Flash File System,flash日志型文件***第2版),其功能就是管理在MTD设备上实现的日志型文件***。除了提供具有断电可靠性的日志结构文件***,jffs2还会在它管理的MTD设备上实现磨损平衡和数据压缩等特性。Jffs2的不足之处:(a)需要类似linux这种强大的操作***支持,(b)挂载时对闪存从头到尾扫描,速度慢,并且需要大量的内存。
(2)yaffs(Yet Another Flash File System):第一个专门为NAND Flash存储器设计的嵌入式文件***,适用于大容量的存储设备,Yaffs是基于日志的文件***,提供磨损平衡和掉电恢复的特性,主要应用于linux和wince中。
(3)ext(extended file system):是专门为linux开发的原始的扩展文件***。
(4)fat(基于文件分配表文件***):通常应用于磁盘,U盘等大容量的存储介质上。其主要的思想是在存储介质上划出固定的区域记录文件***的信息以及文件分配表(File Allocation Table,FAT表),以达到管理存储空间的目的。正常使用FAT文件***的介质都带有控制器,控制器除了实现正常访问物理存储介质之外,还可以实现物理介质的磨损平衡。不适用于直接访问flash设备。
(5)ntfs(New Technology File System):是基于windows操作***的磁盘文件***。
目前常用的文件***通常需要强大的操作***支持,并且需要的内存资源较大,甚至有些文件***不支持flash设备。本发明要解决的问题是:开发一种文件***同时支持norflash与nandflash,并且无需操作***支持,可在无操作***或轻量级的操作***如nucleus、uclinux上运行,带有磨损平衡的pos机专用的流式文件***。
发明内容
本发明提供一种基于flash的流式文件***,能够解决现有技术中不支持flash设备,移植性不高、对硬件要求高的技术问题。
为解决上述技术问题,本发明提供一种基于flash的流式文件***,将flash划分多个存储单元,所述存储单元分类为***簇或数据簇;***簇用于存储日志、备份、文件目录表、文件分配表;数据簇用于存储数据。
为解决上述技术问题,本发明还提供一种向基于flash的流式文件***读取文件的方法,包括:
S1:遍历flash中的每个簇的簇头信息,获取每个簇的类型以及空间使用状况;
S2:获取***簇,根据***簇中的文件目录表和文件分配表,获取文件的存储信息;
S3:根据文件的存储信息,读取文件数据。
其中,所述步骤S2的文件的存储信息包括文件名称、文件分配情况。
为解决上述技术问题,本发明还提供一种向基于flash的流式文件***写入文件的方法,包括:
S1:遍历flash中的每个簇的簇头信息,获取每个簇的类型以及空间使用状况;
S2:获取***簇,根据***簇中的文件分配表,获取所需要写入的数据簇的信息,判断所述数据簇是否为空,若是,写入数据;若否,转到S3;
S3:随机分配一个空闲数据簇,写入数据。
其中,所述步骤S3中,所述数据包括旧簇中的有用数据A以及新增数据B,所述写入数据的方法是,获取数据A和数据B,丢弃包含数据A的数据簇,将数据A和数据B一起写入随机分配的空闲数据簇,更新文件分配表。
采用上述技术方案,本发明的有益效果是:由于将flash划分***簇和数据簇,对文件的读写就可以先遍历各个簇的簇头信息,获取各个簇的类型以及空间使用情况,由于仅读取簇头部信息,因此花费的时间少,本发明提供独立的文件操作接口,使用较小内存,因此不需要强大的操作***支持,;通过对***簇的读取,就可以获得如文件的起始簇、大小、修改时间以及文件存储分布情况等信息,这样,能够更有效率的找到匹配的簇,再对文件进行读写;同时,由于已经获知各个簇的空间使用情况,就可以随机分配这些空闲的簇,使得文件***对各个簇的使用频率度达到一定程度的平衡,从而对存储空间的管理更为高效。
附图说明
图1为本发明提供的基于flash的流式文件***的示意图;
图2为本发明提供的基于flash的流式文件***的***初始化示意图;
图3为本发明提供的向基于flash的流式文件***读取文件的方法的流程图;
图4为为本发明提供的向基于flash的流式文件***写入文件的方法的流程图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1,本发明提供一种基于flash的流式文件***,其特征在于将flash划分多个存储单元,所述存储单元包括***簇和数据簇;***簇用于存储日志、备份、文件目录表、文件分配表;
本发明提供独立的文件操作接口,使用较小内存,因此不需要强大的操作***支持。
所谓的文件目录表即FDT(File Directory Table),文件分配表即FAT(FileAllocation Table)。数据簇用于存储数据。所谓簇是能在一个flash内能分配的flash空间的最小单位,簇的大小取决于flash的大小和格式。如果写入文件的大小超过flash的簇的大小,这个文件将跨越多个簇(有时候作为一个簇链),例如,某个文件会占据0、2、4、8号簇,而flash被限制只能使用固定数目的簇,所以簇的大小变化要取决于分区的容量,分区做的越小,簇的大小就越小。簇的大小越小,当簇被使用时候浪费的空间就越少。
因此,本发明将存储区域分为多个簇,可以有效的利用flash空间。
请参阅图2和图3,本发明还提供一种向基于flash的流式文件***读取文件的方法,包括:
S1:当***启动时,文件***就遍历flash中的每个簇的簇头信息,获取每个簇的类型以及空间使用状况;由于仅读取簇头部信息,因此花费的时间较少。
S2:获取***簇,根据***簇中的文件目录表和文件分配表,获取文件的存储信息,具体指,根据FDT表查询该文件对应的FDT记录,根据FDT记录的首簇号,又从FAT表查找该文件对应的FAT记录,得到文件的存储空间分布情况、文件大小等重要信息。
S3:根据文件的存储信息,读取文件数据。
采用这种方法,由于在flash划分***簇和数据簇,先遍历各个簇的簇头信息,获取各个簇的类型以及空间使用情况,由于仅读取簇头部信息,因此花费的时间少;通过对***簇的读取,就可以获得如文件的起始簇、大小、修改时间以及文件存储分布情况等信息,这样,能够更有效率的找到所需要读取的簇,再对文件进行读取。
请参阅图4,本发明还提供一种向基于flash的流式文件***写入文件的方法,包括:
S1:遍历flash中的每个簇的簇头信息,获取每个簇的类型以及空间使用状况;
S2:获取***簇,根据***簇中的文件分配表,获取所需要写入的数据簇的信息,判断所述数据簇是否为空,若是,写入数据;若否,转到S3;
S3:随机分配一个空闲数据簇,写入数据。其中,所述步骤S3中,所述数据包括旧簇中的有用数据A以及新增数据B,所述写入数据的方法是,获取数据A和数据B,丢弃包含数据A的数据簇,将数据A和数据B一起写入随机分配的空闲数据簇,更新文件分配表。经过这样的处理,就能够防止数据重复写入,同时能够及时清理簇中的旧数据,且采用了随机分配空闲簇的原则,使得文件***对各个簇的使用频率达到一定程度的平衡,起到了磨损平衡的效果。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (5)
1.一种基于flash的流式文件***,其特征在于:将flash划分多个存储单元,所述存储单元分类为***簇或数据簇;
***簇用于存储日志、备份、文件目录表、文件分配表;
数据簇用于存储数据。
2.一种向基于flash的流式文件***读取文件的方法,其特征在于,包括:
S1:遍历flash中的每个簇的簇头信息,获取每个簇的类型以及空间使用状况;
S2:获取***簇,根据***簇中的文件目录表和文件分配表,获取文件的存储信息;
S3:根据文件的存储信息,读取文件数据。
3.根据权利要求2所述的向基于flash的流式文件***读取文件的方法,其特征在于:所述步骤S2的文件的存储信息包括文件名称、文件分配情况。
4.一种向基于flash的流式文件***写入文件的方法,其特征在于,包括:
S1:遍历flash中的每个簇的簇头信息,获取每个簇的类型以及空间使用状况;
S2:获取***簇,根据***簇中的文件分配表,获取所需要写入的数据簇的信息,判断所述数据簇是否为空,若是,写入数据;若否,转到S3;
S3:随机分配一个空闲数据簇,写入数据。
5.根据权利要求4所述的向基于flash的流式文件***写入文件的方法,其特征在于:所述步骤S3中,所述数据包括旧簇中的有用数据A以及新增数据B,所述写入数据的方法是,获取数据A和数据B,丢弃包含数据A的数据簇,将数据A和数据B一起写入随机分配的空闲数据簇,更新文件分配表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210047334.5A CN102622431B (zh) | 2012-02-27 | 2012-02-27 | 基于flash的流式文件***以及文件读取写入的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210047334.5A CN102622431B (zh) | 2012-02-27 | 2012-02-27 | 基于flash的流式文件***以及文件读取写入的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102622431A true CN102622431A (zh) | 2012-08-01 |
CN102622431B CN102622431B (zh) | 2014-04-16 |
Family
ID=46562350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210047334.5A Active CN102622431B (zh) | 2012-02-27 | 2012-02-27 | 基于flash的流式文件***以及文件读取写入的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102622431B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109326307A (zh) * | 2018-09-07 | 2019-02-12 | 江苏菲利斯通信息科技有限公司 | 光盘流式刻录方法 |
CN111367474A (zh) * | 2020-03-02 | 2020-07-03 | 湖南师范大学 | 面向嵌入式存储器的fat文件***后分配方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1273392A (zh) * | 1999-05-07 | 2000-11-15 | 英业达集团(南京)电子技术有限公司 | 一种新型的快擦写存储器结构及操作方法 |
CN101013397A (zh) * | 2007-02-08 | 2007-08-08 | 深圳万利达电子工业有限公司 | 一种nandflash文件***实现方法 |
CN102142032A (zh) * | 2011-03-28 | 2011-08-03 | 中国人民解放军国防科学技术大学 | 一种分布式文件***的数据读写方法及*** |
-
2012
- 2012-02-27 CN CN201210047334.5A patent/CN102622431B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1273392A (zh) * | 1999-05-07 | 2000-11-15 | 英业达集团(南京)电子技术有限公司 | 一种新型的快擦写存储器结构及操作方法 |
CN101013397A (zh) * | 2007-02-08 | 2007-08-08 | 深圳万利达电子工业有限公司 | 一种nandflash文件***实现方法 |
CN102142032A (zh) * | 2011-03-28 | 2011-08-03 | 中国人民解放军国防科学技术大学 | 一种分布式文件***的数据读写方法及*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109326307A (zh) * | 2018-09-07 | 2019-02-12 | 江苏菲利斯通信息科技有限公司 | 光盘流式刻录方法 |
CN109326307B (zh) * | 2018-09-07 | 2020-12-11 | 江苏菲利斯通信息科技有限公司 | 光盘流式刻录方法 |
CN111367474A (zh) * | 2020-03-02 | 2020-07-03 | 湖南师范大学 | 面向嵌入式存储器的fat文件***后分配方法及*** |
CN111367474B (zh) * | 2020-03-02 | 2021-03-02 | 湖南师范大学 | 面向嵌入式存储器的fat文件***后分配方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN102622431B (zh) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101241472B (zh) | 映射管理方法及*** | |
CN101571869B (zh) | 一种智能卡的文件存储、读取方法及装置 | |
WO2016086819A1 (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN106445405B (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
CN102467455A (zh) | 存储***、数据存储设备、用户设备及其数据管理方法 | |
CN102301349A (zh) | 数据库操作意识条带化技术 | |
CN103902669A (zh) | 一种基于不同存储介质的分离式文件*** | |
CN101968795A (zh) | 一种数据块长度可变的文件***缓存方法 | |
CN101002274A (zh) | 提高usb闪存写入性能的方法和器件 | |
CN101510332B (zh) | 一种智能卡中存储空间的管理方法和装置 | |
CN101320594A (zh) | 一种闪存芯片的物理操作方法 | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
CN102135942A (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
CN102567427A (zh) | 一种对象数据处理方法及装置 | |
CN101645043A (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN102043687A (zh) | 实现数据快照的首写拷贝装置及控制方法 | |
CN109558335A (zh) | 一种基于Nor Flash存储器的嵌入式***的文件存储格式 | |
CN101702139A (zh) | 一种访问Nand闪存数据的方法和装置 | |
US20160026674A1 (en) | Apparatus and method for fsync system call processing using ordered mode journaling with file unit | |
CN102541969B (zh) | 基于fat文件***的文件保护方法、***及存储器 | |
CN104376099A (zh) | 一种基于闪存的文件***的实现方法和实现装置 | |
CN102955787A (zh) | 一种文件目录表的使用方法、文件写入方法及应用的主电路板、cpu和外部存储器 | |
CN101441596B (zh) | 提高闪存介质读写速度的方法 | |
CN102622431B (zh) | 基于flash的流式文件***以及文件读取写入的方法 |
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 |