版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章內(nèi)存尋址內(nèi)存尋址的演變段機制分頁機制Linux中的匯編語言Linux系統(tǒng)地址映射示例
內(nèi)存尋址-操作系統(tǒng)設(shè)計的硬件基礎(chǔ)之一操作系統(tǒng)-橫跨軟件和硬件的橋梁內(nèi)存尋址-操作系統(tǒng)設(shè)計的硬件基礎(chǔ)之一操作系統(tǒng)的設(shè)計者必須在硬件相關(guān)的代碼與硬件無關(guān)的代碼之間劃出清楚的界限,以便于一個操作系統(tǒng)很容易地移植到不同的平臺。在這眾多的平臺中,大家最熟悉的就是i386,即Intel80386體系結(jié)構(gòu)。因此,我們所介紹的內(nèi)存尋址也是以此為背景。
內(nèi)存尋址的不同時期石器時期-8位青銅時期-16位白銀時期-24位黃金時期-32位石器時期-8位尋址在微處理器的歷史上,第一款微處理器芯片4004是由Intel推出的,4位。在4004之后,intel推出了一款8位處理器叫8080,它有1個主累加器(寄存器A)和6個次累加器(寄存器B,C,D,E,H和L)那時沒有段的概念,訪問內(nèi)存都要通過絕對地址,因此程序中的地址必須進行硬編碼(給出具體地址),而且也難以重定位青銅時期-“段”的引入intel開發(fā)出的16位的處理器叫8086,標志著IntelX86王朝的開始,同時引入了“段”概念。段描述了一塊有限的內(nèi)存區(qū)域,區(qū)域的起始位置存在專門的寄存器(段寄存器)中。8086處理器地址線擴展到了20位,尋址空間到了1M也就是把1M大的空間分成數(shù)個64k的段來管理(化整為零了)。把16位的段地址左移動4位后,再與16位的偏移量相加便可獲得一個20位的內(nèi)存地址,白銀時期-“保護模式”的引入intel的80286處理器于1982年問世。地址總線位數(shù)增加到了24位。從此開始引進了一個全新理念—保護模式
訪問內(nèi)存時不能直接從段寄存器中獲得段的起始地址了,而需要經(jīng)過額外轉(zhuǎn)換和檢查。80286處理器一些致命的缺陷注定不能長久,它很快被天資卓越的兄弟——80386代替了黃金時期-內(nèi)存尋址的飛躍80386是一個32位的CPU,其尋址能力達到4GBIntel選擇了在段寄存器的基礎(chǔ)上構(gòu)筑保護模式,并且保留段寄存器16位在保護模式下,它的段范圍不再受限于64K,可以達到4G這真正解放了軟件工程師,他們不必再費盡心思去壓縮程序規(guī)模,軟件功能也因此迅速提升從80386以后,Intel的CPU經(jīng)歷了80486、Pentium、PentiumII、PentiumIII等型號,但基本上屬于同一種系統(tǒng)結(jié)構(gòu)的改進與加強,而無本質(zhì)的變化,所以我們把80386以后的處理器統(tǒng)稱為IA32(32BitIntelArchitecture)。IA32寄存器簡介
·
把16位的通用寄存器、標志寄存器以及指令指針寄存器擴充為32位的寄存器·段寄存器仍然為16位。·增加4個32位的控制寄存器·增加4個系統(tǒng)地址寄存器·增加8個調(diào)式寄存器·增加2個測試寄存器常用寄存器簡介
通用寄存器8個通用寄存器是8086寄存器的超集,它們分別為:EAX,EBX,ECX,EDX,EBP,EBP,ESI及EDI段寄存器8086中有4個16位的段寄存器:CS、DS、SS、ES,分別用于存放可執(zhí)行代碼的代碼段、數(shù)據(jù)段、堆棧段和其他段的基地址。這些段寄存器中存放的不再是某個段的基地址,而是某個段的選擇符(Selector)
段基地址存放在段描述符表(Descriptor)中,表的索引就是選擇符
常用寄存器簡介
指令指針寄存器
指令指針寄存器EIP中存放下一條將要執(zhí)行指令的偏移量(offset),這個偏移量是相對于目前正在運行的代碼段寄存器CS而言的。偏移量加上當前代碼段的基地址,就形成了下一條指令的地址。EIP中的低16位可以被單獨訪問,給它起名叫指令指針I(yè)P寄存器,用于16位尋址。標志寄存器標志寄存器EFLAGS存放有關(guān)處理器的控制標志,很多標志與16位FLAGS中的標志含義一樣。
用于分頁機制的控制寄存器物理地址、虛擬地址及線性地址
將主板上的物理內(nèi)存條所提供的內(nèi)存空間定義為物理內(nèi)存空間,其中每個內(nèi)存單元的實際地址就是物理地址將應用程序員看到的內(nèi)存空間定義為虛擬地址空間(或地址空間),其中的地址就叫虛擬地址(或虛地址),一般用“段:偏移量”的形式來描述
線性地址空間是指一段連續(xù)的,不分段的,范圍為0到4GB的地址空間,一個線性地址就是線性地址空間的一個絕對地址。
地址之間的轉(zhuǎn)換-保護模式下的尋址CPUMMU內(nèi)存磁盤控制器總線CPU把虛地址送給MMU
MMU把物理地址送給存儲器地址之間的轉(zhuǎn)換-MMU機制虛擬地址段機制段是虛擬地址空間的基本單位,段機制必須把虛擬地址空間的一個地址轉(zhuǎn)換為線性地址空間的一個線性地址。用三個方面來描述段
段的基地址(BaseAddress):在線性地址空間中段的起始地址。
段的界限(Limit):在虛擬地址空間中,段內(nèi)可以使用的最大偏移量。
段的保護屬性(Attribute):表示段的特性。例如,該段是否可被讀出或?qū)懭?,或者該段是否作為一個程序來執(zhí)行,以及段的特權(quán)級等等。
虛擬-線性地址的轉(zhuǎn)換虛擬地址空間段描述符表-段表
如圖所示的段描述符表(或叫段表)來描述轉(zhuǎn)換關(guān)系。段號描述的是虛擬地址空間段的編號,基地址是線性地址空間段的起始地址。段描述符表中的每一個表項叫做段描述符012索引(段號)
基地址
界限
屬性
Baseb
Limitb
Attributeb
Basea
Limita
Attributea
Basec
LimitcAttributec保護模式下的其他描述符表簡介
全局描述符表GDT(GloabalDescriptorTable)中斷描述符表IDT(InterruptDescriptorTable)局部描述符表LDT(LocalDescriptorTable)為了加快對這些表的訪問,Intel設(shè)計了專門的寄存器,以存放這些表的基地址及表的長度界限。這些寄存器只供操作系統(tǒng)使用。有關(guān)這些表的詳細內(nèi)容請參看有關(guān)保護模式的參考書。保護模式下段寄存器中存放什么
存放索引或叫段號,因此,這里的段寄存器也叫選擇符,即從描述符表中選擇某個段。選擇符(段寄存器)的結(jié)構(gòu):
RPL表示請求者的特權(quán)級(RequestorPrivilegeLevel)保護模式下的特權(quán)級保護模式提供了四個特權(quán)級,用0~3四個數(shù)字表示很多操作系統(tǒng)(包括Linux,Windwos)只使用了其中的最低和最高兩個,即0表示最高特權(quán)級,對應內(nèi)核態(tài);3表示最低特權(quán)級,對應用戶態(tài)。保護模式規(guī)定,高特權(quán)級可以訪問低特權(quán)級,而低特權(quán)級不能隨便訪問高特權(quán)級。地址轉(zhuǎn)換及保護
Linux中的段Linux是怎樣處理段機制??分頁機制-頁將線性地址空間劃分成若干大小相等的片,稱為頁(Page)
物理地址空間分成與頁大小相等的若干存儲塊,稱為(物理)塊或頁面(PageFrame)頁的大小應該為多少?由誰確定?
分頁機制-頁表頁表是把線性地址映射到物理地址的一種數(shù)據(jù)結(jié)構(gòu)。
頁表中應當包含如下內(nèi)容:物理頁面基地址:線性地址空間中的一個頁裝入內(nèi)存后所對應的物理頁面的起始地址。
頁的屬性:表示頁的特性。例如該頁是否在內(nèi)存,是否可被讀出或?qū)懭氲取m撁娴拇笮?KB,物理頁面基地址需要多少位就可以?
分頁機制-頁表項結(jié)構(gòu)物理頁面基地址:指的是頁所對應的物理頁面在內(nèi)存的起始物理地址。相當于物理塊號(為什么?)其最低12位全部為0,因此用高20位來描述32位的地址。
屬性見書
物理頁面基地址屬性31110分頁機制-兩級頁表為什么要采用兩級頁表?…………………………頁目錄頁表物理頁面分頁機制-線性地址結(jié)構(gòu)這個結(jié)構(gòu)的偽代碼描述如下
typedefstruct{unsignedintdir:10;/*用作頁目錄中的下標,對應的目錄項指向一個頁表*/
unsignedintpage:10/*用作頁表的下標,對應的頁表項指向一個物理頁面*/
unsignedintoffset:12/*在4K字物理頁面內(nèi)的偏移量*/}LinearAddr
頁目錄頁頁內(nèi)偏移量3122120分頁機制-硬件保護機制對于頁表,頁的保護是由屬性部分的U/S標志和R/W標志來控制的。當U/S標志為0時,只有處于內(nèi)核態(tài)的操作系統(tǒng)才能對此頁或頁表進行尋址。當這個標志為1時,則不管在內(nèi)核態(tài)還是用戶態(tài),總能對此頁進行尋址。此外,與段的三種存取權(quán)限(讀、寫、執(zhí)行)不同,頁的存取權(quán)限只有兩種(讀、寫)。如果頁目錄項或頁表項的讀寫標志為0,說明相應的頁表或頁是只讀的,否則是可讀寫的。
分頁機制-線性地址到物理地址的轉(zhuǎn)換
分頁機制-分頁示例假如操作系統(tǒng)給一個正在運行的進程分配的線性地址空間范圍是0x20000000到0x2003ffff。這個空間由64頁組成。
我們從分配給進程的線性地址的最高10位(分頁硬件機制把它自動解釋成頁目錄域)開始。這兩個地址都以2開頭,后面跟著0,因此高10位有相同的值,即十六進制的0x080或十進制的128。因此,這兩個地址的頁目錄域都指向進程頁目錄的第129項。相應的目錄項中必須包含分配給進程的頁表的物理地址,如圖2.13。如果給這個進程沒有分配其它的線性地址,則頁目錄的其余1023項都為0,也就是這個進程在頁目錄中只占一項。
分頁機制-分頁示例1023(0x3ff)128(0x80)
1023(0x3ff)64(0x040)
63(0x03f)
頁目錄頁表假設(shè)進程需要讀線性地址0x20021406中的內(nèi)容。這個地址由分頁機制如何進行處理?分頁機制-頁面高速緩存
分頁機制-Linux中的分頁Linux主要采用分頁機制來實現(xiàn)虛擬存儲器管理,因為:Linux的分段機制使得所有的進程都使用相同的段寄存器值,這就使得內(nèi)存管理變得簡單,也就是說,所有的進程都使用同樣的線性地址空間(0~4G)。Linux設(shè)計目標之一就是能夠把自己移植到絕大多數(shù)流行的處理器平臺。但是,許多RISC處理器支持的段功能非常有限。
為了保持可移植性,Linux采用三級分頁模式而不是兩級分頁機制-Linux中的分頁Linux中的C語言和匯編語言
GNU的C語言
/docs/learnc/AT&T的匯編:參見書
Linux系統(tǒng)地址映射示例Linux采用分頁存儲管理。虛擬地址空間劃分成固定大小的“頁”,由MMU在運行時將虛擬地址映射(變換)成某個物理頁面中的地址IA32的MMU對程序中的虛擬地址先進行段式映射(虛擬地址轉(zhuǎn)換為線性地址),然后才能進行頁式映射(線性地址轉(zhuǎn)換為物理地址)Linux巧妙地使段式映射實際上不起什么作用Linux系統(tǒng)地址映射示例
假定我們有一個簡單的C程序Hello.c#include<stdio.h>greeting(){ printf(“Hello,world!\n”);}main(){greeting();}Linux系統(tǒng)地址映射示例用Linux的實用程序objdump對其可執(zhí)行代碼進行反匯編:%objdump–dhello08048568<greeting>:8048568:pushl%ebp
8048569:movl%esp,%ebp
804856b:pushl$0x8094048048570:call8048474<_init+0x84>8048575:addl$0x4,%esp
8048578:leave8048579:ret804857a:movl%esi,%e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨車買賣合同格式
- 工地宿舍租賃協(xié)議
- 礦業(yè)權(quán)轉(zhuǎn)讓合同模式
- 合伙企業(yè)多人投資協(xié)議
- 上海市城市房屋拆遷安置協(xié)議
- 標準職工勞動合同樣本
- 山地承包合同范本新版本
- 2024車位交易協(xié)議
- 商務樓辦公家具買賣合同
- 2024年獨院房屋買賣合同
- 5.32.4園路、廣場硬質(zhì)鋪裝工程檢驗批質(zhì)量驗收記錄
- 相逢在花季――青春期心理健康
- 市場監(jiān)管局執(zhí)法文書可編輯版現(xiàn)場檢查筆錄
- 布草洗滌程序
- 最新小學四年級部編語文上冊-第四單元考點梳理(含答案)
- IPC4552中文.doc
- 和泉PLC編程軟件
- 中學30+15高效課堂教學改革實施方案
- 《Flash CC動畫制作》教學大綱 課程標準 最全最新
- 高噴防滲技術(shù)交底
- 大班語言《風在哪里》ppt課件[共12頁]
評論
0/150
提交評論