內(nèi)存管理-分頁(yè)機(jī)制

先看圖表示虛擬地址到物理地址的映射牙甫,把兩段與程序運(yùn)行所需要的同等大小的虛擬空間映射到某段物理空間镊讼。


地址映射.jpeg

例如程序A需要 10MB 內(nèi)存沛膳,虛擬地址的范圍是從 0X00000000 到 0X00A00000稍坯,假設(shè)它被映射到一段同等大小的物理內(nèi)存官辽,地址范圍從 0X00100000 到 0X00B00000蛹磺,即虛擬空間中的每一個(gè)字節(jié)對(duì)應(yīng)于物理空間中的每一個(gè)字節(jié),程序B一樣同仆。

當(dāng)程序A需要訪問(wèn) 0X00001000 時(shí)萤捆,系統(tǒng)會(huì)將這個(gè)虛擬地址轉(zhuǎn)換成實(shí)際的物理地址 0X00101000,訪問(wèn) 0X002E0000 時(shí),轉(zhuǎn)換成 0X003E0000俗或,以此類推市怎。

這種以整個(gè)程序?yàn)閱挝坏姆椒ê芎玫亟鉀Q了不同程序地址不隔離的問(wèn)題,同時(shí)也能夠在程序中使用固定的地址辛慰。

優(yōu)勢(shì)與問(wèn)題

地址隔離

如上圖所示区匠,程序A和程序B分別被映射到了兩塊不同的物理內(nèi)存,它們之間沒(méi)有任何重疊帅腌,如果程序A訪問(wèn)的虛擬地址超出了 0X00A00000 這個(gè)范圍驰弄,系統(tǒng)就會(huì)判斷這是一個(gè)非法的訪問(wèn),拒絕這個(gè)請(qǐng)求速客,并將這個(gè)錯(cuò)誤報(bào)告給用戶戚篙,通常的做法就是強(qiáng)制關(guān)閉程序。

程序可以使用固定的內(nèi)存地址

虛擬內(nèi)存無(wú)論被映射到物理內(nèi)存的哪一個(gè)區(qū)域溺职,對(duì)于程序員來(lái)說(shuō)都是透明的岔擂,我們不需要關(guān)心物理地址的變化翎碑,只需要按照從地址 0X00000000 到 0X00A00000 來(lái)編寫程序象浑、放置變量即可,程序不再需要重定位宏怔。

內(nèi)存使用效率問(wèn)題

以程序?yàn)閱挝粚?duì)虛擬內(nèi)存進(jìn)行映射時(shí)点待,如果物理內(nèi)存不足阔蛉,被換入換出到磁盤的是整個(gè)程序,這樣勢(shì)必會(huì)導(dǎo)致大量的磁盤讀寫操作癞埠,嚴(yán)重影響運(yùn)行速度状原,所以這種方法還是顯得粗糙,粒度比較大苗踪。

內(nèi)存分頁(yè)機(jī)制

我們知道颠区,當(dāng)一個(gè)程序運(yùn)行時(shí),在某個(gè)時(shí)間段內(nèi)通铲,它只是頻繁地用到了一小部分?jǐn)?shù)據(jù)毕莱,也就是說(shuō),程序的很多數(shù)據(jù)其實(shí)在一個(gè)時(shí)間段內(nèi)都不會(huì)被用到颅夺。

以整個(gè)程序?yàn)閱挝贿M(jìn)行映射朋截,不僅會(huì)將暫時(shí)用不到的數(shù)據(jù)從磁盤中讀取到內(nèi)存,也會(huì)將過(guò)多的數(shù)據(jù)一次性寫入磁盤吧黄,這會(huì)嚴(yán)重降低程序的運(yùn)行效率部服。

現(xiàn)代計(jì)算機(jī)都使用分頁(yè)(Paging)的方式對(duì)虛擬地址空間和物理地址空間進(jìn)行分割和映射,以減小換入換出的粒度拗慨,提高程序運(yùn)行效率廓八。

分頁(yè)(Paging)的思想是指把地址空間人為地分成大小相等(并且固定)的若干份奉芦,這樣的一份稱為一頁(yè),就像一本書(shū)由很多頁(yè)面組成剧蹂,每個(gè)頁(yè)面的大小相等声功。如此,就能夠以頁(yè)為單位對(duì)內(nèi)存進(jìn)行換入換出:

  • 當(dāng)程序運(yùn)行時(shí)国夜,只需要將必要的數(shù)據(jù)從磁盤讀取到內(nèi)存减噪,暫時(shí)用不到的數(shù)據(jù)先留在磁盤中,什么時(shí)候用到什么時(shí)候讀取车吹。
  • 當(dāng)物理內(nèi)存不足時(shí)筹裕,只需要將原來(lái)程序的部分?jǐn)?shù)據(jù)寫入磁盤,騰出足夠的空間即可窄驹,不用把整個(gè)程序都寫入磁盤朝卒。

關(guān)于頁(yè)的大小

頁(yè)的大小是固定的,由硬件決定乐埠,或硬件支持多種大小的頁(yè)抗斤,由操作系統(tǒng)選擇決定頁(yè)的大小。比如 Intel Pentium 系列處理器支持 4KB 或 4MB 的頁(yè)大小丈咐,那么操作系統(tǒng)可以選擇每頁(yè)大小為 4KB瑞眼,也可以選擇每頁(yè)大小為 4MB,但是在同一時(shí)刻只能選擇一種大小棵逊,所以對(duì)整個(gè)系統(tǒng)來(lái)說(shuō)伤疙,也就是固定大小的。

目前幾乎所有PC上的操作系統(tǒng)都是用 4KB 大小的頁(yè)辆影。假設(shè)我們使用的PC機(jī)是32位的徒像,那么虛擬地址空間總共有 4GB,按照 4KB 每頁(yè)分的話蛙讥,總共有 2^32 / 2^12 = 2^20 = 1M = 1048576 個(gè)頁(yè)锯蛀;物理內(nèi)存也是同樣的分法。

根據(jù)頁(yè)進(jìn)行映射

下面我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明虛擬地址是如何根據(jù)頁(yè)來(lái)映射到物理地址的次慢,請(qǐng)先看下圖:
旁涤。。迫像。待續(xù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拭抬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侵蒙,更是在濱河造成了極大的恐慌,老刑警劉巖傅蹂,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纷闺,死亡現(xiàn)場(chǎng)離奇詭異算凿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)犁功,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門氓轰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人浸卦,你說(shuō)我怎么就攤上這事署鸡。” “怎么了限嫌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵靴庆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我怒医,道長(zhǎng)炉抒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任稚叹,我火速辦了婚禮焰薄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扒袖。我一直安慰自己塞茅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布季率。 她就那樣靜靜地躺著野瘦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚀同。 梳的紋絲不亂的頭發(fā)上缅刽,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蠢络,去河邊找鬼衰猛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刹孔,可吹牛的內(nèi)容都是我干的啡省。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼髓霞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼卦睹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起方库,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤结序,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后纵潦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體徐鹤,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垃环,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了返敬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遂庄。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖劲赠,靈堂內(nèi)的尸體忽然破棺而出涛目,到底是詐尸還是另有隱情,我是刑警寧澤凛澎,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布霹肝,位于F島的核電站,受9級(jí)特大地震影響预厌,放射性物質(zhì)發(fā)生泄漏阿迈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一轧叽、第九天 我趴在偏房一處隱蔽的房頂上張望苗沧。 院中可真熱鬧,春花似錦炭晒、人聲如沸待逞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)识樱。三九已至,卻和暖如春震束,著一層夾襖步出監(jiān)牢的瞬間怜庸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工垢村, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留割疾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓嘉栓,卻偏偏與公主長(zhǎng)得像宏榕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侵佃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 操作系統(tǒng)對(duì)內(nèi)存的管理 沒(méi)有內(nèi)存抽象的年代 在早些的操作系統(tǒng)中麻昼,并沒(méi)有引入內(nèi)存抽象的概念。程序直接訪問(wèn)和操作的都是物...
    Mr槑閱讀 16,701評(píng)論 3 24
  • 1. 基礎(chǔ)知識(shí) 1.1馋辈、 基本概念抚芦、 功能 馮諾伊曼體系結(jié)構(gòu)1、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2、順序執(zhí)...
    yunpiao閱讀 5,309評(píng)論 1 22
  • 本文轉(zhuǎn)載自 https://juejin.im/post/59f8691b51882534af254317 參考:...
    xingdong閱讀 2,718評(píng)論 0 3
  • 剛上大學(xué)的時(shí)候燕垃,第一次去辦公室枢劝,正好遇到正在為桌子上厚厚一沓新生檔案信息錄入發(fā)愁的輔導(dǎo)員。我以為以后的很多生...
    其實(shí)我是個(gè)攝影師閱讀 345評(píng)論 0 0
  • 清晨我在小區(qū)里發(fā)現(xiàn)了幾棵山茶花樹(shù)卜壕,樹(shù)很高,大約有兩米多高烙常,粗壯的樹(shù)枝上長(zhǎng)著茂密的樹(shù)葉和鮮艷的花朵轴捎,花朵們競(jìng)...
    liuyuxin閱讀 232評(píng)論 0 0