18禁网站免费,成年人黄色视频网站,熟妇高潮一区二区在线播放,国产精品高潮呻吟AV

學習啦>學習電腦>電腦硬件知識>內存知識>

linux的內存管理機制是什么

時間: 東浩765 分享

  在Linux中經常發(fā)現(xiàn)空閑內存很少,似乎所有的內存都被系統(tǒng)占用了,表面感覺是內存不夠用了,其實不然。這是Linux內存管理的一個優(yōu)秀特性,在這方面,區(qū)別于 Windows的內存管理。主要特點是,無論物理內存有多大,Linux 都將其充份利用,將一些程序調用過的硬盤數據讀入內存,利用內存讀寫的高速特性來提高Linux系統(tǒng)的數據訪問性能。而Windows 是只在需要內存時,才為應用程序分配內存,并不能充分利用大容量的內存空間。換句話說,每增加一些物理內存,Linux 都將能充分利用起來,發(fā)揮了硬件投資帶來的好處,而Windows只將其做為擺設,即使增加8GB甚至更大。下面就由學習啦小編為大家整理的linux的內存管理機制,供大家參考!

  linux的內存管理機制是什么呢?

  Linux 的這一特性,主要是利用空閑的物理內存,劃分出一部份空間,做為 cache 和 buffers ,以此提高數據訪問性能。

  1、什么是 cache ?

  頁高速緩存(cache)是 Linux內核實現(xiàn)的一種主要磁盤緩存。它主要用來減少對磁盤的I/O操作。具體地講,是通過把磁盤中的數據緩存到物理內存中,把對磁盤的訪問變?yōu)閷ξ锢韮却娴脑L問。

  磁盤高速緩存的價值在于兩個方面:第一,訪問磁盤的速度要遠遠低于訪問內存的速度,因此,從內存訪問數據比從磁盤訪問速度更快。第二,數據一旦被訪問,就很有可能在短期內再次被訪問到。

  頁高速緩存是由內存中的物理頁組成的,緩存中每一頁都對應著磁盤中的多個塊。每當內核開始執(zhí)行一個頁I/O操作時(通常是對普通文件中頁大小的塊進行磁盤操作),首先會檢查需要的數據是否在高速緩存中,如果在,那么內核就直接使用高速緩存中的數據,從而避免訪問磁盤。

  舉個例子,當使用文本編輯器打開一個源程序文件時,該文件的數據就被調入內存。編輯該文件的過程中,越來越多的數據會相繼被調入內存頁。最后,當你編譯它的時候,內核可以直接使用頁高速緩存中的頁,而不需要重新從磁盤讀取該文件了。因為用戶往往會反復讀取或操作同一個文件,所以頁高速緩存能減少大量的磁盤操作。

  2、cache 如何更新?

  由于頁高速緩存的緩存作用,寫操作實際上會被延遲。當頁高速緩存中的數據比后臺存儲的數據更新時,那么該數據就被稱做臟數據。在內存中累積起來的臟頁最終必須被寫回磁盤。在以下兩種情況發(fā)生時,臟頁被寫回磁盤:

  ◆當空閑內存低于一個特定的閾值時,內核必須將臟頁寫回磁盤,以便釋放內存。

  ◆當臟頁在內存中駐留時間超過一個特定的閾值時,內核必須將超時的臟頁寫回磁盤,以確保臟頁不會無限期地駐留在內存中。

  在2.6內核中,由一群內核線程—pdflush后臺回寫例程統(tǒng)一執(zhí)行兩種工作。

  首先,pdflush線程在系統(tǒng)中的空閑內存低于一個特定的閾值時,將臟頁刷新回磁盤。該后臺回寫例程的目的在于在可用物理內存過低時,釋放臟頁以重新獲得內存。特定的內存閾值可以通過dirty_background_ratio sysctl系統(tǒng)調用設置。當空閑內存比閾值:dirty_background_ratio還低時,內核便會調用函數wakeup_bdflush()喚醒一個pdflush線程,隨后pdflush線程進一步調用函數background_writeout()開始將臟頁寫回磁盤。函數background_ writeout()需要一個長整型參數,該參數指定試圖寫回的頁面數目。函數background_writeout()會連續(xù)地寫出數據,直到滿足以下兩個條件:

  ◆已經有指定的最小數目的頁被寫出到磁盤。

  ◆空閑內存數已經回升,超過了閾值dirty_background_ratio。

  上述條件確保了pdflush操作可以減輕系統(tǒng)中內存不足的壓力。回寫操作不會在達到這兩個條件前停止,除非pdflush寫回了所有的臟頁,沒有剩下的臟頁可再被寫回了。

  為了滿足第二個目標,pdflush后臺例程會被周期性喚醒(和空閑內存是否過低無關),將那些在內存中駐留時間過長的臟頁寫出,確保內存中不會有長期存在的臟頁。如果系統(tǒng)發(fā)生崩潰,由于內存處于混亂之中,所以那些在內存中還沒來得及寫回磁盤的臟頁就會丟失,所以周期性同步頁高速緩存和磁盤非常重要。在系統(tǒng)啟動時,內核初始化一個定時器,讓它周期地喚醒pdflush線程,隨后使其運行函數wb_kupdate()。

linux的內存管理機制是什么

在Linux中經常發(fā)現(xiàn)空閑內存很少,似乎所有的內存都被系統(tǒng)占用了,表面感覺是內存不夠用了,其實不然。這是Linux內存管理的一個優(yōu)秀特性,在這方面,區(qū)別于 Windows的內存管理。主要特點是,無論物理內存有多大,Linux 都將其充份利用,
推薦度:
點擊下載文檔文檔為doc格式
578600