?9.1物理和虛擬尋址
? ? 早期:
?現(xiàn)代:
9.2地址空間:
? ?地址空間是一個(gè)非負(fù)整數(shù)地址的有序集合
? ? 地址空間的整數(shù)是連續(xù)的脯倚,我們說他是一個(gè)線性地址空間逢并。在一個(gè)虛擬內(nèi)存的系統(tǒng)中桦踊,CPU從一個(gè)有N=2n個(gè)地址的地址空間中生成虛擬地址蔑匣,這個(gè)地址空間稱為虛擬地址空間
9.3 虛擬內(nèi)存作為緩存的工具
? ? 虛擬頁面的集合分成三個(gè)不相交的子集:
? ? 未分配的
? ? 緩存的
? ? 未緩存的
9.4 虛擬內(nèi)存作為內(nèi)存管理的工具
9.5虛擬內(nèi)存作為內(nèi)存保護(hù)的工具
? ? 虛擬頁面結(jié)構(gòu):SUP瞭稼、READ企孩、WRITE潮剪、地址
?? ?SUP:表示進(jìn)程是否必須運(yùn)行在內(nèi)核(超級(jí)用戶)模式下才能訪問該頁
?? ?READ和WRITE:控制對(duì)頁面的讀和寫訪問
? ? 9.6 地址翻譯
地址翻譯是一個(gè)N元素的虛擬地址空間(VAS)中的元素和一個(gè)M元素的物理地址空間(PAS)中元素之間的映射
9.6.3 多級(jí)頁面
9.7案例研究
9.8 內(nèi)存映射
? ? 虛擬內(nèi)存和物理內(nèi)存的映射關(guān)系涣楷,共享對(duì)象:虛擬內(nèi)存指向相同的位置,有變更的時(shí)候才在拷貝抗碰,也稱作寫時(shí)拷貝狮斗,這樣設(shè)計(jì)可以節(jié)省很多空間,底層函數(shù) mmap和munmap 創(chuàng)建和刪除虛擬內(nèi)存的區(qū)域
9.9動(dòng)態(tài)內(nèi)存分配
9.10:垃圾收集:可以手動(dòng)收集free,有時(shí)候會(huì)忘記使用收集函數(shù)弧蝇,導(dǎo)致碎片碳褒。系統(tǒng)和開發(fā)語言研發(fā)出主動(dòng)收集器:垃圾收集器。
?? ??? ??? ??? ??? ?? ? 垃圾收集器:可以自動(dòng)收集不是用的內(nèi)存塊看疗。他通過標(biāo)記和清除方式實(shí)現(xiàn)的垃圾收集骤视。垃圾收集器會(huì)根據(jù)如下操作:已分配的塊->從根節(jié)點(diǎn)開始向下查找相關(guān)聯(lián)的塊,并把它們標(biāo)記上鹃觉。 未被標(biāo)記的已分配的塊被清除
為什么不是已分配已標(biāo)記的清除方式:
? ? 1、需要初始化的還是把分配塊提前分配為已標(biāo)記睹逃,然后遍歷塊把鏈接的標(biāo)記為非分配的盗扇。清除已分配的。這樣的方案會(huì)多一個(gè)步驟把全部分配的塊先標(biāo)記已分配沉填,所以不用這種方式疗隶。