Swap
當您的電腦休眠時,交換中的數據會發生什麼?
當電腦進入休眠模式時,它會將 RAM 的內容保存到交換空間中,以便在重新開機時可以準確地從中斷的地方恢復。
那麼,如果您目前使用的記憶體多於 RAM,該怎麼辦。在這種情況下,一些本來會在 RAM 中的數據被保存到交換中。
一個例子。一台電腦有 1GB 的 RAM 和 1GB 的交換空間。它目前正在使用除 100MB 的 RAM 和 500MB 的交換空間以外的所有空間。因此,它需要記住大約 1.4GB 的記憶體來保存它的狀態。但是,swap 只有 1GB。
在這種情況下會發生什麼?
編輯如下所述,休眠失敗。然後是一個後續問題:
當這失敗時,錯誤報告在哪裡?
這取決於休眠的實現。即使您將問題限制在 Linux,實施也會隨著時間的推移而發展。
首先,考慮一些 RAM 用於磁碟記憶體。這不需要移動到交換,因為它可以在系統恢復後從磁碟重新載入。在具有良好成本/效率平衡的系統上,通常將大約一半的 RAM 分配給記憶體。(另請參閱為什麼在有足夠多的 RAM 時使用交換。)在 Linux 下,一些早期的實現會將所有分配的記憶體儲存到交換中,但目前的休眠實現會跳過磁碟記憶體。
其次,一些系統在將記憶體寫入交換時會壓縮記憶體,這會使確切所需的交換量難以預測。某些版本的 Linux 的休眠支持已經支持壓縮;不知道現在的有沒有。
如果沒有足夠的交換空間,您通常可以預期的是休眠將失敗:系統將嘗試將 RAM 的(有用的)內容儲存到交換空間中,並且一旦檢測到沒有足夠的空間,休眠嘗試被中止(通常在控制台和系統日誌中顯示錯誤消息)。據我所知,Linux 的行為一直都是這樣(並不是說真的有另一種明智的行為)。