Linux系統中swap原理

在linux系統中,啓動一個程序,它佔用的內存假設是1G,但是運行一段時間後,使用top查看進行信息,你會發現它的內存只剩幾十兆了,這是因爲內存不足,它的內存被swap走了。
若開啓了swap,則系統會有一個交換空間在硬盤裏,你的內存數據正是被交換到硬盤裏,因此程序會運行的比較慢。
你可以用free -m命令查看交換空間使用了多少了。

Linux的產生和發展,更多的應用和服務器,那麼對於Linux的各個管理機制要非常清晰,一個完整的Linux系統主要有存儲管理,內存管理,文件系統和進程管理等幾方面組成,貼出一些以前學習過的一個非常好的文章。和大家共享!以下主要說明Swap機制:

      Linux支持虛擬內存(virtual memory),虛擬內存是指使用磁盤當作RAM的擴展,這樣可用的內存的大小就相應地增大了。內核會將暫時不用的內存塊的內容寫到硬盤上,這樣一來,這 塊內存就可用於其他目的。當需要用到原始的內容時,他們被重新讀入內存。這些操作對用戶來說是完全透明的;Linux下運行的程式只是看到有大量的內存可供使用而並沒有注意到時不時他們的一部分是駐留在硬盤上的。當然,讀寫硬盤要比直接使用真實內存慢得多(要慢數千倍),所以程序就不會像一直在內存中運行的那樣快。用作虛擬內存的硬盤部分被稱爲交換空間(Swap Space)。
  一般,在交換空間中的頁面首先被換入內存;如果此時沒有足夠的物理內存來容納他們又將被交換出來(到其他的交換空間中)。如果沒有足夠的虛擬內存來容納所有這些頁面,Linux就會波動而不正常;但經過一段較長的時間Linux會恢復,但此時系統已不可用了。
  有時,儘管有許多的空閒內存,仍然會有許多的交換空間正被使用。這種情況是有可能發生的,例如如果在某一時刻有進行交換的必要,但後來一個佔用非常多物理內存的大進程結束並釋放內存時。被交換出的數據並不會自動地交換進內存,除非有這個需要時。此時物理內存會在一段時間內保持空閒狀態。對此並沒有什麼可擔心的,不過知道了是怎麼一回事,也就無所謂了。
  許多操作系統使用了虛擬內存的方法。因爲他們僅在運行時才需要交換空間,以解決不會在同一時間使用交換空間,因此,除了當前正在運行的操作系統的交換空間,其他的就是一種浪費。所以讓他們共享一個交換空間將會更有效率。
  注意,如果會有幾個人同時使用這個系統,他們都將消耗內存。然而,如果兩個人同時運行一個程序,內存消耗的總量並不是翻倍,因爲代碼頁及共享的庫只存在一份。
  Linux系統常常動不動就使用交換空間,以保持儘可能多的空閒物理內存。即使並沒有什麼事情需要內存,Linux也會交換出暫時不用的內存頁面。這能避免等待交換所需的時間:當磁盤閒着,就能提前做好交換。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章