引用:
作者Zbv
用實體記憶體或硬碟虛擬記憶體在碰停電時應該沒差吧
雖然理論上虛擬記憶體資料會保存下來
但是重開機後OS根本無法判讀先前殘存的資料為何
大概都是直接洗掉,重新劃分位址
只有存檔後的資料才能保存下來
若上述有誤還請多多指教
P.S: 我用的Mandrake Linux
其虛擬記憶體只有在實體記憶體完全用盡時才會啟用
這樣的設計似乎比Windows要理想
不知為何Windows不採用這樣的設計
|
這部分我建議看Microsoft Press 出的 Windows Internal, 對 PageFile 會有比較深刻的說明. 恐龍書大多是說明理論性的作法, 但實作時會根據系統的不同而有差異.
另外對虛擬記憶體的了解, 我這邊可以作一些補充說明.
虛擬記憶體的用途並非完全是實體記憶體的延伸 (如果是這樣, 你插4G記憶體, 開4G虛擬記憶體, 加起來超過了限制32位元現制的4G了, 這怎麼解釋?). 寫過比較早期 Windows 程式的, 應該知道程式中可以設定那個部分是可以 Discardable, 是 Removeable, 或 unmoveable 的, 這些設計的意義對虛擬記憶體的工作影響很大.
首先要了解的是, 一支程式可以分成很多區段, 程式段、資料段、資源段、堆疊、動態程式庫等等, 通常不是一口氣都載入的, 像動態程式庫, 尤其是使用者自己寫的動態程式庫, 大多不會預先載入, 等到主程式要呼叫時, 才從硬碟中載入執行.
這些區段本身都可以設定一些跟記憶體管理運作的相關特性, 有的一定要有實體記憶體 (如主程式 Process), 有的必需事先載入, 但不限制在實體記憶體或虛擬記憶體 (如使用者要處理的資料如圖檔 removeable 或資料、資源), 或是可以在需要的時候才載入執行 (如 DLL 動態程式庫).
Windows 在管理這些程式區段的時候, 會去檢查這個區段閒置的時間, 閒置了一定時間以後, 會將可以放到虛擬記憶體的區段寫入 pagefile, 這也是有時候你離開電腦可能半小時, 一小時再回來的時候, 一用 Alt+Tab 切換程式, 硬碟就老是在工作的原因.
至於為什麼要這麼做?原因是這樣處理, 效能不至於因為實體記憶體比較少而讓應用程式效能大幅滑落, 尤其是使用者開啟大量程式, 而實體記憶體不足以完全容納的時候.