版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第 頁實(shí)驗(yàn)二地址映射一、實(shí)驗(yàn)學(xué)時(shí):4指導(dǎo)教師:丁旭陽二、實(shí)驗(yàn)地點(diǎn):主樓A2-412實(shí)驗(yàn)時(shí)間:三、實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn),掌握分頁機(jī)制的實(shí)驗(yàn)原理,了解頁表的內(nèi)容和機(jī)制。掌握計(jì)算機(jī)的尋址過程,掌握頁式地址地址轉(zhuǎn)換過程,掌握計(jì)算機(jī)各種寄存器的用法。四、實(shí)驗(yàn)原理:1.關(guān)于計(jì)算機(jī)中的地址物理地址:物理地址最好理解,我們可以簡單的把內(nèi)存比作一個(gè)大的數(shù)組(為了分析方便),每個(gè)數(shù)組都有其下標(biāo),這個(gè)下標(biāo)標(biāo)識(shí)了內(nèi)存中的地址,這個(gè)實(shí)實(shí)在在的在內(nèi)存中的地址,我們稱之為物理地址。但是在用于內(nèi)存芯片級(jí)的單元尋址,與處理器和CPU連接的地址總線相對(duì)應(yīng),相信并不是一個(gè)所謂的數(shù)組,但是做出這樣的比擬,有利于更好的理解。邏輯地址:
2、與物理地址比較相對(duì)的是邏輯地址,實(shí)際上這個(gè)概念,我覺得可以這樣理解,這個(gè)地址就是在程序中我們把它放到的位置;而這個(gè)位置通常是由編譯器給出的。另外的一種理解是:邏輯地址指的是機(jī)器語言指令中,用來指定一個(gè)操作數(shù)或者是一條指令的地址。Intel段式管理中:,“一個(gè)邏輯地址,是由一個(gè)段標(biāo)識(shí)符加上一個(gè)指定段內(nèi)相對(duì)地址的偏移量,表示為段標(biāo)識(shí)符:段內(nèi)偏移量?!北热缥覀?cè)诔绦蛑卸x一個(gè)變量intg=3;相應(yīng)的匯編代碼應(yīng)該是movg,3;那么這個(gè)g應(yīng)該放在哪兒呢?實(shí)際上我們可以看到,這個(gè)g的地址總在在編譯,鏈接之后就會(huì)一個(gè)確定的地址;而這個(gè)確定的地址我們叫做邏輯地址。虛擬地址:VirtualAddress,簡稱
3、VA,由于Windows程序時(shí)運(yùn)行在386保護(hù)模式下,這樣程序訪問存儲(chǔ)器所使用的邏輯地址稱為虛擬地址。實(shí)際上因?yàn)槲覀儸F(xiàn)代程序中地址都是虛擬的,所以這里的虛擬地址和線性地址是等價(jià)了的。線性地址:線性地址(LinearAddress)也叫虛擬地址(virtualaddress)是邏輯地址到物理地址變換之間的中間層。在分段部件中邏輯地址是段中的偏移地址,然后加上基地址就是線性地址。2.復(fù)雜的地址轉(zhuǎn)換現(xiàn)在回到問題的本質(zhì),現(xiàn)在一個(gè)程序要運(yùn)行,必須加載到事實(shí)在在的內(nèi)存中去,CPU需要將一個(gè)虛擬內(nèi)存空間中的地址轉(zhuǎn)換為物理地址,也就是:將一個(gè)邏輯地址轉(zhuǎn)換為物理地址。需要進(jìn)行兩步:首先將給定一個(gè)邏輯地址,CPU
4、要利用其段式內(nèi)存管理單元,先將為個(gè)邏輯地址轉(zhuǎn)換成一個(gè)線程地址,再利用其頁式內(nèi)存管理單元,轉(zhuǎn)換為最終物理地址。這樣的兩次轉(zhuǎn)換真真切切在我們的CPU中,當(dāng)然也在很多的教輔材料中,不想花太多的時(shí)間描述,因?yàn)槔锩嫔婕暗降膬?nèi)容太復(fù)雜了,很多問題我都沒有清晰的答案:從開機(jī)啟動(dòng)的內(nèi)存,cache初始化到bootloader,GDT/LDT等等,而且這還沒有考慮到操作系統(tǒng)之間的差異,因?yàn)閘inux,windows對(duì)待地址轉(zhuǎn)換問題是有些不同的。這個(gè)圖很清晰的描述了邏輯地址到物理地址的轉(zhuǎn)換過程:即邏輯地址二二”線性地址二二”物理地址3.段頁式管理的實(shí)現(xiàn)原理1)虛地址的構(gòu)成一個(gè)進(jìn)程中所包含的具有獨(dú)立邏輯功能的程序或
5、數(shù)據(jù)仍被劃分為段,并有各自的段號(hào)s。這反映相繼承了段式管理的特征。其次,對(duì)于段s中的程序或數(shù)據(jù),則按照一定的大小將其劃分為不同的頁。和頁式系統(tǒng)一樣,最后不足一頁的部分仍占一頁。這反映了段頁式管理中的頁式特征。從而,段頁式管理時(shí)的進(jìn)程的虛擬地址空間中的虛擬地址由三部分組成:即段號(hào)s,頁號(hào)P和頁內(nèi)相對(duì)地址d。虛擬空間的最小單位是頁而不是段,從而內(nèi)存可用區(qū)也就被劃分成為著干個(gè)大小相等的頁面,且每段所擁有的程序和數(shù)據(jù)在內(nèi)存中可以分開存放。分段的大小也不再受內(nèi)存可用區(qū)的限制。2)段表和頁表為了實(shí)現(xiàn)段頁式管理,系統(tǒng)必須為每個(gè)作業(yè)或進(jìn)程建立一張段表以管理內(nèi)存分配與釋放、缺段處理、存儲(chǔ)保護(hù)相地址變換等。另外,
6、由于一個(gè)段又被劃分成了若干頁,每個(gè)段又必須建立一張頁表以把段中的虛頁變換成內(nèi)存中的實(shí)際頁面。顯然,與頁式管理時(shí)相同,頁表中也要有相應(yīng)的實(shí)現(xiàn)缺頁中斷處理和頁面保護(hù)等功能的表項(xiàng)。另外,由于在段頁式管理中,頁表不再是屬于進(jìn)程而是屬于某個(gè)段,因此,段表中應(yīng)有專項(xiàng)指出該段所對(duì)應(yīng)頁表的頁表始址和頁表長度。3)動(dòng)態(tài)地址變換過程在一般使用段頁式存儲(chǔ)管理方式的計(jì)算機(jī)系統(tǒng)中,都在內(nèi)存中辟出一塊固定的區(qū)域存放進(jìn)程的段表和頁表。因此,在段頁式管理系統(tǒng)中,要對(duì)內(nèi)存中指令或數(shù)據(jù)進(jìn)行一次存取的話,至少需要訪問三次以上的內(nèi)存:第一次是由段表地址寄存器得段表始址后訪問段表,由此取出對(duì)應(yīng)段的頁表在內(nèi)存中的地址。第二次則是訪問頁表
7、得到所要訪問的物理地址。第三次才能訪問真正需要訪問的物理單元。顯然,這將使CPU的執(zhí)行指令速度大大降低。為了提高地址轉(zhuǎn)換速度,設(shè)置快速聯(lián)想寄存器就顯得比段式管理或頁式管理時(shí)更加需要。在快速聯(lián)想寄存器中,存放當(dāng)前最常用的段號(hào)S、頁號(hào)p和對(duì)應(yīng)的內(nèi)存頁面與其它控制用欄目。當(dāng)要訪問內(nèi)存空間某一單元時(shí),可在通過段表、頁表進(jìn)行內(nèi)存地址查找的同時(shí),根據(jù)快速聯(lián)想寄存器查找其段號(hào)和頁號(hào)。如果所要訪問的段或頁在快速聯(lián)想寄存器中,則系統(tǒng)不再訪問內(nèi)存中的段表、頁表而直接把快速聯(lián)想寄存器中的值與頁內(nèi)相對(duì)地址d拼接起來得到內(nèi)存地址。五、實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)運(yùn)行一個(gè)設(shè)置了全局變量的循環(huán)程序,通過查看段寄存器,LDT表,GDT表
8、等信息,經(jīng)過一系列段、頁地址轉(zhuǎn)換,找到程序中該全局變量的物理地址,實(shí)現(xiàn)控制程序運(yùn)行的目的。通過手工查看系統(tǒng)內(nèi)存,并修改特定物理內(nèi)存的值,實(shí)現(xiàn)控制程序運(yùn)行的目的六、實(shí)驗(yàn)步驟:.安裝bochs和linux系統(tǒng)使用實(shí)驗(yàn)室提供的實(shí)驗(yàn)文件進(jìn)行bochs虛擬機(jī)的安裝,同時(shí)將系統(tǒng)文件拷貝至安裝文件夾下,并新建一個(gè)批處理文件,寫入以下內(nèi)容:cdC:ProgramFiles(x86)Bochs-2.1.1bochsdbg.exe-q-fbochsrc-hd.bxrc,方便以后使用。運(yùn)行這個(gè)批處理文件,進(jìn)入調(diào)試狀態(tài)。.編寫實(shí)驗(yàn)程序按照實(shí)驗(yàn)要求編寫Linux下的C語言程序,具體代碼如下:#includeintj=0
9、 x123456;intmain()printf(theaddressofjis0 x%xn,&j);while(j);printf(programterminatedbormally!n);return0;在mnt文件夾下新建test.c文件,使用“vitest.c”命令對(duì)test.c文件進(jìn)行編輯,輸入上面的代碼,按下esc鍵,并輸入“:wq”保存文件。接著在該目錄下使用gcc命令進(jìn)行C語言程序的編譯,輸入“。-otttest.c”命令生成可執(zhí)行文件壯,輸入ls命令查看當(dāng)前目錄下文件,并輸入“./杜”命令執(zhí)行程序。3.修改地址值為了讓linux-0.11中運(yùn)行的test跳出循環(huán),需要找到邏輯
10、地址ds:0 x3004對(duì)應(yīng)的物理地址,將其內(nèi)容(變量i)改為0。1)首先要得到段表LDT,取得ds對(duì)應(yīng)的段描述符,才能得到ds的基址,從而得到ds:0 x3004對(duì)應(yīng)的線性地址,進(jìn)而從線性地址計(jì)算出物理地址。段描述符放在LDT中,ldt的描述符放在GDT中,GDT的地址與LDT在GDT中的項(xiàng)的索引分別保存在gdtr和ldtr中:s部分是一個(gè)段選擇子,dl和dh是bochs自動(dòng)算得的段描述符。ldtr為0 x0068=0000000001101000b,可知索引為1101b即13,TI位為0,即GDT中的第13項(xiàng)為LDT的段描述符,每個(gè)段描述符64bit=8byte:得到的LDT段描述符(與s
11、reg指令得到的ldtr中的dl、dh相同),從而我們可以得到LDT的基址為0 x00f9a2d0。2)ds段選擇子為0 x0017=0000000000010111b,可知索引為10b即2,TI位為1,即LDT中的第2項(xiàng)為ds的段描述符,每個(gè)段描述符64bit=8byte:得到的ds段描述符,從而我們可以得到ds的基址為0 x10000000。故ds:0 x3004對(duì)應(yīng)的線性地址為0 x10000000+0 x3004=0 x10003004。3)由線性地址計(jì)算出物理地址線性地址0 x10003004=00010000000000000011000000000100b,可知頁目錄號(hào)為1000
12、000b即64,頁表為11b即3,頁內(nèi)偏移為100b即4。頁目錄表的基址存放于CR3中:獲取頁目錄項(xiàng):可知頁表基地址為0 x00fa9000。獲取頁表項(xiàng):可知物理頁基地址為0 x00fa7000??梢钥吹絻?nèi)容是test.c中的變量i的值,將它設(shè)置為0,完成后重新運(yùn)行程序,查看運(yùn)行情況。七、實(shí)驗(yàn)結(jié)果:1.C語言程序?qū)嵗a1inescharsFl2enalN&smouse蹴BochsforWindows-1inescharsFl2enalN&smouse蹴BochsforWindows-Di印值y”口&2004gnraTiondleex86)J132jnodulfbochsoLitwimclud
13、eTntJ-exlZ3456;Intmahi()rprintfCihedddresEofjis-GxXxSnjSJ);philieCj)Jprintf(programiter-minatedbormo1ly):t-etorii9jUlOe0101HochsUlOe0101HochsfilUSjbitaQmaster:Generic1Z34ftTfl-ZHard-Disk(59rtEytEs)2.代碼執(zhí)行情況,可以看到進(jìn)入了死循環(huán),使用CTRL+C退出該循環(huán)。February08,2口口4Ireadingcnnfiguration,fromC:Prnsrairi.riles(k86)BDchs2
14、a1,lbochsrc-hd,bxrc.(:ProgramFilesCz86)Boc.hs-3BLlbDGhsrG-hdrbsrc:unknownparameterforparportligmIinstallingWin32nuduleastheBochsGJIusinglogfilebachsout.txthJoDtingfromFloppyaE.Loadingsystem,一.足然,星可使CPU臼磯行搭等HB-controllerresetfailed:.足然,星可使CPU臼磯行搭等HB-controllerresetfailed:0Pari:itinntab1enk.46092/66fi
15、G0fblocks15235/26600fru亡inndEs3466biuffEr-s=35耳力bytesbufferspaceFreeniEnn:1Z5BZ912bytesOk.LzusFxrootJUcd速聯(lián)想寄存器就顯得二匕段式官田中.存放當(dāng)前最常用的段號(hào)3、/usrluillcdE/rnnt|a.out/untliiL/mnitcdmuttest.cffcc-dttest.ca/trtheaddressofjis:9x3904當(dāng)要訪問內(nèi)存空間某一單元時(shí).3.查看各寄存器中的值,并進(jìn)行修改KrCSlfllXlbdJc:Oxlbpbp:0K3ftfof8|esi:Ok】!edi:0 x0e
16、sp:0 x3fffef8eflag白:。溫說eip:0K6&cs:5=0 xf,dl=Ox&dh=&K10cOftiOO,vali4=ilh=OxlOcOf3(KH.H.th=010rDf300hdh=0 xl00f300rdh=cxi(konoavalidolvelid3vaid=lvalid=lvalld=lldr:s0 x6S.dl-Oxe2dOC06E.dh_O?i82fa,valid-1tr-5=(h&0.dl=0 xe2e8OQS,vaJid=lgdtr:base=OKjchS.lLmit=0K7ffidir:basc-0N34bS.limit=OsTfrdrO:OjtOdrll
17、OxOdr2:OiOtr6:QjcOtr7:0?cOcrO:0 x800000lbcrllOxO“2:0第04bo9。cr3:0jc0cr4moinhibit_nask;Cdone卬,2*0 x5cb8+l3*8bochs:0 xe2d00068Ox(K)OO82fflOsOO(K)3fff(hlOcOfSW0 x00faa027OxOOOOOCOO0 x00fa90670 x000000000 x001234560 x000030340 x000 x000000000 x000030340w00005d20:xp/2wOxfae2dO+16hoehsl:OxOOfaeSeO:3口/2w0 x
18、40*4bochs:OkOOOOOIOO:xbochs:6町/2wOxfaaOOO+3*4bochs:OxOOfaaOOc;卬/2wDxfa9000+4boehs:Cx00fa9004:“tpm自m0 xfa90040 x04xp/2w0 xfa9004bochs:0 x00fa9004:計(jì)算并修改存儲(chǔ)j的地址,然后修改其值,修改為0之后重新執(zhí)行程序,可以看到程序成功執(zhí)行并且也成功退出了循環(huán)。t)LZJIICOZpnIst)billdeuetcimagemnttnnpusrwp/111cdhintvices/nntinIsdualdeu:.;esajontttestuCtt30000Dztuntingcc-osstestacCzMnt1111000D0znntinnoneznntInoff(doesn?t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險(xiǎn)銷售季度報(bào)告模板
- 母親的俗語格言詩句
- 2024年掌上華醫(yī)(醫(yī)院版)考試題庫(附答案)
- 二零二五版幼兒園安全風(fēng)險(xiǎn)評(píng)估與應(yīng)急預(yù)案合同4篇
- 特許連鎖加盟協(xié)議(2025年版)3篇
- 2024年員工宿舍的管理規(guī)章制度守則
- 二零二五年度航空航天產(chǎn)業(yè)園區(qū)場地租賃合同范本4篇
- 二零二五年度旅游項(xiàng)目貸款擔(dān)保服務(wù)協(xié)議3篇
- 2025年度家庭式別墅租賃管理協(xié)議范本4篇
- 美甲店二零二五年度員工培訓(xùn)及技能提升服務(wù)合同4篇
- 《精密板料矯平機(jī) 第1部分:型式和基本參數(shù)》
- 舞蹈課家長會(huì)
- 自來水質(zhì)量提升技術(shù)方案
- 房地產(chǎn)銷售任務(wù)及激勵(lì)制度
- 并購指南(如何發(fā)現(xiàn)好公司)
- DL-T-1642-2016環(huán)形混凝土電桿用腳扣
- 銅礦成礦作用與地質(zhì)環(huán)境分析
- 30題紀(jì)檢監(jiān)察位崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 詢價(jià)函模板(非常詳盡)
- 《AI營銷畫布:數(shù)字化營銷的落地與實(shí)戰(zhàn)》
- 麻醉藥品、精神藥品、放射性藥品、醫(yī)療用毒性藥品及藥品類易制毒化學(xué)品等特殊管理藥品的使用與管理規(guī)章制度
評(píng)論
0/150
提交評(píng)論