Ⅰ 如何檢查是否越界邏輯地址轉為物理地址
1. 基本地址變換機構
定義:用於實現邏輯地址到物理地址轉換的一組硬體機構
基本地址變換機構可以藉助進程的頁表將邏輯地址轉換為物理地址。
通常會在系統中設置一個頁表寄存器(PTR),存放頁表在內存中的起始地址F和頁表長度M(就相當於一個數組),進程未執行時,F和M放在進程式控制制塊(PCB)中,當進程被調度時,操作系統內核會把他們放到頁表寄存器(PTR)中。
過程描述:
進程被調度後,操作系統從PCB中取得頁表始址F和頁表長度M,放入到頁表寄存器PTR中。當程序想訪問一個邏輯地址A的時候,根據頁表大小,就可以自動算出頁號P和頁內偏移量W。
首先檢查頁號P是否合法,如果不合法,就產生一個越界中斷。如果合法,就去頁表中查詢對應的幀號b,再根據偏移量,計算出物理地址(直接把b和W按二進制拼起來就是物理地地址)
頁表長度:頁表內有多少表項。
頁表項長度:每個頁表項佔多大的內存空間。
頁面大小:一個頁面佔多大的存儲空間,頁面大小是2的整數次冪。這也確定了一個邏輯地址中,偏移量最多有多少位。
頁表項:頁表中的一個元素,PTR。
頁表在內存中的存儲,與數組類似,但不完全一樣 ,可能出現跨頁存儲的情況。
打開APP
行仔ovo
關注
操作系統學習 - 邏輯地址轉物理地址 原創
2021-06-28 15:13:35
3點贊
行仔ovo
碼齡9年
關注
文章目錄
1. 基本地址變換機構
2. 具有快表的地址變換機構
局部性原理
快表
引入快表後,地址變換過程
1. 基本地址變換機構
定義:用於實現邏輯地址到物理地址轉換的一組硬體機構
基本地址變換機構可以藉助進程的頁表將邏輯地址轉換為物理地址。
通常會在系統中設置一個頁表寄存器(PTR),存放頁表在內存中的起始地址F和頁表長度M(就相當於一個數組),進程未執行時,F和M放在進程式控制制塊(PCB)中,當進程被調度時,操作系統內核會把他們放到頁表寄存器(PTR)中。
過程描述:
進程被調度後,操作系統從PCB中取得頁表始址F和頁表長度M,放入到頁表寄存器PTR中。當程序想訪問一個邏輯地址A的時候,根據頁表大小,就可以自動算出頁號P和頁內偏移量W。
首先檢查頁號P是否合法,如果不合法,就產生一個越界中斷。如果合法,就去頁表中查詢對應的幀號b,再根據偏移量,計算出物理地址(直接把b和W按二進制拼起來就是物理地址)。
頁表長度:頁表內有多少表項。
頁表項長度:每個頁表項佔多大的內存空間。
頁面大小:一個頁面佔多大的存儲空間,頁面大小是2的整數次冪。這也確定了一個邏輯地址中,偏移量最多有多少位。
頁表項:頁表中的一個元素,PTR。
頁表在內存中的存儲,與數組類似,但不完全一樣 ,可能出現跨頁存儲的情況。
所以,最好用一個Byte把一個頁表項補齊成4Byte。這樣,一般情況下都不會產生碎片。
結論:理論上,頁表項長度為3Byte即可表示頁幀號的范圍了,但是,為了方便頁表的查詢,嘗嘗會讓一個頁表項占更多的Byte,使得每個頁面恰好可以裝得下整數個頁表項。
2. 具有快表的地址變換機構
局部性原理
時間局部性
執行了程序中的某條指令,那麼不久後這條指令很可能再次執行。如果某個數據剛剛訪問過,那麼不久後,該數據很可能再次被訪問。(因為程序中存在大量的循環)
空間局部性
程序訪問了某個內存單元,在不久之後,該內存單元附近的存儲單元也很有可能被訪問。(因為很多數據在內存中都是連續存放的)
快表
在基本地址變換機構中,每次想訪問一個物理地址,都需要到內存中去先查一下頁表,再去訪問物理地址。由於局部性的原理,這個頁表項可能很快就被再次訪問到,既然如此,能否利用局部性的原理減少頁表查詢的次數呢?
快表TLB,是一種訪問速度比內存快很多的高速緩沖存儲器,用來存放當前訪問的若干頁表項,以加速地址變換的過程。與此對應,內存中的頁表常被稱為慢表。
引入快表後,地址變換過程
每次訪問邏輯地址時,先到快表中看一下有沒有對應的幀號,如果有的話,就直接用,如果沒有,再去慢表中查詢。查詢到(命中)以後,回頭更新一下快表。再去訪問物理地址。因為快表的訪問速度比慢表的速度要快得多。所以這樣一來,效率得以提高。
(頁表寄存器PTR是個寄存器,速度也很快)
如果快表命中的話,則訪問某個邏輯地址僅需一次訪存即可(原來需要兩次,第一次是訪問頁表,頁表在內存中;第二次是訪問目標物理地址去讀數據。)。
如果快表未命中的話,仍然按照原來的方式,需要兩次訪存。
若快表已滿,則需要按照一定的演算法對舊的頁表項進行替換。
要注意的是,有的系統支持快表和慢表同時查找。
Ⅱ 8086如何將邏輯地址轉換為物理地址寫出存儲器地址1200H:3400H的段地址、偏移地址和物理地址。
實模式下,每個存儲單元分配一個惟一的20位二進制數(5位十六進制數)的存儲器地址,稱為物理地址。邏輯地址由16位二進制數(4位十六進制數)的段地址和偏移地址組成。
段首地址:5位十六進制數中的末尾1位十六進制數為0的地址,即可作為段首地址
段地址是指每一段的段首地址的高4位十六進制數,通常被保存在某個段寄存器中。
偏移地址則是指在段內相對於段首地址的偏移值,也取4位十六進制數。
所以,物理地址=段地址*10H+偏移地址
Ⅲ 邏輯地址怎麼轉化為物理地址
物理地址:載入到內存地址寄存器中的地址,內存單元的真正地址。在前端匯流排上傳輸的內存地址都是物理內存地址,編號從0開始一直到可用物理內存的最高端。
程序的邏輯地址空間變換成內存中的實際物理地址空間的過程,也就是說在裝入時對目標程序中指令和數據的修改過程。他是實現多道程序在內存中同時運行的基礎。重定位有兩種,分別是動態重定位與靜態重定位。
線性地址:
一個邏輯地址由兩部份組成,段標識符和段內偏移量。段標識符是由一個16位長的欄位組成,稱為段選擇符。其中前13位是一個索引號。這就是「段描述符(segment descriptor)」,段描述符具體地址描述了一個段(對於「段」這個字眼的理解:我們可以理解為把虛擬內存分為一個一個的段。
比如一個存儲器有1024個位元組,可以把它分成4段,每段有256個位元組)。這樣,很多個段描述符,就組了一個數組,叫「段描述符表」。
Ⅳ 邏輯地址轉換成物理地址的計算題
頁表可以實現從頁號到物理塊號的地址映射。通過邏輯地址的頁號來尋找頁表,從而獲得物理塊號;在將頁內地址直接送入物理地址寄存器的塊內地址欄位中。將塊號和塊內地址拼接成實際訪問地址,即可得到物理地址。
物理地址的計算公式為:物理地址=塊的大小(即頁的大小L)* 塊號f+頁內地址d
代入本題解答:
頁號=int(2500/1024)=2;頁內位移=2500mod1024=452;假設頁號2對應塊號1,則物理地址為:
物理地址=1024*1+452=1476
(4)怎麼把邏輯地址轉換成物理地址擴展閱讀:
邏輯地址(LogicalAddress)即通過電腦程序產生的與段相關的偏移地址部分,也叫做相對地址;
物理地址,即計算機中每一個位元組單元的唯一存儲地址,也叫做實際地址或絕對地址。
利用所給的邏輯地址首先找到在頁表中的那一頁,即頁號,再者利用所給的邏輯地址計算出在頁表的頁偏移量,從而利用頁表所對應的物理塊計算出塊號,再利用塊號的基礎上計算出所給的偏移量。(一般只針對於動態重定位的變化使用)
Ⅳ 邏輯地址如何轉換成物理地址的
首先我們知道,邏輯地址=段地址:偏移地址
然後進行運算:段地址×16+偏移地址=物理地址(可以理解為段地址末尾補一個零)
舉例:邏輯地址是1000H:1000H
那麼物理地址為1000H×16+1000H=11000H
拓展知識:
邏輯地址和物理地址的區別是:
邏輯地址(LogicalAddress)是指由程序產生的與段相關的偏移地址部分。例如,你在進行C語言指針編程中,可以讀取指針變數本身值(&操作),實際上這個值就是邏輯地址,它是相對於你當前進程數據段的地址,不和絕對物理地址相干。只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel保護模式下程序執行代碼段限長內的偏移地址(假定代碼段、數據段如果完全一樣)。應用程序員僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統編程人員涉及。應用程序員雖然自己可以直接操作內存,那也只能在操作系統給你分配的內存段操作。
物理地址(PhysicalAddress)是指出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。
Ⅵ 如果程序中的邏輯地址為3470,怎麼轉換成物理 地址
頁表的作用是實現從頁號到物理塊號的地址映射。以邏輯地址的頁號檢索頁表,得到該頁的物理塊號;同時將頁內地址d直接送入物理地址寄存器的塊內地址欄位中。這樣物理塊號和塊內地址拼接成了實際訪問內存的地址,從而完成了從邏輯地址到物理地址的轉換。所以物理地址的計算公式為:物理地址=塊的大小(即頁的大小L)′塊號f+頁內地址d解本題中,為了描述方便,設頁號為p,頁內位移為d,則:p=int(2500/1024)=2d=2500mod1024=452假設頁號2對應塊號1那麼物理地址=1024*1+452=1476
Ⅶ 操作系統中邏輯地址轉物理地址是什麼
1、確定虛擬地址(物理地址)的有效位。
2、再次確定邏輯地址頁面位數你應該知道:邏輯地址=頁號+頁面。
3、由物理地址=頁框號×頁塊大小(頁塊大小是等於頁面大小的)+頁內位移(即頁面邏輯地址)
4、根據上面物理地址=頁框號×1024B+1110000000。
5、若在一分頁存儲管理系統中,某作業的頁表如下所示。已知頁面大小為1024位元組,試將邏輯地址1011,2148,4000,5012轉化為相應的物理地址。
分析頁式存儲管理的地址結構是一維的,即邏輯地址(或物理地址)只用一個數值即可表示。若給定邏輯地址A,頁面的大小為L,則頁號p和頁內地址d可按照下式求得:
p=int[A/L]d=AmodL
其中,int是取整函數(取數值的整數部分),mod是取余函數(取數值的余數部分)。