虛擬內存是指在內存貯器容量不夠大的計算機中,為給用戶提供更大的隨機訪問空間而采用的一種軟件設計技巧 。
虛擬內存系統是指管理和分配用戶程序虛擬內存的程序。 (推薦學習:phpstorm)
虛擬內存系統出現的原因有內存容量不大和程序局部性原理。
分頁式管理:將內存分成固定大小的頁,分配若干頁將整個進程載入。頁面可以不連續是其重要優點,不會產生外碎片,更有效地利用了內存,不過會產生一些內碎片,即分配給進程的最后一個頁往往不能正好用完,不過在頁面大小不是很大的時候可以接受。
請求式分頁和虛擬內存
請求式分頁:將進程放入虛擬內存中,由于一個進程的頁面不會同時全部被用到,只將需要用到的頁面調入物理內存。即進程并沒有整個在物理內存中。
幾個請求式分頁的概念:(博客鏈接:請求式分頁中的內存分配)
固定分配:物理內存中分配給進程的內存塊數一定。
可變分配:物理內存先分配給進程一些內存塊,如不夠,可適當增加。
局部置換:發生在分配的內存塊已用完,又發生了缺頁時,只能置換本來就是自己的內存塊。
全局置換:發生在分配的內存塊已用完,又發生了缺頁時,可以置換到操作系統保留的空閑頁。這其實相當于增加了進程占有的內存塊數。
三種分配方式:固定分配局部置換、可變分配全局置換、可變分配局部置換。固定分配、全局置換不能組合。