邏輯地址如何轉(zhuǎn)換成物理地址_第1頁
邏輯地址如何轉(zhuǎn)換成物理地址_第2頁
邏輯地址如何轉(zhuǎn)換成物理地址_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、資料來源:來自本人網(wǎng)絡(luò)整理!祝您工作順利!邏輯地址如何轉(zhuǎn)換成物理地址 規(guī)律地址和物理地址是什么?規(guī)律地址如何轉(zhuǎn)換成物理地址?看到許多人都在問這個問題,我為大家共享了規(guī)律地址如何轉(zhuǎn)換成物理地址的方法,下面大家跟著我一起來理解一下吧。 規(guī)律地址轉(zhuǎn)換成物理地址 cpu將一個虛擬內(nèi)存空間中的地址轉(zhuǎn)換為物理地址,需要進(jìn)展兩步:首先將給定一個規(guī)律地址(其實(shí)是段內(nèi)偏移量,這個肯定要理解!),cpu要利用其段式內(nèi)存管理單元,先將為個規(guī)律地址轉(zhuǎn)換成一個線程地址,再利用其頁式內(nèi)存管理單元,轉(zhuǎn)換為最終物理地址。 物理地址(physical address) 用于內(nèi)存芯片級的單元尋址,與處理器和cpu連接的地址總線相

2、對應(yīng)。 這個概念應(yīng)當(dāng)是這幾個概念中最好理解的一個,但是值得一提的是,雖然可以挺直把物理地址理解成插在機(jī)器上那根內(nèi)存本身,把內(nèi)存看成一個從0字節(jié)始終到最大空量逐字節(jié)的編號的大數(shù)組,然后把這個數(shù)組叫做物理地址,但是事實(shí)上,這只是一個硬件供應(yīng)給軟件的抽像,內(nèi)存的尋址方式并不是這樣。所以,說它是與地址總線相對應(yīng),是更貼切一些,不過拋開對物理內(nèi)存尋址方式的考慮,挺直把物理地址與物理的內(nèi)存一一對應(yīng),也是可以承受的?;蛟S錯誤的理解更利于形而上的抽像。 虛擬內(nèi)存(virtual memory) 這是對整個內(nèi)存(不要與機(jī)器上插那條對上號)的抽像描繪。它是相對于物理內(nèi)存來講的,可以挺直理解成不直實(shí)的,假的內(nèi)存,例

3、如,一個0x08000000內(nèi)存地址,它并不對就物理地址上那個大數(shù)組中0x08000000 - 1那個地址元素; 之所以是這樣,是因?yàn)楝F(xiàn)代操作系統(tǒng)都供應(yīng)了一種內(nèi)存管理的抽像,即虛擬內(nèi)存(virtual memory)。進(jìn)程用法虛擬內(nèi)存中的地址,由操作系統(tǒng)幫助相關(guān)硬件,把它轉(zhuǎn)換成真正的物理地址。這個轉(zhuǎn)換,是全部問題爭論的關(guān)鍵。 有了這樣的抽像,一個程序,就可以用法比真實(shí)物理地址大得多的地址空間。(拆東墻,補(bǔ)西墻,銀行也是這樣子做的),甚至多個進(jìn)程可以用法一樣的地址。不驚奇,因?yàn)檗D(zhuǎn)換后的物理地址并非一樣的。 可以把連接后的程序反編譯看一下,發(fā)覺連接器已經(jīng)為程序安排了一個地址,例如,要調(diào)用某個函數(shù)a

4、,代碼不是call a,而是call 0x0811111111 ,也就是說,函數(shù)a的地址已經(jīng)被定下來了。沒有這樣的轉(zhuǎn)換,沒有虛擬地址的概念,這樣做是根本行不通的。 規(guī)律地址(logical address) intel為了兼容,將遠(yuǎn)古時(shí)代的段式內(nèi)存管理方式保存了下來。規(guī)律地址指的是機(jī)器語言指令中,用來指定一個操作數(shù)或者是一條指令的地址。以上例,我們說的連接器為a安排的0x08111111這個地址就是規(guī)律地址。 不過不好意思,這樣說,似乎又違反了intel中段式管理中,對規(guī)律地址要求,一個規(guī)律地址,是由一個段標(biāo)識符加上一個指定段內(nèi)相對地址的偏移量,表示為 段標(biāo)識符:段內(nèi)偏移量,也就是說,上例中那

5、個0x08111111,應(yīng)當(dāng)表示為a的代碼段標(biāo)識符: 0x08111111,這樣,才完好一些 線性地址(linear address)或也叫虛擬地址(virtual address) 跟規(guī)律地址類似,它也是一個不真實(shí)的地址,假如規(guī)律地址是對應(yīng)的硬件平臺段式管理轉(zhuǎn)換前地址的話,那么線性地址那么對應(yīng)了硬件頁式內(nèi)存的轉(zhuǎn)換前地址。 在早期的硬盤中,由于每個磁道的扇區(qū)數(shù)相等,外磁道的記錄密度遠(yuǎn)低于內(nèi)磁道,因此造成許多磁盤空間的鋪張。為理解決這一問題,人們改用等密度構(gòu)造,即外圈磁道的扇區(qū)比內(nèi)圈磁道多。此種構(gòu)造的硬盤不再具有實(shí)際的3d參數(shù),尋址方式也改為以扇區(qū)為單位的線性尋址,這種尋址形式便是lba(log

6、ic block address, 規(guī)律塊地址)。在這種形式下,硬盤的物理地址與規(guī)律地址的轉(zhuǎn)換問題有肯定必要性和冗雜性,本文對此進(jìn)展?fàn)幷?盼望對感愛好的讀者有所關(guān)心。 2 轉(zhuǎn)換過程 所謂規(guī)律扇區(qū)是物理扇區(qū)的一組連續(xù)數(shù)字的編號,操作系統(tǒng)采納的一種扇區(qū)編號方式,其編號是從0開頭到某個最大值方式排列,并連成一條線。用法規(guī)律扇區(qū)主要有以下兩個優(yōu)點(diǎn):第一,規(guī)律扇區(qū)的概念使硬盤的讀寫操作脫離了柱面、磁頭和扇區(qū)的硬件參數(shù);其次,在硬盤中每肯定數(shù)目的扇區(qū)組成了數(shù)據(jù)文件的最小單位 簇,在對一個詳細(xì)的簇進(jìn)展讀寫操作時(shí),操作系統(tǒng)劃分一個一維的規(guī)律扇區(qū)號要比用法三維物理扇區(qū)號簡潔的多,假如一個簇的扇區(qū)跨越在兩個盤片,

7、那么用法柱面、磁頭和扇區(qū)的表示方法就更加冗雜了。那么硬盤的物理地址和規(guī)律地址是如何轉(zhuǎn)換的呢?下面詳細(xì)介紹其互相轉(zhuǎn)換方法。 2.1 硬盤物理地址轉(zhuǎn)換為規(guī)律地址 首先我們先來理解一下從c/h/s到lba線性地址的轉(zhuǎn)換規(guī)章。為了與用法c/h/s尋址的老軟件兼容,于是在硬盤掌握器內(nèi)部安裝了一個地址翻譯器,它負(fù)責(zé)將c/h/s參數(shù)翻譯成lba地址。 同時(shí),由于系統(tǒng)在寫入數(shù)據(jù)時(shí)是根據(jù)從柱面到柱面的方式,當(dāng)上一個柱面寫滿數(shù)據(jù)后才挪動磁頭到下一個柱面,而且是從柱面的第一個磁頭的第一個扇區(qū)開頭寫入,從而使磁盤性能最優(yōu)。那么在對物理扇區(qū)進(jìn)展線性編址時(shí),也是根據(jù)這種方式進(jìn)展。即把第一柱面(0柱)第一磁頭(0面)的第一

8、扇區(qū)(1扇區(qū))編為規(guī)律0扇區(qū),把第一柱面(0柱)第一磁頭(0面)的其次扇區(qū)(2扇區(qū))編為規(guī)律1扇區(qū),直至第一柱面(0柱)第一磁頭(0面)的第63扇區(qū)(63扇區(qū))編為規(guī)律62扇區(qū),然后將磁頭轉(zhuǎn)到第一柱面(0柱)其次磁頭(1面)的第一扇區(qū)(1扇區(qū)),接著上面其對應(yīng)的規(guī)律編號為第63扇區(qū),0柱面全部扇區(qū)編號完畢后才轉(zhuǎn)到1柱面的0磁頭1扇區(qū),依次向下進(jìn)展,直到將全部的扇區(qū)都編上號。我們需要留意的是,物理扇區(qū)c/h/s中的扇區(qū)編號是從1至63,而規(guī)律扇區(qū)lba方式下扇區(qū)是從0開頭編號,全部扇區(qū)編號按挨次進(jìn)展。 在此轉(zhuǎn)換過程中,我們必需要知道的物理量有: c1起始扇區(qū)的柱面號 h1起始扇區(qū)的磁頭號 s1起

9、始扇區(qū)的扇區(qū)號 ns每磁道的扇區(qū)數(shù) nh硬盤每柱面磁道數(shù) c、h、s表示硬盤當(dāng)前的柱面號、磁頭號和扇區(qū)號,那么計(jì)算柱面c、磁頭h、扇區(qū)s對應(yīng)的相對規(guī)律扇區(qū)號rs的公式為: 規(guī)律扇區(qū)rs=nhns(c-c1)+ns(h-h1)+(s-s1),為驗(yàn)證此公式,下面我們來舉個例子。 實(shí)例:已知有一個4磁頭(硬盤每柱面的磁道數(shù)為4),每磁道有17個扇區(qū)的硬盤,其中有一個規(guī)律硬盤d:,它的第一個扇區(qū)在硬盤的柱面號為120,磁頭號為1,扇區(qū)號為1的位置,那么計(jì)算柱面號為160,磁頭號為3,扇區(qū)號為6的規(guī)律扇區(qū)號rs是多少? 分析: 依據(jù)前面的說明,已知條件有:c1=120, h1=1, s1=1, ns=1

10、7, nh=4,c=160,h=3,s=6,那么代入上面公式可得到規(guī)律扇區(qū)號rs=417(160-120)+17(3-1)+(6-1)=2759,即硬盤柱面號為160,磁頭號為3,扇區(qū)號為6的規(guī)律扇區(qū)號為2759. 硬盤規(guī)律地址轉(zhuǎn)換成物理地址 在對硬盤進(jìn)展故障維護(hù)或者進(jìn)展相關(guān)軟件開發(fā)時(shí),不僅需要將硬盤的物理地址轉(zhuǎn)換成規(guī)律地址,有時(shí)還需要知道規(guī)律地址轉(zhuǎn)換為物理地址的方法。 依據(jù)計(jì)算機(jī)中符號的常用法那么,我們用div表示除法運(yùn)算,用mod表示取余數(shù)運(yùn)算,其他參數(shù)如c、h、s依舊表示硬盤當(dāng)前的柱面、磁頭和扇區(qū)號,c1、h1、s1、ns和nh含義也和上面全都。在已知硬盤規(guī)律地址即規(guī)律扇區(qū)號ls的狀況下,求硬盤對應(yīng)的物理地址的柱面號c、磁頭號h和扇區(qū)號s的方法如下: c=(ls div ns)div nh)+ c1 h=(ls div ns)mod nh)+ h1 s=(ls mod nh)+ s1 實(shí)例:設(shè)硬盤的磁頭號為4,每磁道17個扇區(qū),其中規(guī)律硬盤d的第一個扇區(qū)在硬盤的柱面120、磁頭1、扇區(qū)1上,求規(guī)律d盤上規(guī)律扇區(qū)為2757編號對應(yīng)的物理地址是多少? 分析:依據(jù)上面的已知條件,我們可知c1=120, h1=1,s1=1,ns=17,nh=4,ls=2757,那么將這些數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論