邏輯地址轉實體地址

General 更新 2024年12月25日

  實體地址是明確的、最終用在總線上的編號。那麼怎麼轉?小編為大家介紹的解決方法。希望大家喜歡。

  參考如下

  1. 實體地址和邏輯地址

  實體地址:載入到記憶體地址暫存器中的地址,記憶體單元的真正地址。在前端總線上傳輸的記憶體地址都是實體記憶體地址,編號從0開始一直到可用實體記憶體的最高階。這些數字被北橋***Nortbridge chip***對映到實際的記憶體條上。實體地址是明確的、最終用在總線上的編號,不必轉換,不必分頁,也沒有特權級檢查***no translation, no paging, no privilege checks***。

  邏輯地址:CPU所生成的地址。邏輯地址是內部和程式設計使用的、並不唯一。例如,你在進行C語言指標程式設計中,可以讀取指標變數本身值***&操作***,實際上這個值就是邏輯地址,它是相對於你當前程序資料段的地址***偏移地址***,不和絕對實體地址相干。

  為什麼會有這兩種地址?

  個人覺的原因在於邏輯地址分配更加靈活,可以允許不唯一,看起來也較為直觀,例如,一段程式碼中分配陣列,邏輯地址上是連續的,然而在實體地址上,這個陣列所佔用的頁可能分散開來,實體地址上就是不連續的,這樣對程式的可理解性上有影響。另外,有了邏輯地址這個概念,才能使用虛擬記憶體技術。

  CPU將一個虛擬記憶體空間中的地址轉換為實體地址,需要進行兩步:首先將給定一個邏輯地址***其實是段內偏移量,這個一定要理解!!!***,CPU要利用其段式記憶體管理單元,先將為個邏輯地址轉換成一個執行緒地址,再利用其頁式記憶體管理單元,轉換為最終實體地址。

  實體地址***physical address***

  用於記憶體晶片級的單元定址,與處理器和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***

  跟邏輯地址類似,它也是一個不真實的地址,如果邏輯地址是對應的硬體平臺段式管理轉換前地址的話,那麼線性地址則對應了硬體頁式記憶體的轉換前地址。

邏輯地址轉換實體地址公式
邏輯地址線性地址實體地址三個地址有什麼聯絡
相關知識
邏輯地址轉實體地址
線性地址轉實體地址
什麼是邏輯地址和實體地址
虛擬地址到實體地址的轉換
虛擬地址與實體地址的轉換
虛擬地址和實體地址的區別和聯絡
邏輯地址轉換實體地址公式
實體地址和邏輯地址
邏輯地址線性地址實體地址三個地址有什麼聯絡
蘋果手機實體地址怎麼找