從職業玩家角度看,爲什麼 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方案。有的是免費的。你可以去看看


分享到:


相關文章: