第二章虛擬內(nèi)存管理的硬件機(jī)制_第1頁
第二章虛擬內(nèi)存管理的硬件機(jī)制_第2頁
第二章虛擬內(nèi)存管理的硬件機(jī)制_第3頁
第二章虛擬內(nèi)存管理的硬件機(jī)制_第4頁
第二章虛擬內(nèi)存管理的硬件機(jī)制_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二章虛擬內(nèi)存管理的硬件機(jī)制第一頁,共四十三頁,2022年,8月28日內(nèi)存尋址-操作系統(tǒng)設(shè)計(jì)的硬件基礎(chǔ)之一操作系統(tǒng)-橫跨軟件和硬件的橋梁內(nèi)存尋址-操作系統(tǒng)設(shè)計(jì)的硬件基礎(chǔ)之一操作系統(tǒng)的設(shè)計(jì)者必須在硬件相關(guān)的代碼與硬件無關(guān)的代碼之間劃出清楚的界限,以便于一個(gè)操作系統(tǒng)很容易地移植到不同的平臺(tái)。在這眾多的平臺(tái)中,大家最熟悉的就是i386,即Intel80386體系結(jié)構(gòu)。因此,我們所介紹的內(nèi)存尋址也是以此為背景。

第二頁,共四十三頁,2022年,8月28日內(nèi)存尋址的不同時(shí)期石器時(shí)期-8位青銅時(shí)期-16位白銀時(shí)期-24位黃金時(shí)期-32位第三頁,共四十三頁,2022年,8月28日石器時(shí)期-8位尋址在微處理器的歷史上,第一款微處理器芯片4004是由Intel推出的,4位。在4004之后,intel推出了一款8位處理器叫8080,它有1個(gè)主累加器(寄存器A)和6個(gè)次累加器(寄存器B,C,D,E,H和L)那時(shí)沒有段的概念,訪問內(nèi)存都要通過絕對(duì)地址,因此程序中的地址必須進(jìn)行硬編碼(給出具體地址),而且也難以重定位第四頁,共四十三頁,2022年,8月28日青銅時(shí)期-“段”的引入intel開發(fā)出的16位的處理器叫8086,標(biāo)志著IntelX86王朝的開始,同時(shí)引入了“段”概念。段描述了一塊有限的內(nèi)存區(qū)域,區(qū)域的起始位置存在專門的寄存器(段寄存器)中。8086處理器地址線擴(kuò)展到了20位,尋址空間到了1M也就是把1M大的空間分成數(shù)個(gè)64k的段來管理(化整為零了)。把16位的段地址左移動(dòng)4位后,再與16位的偏移量相加便可獲得一個(gè)20位的內(nèi)存地址,第五頁,共四十三頁,2022年,8月28日白銀時(shí)期-“保護(hù)模式”的引入intel的80286處理器于1982年問世。地址總線位數(shù)增加到了24位。從此開始引進(jìn)了一個(gè)全新理念—保護(hù)模式

訪問內(nèi)存時(shí)不能直接從段寄存器中獲得段的起始地址了,而需要經(jīng)過額外轉(zhuǎn)換和檢查。80286處理器一些致命的缺陷注定不能長(zhǎng)久,它很快被天資卓越的兄弟——80386代替了第六頁,共四十三頁,2022年,8月28日黃金時(shí)期-內(nèi)存尋址的飛躍80386是一個(gè)32位的CPU,其尋址能力達(dá)到4GBIntel選擇了在段寄存器的基礎(chǔ)上構(gòu)筑保護(hù)模式,并且保留段寄存器16位在保護(hù)模式下,它的段范圍不再受限于64K,可以達(dá)到4G這真正解放了軟件工程師,他們不必再費(fèi)盡心思去壓縮程序規(guī)模,軟件功能也因此迅速提升從80386以后,Intel的CPU經(jīng)歷了80486、Pentium、PentiumII、PentiumIII等型號(hào),但基本上屬于同一種系統(tǒng)結(jié)構(gòu)的改進(jìn)與加強(qiáng),而無本質(zhì)的變化,所以我們把80386以后的處理器統(tǒng)稱為IA32(32BitIntelArchitecture)。第七頁,共四十三頁,2022年,8月28日IA32寄存器簡(jiǎn)介·

把16位的通用寄存器、標(biāo)志寄存器以及指令指針寄存器擴(kuò)充為32位的寄存器·段寄存器仍然為16位?!ぴ黾?個(gè)32位的控制寄存器·增加4個(gè)系統(tǒng)地址寄存器·增加8個(gè)調(diào)式寄存器·增加2個(gè)測(cè)試寄存器第八頁,共四十三頁,2022年,8月28日常用寄存器簡(jiǎn)介通用寄存器8個(gè)通用寄存器是8086寄存器的超集,它們分別為:EAX,EBX,ECX,EDX,EBP,EBP,ESI及EDI段寄存器8086中有4個(gè)16位的段寄存器:CS、DS、SS、ES,分別用于存放可執(zhí)行代碼的代碼段、數(shù)據(jù)段、堆棧段和其他段的基地址。這些段寄存器中存放的不再是某個(gè)段的基地址,而是某個(gè)段的選擇符(Selector)

段基地址存放在段描述符表(Descriptor)中,表的索引就是選擇符

第九頁,共四十三頁,2022年,8月28日常用寄存器簡(jiǎn)介指令指針寄存器

指令指針寄存器EIP中存放下一條將要執(zhí)行指令的偏移量(offset),這個(gè)偏移量是相對(duì)于目前正在運(yùn)行的代碼段寄存器CS而言的。偏移量加上當(dāng)前代碼段的基地址,就形成了下一條指令的地址。EIP中的低16位可以被單獨(dú)訪問,給它起名叫指令指針I(yè)P寄存器,用于16位尋址。標(biāo)志寄存器標(biāo)志寄存器EFLAGS存放有關(guān)處理器的控制標(biāo)志,很多標(biāo)志與16位FLAGS中的標(biāo)志含義一樣。第十頁,共四十三頁,2022年,8月28日標(biāo)志寄存器簡(jiǎn)介第十一頁,共四十三頁,2022年,8月28日用于分頁機(jī)制的控制寄存器第十二頁,共四十三頁,2022年,8月28日物理地址、虛擬地址及線性地址將主板上的物理內(nèi)存條所提供的內(nèi)存空間定義為物理內(nèi)存空間,其中每個(gè)內(nèi)存單元的實(shí)際地址就是物理地址將應(yīng)用程序員看到的內(nèi)存空間定義為虛擬地址空間(或地址空間),其中的地址就叫虛擬地址(或虛地址),一般用“段:偏移量”的形式來描述

線性地址空間是指一段連續(xù)的,不分段的,范圍為0到4GB的地址空間,一個(gè)線性地址就是線性地址空間的一個(gè)絕對(duì)地址。第十三頁,共四十三頁,2022年,8月28日地址之間的轉(zhuǎn)換-保護(hù)模式下的尋址CPUMMU內(nèi)存磁盤控制器總線CPU把虛地址送給MMUMMU把物理地址送給存儲(chǔ)器第十四頁,共四十三頁,2022年,8月28日地址之間的轉(zhuǎn)換-MMU機(jī)制虛擬地址第十五頁,共四十三頁,2022年,8月28日段機(jī)制段是虛擬地址空間的基本單位,段機(jī)制必須把虛擬地址空間的一個(gè)地址轉(zhuǎn)換為線性地址空間的一個(gè)線性地址。用三個(gè)方面來描述段

段的基地址(BaseAddress):在線性地址空間中段的起始地址。

段的界限(Limit):在虛擬地址空間中,段內(nèi)可以使用的最大偏移量。

段的保護(hù)屬性(Attribute):表示段的特性。例如,該段是否可被讀出或?qū)懭?,或者該段是否作為一個(gè)程序來執(zhí)行,以及段的特權(quán)級(jí)等等。

第十六頁,共四十三頁,2022年,8月28日虛擬-線性地址的轉(zhuǎn)換虛擬地址空間第十七頁,共四十三頁,2022年,8月28日段描述符表-段表如圖所示的段描述符表(或叫段表)來描述轉(zhuǎn)換關(guān)系。段號(hào)描述的是虛擬地址空間段的編號(hào),基地址是線性地址空間段的起始地址。段描述符表中的每一個(gè)表項(xiàng)叫做段描述符012索引(段號(hào))

基地址

界限

屬性

Baseb

Limitb

Attributeb

Basea

Limita

Attributea

Basec

LimitcAttributec第十八頁,共四十三頁,2022年,8月28日段描述符的一般格式第十九頁,共四十三頁,2022年,8月28日保護(hù)模式下的其他描述符表簡(jiǎn)介全局描述符表GDT(GloabalDescriptorTable)中斷描述符表IDT(InterruptDescriptorTable)局部描述符表LDT(LocalDescriptorTable)為了加快對(duì)這些表的訪問,Intel設(shè)計(jì)了專門的寄存器,以存放這些表的基地址及表的長(zhǎng)度界限。這些寄存器只供操作系統(tǒng)使用。有關(guān)這些表的詳細(xì)內(nèi)容請(qǐng)參看有關(guān)保護(hù)模式的參考書。第二十頁,共四十三頁,2022年,8月28日保護(hù)模式下段寄存器中存放什么存放索引或叫段號(hào),因此,這里的段寄存器也叫選擇符,即從描述符表中選擇某個(gè)段。選擇符(段寄存器)的結(jié)構(gòu):

RPL表示請(qǐng)求者的特權(quán)級(jí)(RequestorPrivilegeLevel)第二十一頁,共四十三頁,2022年,8月28日保護(hù)模式下的特權(quán)級(jí)保護(hù)模式提供了四個(gè)特權(quán)級(jí),用0~3四個(gè)數(shù)字表示很多操作系統(tǒng)(包括Linux,Windwos)只使用了其中的最低和最高兩個(gè),即0表示最高特權(quán)級(jí),對(duì)應(yīng)內(nèi)核態(tài);3表示最低特權(quán)級(jí),對(duì)應(yīng)用戶態(tài)。保護(hù)模式規(guī)定,高特權(quán)級(jí)可以訪問低特權(quán)級(jí),而低特權(quán)級(jí)不能隨便訪問高特權(quán)級(jí)。第二十二頁,共四十三頁,2022年,8月28日地址轉(zhuǎn)換及保護(hù)第二十三頁,共四十三頁,2022年,8月28日Linux中的段Linux是怎樣處理段機(jī)制??第二十四頁,共四十三頁,2022年,8月28日分頁機(jī)制-頁將線性地址空間劃分成若干大小相等的片,稱為頁(Page)

物理地址空間分成與頁大小相等的若干存儲(chǔ)塊,稱為(物理)塊或頁面(PageFrame)頁的大小應(yīng)該為多少?由誰確定?

第二十五頁,共四十三頁,2022年,8月28日分頁機(jī)制-頁表頁表是把線性地址映射到物理地址的一種數(shù)據(jù)結(jié)構(gòu)。

頁表中應(yīng)當(dāng)包含如下內(nèi)容:物理頁面基地址:線性地址空間中的一個(gè)頁裝入內(nèi)存后所對(duì)應(yīng)的物理頁面的起始地址。頁的屬性:表示頁的特性。例如該頁是否在內(nèi)存,是否可被讀出或?qū)懭氲?。頁面的大小?KB,物理頁面基地址需要多少位就可以?

第二十六頁,共四十三頁,2022年,8月28日分頁機(jī)制-頁表項(xiàng)結(jié)構(gòu)物理頁面基地址:指的是頁所對(duì)應(yīng)的物理頁面在內(nèi)存的起始物理地址。相當(dāng)于物理塊號(hào)(為什么?)其最低12位全部為0,因此用高20位來描述32位的地址。

屬性見書

物理頁面基地址屬性31110第二十七頁,共四十三頁,2022年,8月28日分頁機(jī)制-兩級(jí)頁表為什么要采用兩級(jí)頁表?…………………………頁目錄頁表物理頁面第二十八頁,共四十三頁,2022年,8月28日分頁機(jī)制-線性地址結(jié)構(gòu)這個(gè)結(jié)構(gòu)的偽代碼描述如下typedefstruct{unsignedintdir:10;/*用作頁目錄中的下標(biāo),對(duì)應(yīng)的目錄項(xiàng)指向一個(gè)頁表*/unsignedintpage:10/*用作頁表的下標(biāo),對(duì)應(yīng)的頁表項(xiàng)指向一個(gè)物理頁面*/unsignedintoffset:12/*在4K字物理頁面內(nèi)的偏移量*/}LinearAddr

頁目錄頁頁內(nèi)偏移量3122120第二十九頁,共四十三頁,2022年,8月28日分頁機(jī)制-硬件保護(hù)機(jī)制對(duì)于頁表,頁的保護(hù)是由屬性部分的U/S標(biāo)志和R/W標(biāo)志來控制的。當(dāng)U/S標(biāo)志為0時(shí),只有處于內(nèi)核態(tài)的操作系統(tǒng)才能對(duì)此頁或頁表進(jìn)行尋址。當(dāng)這個(gè)標(biāo)志為1時(shí),則不管在內(nèi)核態(tài)還是用戶態(tài),總能對(duì)此頁進(jìn)行尋址。此外,與段的三種存取權(quán)限(讀、寫、執(zhí)行)不同,頁的存取權(quán)限只有兩種(讀、寫)。如果頁目錄項(xiàng)或頁表項(xiàng)的讀寫標(biāo)志為0,說明相應(yīng)的頁表或頁是只讀的,否則是可讀寫的。第三十頁,共四十三頁,2022年,8月28日分頁機(jī)制-線性地址到物理地址的轉(zhuǎn)換第三十一頁,共四十三頁,2022年,8月28日分頁機(jī)制-分頁示例假如操作系統(tǒng)給一個(gè)正在運(yùn)行的進(jìn)程分配的線性地址空間范圍是0x20000000到0x2003ffff。這個(gè)空間由64頁組成。我們從分配給進(jìn)程的線性地址的最高10位(分頁硬件機(jī)制把它自動(dòng)解釋成頁目錄域)開始。這兩個(gè)地址都以2開頭,后面跟著0,因此高10位有相同的值,即十六進(jìn)制的0x080或十進(jìn)制的128。因此,這兩個(gè)地址的頁目錄域都指向進(jìn)程頁目錄的第129項(xiàng)。相應(yīng)的目錄項(xiàng)中必須包含分配給進(jìn)程的頁表的物理地址,如圖2.13。如果給這個(gè)進(jìn)程沒有分配其它的線性地址,則頁目錄的其余1023項(xiàng)都為0,也就是這個(gè)進(jìn)程在頁目錄中只占一項(xiàng)。第三十二頁,共四十三頁,2022年,8月28日分頁機(jī)制-分頁示例1023(0x3ff)128(0x80)

1023(0x3ff)64(0x040)63(0x03f)

頁目錄頁表假設(shè)進(jìn)程需要讀線性地址0x20021406中的內(nèi)容。這個(gè)地址由分頁機(jī)制如何進(jìn)行處理?第三十三頁,共四十三頁,2022年,8月28日分頁機(jī)制-頁面高速緩存第三十四頁,共四十三頁,2022年,8月28日分頁機(jī)制-Linux中的分頁Linux主要采用分頁機(jī)制來實(shí)現(xiàn)虛擬存儲(chǔ)器管理,因?yàn)?Linux的分段機(jī)制使得所有的進(jìn)程都使用相同的段寄存器值,這就使得內(nèi)存管理變得簡(jiǎn)單,也就是說,所有的進(jìn)程都使用同樣的線性地址空間(0~4G)。Linux設(shè)計(jì)目標(biāo)之一就是能夠把自己移植到絕大多數(shù)流行的處理器平臺(tái)。但是,許多RISC處理器支持的段功能非常有限。為了保持可移植性,Linux采用三級(jí)分頁模式而不是兩級(jí)第三十五頁,共四十三頁,2022年,8月28日分頁機(jī)制-Linux中的分頁第三十六頁,共四十三頁,2022年,8月28日Linux中的C語言和匯編語言

GNU的C語言AT&T的匯編:參見書

第三十七頁,共四十三頁,2022年,8月28日Linux系統(tǒng)地址映射示例Linux采用分頁存儲(chǔ)管理。虛擬地址空間劃分成固定大小的“頁”,由MMU在運(yùn)行時(shí)將虛擬地址映射(變換)成某個(gè)物理頁面中的地址IA32的MMU對(duì)程序中的虛擬地址先進(jìn)行段式映射(虛擬地址轉(zhuǎn)換為線性地址),然后才能進(jìn)行頁式映射(線性地址轉(zhuǎn)換為物理地址)Linux巧妙地使段式映射實(shí)際上不起什么作用第三十八頁,共四十三頁,2022年,8月28日Linux系統(tǒng)地址映射示例

假定我們有一個(gè)簡(jiǎn)單的C程序Hello.c#include<stdio.h>greeting(){ printf(“Hello,world!\n”);}main(){greeting();}第三十九頁,共四十三頁,2022年,8月28日Linux系統(tǒng)地址映射示例用Linux的實(shí)用程序objdump對(duì)其可執(zhí)行代碼進(jìn)行反匯編:%objdump–dhello08048568<greeting>:8048568:pushl%ebp8048569:movl%esp,%ebp804856b:pushl$0x8094048048570:call8048474<_init+0x84>8048575:addl$0x4,%esp8048578:leave8048579:ret804857a:movl%e

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論