读写内存映射文件是不是在读写硬盘????

zxr1979 2005-10-15 08:31:20
问题的前提是这样的,我大概每6秒读串口一次适时数据,并且把得到的数据同时保存保存到硬盘中(也就是每间隔6秒写一次硬盘),但我现在希望能减少对硬盘的写次数,也就是说,读串口的周期不变,但写硬盘的周期为10分钟。在10分钟之内我们可以计算,总共读了串口100次的数据,我要把这读的100次数据一次写到硬盘中。这么做的话我首先想到的是利用内存,但后来看到内存映射文件的使用问题,所以请问,读写内存映射文件是不是在读写硬盘?写一次内存映射文件是不是也是在写硬盘一次??又没有其他解决的办法??谢谢!!
...全文
246 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
doway 2005-10-15
  • 打赏
  • 举报
回复
Windows 的内存映射文件当然要写硬盘。6s 写一次已经非常慢了,如果楼主只是打个比方,实际上更频繁些,应该定义一个结构,比如 512K 的数组,够串口忙半天了:)。
lujun-cc 2005-10-15
  • 打赏
  • 举报
回复
不一定的,看你怎么定义的内存映射文件的读写属性了!
bm1408 2005-10-15
  • 打赏
  • 举报
回复
不是~~
Wolf0403 2005-10-15
  • 打赏
  • 举报
回复
不清楚你的程序的运行环境,以Linux系统为例。使用 mmap 映射文件的时候可以指定一个符号表示映射的种类,其中包括两个对立的标志:MAP_PRIVATE 和 MAP_SHARED。当指定 MAP_PRIVATE 的时候系统会将所有对内存区间的修改映射到进程中的私有缓存中,而 MAP_SHARED 类型的映射则会强制将改动直接反应到被映射的文件——但是,不论如何,Linux 系统都会对文件的读写进行缓存。因此,一次写入可能并不代表一次硬盘的物理读写。
程序x人生 2005-10-15
  • 打赏
  • 举报
回复
不会每次
但会被自动定期更新
happydivid 2005-10-15
  • 打赏
  • 举报
回复
帮顶!!不懂

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧