1. 程式人生 > >頁式管理--實體地址計算問題小結

頁式管理--實體地址計算問題小結

本篇總結的起因是:2010年真題裡面的一道小題。
簡述就是:頁式管理,頁號20位,頁內偏移12位,按照位元組編址。一個程式碼段的起始邏輯地址是0000,8000H,長度是8KB,被裝載到從實體地址0090,0000H開始的連續主存空間中。頁表從主存0020,0000H開始的實體地址處連續存放。計算該程式碼段對應的兩個頁表項的實體地址,頁框號和程式碼頁面2的實體地址(頁面1,2連續存放)。

這道題目不是第一次看到了,那麼每次都覺得想不通是為什麼呢?今天終於發現:我每次都是從實體地址0090,0000H加8KB後得到頁面2的實體地址。然後:

8KB=213B,將213加到0090,0000H上,然後得到的是0090,2000H。因為16進位制下,000表達的最高位權重是211
再繼續往下做結果都是錯的。
那麼這麼加的問題出在哪裡了呢?
我們知道位元組是遞增編號,當前這個編號是0090,2000H,再跨度8K個位元組,加起來為什麼恰恰是錯誤的結果呢?

答案是,這種加法根本就是沒錯的!給定一個基址br,跨度δ後,下一個地址是br+δ是最樸素的數學加法怎麼會錯呢對吧!
錯的是,應該加的是4KB,而不是8KB。
這麼明顯的錯卻總是忽略。當前的0090,0000H指向的是頁面首地址,那麼下一個頁面的地址自然是跨度一個頁面大小的位置,肯定是+4K啊!

這便是本篇的重點,注意這個加和的細節,包括在計算頁表項實體地址也是如此。

這道題目的全解:0090,0000H + 4K = 0090,1000H

這裡還想強調的是,000H,共12位可以表示212B,高位是211

因為低位12位是頁內偏移,因此頁框號分別是:00900H,00901H。

再回看頁表項的儲存。基址是0020,0000H,由起始的邏輯地址0000,8000H,可以得到虛擬頁號是:00008H。頁表項從0開始編號,那麼00008是第八個頁表項。所以實體地址是:0020,0000H + 8 * 4B = 0020,0020H,下一個頁表項的地址是:0020,0024H,因為一個頁表項佔用4B.

最後這段計算頁表項的地址的切入點值得深入思考,即:頁表項從0開始編號,所以知道虛擬頁的頁號就可以斷定它記錄在哪一個頁表項了,再由實體地址可以得到具體的頁表項的儲存位置。
以上。

相關推薦

管理--實體地址計算問題小結

本篇總結的起因是:2010年真題裡面的一道小題。 簡述就是:頁式管理,頁號20位,頁內偏移12位,按照位元組編址。一個程式碼段的起始邏輯地址是0000,8000H,長度是8KB,被裝載到從實體地址0090,0000H開始的連續主存空間中。頁表從主存0020,0

易學筆記-系統分析師考試-第3章 作業系統基本原理/3.3 記憶體管理/3.3.3 段管理

分頁式儲存管理 概念:為了避免分割槽式管理產生儲存碎片和管理複雜的問題,分頁式管理把作業的邏輯地址劃分成若干個相等的區域(稱為頁),記憶體空間也劃分成若干個與頁長度相等的區域(也稱為頁幀或塊),然後把頁裝載到頁幀中 特點 頁幀可以是連續的,也可以是不連續的

記憶體管理第一談:段式管理管理

 對於記憶體管理這個作業系統中龐大的體系,實在是容易讓人望而止步,市面上介紹這塊知識的書籍其實很多,但是由於書面語言的緣故,總感覺有些東西晦澀難懂,先後看過的書籍有《作業系統基本原理》、《linux核心完全註釋》、《深入理解linux核心》、《linux核心原始碼情景分析》

80386的分段機制、分機制和實體地址的形成

注:本分類下文章大多整理自《深入分析linux核心原始碼》一書,另有參考其他一些資料如《linux核心完全剖析》、《linux c 程式設計一站式學習》等,只是為了更好地理清系統程

linux記憶體管理---實體地址、線性地址、虛擬地址、邏輯地址之間的轉換

CPU的頁式記憶體管理單元,負責把一個線性地址,最終翻譯為一個實體地址。從管理和效率的角度出發,線性地址被分為以固定長度為單位的組,稱為頁(page),例如一個32位的機器,線性地址最大可為4G,可以用4KB為一個頁來劃分,這頁,整個線性地址就被劃分為一個tatol_page[2^20]的大陣列,共有2的20

c模擬 管理頁面置換演算法之FIFO

寫的作業系統作業。。。。 放上來給需要的小夥伴 需要注意的地方: 1.該演算法只涉及單程序 2.只是用c模擬FIFO的思想 FIFO思想:選擇在記憶體中存活時間最久的頁面淘汰 關於該演算法我的理解: 一個程序可以分為多個頁面,頁面大小一致,每個頁面需要佔用一個相同大小的記憶體塊,在程序的頁面較多而記憶體塊較少

linux記憶體管理-段式和管理

該博文參考國嵌視訊和http://www.cnblogs.com/image-eye/archive/2011/07/13/2105765.html,在此感謝作者。 一、地址型別 實體地址:CPU通過地址匯流排的定址,找到真實的實體記憶體對應地址。   邏輯地址:程式

linux核心--段管理記憶體的方法

一、概念 實體地址(physical address) 用於記憶體晶片級的單元定址,與處理器和CPU連線的地址匯流排相對應。 ——這個概念應該是這幾個概念中最好理解的一個,但是值得一提的是,雖然可以直接把實體地址理解成插在機器上那根記憶體本身,把記憶體看成一 個從0位元組一

作業系統 虛擬儲存地址變換

#include "stdio.h" #define n 64 /*模擬實驗中假定的頁表長度,即最多允許程式含有多少頁;假定頁面大小為1K*/ #define length 10 struct { int lnumber;/*頁號*/ int flag; /*表示該頁

作業系統記憶體管理——分割槽、、段式、段管理

1. 記憶體管理方法         記憶體管理主要包括虛地址、地址變換、記憶體分配和回收、記憶體擴充、記憶體共享和保護等功能。  2. 連續分配儲存管理方式 連續分配是指為一個使用者程式分配連續的記憶體空間。連續分配有單一連續儲存管理和分割槽式儲管理兩種方式。 2

記憶體管理中,邏輯地址,線性地址實體地址的區別

虛擬記憶體(Virtual Memory) 是指計算機呈現出要比實際擁有的記憶體大得多的記憶體量。因此它允許程式設計師編制並執行比實際系統擁有的記憶體大得多的程式。這使得許多大型專案也能夠在具有有限記憶體資源的系統上實現。一個很恰當的比喻是:你不需要很長的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵

C語言作業系統——地址變換(邏輯地址轉為實體地址

本次程式碼分享較為簡單,主要是二進位制與十六進位制之間的轉換。還是一個工程檔案中包含一個頭檔案和一個功能檔案和主函式檔案,瀟小白在這裡就不再次介紹啦!程式碼如下:標頭檔案,pag_trans.h#include <stdio.h>#include <stri

實驗二 第一題 模擬分儲存管理中硬體的地址轉換和產生缺中斷

#include<iostream> #include<iomanip> using namespace std; struct yebiao {int sign; long zhucunkuaihao;long cipanweizhi; yeb

基本分儲存管理方式中關於邏輯地址實體地址的轉換

分析頁式儲存管理的地址結構是一維的,即邏輯地址(或實體地址)只用一個數值即可表示。若給定邏輯地址A,頁面的大小為L,則頁號p和頁內地址d可按照下式求得:   p=int [A/L]d=A mod L   其中,int是取整函式(取數值的整數部分),mod是取餘函式

實驗三、地址重定位模擬

pau clu length ostream 應用程序 turn 系統 iostream pre 實驗三、頁式地址重定位模擬 一、實驗目的: 1、 用高級語言編寫和調試模擬實現頁式地址重定位。 2、 加深理解頁式地址重定位技術在多道程序設計中的作用和意義。 二、實驗原理

操作系統筆記(十)內存管理之分,分段和段

分段式內存管理 筆記 關系 代碼 保護 系統 長度 段頁式內存管理 bit 基本內存管理: 進程占用空間必須連續,導致外部碎片以及附加的compaction 整個進程的swap in 和 swap out十分耗時。 解決:分頁 ->內存空間不必連續,無外部碎片,

linux記憶體管理---虛擬地址 邏輯地址 線性地址 實體地址的區別(一)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

儲存邏輯地址實體地址

分頁儲存邏輯地址轉實體地址: 例題:已知某個分頁系統,頁面大小為1K(即1024位元組),某一個作業有4個頁面,分別裝入到主存的第3、4、6、8塊中,求邏輯地址2100對應的實體地址。 頁號 物理塊號 0 3

儲存管理方式

基本分頁儲存管理方式 (1)頁面與頁表:頁面將一個程序的邏輯地址空間分成若干個大小相等的片,分頁地址中頁號和頁內地址的計算P=INT[A/L],d=[A] MOD L;頁表:系統為每個程序建立了一張頁面映像表簡稱頁表; (2)地址變換機構:實現從邏輯地址到實體地址的轉換  

作業系統 第四章 3 分、分段、段儲存管理 +作業題

一、分頁儲存管理方式 1、(物理)塊:記憶體劃分成多個小單元,每個單元K大小         頁面:作業也按K單位大小劃分成片         物理劃分塊的大小 = 邏輯劃分的頁的大小