wince的diskcache和filecache

用Quartus II和LPM_ROM手把手复现西电计组课设:从微指令到五条指令的完整流程 本文详细介绍了使用Quartus II和LPM_ROM复现西电计组课设的完整流程,从微指令编写到五条指令的实现。通过环境搭建、LPM_ROM配置、微程序设计及调试技巧,帮助读者高效完成课程设计,避开常见问题。适合计组课程设计的学习者和实践者参考。 阅读详情
wince系统中存在diskcache和filecache两种cache,通俗的来讲diskcache是与块设备存取访问相关的,对应的是在注册表设置如下内容
; global setting
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
  "EnableCache"=dword:0
  "FatCacheSize"=dword:200
  "DataCacheSize"=dword:400

; only for nandflash
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
  "FatCacheSize"=dword:200
  "DataCacheSize"=dword:400
而filecache是与文件访问相关的,对应的系统添加cachefilt组件,或是在config.bib设置pagepool相关内容
kernel.dll:LoaderPoolTarget       00000000  01000000  FIXUPVAR ;Paging Pool Target Size
kernel.dll:LoaderPoolMaximum      00000000  02000000  FIXUPVAR ;Paging Pool Maximum Size
关于两者的区别和联系可以从下文中得到解答
"EnableCache"=dword:0 Is the more cleaner way to do it. 

About the page pool and windows cache (actualy disk caching): They both store data in the memory for fast retrieval.

But the "windows cache" only stores data for fast retrieval and buffer a write to disk. This cache is a copy from the original data. When data is needed it will be copied from the cache to where it is needed.

The page pool can only store read only data, but if a program is loaded in to memory (for example you start Opera), the read only parts are loaded in to the page pool (data/code), not a chunk of additional memory.
The program is then executed using the memory of the page pool.

So it's possible to start 3 programs and not to see your memory usage going up because those programs are using memory from the page pool.

After you close a program, the memory it uses from the page pool is not released, but it's free for an other program to use (overwrite), or when you start that same program again, it doesn't have to load itself from disk again since the data/code is already there in the page pool.

Thats why a to small page pool give worse performance.

在实际使用当中,对于diskcache,进行sd卡读写测试的时候,写到一定数量的数据WriteFile会明显停顿一会,这个时候应该就是在进行writeback动作了,如果在CreateFile的时候指定FILE_FLAG_NO_BUFFERING则无此明显停顿现象,而且整体速度要快一些;对于filecache,当exe很大(达到10MB以上),如果不设置config.bib,每次加载的时候要么是很慢,要么会易出现莫名其妙的异常。

补充:
在另外一台机器上测试sd卡的写速度时,发现加没加FILE_FLAG_NO_BUFFERING速度都差不多,也没有出现停顿现象,经过比较发现是因为系统没添加cachefilt组件,由此推测:
1、cachefilt是fsd(ce6才有cachefilt,其fsd是exfat.dll)的上层建筑,它完成filecache工作,filecache主要用于提高文件操作IO性能(应该主要是访问速度)。当无cachefilt组件时FILE_FLAG_NO_BUFFERING是无效的。
2、fsd完成diskcache工作,diskcache主要用于解决文件IO速度慢于fsd操作的问题(通过缓存设备数据来降低访问次数),如果要降低数据丢失概率则需要使用FILE_FLAG_WRITE_THROUGH标志(提高了设备访问次数可能会降低使用寿命)

关于这两点猜测在引用三中得到证实,要点内容列举如下:

Even without file cache and disk cache, it doesn't imply the data will be written to storage directly.
Unless you specific Write Through mode when open the file (CreateFile), some of the data may still in the file system or storage driver's internal write buffer.

不过它还提到了第三种cache,这个是filesystem和block driver用于存取设备的cache(例如,fat32中最多一次传送的是64扇区),要点内容如下:
Unlike cache, the write buffer of File system or Storage driver just like it name, a  buffer between under layer IO and the software.

Because the block device driver (Storage) or the File System storage (e.g. a FAT cluster) need to be accessed via a basic unit (sector/cluster); the purpose of write buffer is to have a temporally memory for this basic unit so upper layer software does not need to access data aligned to the basic unit size.

When you using WriteFile API, you can write whatever size you want, so it is possible some of the data may not drain to the storage but still in the write buffer. With FILE_FLAG_WRITE_THROUGH flag, it indicates file system and block driver to drain the write buffer on each accessing.


相关引用:
1、http://bbs.youkuaiyun.com/topics/330174610
2、http://forum.xda-developers.com/showthread.php?t=530710&page=91
3、https://social.msdn.microsoft.com/Forums/en-US/c4c10464-6da4-45e4-8a57-7e87eedff1d0/windows-ce-60-exfat-file-system?forum=winembplatdev





web渗透--9--识别web应用框架 1、概述 Web框架指纹识别是信息收集过程中的一个重要任务。获悉目标框架的类型必然为测试人员带来极大的优势,如果该框架在之前就被测试过。测试人员不仅可以获得未修补版本中存在的漏洞,还可以了解此框架中特有的错误配置以及已知的文件结构。从而使指纹识别过程显得格外重要。 阅读详情

相关推荐

STM32F103VET6实战:用W25Q64外部Flash实现Bootloader远程升级(含完整代码解析)

本文详细介绍了基于STM32F103VET6与W25Q64外部Flash的Bootloader远程升级实现方案,包含硬件选型、存储分区策略、双校验机制及完整代码解析。通过SPI接口实现固件存储与升级,适用于物联网设备开发,提升OTA功能可靠性。

weixin_42620340的博客 358

Cache缓存示例(WCF)

1、新增缓存 ? 1 2 3 var cache = HttpRuntime.Cache;

萌萌的It人 www.itmmd.com 2909

告别Windows!Oculus Quest 2在Mac M1上的串流实战(scrcpy+SideQuest避坑指南)

本文为Mac M1用户提供了Oculus Quest 2在macOS上实现高清低延迟串流的实战指南。通过使用开源工具scrcpy和SideQuest,绕开官方限制,详细讲解了从环境准备、无线调试到画质与延迟优化的完整步骤,重点解决了Apple Silicon芯片Mac的连接与性能问题,助你告别Windows依赖。

weixin_29224309的博客 309

缓存被损坏后,如何恢复Windchill工作区中没有检入到公用区的图纸?

注明:以下内容非原创,来自PTC官方资料 1.下载恢复缓存的小工具WC_FileRecoverySetup  百度网盘下载链接:https://pan.baidu.com/s/17c6ShMOlCBwOt289Y2437Q 提取码: 89qd  2.先将缓存文件夹备份 键盘Win+R中输入%appdata%,进入到C:\Users\<user name>\AppData\Roa...

笑看人生的专栏 3077

【亲测有效】OpenClaw Gateway 出现 “(no output)“ 卡死问题完整解决指南:从手动重启到 systemd Watchdog 自动恢复

最近在使用 OpenClaw(自托管 AI 助手框架,前身 Clawdbot/Moltbot)时,遇到了一个非常常见的顽疾:TUI(终端界面)或 Telegram 等通道经常显示 "(no output)",消息发出去后机器人完全没反应,看起来像是卡死了。

hampeter的博客 8610

NUS-WIDE-10K数据集制作

NUS-WIDE是一个多标签数据集,数据集中一共包含26,9648个样本,可以分为81个类。最近在做跨模态检索项目,发现有很多论文里面都用到了NUS-WIDE-10K数据集,但是在网上也没有搜索到相关的数据集下载链接或者是数据集制作代码,所以自己动手写了一个NUS-WIDE-10K数据集的制作代码。 1.介绍 我在网上找到的最早关于NUS-WIDE-10K数据集描述的论文是:Cross-modal Retrieval with Correspondence Autoencoder。描述如下:作者选择了N

weixin_44012382的博客 4201

android data com.qzone,我手机是安卓系统的,Qzone里的FileCache文件夹中的文件是什么东西?...

满意答案先申明 答案是复制过来的 不过非常不错固件原始目录.android_secureAndroidContactsCameraDownloadLOST.DIRMstoreMusicPhotoRecorderRingtonesVideo.android_secureapp2sd的产物,除非重装系统或重置注册表,否则不要动Android系统缓存目录,随着使用时间越来越长,此目录会显得非常臃肿,可以...

weixin_34058060的博客 1175

工程测量不用愁,120个视频动画帮你忙,简单易学直观明了!

工程测量不用愁,120个视频动画帮你忙,简单易学直观明了!文末提供下载地址。 下载地址: 链接:https://pan.baidu.com/s/11S6XDq9Eaa3DG3VKRMBIPg

智慧空间实验室 1019

注册表中修改系统文件夹路径的方法

  注册表中修改系统文件夹路径的方法 注册表中修改AppData、Cache、Cookies、desktop、history、我的音乐、我的图片、templates等系统文件夹路径 运行:"regedit"打开注册表编辑器,找到[ HKEY__CURRENT USER/Software/Microsoft/Windows/CurrentVersion/Explorer/User Shell F...

weixin_34341117的博客 1113

2xmax96717+max96724+agx orin驱动代码

说明:这里主要解决max96717的设备地址和sensor地址映射,vc0->vc1多颗max96717+max96724使用配置思路如下: 1、改变max96717的pipez stream id,然后max96724的pipe绑定使用相应的stream id 2、max96717默认是vc0,把vc0改写成vc1\vc2\vc3,然后max96724再重新映射vc输出

mantouyouyou的博客 114

Android AVB 分析(十六)5 个例子彻底理解 FEC(Reed-Solomon) 的工作原理

关于 FEC 是如何工作的,一直是我 Android OTA 讨论群中的未解话题,大家基本上都不清楚 Android 上面的 FEC 是如何工作的,为什么在 OTA 升级的最后阶段,FEC 的编码计算会消耗大量的 IO 资源,并持续很长时间。接下来的几篇,我会从一个程序员的角度,演示基于里德所罗门编码的 FEC 到底是如何工作的。

洛奇看世界 669

如何禁止IIS缓存静态文件

转自:http://zzstudy.offcn.com/?p=1165 如何禁止IIS缓存静态文件(png、js、html等) 2012年07月02日 ⁄ 系统维护 ⁄ 暂无评论 ⁄ 被围观 2315+ 禁止IIS缓存静态文件(png、js、html等)背景: IIS为了提高性能,默认情况下会对静态文件js、html、gif、png等做内部缓存,这个

chelen_jak的专栏 7656

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 500

WINCE6.0文件系统及存储管理器

<br />*******************************LoongEmbedded********************************<br />作者:LoongEmbedded<br />时间:2010.12.03<br />类别:WINCE嵌入式系统<br />********************************LoongEmbedded********************************<br /> <br /> <br />Filesys.dll

LoongEmbedded的专栏 6188

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

secache 详解

介绍下secache缓存,它是属于文件缓存。简单来说,文件缓存就是把缓存数据存储到文件系统 (硬盘)中了,比 内存缓存要慢一些,但是也是有一点优点的。 1.磁盘容量大, 2保存到硬盘,说明 掉电后数据不会丢失,比较可靠 3.使用 固态硬盘的话,速度有了一定提高;同时扩展容易,可以使用磁盘阵列,分布式处理等进行大规模的存储和管理。 而secache的优势(网上介绍):   纯php实...

weixin_33922670的博客 223

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Windows Mobile和Wince(Windows Embedded CE)下封装Native DLL进一步探讨

之前写过一篇关于Windows Mobile和Wince(Windows Embedded CE)下封装Native DLL的文章,原文如下: Windows Mobile和Wince(Windows Embedded CE)下如何封装Native DLL提供给.NET Compact Framework进行调用 原文主要针对如何封装的Native ...

weixin_34406061的博客 171

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

直接操作wince显示缓冲区framebuffer

    前段时间弄关机图片,即直接操作wince的显示缓冲区,往里面放一个关机或休眠画面的二进制数据。发现有两种方法,如下(硬件平台 S3C2440): 第一种方法:#define IMAGE_FRAMEBUFFER_UA_BASE       0xA0100000   //显示缓冲区虚拟地址SetKMode(TRUE);   //进入内核模式。memcpy((void *)(

黄瓜帅的专栏 2907

深入浅出Wince的存储机制

http://blog.youkuaiyun.com/pony_maggie/article/details/5270428 转载请注明出处 作者:小马 刚学wince那会,对它的文件存储老是理解不了. 最近公司在做一个wince下的终端移植项目,中间也遇到了一些存储方面的问题,随着学习慢慢深入, 有了一些自己的理解.   基于wince的设备,一般有下面几种物理

dc3120的专栏 1121

WinCE OAL中的Cache操作函数介绍

作者:ARM-WinCE 在OAL中有两个和Cache相关的函数,一个是OEMARMCacheMode,另一个是OEMCacheRangeFlush函数,这两个函数在ARM处理器上是必须实现的。 OEMARMCacheMode函数用于设置基于ARM处理器页表的cache模式,主要是设置MMU页表中的C,B控制位,达到控制相应的存储空间的缓冲特性的目的。一般默认C和B控制位都被设置为

唐勉的ARM/Linux/WinCE专栏 3813

hp-ux11.31操作系统上的filecache参数:filecache_max和filecache_min

hp-ux11.31操作系统上的filecache参数:filecache_max和filecache_min

msdnchina的专栏@JiNan,ShanDong 4272

memoryCache和diskCache流程详解

Webkit的MemoryCache和DiskCache流程详解 MemoryCache简介:     MemoryCache顾名思义,就是将资源缓存到内存中,等待下次访问时不需要重新下载资源,而直接从内存中获取。Webkit早已支持memoryCache。     目前Webkit资源分成两类,一类是主资源,比如HTML页面,或者下载项,一类是派生资源,比如HTML页面中内嵌的图片或者脚本

m632587166的专栏 1万+

PHP文件型缓存解决方案secache

注: 前两天发现的东西, 不同于一般的PHP文件缓存实现手法. 写得不错.类似Memcahced, 单文件实现, 支持并发, 比传统分离小文件缓存方式性能提高一倍. 由于缓存文件只有一个,PHP最大寻址能力是2G,过大会指针溢出, 所以只能支持1G的缓存. 以下是官方网站的介绍 secache是一个PHP编写的文件型缓存解决方案 纯php实现, 无须任何扩展,支持php4 / 5使用l

liujihaozhy的专栏 2130
上一篇: Android的surface的三种工作方式
下一篇: Wince中的服务变化
alien75
博客等级 码龄25年 195粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值