㈠ 邏輯地址轉換成物理地址的計算題
頁表可以實現從頁號到物理塊號的地址映射。通過邏輯地址的頁號來尋找頁表,從而獲得物理塊號;在將頁內地址直接送入物理地址寄存器的塊內地址欄位中。將塊號和塊內地址拼接成實際訪問地址,即可得到物理地址。
物理地址的計算公式為:物理地址=塊的大小(即頁的大小L)* 塊號f+頁內地址d
代入本題解答:
頁號=int(2500/1024)=2;頁內位移=2500mod1024=452;假設頁號2對應塊號1,則物理地址為:
物理地址=1024*1+452=1476
(1)物理地址塊內地址怎麼算擴展閱讀:
邏輯地址(LogicalAddress)即通過電腦程序產生的與段相關的偏移地址部分,也叫做相對地址;
物理地址,即計算機中每一個位元組單元的唯一存儲地址,也叫做實際地址或絕對地址。
利用所給的邏輯地址首先找到在頁表中的那一頁,即頁號,再者利用所給的邏輯地址計算出在頁表的頁偏移量,從而利用頁表所對應的物理塊計算出塊號,再利用塊號的基礎上計算出所給的偏移量。(一般只針對於動態重定位的變化使用)
㈡ 磁碟的物理地址如何確定
磁碟的物理地址由柱面號C、磁頭號H和扇區號S確定。在已知硬碟邏輯地址即邏輯扇區號LS的情況下,求硬碟對應的物理地址的柱面號C、磁頭號H和扇區號S的方法如下:
C=((Ls div NS)div NH)+ C1
H=((Ls div NS)mod NH)+ H1
S=(Ls mod NH)+ S1
實例:設硬碟的磁頭號為4,每磁軌17個扇區,其中邏輯硬碟D的第一個扇區在硬碟的柱面120、磁頭1、扇區1上,求邏輯D盤上邏輯扇區為2757編號對應的物理地址是多少?
分析:根據上面的已知條件,可知C1=120, H1=1,S1=1,NS=17,NH=4,Ls=2757,則將這些數據代入上面的公式可得:
C=((2757 div 17)div 4)+120=160
H=((2757 div 17)mod 4)+1=3
S=(2757 mod 17)+1=4
即邏輯扇區號Ls為2757的硬碟對應的物理地址為柱面號是160、磁頭號是3和扇區號為4。
(2)物理地址塊內地址怎麼算擴展閱讀
在早期的硬碟中,由於每個磁軌的扇區數相等,外磁軌的記錄密度遠低於內磁軌,因此造成很多磁碟空間的浪費。為了解決這一問題,人們改用等密度結構,即外圈磁軌的扇區比內圈磁軌多。
此種結構的硬碟不再具有實際的3D參數,定址方式也改為以扇區為單位的線性定址,這種定址模式便是LBA(Logic Block Address,邏輯塊地址)。在這種模式下,硬碟的物理地址與邏輯地址的轉換問題有一定必要性和復雜性。
所謂邏輯地址(邏輯扇區,LBA)是物理地址(物理扇區,C/H/S)的一組連續數字的編號,操作系統採用的一種扇區編號方式,其編號是從0開始到某個最大值方式排列,並連成一條線。使用邏輯地址主要有以下兩個優點:
第一,邏輯地址的概念使硬碟的讀寫操作脫離了柱面、磁頭和扇區的硬體參數;
第二,在硬碟中,每一定數目的扇區組成了數據文件的最小單位——簇,在對一個具體的簇進行讀寫操作時,操作系統劃分一個一維的邏輯地址號要比使用三維物理地址簡單很多,如果一個簇的扇區跨越在兩個碟片,則使用「柱面、磁頭和扇區」的表示方法就更加復雜。
㈢ 物理地址的演算法
「H」表示16進制。
物理地址的計算方法是 段地址×10H+偏移地址,所以你說的物理地址是CS×10H+IP=FE00H×10H+0200H=FE000H+0200H=FE200H。
㈣ 什麼是邏輯地址和物理地址
有網友問到我:什麼是邏輯地址和物理地址?怎麼轉換?針對此問題,我為大家分享了具體的操作 方法 ,希望對你有幫助!
什麼是邏輯地址是指由程式產生的和段相關的偏移地址部分。例如,你在進行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. 物理地址作用是什麼
㈤ 操作系統的物理地址怎麼計算
其實第一條回答是正確的,我在這里為網友們追加一個解釋:
按照書上定義,在頁式存儲系統中,
絕對地址 = 塊號 x塊長 +業內偏移地址。
相對地址 由一段內存的高bit位作為頁號,低bit位作為頁內偏移地址
那重要的一點是,如果找出這三個變數。且看該題:
每頁1KB,說明了,業內偏移地址的范圍是0~1023byte 換句話說,頁內偏移地址佔16bit中的 0-9bit, 那按照相對地址的概念,那10-15 bit就該為頁號地址了。
那麼, 0x0A5C <=> 0000 1010 0101 1100
則前面 0000 10 這6個bit 表示頁號,換算成十進制為 2,也即是頁號為2,再按照頁表推算,即物理塊號就為4, 而4再換算成16進制,即是0001 00;而後面 10 0101 1100 這10個bit位,理所當然的為頁內偏移地址了。 則物理地址就該為0001 00 (占據10-15bit)+ 10 0101 1100 (占據0-9bit) = 0001 0010 0101 1100
他的所謂憑接,其實就是讓0001 00 佔用bit 10-15.
㈥ 8086如何計算的物理地址
8086中含有存儲器。存儲器中每一個單元的地址可以用兩種方法表示:
1.邏輯地址:其表達形式為「段地址:段內偏移地址」。
2.物理地址:CPU與存儲器進行數據交換時在地址匯流排上提供的20位地址信息稱為物理地址。
物理地址=段地址×10H+段內偏移量
註:H為16進制,CS :代碼段寄存器,
㈦ 邏輯地址為,的實際物理地址是多少
要知道頁號、塊號才能計算。邏輯地址=頁號+頁內地址;物理地址=塊號+頁內地址。
在網路底層的物理傳輸過程中,是通過物理地址來識別主機的,它一般也是全球唯一的。比如,著名的乙太網卡,其物理地址大小是48bit(比特位),前24位是廠商編號,後24位為網卡編號,如:44-45-53-54-00-00,以機器可讀的方式存入主機介面中。
乙太網地址管理機構(IEEE)將乙太網地址,也就是48比特的不同組合,分為若干獨立的連續地址組,生產乙太網網卡的廠家就購買其中一組,具體生產時,逐個將唯一地址賦予乙太網卡。
(7)物理地址塊內地址怎麼算擴展閱讀:
一個邏輯地址由兩部份組成,段標識符和段內偏移量。段標識符是由一個16位長的欄位組成,稱為段選擇符。其中前13位是一個索引號。
引號可以理解為數組的下標——而它將會對應一個數組,就是「段描述符(segment descriptor)」,段描述符具體地址描述了一個段(對於「段」可以理解為把虛擬內存分為一個一個的段)。
比如一個存儲器有1024個位元組,可以把它分成4段,每段有256個位元組)。這樣,很多個段描述符,就組了一個數組,叫「段描述符表」,這樣,可以通過段標識符的前13位,直接在段描述符表中找到一個具體的段描述符,這個描述符就描述了一個段。
㈧ 操作系統-物理地址計算
答:邏輯地址0A5C(H)所對應的二進製表示形式是:0000 1010 0101 1100 ,由於1K=2^10,下劃線部分前的編碼為000010,表示該邏輯地址對應的頁號為2。查頁表,得到物理塊號是4(十進制),即物理塊地址為:0001 0010 0000 0000 ,拼接塊內地址0000 0000 0101 1100,得0001 0010 0101 1100,即125C(H)。
㈨ 邏輯地址轉換物理地址公式
物理地址是明確的、最終用在匯流排上的編號。那麼邏輯地址轉物理地址怎麼轉?我為大家介紹邏輯地址轉物理地址的解決 方法 。希望大家喜歡。
邏輯地址轉換物理地址公式參考如下
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