1. 操作系統中怎樣把邏輯地址轉換成物理地址,我要具體
頁面大小為4 KB = 2^12位元組,所以邏輯地址的後12位為頁內地址,後12位之前的部分是頁號。對於1D16H(即0001 1101 0001 0110B),其頁號就是0001B,即1。查表可知其物理塊號是3,所以把1換成3,物理地址就是3D16H。
2. 邏輯地址如何轉換為物理地址
如果是16進制的話 將段地址移一位 加上偏移地址就是了如果是二進制的話 是將段地址移4位 加上偏移量
3. 什麼是邏輯地址和物理地址
有網友問到我:什麼是邏輯地址和物理地址?怎麼轉換?針對此問題,我為大家分享了具體的操作 方法 ,希望對你有幫助!
什麼是邏輯地址是指由程式產生的和段相關的偏移地址部分。例如,你在進行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. 物理地址作用是什麼
4. 邏輯地址轉換成物理地址的計算題
頁表可以實現從頁號到物理塊號的地址映射。通過邏輯地址的頁號來尋找頁表,從而獲得物理塊號;在將頁內地址直接送入物理地址寄存器的塊內地址欄位中。將塊號和塊內地址拼接成實際訪問地址,即可得到物理地址。
物理地址的計算公式為:物理地址=塊的大小(即頁的大小L)* 塊號f+頁內地址d
代入本題解答:
頁號=int(2500/1024)=2;頁內位移=2500mod1024=452;假設頁號2對應塊號1,則物理地址為:
物理地址=1024*1+452=1476
(4)如何將邏輯地址轉化為物理地址擴展閱讀:
邏輯地址(LogicalAddress)即通過電腦程序產生的與段相關的偏移地址部分,也叫做相對地址;
物理地址,即計算機中每一個位元組單元的唯一存儲地址,也叫做實際地址或絕對地址。
利用所給的邏輯地址首先找到在頁表中的那一頁,即頁號,再者利用所給的邏輯地址計算出在頁表的頁偏移量,從而利用頁表所對應的物理塊計算出塊號,再利用塊號的基礎上計算出所給的偏移量。(一般只針對於動態重定位的變化使用)
5. 什麼是邏輯地址什麼是物理地址如何將邏輯地址轉換為物理地址
邏輯地址你可以理解為物理地址的別名,邏輯地址到物理地址的轉換叫做映射,這個是提前寫好的映射關系:什麼偏移量啊,反碼,補碼什麼的。
6. 如何將邏輯地址轉換成物理地址
邏輯地址如何轉換成物理地址
1.確定虛擬地址(物理地址)的有效位
例如:假設頁面大小1KB,共32頁。(頁面:邏輯地址 頁框:物理地址)
由32(KB)=32×1024(B) 即等於32×1024 位元組
二進制用多少位能有效表示這么多位元組呢——答是:15位 因為32×1024=2^5×2^10=2^15
2.再次確定邏輯地址頁面位數 你應該知道:邏輯地址=頁號+頁面
還是以上假設,那麼頁面大小為1KB=1024位元組 同樣的方法計算出表示位數:10位
如果給你邏輯地址:0000 1111 1000 0000
那麼由:011+11100000000(相當於 頁號+頁面(10位))推得出頁號011=3
3.根據頁號找出對應的頁框號
由 物理地址=頁框號×頁塊大小(頁塊大小是等於頁面大小的)+頁內位移(即頁面邏輯地址)
根據上面 物理地址=頁框號×1024B + 1110000000 ( 這里的相加是指位置上而言)
例如:110+110=110110(即高地址+低地址)
7. 已知邏輯地址為BA00:A800,求其物理地址
摘要 您好,很高興為您解答:
8. 邏輯地址轉換物理地址公式
物理地址是明確的、最終用在匯流排上的編號。那麼邏輯地址轉物理地址怎麼轉?我為大家介紹邏輯地址轉物理地址的解決 方法 。希望大家喜歡。
邏輯地址轉換物理地址公式參考如下
1. 物理地址和邏輯地址
物理地址:載入到內存地址寄存器中的地址,內存單元的真正地址。在前端匯流排上傳輸的內存地址都是物理內存地址,編號從0開始一直到可用物理內存的最高端。這些數字被北橋(Nortbridge chip)映射到實際的內存條上。物理地址是明確的、最終用在匯流排上的編號,不必轉換,不必分頁,也沒有特權級檢查(no translation, no paging, no privilege checks)。
邏輯地址:CPU所生成的地址。邏輯地址是內部和編程使用的、並不唯一。例如,你在進行C語言指針編程中,可以讀取指針變數本身值(&操作),實際上這個值就是邏輯地址,它是相對於你當前進程數據段的地址(偏移地址),不和絕對物理地址相干。
(具體步驟 共三步)
1.確定虛擬地址(物理地址)的有效位
例如:假設頁面大小1KB,共32頁。(頁面:邏輯地址 頁框:物理地址)
由32(KB)=32×1024(B) 即等於32×1024 位元組
二進制用多少位能有效表示這么多位元組呢——答是:15位 因為32×1024=2^5×2^10=2^15
2.再次確定邏輯地址頁面位數 你應該知道:邏輯地址=頁號+頁面
還是以上假設,那麼頁面大小為1KB=1024位元組 同樣的方法計算出表示位數:10位
如果給你邏輯地址:0000 1111 1000 0000
那麼由:011+11100000000(相當於 頁號+頁面(10位))推得出頁號011=3
3.根據頁號找出對應的頁框號
由 物理地址=頁框號×頁塊大小(頁塊大小是等於頁面大小的)+頁內位移(即頁面邏輯地址)
根據上面 物理地址=頁框號×1024B + 1110000000 ( 這里的相加是指位置上而言)
例如:110+110=110110(即高地址+低地址)
提問:在一分頁存儲管理系統中,邏輯地址長度為16位,頁面大小為4096B,現有一邏輯地址為2F6AH,且第0、1、2頁依次存放在物理塊5、10、11中,問相應的物理地址為多少?
答:4096B=2^12B
16位定址一共2^16B
分頁存儲。共分的頁:2^16/2^12=2^4=16 共分16頁。
第0頁的地址范圍 0 - FFFH
第1頁的地址范圍 1000H - 1FFFH
第2頁得地址范圍 2000H - 2FFFH
.....
第11頁 B000H - BFFFH
第15頁 F000H - FFFFH
2F6AH=10 1111 0110 1010 在2頁的范圍對應物理塊11
所以物理地址為:
2F6AH - 2000H + B000H = F6AH + B000H= BF6AH
9. 將邏輯地址轉換成物理地址的公式是 微機原理的
不同的微機不一樣
說8086/8088的話,是段地址(16位)左移四位,然後加上偏移地址(16位),就是20位物理地址
10. 把邏輯地址轉變為內存的物理地址的過程稱為什麼
把邏輯地址轉變為內存的物理地址的過程稱為重定位
重定位就是把程序的邏輯地址空間變換成內存中的實際物理地址空間的過程,也就是說在裝入時對目標程序中指令和數據的修改過程。他是實現多道程序在內存中同時運行的基礎。重定位有兩種,分別是動態重定位與靜態重定位。