一种存储器数据存放及读取方法

文档序号:6432488阅读:305来源:国知局
专利名称:一种存储器数据存放及读取方法
技术领域
本发明涉及存储器领域,尤其涉及一种存储器数据存放及读取方法。
背景技术
在由单片机(或Dsp、AVr、Arm等微处理器)构成的数据采集系统中,往往有大量信息数据要保存,人们对数据存储提出了更高的要求,因而用于存储数据的存储器如存储芯片容量也越来越大。但是,在增大数据存储量的同时,人们也希望能更便捷高效地操作其中的数据(包括浏览、添加和删除等)。然而,单片机(或Dsp、Avr、Arm等微处理器)以及用于保存数据的存储器本身并没有提供这种功能,为此,需要开发一种存储器数据存放及读取的方法,以解决在大量的数据情况下,快速存取数据。

发明内容
针对现有技术中的存储器难以快速存取数据,因此需要提供一种存储器数据存放及读取方法。本发明公开了一种存储器数据存放及读取方法,其具体方法如下
将存储器的物理空间划分为a个逻辑页,每页b个字节,a个逻辑页划分为三部分数据区、页面分配区、目录区;所述数据区包含χ个逻辑页,所述页面分配区包含y个逻辑页, 所述目录区包含ζ个逻辑页,a=x+y+z ;
所述数据区为存储器最后面的χ个逻辑页,作为数据的存储区域,在存放数据时,从该区内分配逻辑页;
所述页面分配区用于记录数据区每一页的分配情况,页面分配区共有y页,每页c个字节,共有χ个记录项,每一个记录项对应着数据区相应页的使用情况; 所述目录区用来存储数据文件的主要信息。优选地,把记录项按照链表的形式组织起来,每个存储文件对应一个链表,链表中每个结点为一个记录项,记录项的内容为下一个记录项的编号,最后一个记录项的内容为链表结束标志。优选地,存放数据的方法具体为
在目录区中寻找空位置,若目录区已经存满,则报告并中止程序;否则,记录该位置,记为 MyFile ;
计算文件数据需占用的页面数,记为MyPage ;
在页面分配区中寻找并统计标志为空的记录项,若其数目小于MyPage,则报告并中止程序,否则在MyFile位置填写文件的主要信息;
依次在找到的空记录项内填入下一空记录项的序号,最后一个空记录项填入链表结束标志;
从文件首地址开始,按照文件链表依次把数据写入数据区相应的逻辑页。优选地,删除数据的方法具体为在目录区中寻找到该文件,提取出其首地址,记录为First ;把该文件所占用的目录区的首字节记为空闲标志;
在页面分配区中找到First的记录项,取出其内容,记为Next JEFirst的记录项的内容改写为页面未分配标志,将First=Next,重复此步骤,直至Next为链表结束标志。本发明的有益效果为存储时操作简单,本申请所述方法只需要读取目录区和页面分配区即可,搜索空闲空间的效率高。删除数据简单,本申请所述方法只需要修改目录区和页面分配区即可,不仅定位数据快,而且修改的工作量很小。实现了数据空间的回收,本申请所述方法利用链表分配存储空间,允许一个文件的数据非连续存放,回收的空间可以自由使用。通过读取目录区,用户可以大致知道该文件中存储的是什么数据。


图1为存储器的物理空间划分结构图。
具体实施例方式下面结合附图对本发明作进一步阐述。本发明公开了一种存储器数据存放及读取方法,其具体方法如下
将存储器的物理空间划分为a个逻辑页,每页b个字节,其中b>2,其中a个逻辑页又划分为三部分数据区、页面分配区、目录区;所述数据区包含χ个逻辑页,所述页面分配区包含y个逻辑页,所述目录区包含ζ个逻辑页,a=x+y+z。存储器的物理空间划分如附图1 所示。所述存储器最后面的χ个逻辑页作为数据区,其序号从0开始编号,数据区作为数据的存储区域,在存放数据时,从该区内分配若干页,每次存储一页。所述页面分配区记录了数据区每一页的分配情况,页面分配区共有y页,每页有c 个字节,其中c>2,每2字节组成一个记录项,共有χ个记录项,记录项从0开始编号,每一个记录项对应着数据区相应页的使用情况。所述目录区用来存储数据的主要信息,所述主要信息包括数据的文件名,文件生成的日期及数据在数据区存储的首地址。根据这些信息可以知道存储数据文件名、文件生成的日期以及文件的数据在数据区中的存储首地址
文件目录项的结构如下
①文件名。文件名由4字节双BCD码构成。②文件生成日期。占用4字节,按照双80)码的格式存储,如20!1、04!1,03!1、20!1则表示2004年3月20日。日期可通过时钟芯片获取。③文件首地址。指示该文件在页面分配区地址,分配给它的第一个数据页的序号,即它对应的链表的第一个记录项的编号。目录区共占用az页。根据每个文件信息最多占用10字节,每页m(m>10)个字节, 则在此文件系统中,最多可存储az*m/10个文件。
在实际应用中,一个数据文件的数据区可能占用多页。但随着文件的增删,数据区的空闲空间出现不连续的状况,因而数据区的分配并不能保证连续,而是根据当前数据区的使用情况来决定某一部分文件内容应该放在哪一页上。为了把这些分散的数据有机连接起来,优选地,把记录项按照链表的形式组织起来,每个文件对应着一个链表,链表中每个结点为一个记录项,记录项的内容为下一个记录项的编号,最后一个记录项的内容为 0FFFFH,表示链表结束。把这些记录项对应的页面连接起来就构成了一个文件的完整数据。 另外,如果记录项的内容为0ΕΕΕΕΗ,表示其对应的数据页未分配。下面举例说明本发明的方法如何读取获取文件数据
①首先在目录区中根据文件名找到包含该文件名的目录项,从而获取该文件的属性及其首地址。如文件“00000103”的日期为2003年11月24日,其首地址为0005H。②根据文件的首地址,在页面分配区中找到该记录项0005H。在该记录项中存储的值为0007H,可知该文件的下一记录项为0007H。③同理,可得到文件的后续记录项为0008H、0009H、000BH,直到从000ΒΗ记录项中读到OFFFHL此时表示这是最后一项,不需再继续找后继项了。④至此,可知文件“00000103”的数据分为5部分存储在数据区中,分别存储在 0005H、0007H、0008H、0009H、000BH页中。只要按序到数据中读取这些中的数据,并连接起来,就形成了该文件的全部数据。在大多数系统中,存储芯器中的数据存放都是要用顺序存储法每次存储数据时都是按照先后顺序依次写入数据空间。本申请所述方法与顺序存储法相比,具有下列优占.
^ \\\ ·
①存储时操作简单。在顺序存储中,寻找空闲空间需要逐次读出已经存储的数据,直到找到空闲空间为止,数据操作量大。本申请所述方法只需要读取目录区和页面分配区即可, 搜索空闲空间的效率高。②删除数据简单。在顺序存储中,为了定位到需要删除的数据,必须逐次读出存储的数据,直到找到需要删除物数据,再把该空闲改写为未用状态。本申请所述方法只需要修改目录区和页面分配区即可,不仅定位数据快,而且修改的工作量很小。③实现了数据空间的回收。顺序存储法中,在删除的某次数据后,该数据所占用的空间可能无法回收使用。因为回收的空间会形成碎片该空间前后都存储有数据,但该空间的长度无法满足一个更大长度的数据。本申请所述方法利用链表分配存储空间,允许一个文件的数据非连续存放,回收的空间可以自由使用。④通过读取目录区,用户可以大致知道该文件中存储的是什么数据,而顺序存储法却无法提供这些信息。(1)添加文件
添加文件的主要工作是为新文件寻找存储空间,其寻找步骤如下 ①在目录区中寻找空位置。若目录区已经存满,则向用户报告并中止程序;否则,记录该位置(记为MyFiIe)。②计算文件数据需占用的页面数,记为My Page0③在页面分配区中寻找并统计标志为空的记录项,其内容为0ΕΕΕΕΗ。若其数目小于MyPage,则向用户报告,并中止程序。
④在MyFile位置填写文件名和日期,并把找到的第一个空记录项的序号填入,作为该文件的首地址。⑤依次在找到的空记录项内填入下一空记录项的序号,最后一个空记录项填入 OFFFFH。⑥从文件首地址开始,按照文件链表依次把数据写入数据区相应的页。(2)删除文件
删除文件的主要工作是回收该文件所占用的空间,以便将来分配给其它文件。①在目录区中寻找到该文件,提取出其首地址,记录First。随后,把该文件所占用的目录区的首字节清为0FFH,表示该目录项空闲。②在页面分配区中找到First记录项,取出其内容,记为Next。随后,把First记录项的内容改写为0ΕΕΕΕΗ。③First=Next,重复②,直至Next=OFFFHL 由添加文件可以看出,在搜索空间时,只对目录区和页面分配区操作,因此,删除文件时,只需要释放目录和页面分配区即可,而不需要修改数据区。这大大提高了删除的效率。(3)系统格式化
系统格式化的目的是把存储器按照前面所述的格式进行初始化,以正确反映目前的使用状况。格式化的主要工作包括
①把目录区全部写为0FFH,以清空目录区中所有数据;
②把页面分配区的所有记录项写为0ΕΕΕΕΗ,标志它们全部未使用。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种存储器数据存放及读取方法,其具体方法如下将存储器的物理空间划分为a个逻辑页,每页b个字节,a个逻辑页划分为三部分数据区、页面分配区、目录区;所述数据区包含χ个逻辑页,所述页面分配区包含y个逻辑页, 所述目录区包含ζ个逻辑页,a=x+y+z ;所述数据区为存储器最后面的χ个逻辑页,作为数据的存储区域,在存放数据时,从该区内分配逻辑页;所述页面分配区用于记录数据区每一页的分配情况,页面分配区共有y页,每页c个字节,共有χ个记录项,每一个记录项对应着数据区相应页的使用情况;所述目录区用来存储数据文件的主要信息。
2.如权利要求1所述的存储器数据存放及读取方法,其特征在于把记录项按照链表的形式组织起来,每个存储文件对应一个链表,链表中每个结点为一个记录项,记录项的内容为下一个记录项的编号,最后一个记录项的内容为链表结束标志。
3.如权利要求2所述的存储器数据存放及读取方法,其特征在于存放数据的方法具体为在目录区中寻找空位置,若目录区已经存满,则报告并中止程序;否则,记录该位置,记为 MyFile ;计算文件数据需占用的页面数,记为MyPage ;在页面分配区中寻找并统计标志为空的记录项,若其数目小于MyPage,则报告并中止程序,否则在MyFile位置填写文件的主要信息;依次在找到的空记录项内填入下一空记录项的序号,最后一个空记录项填入链表结束标志;从文件首地址开始,按照文件链表依次把数据写入数据区相应的逻辑页。
4.如权利要求2或3所述的储器数据存放及读取方法,其特征在于删除数据的方法具体为在目录区中寻找到该文件,提取出其首地址,记录为First ;把该文件所占用的目录区的首字节记为空闲标志;在页面分配区中找到First的记录项,取出其内容,记为Next JEFirst的记录项的内容改写为页面未分配标志,将First=Next,重复此步骤,直至Next为链表结束标志。
全文摘要
本发明涉及存储器领域,本发明公开了一种存储器数据存放及读取方法,将存储器的物理空间划分为a个逻辑页,a个逻辑页划分为三部分数据区、页面分配区、目录区;所述数据区为存储器最后面的x个逻辑页,作为数据的存储区域,在存放数据时,从该区内分配逻辑页;所述页面分配区用于记录数据区每一页的分配情况,页面分配区共有y页,每页c个字节,共有x个记录项,每一个记录项对应着数据区相应页的使用情况;所述目录区用来存储数据文件的主要信息。本申请所述方法存储时操作简单,删除数据简单,实现了数据空间的回收,通过读取目录区,用户可以大致知道该文件中存储的是什么数据。
文档编号G06F12/02GK102279805SQ20111026164
公开日2011年12月14日 申请日期2011年9月6日 优先权日2011年9月6日
发明者胥伟志 申请人:四川九洲电器集团有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1