[发明专利]一种基于Flash的日志存储方法有效

专利信息
申请号: 201110442999.1 申请日: 2011-12-27
公开(公告)号: CN102567184A 公开(公告)日: 2012-07-11
发明(设计)人: 张淑岩 申请(专利权)人: 青岛海信宽带多媒体技术有限公司
主分类号: G06F11/34 分类号: G06F11/34;G06F12/02
代理公司: 青岛联智专利商标事务所有限公司 37101 代理人: 李升娟
地址: 266100 山*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 flash 日志 存储 方法
【权利要求书】:

1.一种基于Flash的日志存储方法,其特征在于,以Flash的块或扇区为存储管理单元构成日志存储空间,将需存储的日志以日志记录的形式写入Flash的日志存储空间内。

2.根据权利要求1所述的存储方法,其特征在于,所述日志记录包括记录头字段和记录长度字段,将当前日志记录写入Flash的日志存储空间的过程包括下述步骤:

a、查找Flash的日志存储空间是否存在日志记录的记录头,并将查找到的第一条有效日志记录的记录头作为同步头;

b、在查找到同步头后,查找上一次日志记录存储时的写指针位置;

c、判断剩余日志存储空间能否存放当前日志记录;

d、在剩余日志存储空间能够存放当前日志记录时根据写指针位置写入当前日志记录。

3.根据权利要求2所述的存储方法,其特征在于,在所述步骤d中,将写入当前日志记录之前,判断日志记录的写入频率是否大于设定的采样频率,若写入频率大于采样频率,则丢弃部分日志记录,以调整写入频率。

4.根据权利要求3所述的存储方法,其特征在于,若日志记录的写入频率大于设定的采样频率,首先设置溢出标志,然后在一定取值范围内获取随机数,根据随机数与随机数的取值范围及采样频率的大小关系判断与随机数相对应的日志记录是否需要丢弃。

5.根据权利要求2至4中任一项所述的存储方法,其特征在于,在所述步骤a中,采用下述过程查找同步头:首先找到第一条日志记录的记录头,然后根据第一条日志记录的记录长度将读指针向后移动至该第一条日志记录结束后的下一个地址,读取下一个地址的数据并判断是否为记录头,若为记录头,则判断第一条日志记录为第一条有效记录,其记录头即为同步头。

6.根据权利要求5所述的存储方法,其特征在于,在所述步骤b中,若查找到同步头,则查找日志存储空间中已存储的最新日志记录,最新日志记录的下一个地址即为上一次日志记录存储时的写指针位置。

7.根据权利要求6所述的存储方法,其特征在于,所述日志记录包括有版本号字段,采用下述过程查找日志存储空间中已存储的最新日志记录:

从所述同步头对应的日志记录开始,依次比较前、后两条相邻的日志记录的版本号,若版本号不连续,则前面的日志记录即为最新的日志记录。

8.根据权利要求2至4中任一项所述的存储方法,其特征在于,在所述步骤b中,若未查找到同步头,则擦除整个日志存储空间,并将日志存储空间的首地址作为写指针位置。

9.根据权利要求2至4中任一项所述的存储方法,其特征在于,在所述步骤d中,若剩余日志存储空间不能存放当前日志记录,擦除最早写入的日志记录所在的块或扇区,将写指针移至擦除的块或扇区的首地址,然后根据写指针位置写入当前日志记录。

10.根据权利要求2至4中任一项所述的存储方法,其特征在于,在所述步骤b中,在查找到同步头后,首先从同步头所在的日志记录开始,从Flash中读取一定字节数至缓存中,然后在缓存中查找上一次日志记录存储时的写指针位置。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青岛海信宽带多媒体技术有限公司,未经青岛海信宽带多媒体技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201110442999.1/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top