內存儲器物理地址的計算
㈠ 存儲器地址的段地址、偏移地址和物理地址
1、(1)段地址:2314H,偏移地址:0035H,物理地址:23175H
(2)
段地址:1FD0H,偏移地址:00A0H,物理地址:1FDA0H2、依次為85H~8CH,計算公式:有效地址=物理地址-DS*16。由於是16位機,一次處理數據16位,即2位元組,這里有8個位元組,所以,要訪問4次。
㈡ 什麼是邏輯地址什麼是物理地址在實模式下,如何求存儲器的物理地址假設一個
邏輯地址和物理地址的區別是:
邏輯地址(Logical Address) 是指由程序產生的與段相關的偏移地址部分。例如,你在進行C語言指針編程中,可以讀取指針變數本身值(&操作),實際上這個值就是邏輯地址,它是相對於你當前進程數據段的地址,不和絕對物理地址相干。只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel 保護模式下程序執行代碼段限長內的偏移地址(假定代碼段、數據段如果完全一樣)。應用程序員僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統編程人員涉及。應用程序員雖然自己可以直接操作內存,那也只能在操作系統給你分配的內存段操作。
物理地址(Physical Address) 是指出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。
虛擬內存(Virtual Memory)是指計算機呈現出要比實際擁有的內存大得多的內存量。因此它允許程序員編制並運行比實際系統擁有的內存大得多的程序。這使得許多大型項目也能夠在具有有限內存資源的系統上實現。一個很恰當的比喻是:你不需要很長的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就可以完成這個任務。採取的方法是把後面的鐵軌立刻鋪到火車的前面,只要你的操作足夠快並能滿足要求,列車就能象在一條完整的軌道上運行。這也就是虛擬內存管理需要完成的任務。在Linux 0.11內核中,給每個程序(進程)都劃分了總容量為64MB的虛擬內存空間。因此程序的邏輯地址范圍是0x0000000到0x4000000。有時我們也把邏輯地址稱為虛擬地址。因為與虛擬內存空間的概念類似,邏輯地址也是與實際物理內存容量無關的。 邏輯地址與物理地址的「差距」是0xC0000000,是由於虛擬地址->線性地址->物理地址映射正好差這個值。這個值是由操作系統指定的。
㈢ 計算機的物理地址是用多少位表示的
計算機的物理地址是用20位表示的。
物理地址指的是在存儲器里以位元組為單位存儲信息,為正確地存放或取得信息,每一個位元組單元給以一個唯一的存儲器地址,稱為物理地址(Physical Address),又叫實際地址或絕對地址。
地址從0開始編號,順序地每次加1,因此存儲器的物理地址空間是呈線性增長的。它是用二進制數來表示的,是無符號整數,書寫格式為十六進制數。
它是出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果。用於內存晶元級的單元定址,與處理器和CPU連接的地址匯流排相對應。
在實地址方式下,物理地址是通過段地址乘以16加上偏移地址得到的。而16位的段地址乘以16等同於左移4位二進制位,這樣變成20位的段基地址,最後段基地址加上段內偏移地址即可得到物理地址。
20位物理地址計算方法如下:
物理地址=段地址*16d+偏移地址
㈣ 操作系統的物理地址怎麼計算
其實第一條回答是正確的,我在這里為網友們追加一個解釋:
按照書上定義,在頁式存儲系統中,
絕對地址 = 塊號 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.
㈤ 若某存儲器容量為2KB,在計算機存儲系統中,其起始地址為2000H:3000H,請計算出該存儲器物理地址的范圍。
存儲器容量為2KB,其地址范圍就是0000H~07FFH。
其起始地址為2000H:3000H,該存儲器物理起始地址就是23000H。
那麼,末尾地址:237FFH。
㈥ 邏輯地址轉換成物理地址的計算題
頁表可以實現從頁號到物理塊號的地址映射。通過邏輯地址的頁號來尋找頁表,從而獲得物理塊號;在將頁內地址直接送入物理地址寄存器的塊內地址欄位中。將塊號和塊內地址拼接成實際訪問地址,即可得到物理地址。
物理地址的計算公式為:物理地址=塊的大小(即頁的大小L)* 塊號f+頁內地址d
代入本題解答:
頁號=int(2500/1024)=2;頁內位移=2500mod1024=452;假設頁號2對應塊號1,則物理地址為:
物理地址=1024*1+452=1476
(6)內存儲器物理地址的計算擴展閱讀:
邏輯地址(LogicalAddress)即通過電腦程序產生的與段相關的偏移地址部分,也叫做相對地址;
物理地址,即計算機中每一個位元組單元的唯一存儲地址,也叫做實際地址或絕對地址。
利用所給的邏輯地址首先找到在頁表中的那一頁,即頁號,再者利用所給的邏輯地址計算出在頁表的頁偏移量,從而利用頁表所對應的物理塊計算出塊號,再利用塊號的基礎上計算出所給的偏移量。(一般只針對於動態重定位的變化使用)
㈦ 什麼是邏輯地址什麼是物理地址
邏輯地址: 是指由程序產生的與段相關的偏移地址部分。又稱絕對地址。
物理地址:在存儲器里以位元組為單位存儲信息,為正確地存放或取得信息,每一個位元組單元給以一個唯一的存儲器地址,稱為物理地址,又叫實際地址或絕對地址。
一、關系:邏輯地址和物理地址相對的。物理地址是唯一的,邏輯地址的相對的。
二、表達方式:
1、邏輯地址:其表達形式為「段地址:段內偏移地址」。
2、物理地址:CPU與存儲器進行數據交換時在地址匯流排上 。
(7)內存儲器物理地址的計算擴展閱讀:
一、邏輯地址的產生背景
追根求源,Intel的8位機8080CPU,數據匯流排(DB)為8位,地址匯流排(AB)為16位。那麼這個16位地址信息也是要通過8位數據匯流排來傳送,也是要在數據通道中的暫存器,以及在CPU中的寄存器和內存中存放的,但由於AB正好是DB的整數倍,故不會產生矛盾!
但當上升到16位機後,Intel8086/8088CPU的設計由於當年IC集成技術和外封裝及引腳技術的限制,不能超過40個引腳。但又感覺到8位機原來的地址定址能力2^16=64KB太少了,但直接增加到16的整數倍即令AB=32位又是達不到的。
故而只能把AB暫時增加4條成為20條。則2^20=1MB的定址能力已經增加了16倍。但此舉卻造成了AB的20位和DB的16位之間的矛盾,20位地址信息既無法在DB上傳送,又無法在16位的CPU寄存器和內存單元中存放。於是應運而生就產生了CPU段結構的原理。
二、物理地址的計算方法
在實地址方式下,物理地址是通過段地址乘以16加上偏移地址得到的。而16位的段地址乘以16等同於左移4位二進制位,這樣變成20位的段基地址,最後段基地址加上段內偏移地址即可得到物理地址。
20位物理地址計算方法如下:
物理地址=段地址*16d+偏移地址。
㈧ 內部RAM中 位所在位元組的位元組地址的計算
單片機內部RAM中低128位元組的20H~2FH共16個位元組可以用位定址方式訪問其各位。共128個位地址為00H~7FH。假設位地址為48H,那麼單元地址=48H/8+20H=29H。特殊功能寄存區中有的可以位定址,用查表法,就可以得到,例如90H,查表得到,對應的位元組地址為90H。
低128位元組中的00H~1FH共32個單元通常作為工作寄存器區;30H~37H共80個單元為用戶RAM去,作堆棧或數據緩沖;80H~7FH單元組成高128位元組的專用寄存器區,也就是特殊功能寄存區。它們零散地分布在其中,並沒有占滿所有地址空間,對空閑地址的操作是無意義的。
(8)內存儲器物理地址的計算擴展閱讀
MCS-51單片機存儲器結構介紹:
MCS-51單片機存儲器採用哈佛結構(har-vard),在物理結構上分為程序存儲器空間和數據存儲器空間,細分為:片內、片外程序存儲器和片內、片外數據存儲器。
這4個存儲空間存在地址沖突問題:數據存儲器與程序存儲器的64KB地址空間重疊;程序存儲器中片內與片外的低4KB地址重疊;數據存儲器中片內與片外最低的256B(8031僅有低128B)地址重疊。
在程序存儲器中,片內地址某些單元存儲空間,留給系統使用。片內數據存儲器共256B地址空間,分為低128B和高128B。
低128B又分為工作寄存器區、位定址區和用戶RAM區;高128B又叫特殊功能寄存器,這些寄存器的功能具有專門的規定,用戶不能修改其結構。存儲器中共有11個可位定址的位地址。其中,片內數據存儲器中有128個;特殊功能寄存器中有83個。
㈨ 內存單元物理地址怎麼計算,如內存單元偏移地址為20C0H,DS=0C00EH,求物理地址,主要是計算過程、、、
要相信自己,明顯答案錯了
㈩ 微機內存儲器的地址是按位元組編址的是什麼意思
按照位元組編址,每個內存單元的地址,不稱為物理地址而是線性地址,線性地址通過CPU內存管理單元(MMU)來進行轉換
32位cpu地址線擁有32根,定址能力達到4GB,而P4處理器的地址線則擁有35根,可以定址更大的空間。但是實際內存達不到CPU的定址空間大小,此時CPU的MMU就需要對線性地址進行向物理地址的轉化,此時線性地址就和物理地址不一樣了。
決定一個內存單元的物理地址時需要根據當前的內存管理方式進行計算,首先根據虛擬地址計算得到線性地址,然後根據分頁機制是否打開,如果沒有使用分頁機制,線性地址就是物理地址,如果打開分頁機制則根據頁目錄和頁表項來計算得物理地址。
按照x86 32位處理器,虛擬地址就是程序中所使用的邏輯地址,虛擬地址計算如下:
首先通過查段選擇子寄存器(16位模式下成為段基址寄存器,比如讀取數據用DS寄存器)中選擇子的第2位,0則從全局描述符表(GDT,Global Descriptor Table)1則從局部描述符表(LDT Local Descriptor Table)。全局描述符從GDTR寄存器找到描述符表的物理基地址(後稱簡稱為GDTBA,GDT Base Address),然後GDTBA + DS & 0xFFF8得到的地址就是該選擇子指向的描述符,然後根據描述符中記錄的段基址 + 偏移(可以是指令中的地址碼,也可是si,di中的數值)就得到了線性地址(Linear Address),而局部則有些不同,因為LDTR中放的不是局部描述符表的物理基地址,而是在全局描述符表的一個描述符選擇子。首先會計算LDT的物理基地址,方法同上,然後再計算描述符地址,最後計算成Linear Address.如果沒打開分頁,這個就可以是物理地址了。如果打開分頁機制,還要做Linear Address 到物理地址的轉化(Physical Address)。
線性地址是32位,高十位是頁目錄項索引,中間十位是頁表項索引,最後12位是頁內偏移,當然這是在選用4KB小頁的情況,大頁是4MB,則後22位都是頁內偏移。頁目錄物理基地址存放在CR3中,共有1024項,因此用線性地址高10位作索引,找到相應的頁目錄項。在小頁模式中,該項保存的是頁表的高20位地址,因為頁表只有4KB,所以低12位不需要。通過線性地址中間十位作頁表項索引和頁表基址進行計算得到頁表項,該項中保存的物理頁面的基址,基址加上線性地址低12位頁內偏移,就得到了物理地址。在大頁模式中,就省去了查頁表這一步驟。