从职业玩家角度看,为什么 Windows 不提供内存文件系统?

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

总体来说ramdisk的应用场景不多,大部分Windows用户不需要。

Windows大部分文件操作都是经过cache的,direct io很少。同样是利用物理内存,Windows认为大部分时候统一管理cache要比让用户自己维护一个cache策略要好(可以把ramdisk看成一种特殊的cache策略)。这里的大部分情况是指普通用户的电脑环境,即是一个非常复杂的环境,用户很难正确分析出哪些文件更需要cache,有可能你做ramdisk的那些内存交给Windows去cache其他文件对系统整体性能反而更好。

而对于特殊场景,比如专用服务器,服务器软件可以自己申请物理内存来管理cache策略,比如SQL Server就是这么做的。这个要比ramdisk更generic更直接。

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

Windows 下创建文件时,具有 FILE_ATTRIBUTE_TEMPORARY 和 FILE_FLAG_DELETE_ON_CLOSE 创建属性的文件在内存中创建,只有在内存压力大的情况下才写入磁盘。

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

针对一些认为内存盘没用的说法:

一些明知是临时、垃圾的文件,但工具软件必须保存为文件,你让它们写到内存盘,就避免了磁盘的写损耗。系统的cache机制虽然优秀,但不知道它们就是垃圾,仍然可能让它们写到磁盘的,而磁盘的写入次数是有限的(SSD也是),写磁盘毕竟慢(SSD也比内存盘慢)

我从DOS时代就关注 Ramdisk,几百K内存都腾出几十上百K给内存盘,编译的临时文件生成速度快的不得了。实在不行,smartdriver也能大大提高磁盘读写速度,降低磁盘损耗。

到win nt时代,难找了一些,但还有免费的;win7后,商业的更好用一些。

linux的ramdisk可以 内存盘的文件用多少才真正占多少内存,超出指定大小自动用磁盘补充,文件删了内存自动释放——很令win下的我羡慕,还好后来一款商业软件实现了。

不过,我一直念叨的似乎没实现:放弃ramdisk,改为可设定的智能disk cache,

用户可以指定哪些目录的文件,完全在cache里,永远不会实际写到磁盘!或者超出多大才写盘。

这样也是 Ramdisk的效果了,而且享受效果的文件不再仅限于特定盘

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

linux用户普遍有一个偏见,就是凡是windows上的东西,只要不是微软写的,那都算windows不支持。

写ramdisk还不需要重新编译windows呢

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

把Ramdisk sample放在WDK里面,反正用的到WDK的人大多数有能力分辨Ramdisk和硬盘存储空间

内存文件系统是针对程序员的,和最终用户其实无关.如果某个应用场景确实需要利用内存来承载文件进行数据交互,在运行环境用户去部署内存盘作为swap,这样更符合windows作为桌面系统的定位.毕竟99%运行windows的电脑不需要内存文件.如果windows提供了内存文件,各路商业软件争抢内存文件占满导致程序崩溃的可能性很大.

而99%的windows用户是搞不定这种破事的.

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

应该是指为啥没有像linux大部分发行版本那样默认提供/dev/shm这样的吧。

原因不知道,不过反对上面说的没啥用。毕竟程序员写出来的东西也是给普通用户用的,有时候把极少量非常重要的调试数据放在内存里,程序退出后还能访问到,也是非常重要的。

从职业玩家角度看,为什么 Windows 不提供内存文件系统?

用某把内存当硬盘读写缓存的软件,给同是程序员的朋友炫了一下硬盘跑分,他也跑去用那软件

过了几天问我:为啥我保存到桌面的文件一关机就没了

我问他怎么关机的,他:直接拔电源

把内存当硬盘写入缓存,直接拔电源没有机会回写硬盘问我文件怎么没了…

对于这个问题也是:我关机怎么文件没了

windows不提供的东西多了。

windows是个商业软件,包含的特性越多,微软的研发和技术支持成本越高。所以,windows自带的特性是很有限的。

windows有很多第三方软件商,提供了好几个ramdisk方案。有的是免费的。你可以去看看


分享到:


相關文章: