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