CN102622431A - 基于flash的流式文件***以及文件读取写入的方法 - Google Patents

基于flash的流式文件***以及文件读取写入的方法 Download PDF

Info

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
Application number
CN2012100473345A
Other languages
English (en)
Other versions
CN102622431B (zh
Inventor
王斌
陈庆斌
林英
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Landi Commercial Equipment Co Ltd
Original Assignee
Fujian Landi Commercial Equipment Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Landi Commercial Equipment Co Ltd filed Critical Fujian Landi Commercial Equipment Co Ltd
Priority to CN201210047334.5A priority Critical patent/CN102622431B/zh
Publication of CN102622431A publication Critical patent/CN102622431A/zh
Application granted granted Critical
Publication of CN102622431B publication Critical patent/CN102622431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于flash的流式文件***以及在该***上读写文件的方法,所述基于flash的流式文件***包括将flash划分多个存储单元,所述存储单元分为***簇和数据簇;***簇用于存储日志、备份、文件目录表、文件分配表;数据簇用于存储数据。这样,对文件的读写就可以先遍历各个簇的簇头信息,获取各个簇的类型以及空间使用情况,由于仅读取簇头部信息,因此花费的时间少;通过对***簇的读取,就可以获得如文件的起始簇、大小、修改时间以及文件存储分布情况等信息,从而更有效率的找到匹配的簇,再对文件进行读写;同时,由于已经获知各个簇的空间使用情况,就有效分配这些空闲的簇,从而使得对存储空间的管理更为高效。

Description

基于flash的流式文件***以及文件读取写入的方法
技术领域
本发明涉及一种流式文件***领域,尤其涉及一种基于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一起写入随机分配的空闲数据簇,更新文件分配表。
CN201210047334.5A 2012-02-27 2012-02-27 基于flash的流式文件***以及文件读取写入的方法 Active CN102622431B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 中国人民解放军国防科学技术大学 一种分布式文件***的数据读写方法及***

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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