免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Linux虛擬內(nèi)存與交換空間機(jī)制

對(duì)于一臺(tái)x86(32bit)的操作系統(tǒng)來說,假設(shè)它有2G的物理內(nèi)存,物理內(nèi)存分成以許多個(gè)4k為單位大小的頁框,這些頁框就是存儲(chǔ)進(jìn)程的最小單位


為了解決系統(tǒng)運(yùn)行過程中不同進(jìn)程之間內(nèi)存的合理分配和利用,防止不同進(jìn)程同一時(shí)刻在物理內(nèi)存中運(yùn)行而對(duì)物理內(nèi)存的爭(zhēng)奪和踐踏(一旦某一進(jìn)程失去控制,占用的資源不停增大,就會(huì)將物理內(nèi)存占滿,并導(dǎo)致其他進(jìn)程中斷,甚至導(dǎo)致服務(wù)器崩潰,這是及其危險(xiǎn)的),我們采用了虛擬內(nèi)存。


我們都知道,進(jìn)程是用戶發(fā)起的運(yùn)行在內(nèi)核之上的用戶空間的程序,如下所示:


虛擬內(nèi)存存在的意義就在于使不同進(jìn)程在運(yùn)行過程中,它所看到的是自己獨(dú)自占有了當(dāng)前系統(tǒng)的4G內(nèi)存,當(dāng)然這是一個(gè)假象。在這種假象之下,內(nèi)核悄悄的將當(dāng)前進(jìn)程所占用的內(nèi)存轉(zhuǎn)化為了物理內(nèi)存。虛擬內(nèi)存的結(jié)構(gòu)如下:


如下,進(jìn)程1和進(jìn)程2是兩個(gè)不同的進(jìn)程,他們所看到的是,當(dāng)前系統(tǒng)只有自己運(yùn)行在內(nèi)核之上,不同進(jìn)程之間是彼此不可見的,所以他們誤以為系統(tǒng)將當(dāng)前的3G內(nèi)存(其余1G留給內(nèi)核使用)都分配給了自己的進(jìn)程。實(shí)際上,進(jìn)程1和進(jìn)程2分別只占用了藍(lán)色部分所顯示的空間資源,即實(shí)際利用資源。

 

虛擬內(nèi)存只是進(jìn)程所看到的一個(gè)假象,實(shí)際進(jìn)程運(yùn)行過程中,進(jìn)程還是通過物理內(nèi)存上被CPU調(diào)用和執(zhí)行的;線程是進(jìn)程運(yùn)行的最小單位,也是CPU運(yùn)行和調(diào)用的最小單位。每一個(gè)進(jìn)程可以包含多個(gè)線程,線程作為CPU調(diào)用的最小單位被映射到物理內(nèi)存中,如下所示:

線程映射到物理內(nèi)存后,物理內(nèi)存會(huì)分配指定的頁框給該線程,線程與頁框之間的映射是隨機(jī)的,非線性的。

 

隨著進(jìn)程的增加,線程的數(shù)量也會(huì)增加,物理內(nèi)存的空間有限,頁框?qū)⒁帽M,物理內(nèi)存空間幾乎會(huì)被占滿,接近與上限,這時(shí)如果繼續(xù)運(yùn)行下去,內(nèi)存崩潰,服務(wù)器死機(jī),將會(huì)產(chǎn)生不可預(yù)知的結(jié)果,那么該怎么解決這一問題呢?


 于是,內(nèi)核決定在硬盤上找一段存取速率較高的存儲(chǔ)空間,模擬物理內(nèi)存,并將其內(nèi)部劃分為類似頁框的存儲(chǔ)小格子。當(dāng)物理內(nèi)存接近崩潰時(shí),將物理內(nèi)存中最近一段時(shí)間最少頻率使用到的頁框移出物理內(nèi)存,放進(jìn)該存儲(chǔ)空間,這段存儲(chǔ)空間我們稱之為交換空間(Swap。當(dāng)新創(chuàng)建的進(jìn)程3進(jìn)入內(nèi)存時(shí),發(fā)現(xiàn)當(dāng)前物理內(nèi)存已經(jīng)被占滿,此時(shí)內(nèi)核便需要交換空間來協(xié)調(diào),如下:


圖中紅色方塊代表的線程為最近一段時(shí)間使用最不頻繁的線程,

藍(lán)色方塊代表新創(chuàng)建的進(jìn)程3包含的線程,黃色方塊代表磁盤上的swap分區(qū)


a)        內(nèi)核首先將紅色線程移到swap分區(qū),并取消進(jìn)程1中該線程與物理內(nèi)存的映射;

b)       隨即,將藍(lán)色線程移進(jìn)物理內(nèi)存中紅色進(jìn)程剛騰出的空間。此時(shí),進(jìn)程3就獲得了系統(tǒng)內(nèi)存資源,等待被CPU調(diào)用執(zhí)行;


灰色進(jìn)程代表當(dāng)前內(nèi)存中最近一段時(shí)間內(nèi)使用最不頻繁的線程


c)        當(dāng)紅色線程再次被喚醒時(shí),內(nèi)核會(huì)將灰色線程移到swap分區(qū),取消該線程的映射;

d)       隨即,內(nèi)核將紅色線程移進(jìn)內(nèi)存中灰色線程剛騰出的空間,并建立新的映射關(guān)系,獲取系統(tǒng)內(nèi)存資源。

 


swap分區(qū)存在的意義在于:允許內(nèi)存過載(overcommit)使用

盡管swap分區(qū)可以為進(jìn)程運(yùn)行提供額外的交換空間,解決物理內(nèi)存飽滿情況下協(xié)調(diào)系統(tǒng)進(jìn)程正常運(yùn)行的問題,但是使用交換空間所帶來的頁框進(jìn)出會(huì)大大降低系統(tǒng)的性能,所以應(yīng)謹(jǐn)慎使用交換空間。


交換空間和物理內(nèi)存之間頁框的移動(dòng)可以這樣描述:



本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
虛擬內(nèi)存 和 page fault 的解釋
理解 JVM 如何使用 Windows 和 Linux 上的本機(jī)內(nèi)存
計(jì)算機(jī)底層知識(shí)拾遺(二)深入理解進(jìn)程和線程
linux內(nèi)存管理淺析
嵌入式linux內(nèi)存使用與性能優(yōu)化
內(nèi)核如何阻塞與喚醒進(jìn)程?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服