进入保护模式(三)内存的分页
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
一、分頁
??????先入為主理解的分頁和系統(tǒng)中內(nèi)存內(nèi)應(yīng)的分頁
??????1.弄過數(shù)據(jù)庫數(shù)據(jù)查找展示,有個(gè)數(shù)據(jù)分頁展示的概念,這個(gè)的目的是為了速度、和展示效果上的提升
????? 2.內(nèi)存的分頁又是怎么回事哪?
???????? (1)加載程序那么內(nèi)存分配是必不可少的;
???????? (2)配的幾種方法:單一連續(xù)、固定分配、動(dòng)態(tài)分配(最先適應(yīng)、下次適應(yīng)、最優(yōu)適應(yīng)、最壞適應(yīng)、快速適應(yīng))
???????? (3)然動(dòng)態(tài)分配是最理想的狀態(tài),但是動(dòng)態(tài)分配有個(gè)問題:
???????????????????????????????????????????????????????????????????????????? 程序的加載內(nèi)存的碎片化比較嚴(yán)重
????????????????????????????????????????????????????????????????????????????? 碎片化后占用內(nèi)存大的程序分配內(nèi)存是比較困難的
??????????處理器分頁的目的是為了解決分頁中的碎片化,但是太復(fù)雜了就由處理器來做這件事情了
二、認(rèn)識(shí)簡(jiǎn)單分頁的模型??
??????? 1.實(shí)模式的尋址:段選擇器:偏移量
??????? 2.保護(hù)模式尋址:段選擇子:偏移量? 得到真實(shí)的基地址+偏移量
??????????????????????????段選擇子=》GDTR/LDTR得到描述符的基地址+選擇子*2^3偏移=》真正的描述符=》真實(shí)基地址
??????? 3.段式分頁的尋址模式:
????????????????????????????????????首先分頁模式是建立在保護(hù)模式下的
??????????????????????????????????? 保護(hù)模式的尋址方式還是用的但是現(xiàn)在他映射的是一個(gè)虛擬的內(nèi)存4G空間
??????????????????????????????????? 每個(gè)頁的大小是固定的4KB,占4個(gè)字節(jié)(頁的物理地址,應(yīng)該是起始地址)
??????????????????????????????????? 那么這個(gè)頁表在內(nèi)存4G的空間中,占位的描述空間有4M
???????????????????????????問題1:從上面的描述中頁對(duì)應(yīng)的才是真實(shí)的物理地址,如何映射?
????????????????????????????????也就是段如何映射到頁?用了多個(gè)頁又是如何映射連接起來的;
????????????????????????????????段部件輸出的是線性地址(虛擬地址),因?yàn)轫摰拇笮∈?KB;
???????????????????????????????地址低12位是偏移量,高20位其實(shí)是一個(gè)描述符表占位(4字節(jié));用于記錄當(dāng)前用的頁的位置
???????????????????????????問題2:從上面可以看出段和頁的映射關(guān)系?
????????????????????????????????可以隨意映射;頁的映射也可以是間隔開來,也就是碎片的可以連接起來了
?????????????????????????? 問題3:空閑頁是如何標(biāo)示的?
?
三、頁目錄、頁表、頁
??????? 就好像書本一樣,章節(jié)-》目錄-》書名(書的分類)
??????? 頁還是以前的頁;2^20
??????? 頁表首先不和頁是固定對(duì)應(yīng)的關(guān)系;但是每個(gè)頁表有1024個(gè)頁;2^10
??????? 頁目錄有1024個(gè)頁表的物理地址;
?????? 問題1:這些信息保存在哪里?怎么加載的?
???????????????? 每個(gè)任務(wù)都有自己的頁目錄和頁表;
???????????????? 處理器內(nèi)部,有一個(gè)控制寄存器CR3,存放著當(dāng)前的任務(wù)頁目錄的物理地址(頁目錄基址寄存器)
???????????????? 每個(gè)任務(wù)都有自己的任務(wù)狀態(tài)(TSS)當(dāng)任務(wù)切換時(shí)CR3也隨著更新,指向新任務(wù)的頁目錄位置
四、例子
????????書上的例子:段的起始地址:0x00800000??? 界限:0x5000 z字節(jié)單位
????????????????????????現(xiàn)在尋址偏移量:0x1050
?????????沒開啟分頁前的地址:基地址+偏移量=真實(shí)的物理地址
?????????開啟分頁后:處理器頁部件專門負(fù)責(zé)線性地址到物理地址的轉(zhuǎn)換(段部件送的地址+后的虛擬地址)
???????????????????????? 首先將段部件送來的地址分為三部分:高10位 中間10位?低12位
???????????????????????????????????????????????????????????????????? 頁目錄? 頁表???????偏移量
????????????????????????? 頁目錄的物理地址CR3中
???????????????????????? (1)頁目錄索引*4+CR3的地址-》頁目錄中頁表的物理地址
???????????????????????? (2)頁表的物理地址+頁表索引*4-》頁的物理地址-》真是的物理地址+偏移量
??????
?
??????????????????????????
???????????????????????????????????
?????????????????????????
轉(zhuǎn)載于:https://my.oschina.net/findurl/blog/184414
總結(jié)
以上是生活随笔為你收集整理的进入保护模式(三)内存的分页的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到前男友和别人结婚了什么意思
- 下一篇: 梦到一堆苍蝇是什么意思