• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習電腦 > 電腦知識大全 > 什么是邏輯地址和物理地址

    什么是邏輯地址和物理地址

    時間: 春健736 分享

    什么是邏輯地址和物理地址

      有網友問到小編:什么是邏輯地址和物理地址?怎么轉換?針對此問題,學習啦小編為大家分享了具體的操作方法,希望對你有幫助!

      什么是邏輯地址

      是指由程式產生的和段相關的偏移地址部分。例如,你在進行C語言指針編程中,能讀取指針變量本身值(&操作),實際上這個值就是邏輯地址,他是相對于你當前進程數據段的地址,不和絕對物理地址相干。只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel保護模式下程式執行代碼段限長內的偏移地址(假定代碼段、數據段如果完全相同)。應用程式員僅需和邏輯地址打交道,而分段和分頁機制對你來說是完全透明的,僅由系統編程人員涉及。應用程式員雖然自己能直接操作內存,那也只能在操作系統給你分配的內存段操作。

      什么是物理地址

      用于內存芯片級的單元尋址,與處理器和CPU連接的地址總線相對應。 ——這個概念應該是這幾個概念中最好理解的一個,但是值得一提的是,雖然可以直接把物理地址理解成插在機器上那根內存本身,把內存看成一個從0字節一直到最大空量逐字節的編號的大數組,然后把這個數組叫做物理地址,但是事實上,這只是一個硬件提供給軟件的抽像,內存的尋址方式并不是這樣。所以,說它是“與地址總線相對應”,是更貼切一些,不過拋開對物理內存尋址方式的考慮,直接把物理地址與物理的內存一一對應,也是可以接受的。也許錯誤的理解更利于形而上的抽像。 虛擬內存(virtual memory) 這是對整個內存(不要與機器上插那條對上號)的抽像描述。它是相對于物理內存來講的,可以直接理解成“不直實的”,“假的”內存,例如,一個0x08000000內存地址,它并不對就物理地址上那個大數組中0x08000000 - 1那個地址元素;之所以是這樣,是因為現代操作系統都提供了一種內存管理的抽像,即虛擬內存(virtual memory)。進程使用虛擬內存中的地址,由操作系統協助相關硬件,把它“轉換”成真正的物理地址。這個“轉換”,是所有問題討論的關鍵。有了這樣的抽像,一個程序,就可以使用比真實物理地址大得多的地址空間。(拆東墻,補西墻,銀行也是這樣子做的),甚至多個進程可以使用相同的地址。不奇怪,因為轉換后的物理地址并非相同的。 ——可以把連接后的程序反編譯看一下,發現連接器已經為程序分配了一個地址,例如,要調用某個函數A,代碼不是call A,而是call 0x0811111111 ,也就是說,函數A的地址已經被定下來了。沒有這樣的“轉換”,沒有虛擬地址的概念,這樣做是根本行不通的。打住了,這個問題再說下去,就收不住了。邏輯地址(logical address) Intel為了兼容,將遠古時代的段式內存管理方式保留了下來。邏輯地址指的是機器語言指令中,用來指定一個操作數或者是一條指令的地址。以上例,我們說的連接器為A分配的0x08111111這個地址就是邏輯地址。 ——不過不好意思,這樣說,好像又違背了Intel中段式管理中,對邏輯地址要求,“一個邏輯地址,是由一個段標識符加上一個指定段內相對地址的偏移量,表示為 [段標識符:段內偏移量],也就是說,上例中那個0x08111111,應該表示為[A的代碼段標識符: 0x08111111],這樣,才完整一些” 線性地址(linear address)或也叫虛擬地址(virtual address) 跟邏輯地址類似,它也是一個不真實的地址,如果邏輯地址是對應的硬件平臺段式管理轉換前地址的話,那么線性地址則對應了硬件頁式內存的轉換前地址。

      邏輯地址和物理地址拓展知識

      存儲器中每一個單元的地址可以用兩種方法表示:

      1.邏輯地址:其表達形式為“段地址:段內偏移地址”。

      2.物理地址:CPU與存儲器進行數據交換時在地址總線上

      提供的20位地址信息稱為物理地址。

      物理地址=段地址×10H+段內偏移量

      CPU一次處理的數據是16位,地址總線實際上代表CPU的尋址能力,地址線為20條那么CPU實際的尋址能力就是2的20次方就是1M。實際的物理地址是這樣形成的:

      段地址*10H+偏移地址,偏移地址用IP指向,IP是16位的。

      例如段地址是1234H,偏移地址是4321H

      那么實際的物理地址怎么算呢:1234H*10H+4321H=12340H+4321H=16661H

      實際上可以這么來理解,就是段地址左移一位后加上偏移地址就得出實際的物理地址。

      這里邏輯地址和物理地址的關系又可以用一個比喻來說明:

      比如你的學號是0102,這是你的真實地址亦即物理地址,那么又假如01表示你的班級名稱,02表示你相對整個班級的位置,這就是邏輯地址,道理是一樣的,只不過在實際由邏輯地址合成物理地址的時候需要將物理地址左移一位,再加上偏移地址。

      邏輯地址到物理地址的轉換方法

      以一個例子的形式講解邏輯地址到物理地址的轉換:

      某虛擬存儲器的用戶編程空間共32個頁面,每頁為1KB,內存為16KB。假定某時刻一用戶頁表中已調入內存的頁面的頁號和物理塊號的對照表如下:

      則邏輯地址0A5C(H)所對應的物理地址是什么?要求:寫出主要計算過程。

      解題過程:

      首先要知道頁式存儲管理的邏輯地址分為兩部分:頁號和頁內地址。物理地址分為兩部分:

      關系為:邏輯地址= 頁號+頁內地址d

      物理地址= 塊號*塊長度( 等于頁面長度 L )+頁內地址;

      頁號: p = lnt( 邏輯地址 A / 頁面長度 L ); d = 邏輯地址 A % 頁面長度 L (取余)

      分析題:已知:用戶編程空間共32個頁面,2ˆ5 = 32 得知頁號部分占5位,由“每頁為1KB”,1K=2^10,可知內頁地址占10位。

      由“內存為16KB”,2^4=16得知塊號占4位。

      邏輯地址0A5C(H)所對應的二進制表示形式是:0000101001011100,后十位1001011100是頁內地址,

      00010(本題特例,因為頁面長度為1KB)為為頁號,頁號化為十進制是2,在對照表中找到2對應的物理塊號是11,11轉換二進制是1011,11* 2^10 + d即可求出物理地址為10111001011100,化成十六進制為2 E5C;

      即則邏輯地址0A5C(H)所對應的物理地址是2E5C;


    猜你喜歡:

    1.IP地址和物理地址有什么區別

    2.物理地址和邏輯地址的區別

    3.虛擬地址與物理地址的概念

    4.物理地址什么意思

    5.邏輯地址如何轉換成物理地址

    6.物理地址有什么用

    7.物理地址作用是什么

    629914 主站蜘蛛池模板: 国产在线观看的| 日韩人妻无码一区二区三区| 大学生一级毛片高清版| 免费成人一级片| jealousvue成熟50maoff老狼| 精品国产免费人成网站| 小sao蹄子你好sao啊| 免费大学生国产在线观看p| xxxxwww免费| 玉蒲团之偷情宝典| 在线a亚洲视频播放在线观看| 亚洲精品短视频| 80s国产成年女人毛片| 欧美多人野外伦交| 国产白白视频在线观看2| 二级毛片免费观看全程| 黑人巨大白妞出浆| 日本www在线播放| 啊灬啊灬啊灬快灬高潮少妇| 一级一级一级一级毛片| 狠狠色综合网站久久久久久久| 在线观看免费av网站| 亚洲婷婷综合色高清在线| 色香蕉在线观看| 日本小视频免费| 古代级a毛片在线| chinese国产xxxx实拍| 欧美日韩亚洲成人| 国产真实伦正在播放| 久久亚洲欧美日本精品| 经典国产一级毛片| 大肉大捧一进一出好爽APP| 亚洲成无码人在线观看| 91九色视频在线观看| 日产精品99久久久久久| 免费吃奶摸下激烈视频| 91亚洲欧美国产制服动漫| 最近中文字幕完整版免费| 国产一级淫片a视频免费观看| www亚洲精品少妇裸乳一区二区| 欧美综合国产精品日韩一|