1. 程式人生 > >作業系統儲存管理之頁式儲存管理深入淺出

作業系統儲存管理之頁式儲存管理深入淺出

用分割槽方式管理的儲存器,每道程式總是要求佔用主存的一個或幾個連續儲存區域,作業或程序的大小仍受到分割槽大小或記憶體可用空間的限制,因此,有時為了接納一個新的作業而往往要移動已在主存的資訊。這不僅不方便,而且開銷不小。採用分頁儲存器既可免去移動資訊的工作,又可儘量減少主存的碎片。

分頁式儲存管理的基本原理如下:
1. 頁框:實體地址分成大小相等的許多區,每個區稱為一塊(又稱頁框 page frame);
2. 頁面:邏輯地址分成大小相等的區, 區的大小與塊的大小相等,每個區稱一個頁面(page)。
3. 邏輯地址形式:與此對應,分頁儲存器的邏輯地址由兩部分組成:頁號和單元號。
使用者程序在記憶體空間中的每個頁框內的地址是連續的,但頁框和頁框之間的地址可以不連續
4. 頁表和地址轉換:在進行儲存分配時,總是以塊(頁框)為單位進行分配,一個作業的資訊有多少頁,那麼在把它裝入主存時就給它分配多少塊。但是,分配給作業的主存塊是可以不連續的,即作業的資訊可按頁分散存放在主存的空閒塊中,這就避免了為得到連續儲存空間而進行的移動。

動態重定位技術

為了確保頁式虛擬地址能正確地變換成頁框實體地址,我們使用動態重定位技術。
程式的指令執行時作地址變換,由於程式段以頁為單位,所以,我們給每個頁設立一個重定位暫存器,這些重定位暫存器的集合便稱頁表(page table)

頁表

  • 頁表中的每一欄指明瞭程式中的一個頁面和分得的頁框(塊)的對應關係,每當選中作業執行時,應進行儲存分配,為進入主存的每個使用者作業建立一張頁表,指出邏輯地址中頁號與主存中塊號的對應關係,頁表的長度隨作業的大小而定,具體如下圖所示:
    這裡寫圖片描述
    假設邏輯地址為A,頁面大小為L,則頁號和頁內地址為:
    頁號=A/L
    頁內地址=A%L
    下面展示了使用者程式所佔有的特定頁,然後根據頁號通過頁表找到塊號,再索引到實際實體記憶體位置的簡略過程圖:
    這裡寫圖片描述

    在這個過程裡,我們省略了從頁表到具體實體記憶體的索引原理,下面我們對此進行解析。

作業表

  • 通常為了減少開銷,不是用硬體,而是在主存中開闢儲存區存放頁表,系統中另設一個頁表主存起址和長度控制暫存器(page table control register),存放當前執行作業的頁表起址和頁表長,以加快地址轉換速度。
  • 在建立頁表同時,頁式儲存管理系統還建立一張作業表,將這些作業的頁表進行登記,每個作業在作業 表中有一個登記項,它的結構如下所示:
    這裡寫圖片描述

重定位具體實現

藉助於硬體的地址轉換機構,在作業執行過程中按頁動態定位。排程程式在選擇作業後,從作業表的登記項中得到被選中作業的頁表始址和長度,將其送入硬體設定的頁表控制暫存器。地址轉換時,只要從頁表控制暫存器就可以找到相應的頁表,再按照邏輯地址中的頁號作索引查頁表,得到對應的塊號,根據關係式:
絕對地址 = 塊號×塊長 + 單元號


計算出欲訪問的主存單元的地址。因此,雖然作業存放在若干個不連續的塊中,但在作業
執行中總是能按正確的地址進行存取。

總結過程,特定作業開始執行->從作業表登記項找到作業的頁表始址和長度->通過頁表暫存器找到對應頁表->按邏輯地址頁號作索引表,得到對應塊號(實際實體地址)
下圖給出了頁式儲存管理的地址轉換和儲存保護:
這裡寫圖片描述

根據地址轉換公式:塊號×塊長+單元號,在實際進行地址轉換時,只要把邏輯地址中的單元號作為絕對地址中的低地址部分,而根據頁號從表中查得的塊號作為絕對地址中的高地址部分,就組成了訪問主儲存器的絕對地址。
具體而言,即是將指令中的邏輯地址(p,d)取來從中得到邏輯頁號(p),硬體機構按此頁號查頁表,得到記憶體的塊號B’,便形成絕對地址(B’,d),處理器即按此地址訪問主存。

下面我們可以通過下面的題目進一步理解頁式儲存:

  1. 分頁系統的頁長為1KB,虛擬地址0x3C8F對應的頁號為_,頁內地址為_

    答:1KB = 8000b,轉換為16進位制,為0x400,則:
    頁號=3C8F / 400 = 15,
    頁內地址=3C8F % 400 = 8F

  2. 在一個分頁儲存管理的系統中,頁長為4KB,某一作業的頁表如下所示,虛擬地址3000對應實體地址_,12000對應_

    頁號 頁幀號
    0 3
    1 4
    2 6

    3000對應的頁號=3000/4096=0,頁幀號為3(查表),
    頁內地址=3000 % 4096=3000,對應的實體地址為3 * 4096 + 3000 = 15288
    12000對應的頁號=12000 / 4096 = 2,頁幀號為6(查表),
    頁內地址=12000 % 4096 = 3808,對應的實體地址為6 * 4096 + 3808 = 28384

  3. 某頁式儲存管理系統,頁內地址為11位,邏輯地址總長度為16位,實體地址長度為32位.假設某作業的大小為5000位元組,依次分配的頁面為3,7,9.請畫出頁表,並簡單敘述邏輯地址4500的地址轉換過程

    答,頁表如下:

    頁號 頁幀號
    0 3
    1 7
    2 9

    頁內地址為11位【塊內地址(也叫塊內位移)長度與頁內地址相等 也是11位】 則每頁大小為2^11=2KB 邏輯地址長16位 所以頁號有16-11=5位 那麼最多有2^5=32頁。
    對於邏輯地址4500轉換,0d4500 = 0b1000110010100 (13位)
    後面11位是頁內地址那麼頁號就是前面的兩位了 是0b10,也就是二進位制的0d2,根據頁表,對應的塊號是9 轉換成二進位制即1001 即塊號是1001,取邏輯地址後11位,與塊號組合,得到實體地址:0b100100110010100=0d18836

相關推薦

作業系統儲存管理儲存管理深入淺出

用分割槽方式管理的儲存器,每道程式總是要求佔用主存的一個或幾個連續儲存區域,作業或程序的大小仍受到分割槽大小或記憶體可用空間的限制,因此,有時為了接納一個新的作業而往往要移動已在主存的資訊。這不僅不方便,而且開銷不小。採用分頁儲存器既可免去移動資訊的工作,又可儘

軟考(四)——儲存管理儲存

       之前在總結作業系統這部分知識點的時候,發現儲存這部分的東西比較有意思,所以想把它單拿出來整理下,以便之後的學習,其實很簡單,下面我們來看下它是有多簡單的呢? 儲存管理        作業

儲存管理、段式、段儲存

首先看一下“基本的儲存分配方式”種類:        1.  離散分配方式的出現 由於連續分配方式會形成許多記憶體碎片,雖可通過“緊湊”功能將碎片合併,但會付出很大開銷。於是出現離散分配方式

儲存管理、段式、段儲存 以及 優缺點

記憶體管理方式主要分為:頁式管理、段式管理和段頁式管理。 頁式管理的基本原理是將各程序的虛擬空間劃分為若干個長度相等的頁。把記憶體空間按頁的大小劃分為片或者頁面,然後把頁式虛擬地址與記憶體地址建立一一對應的頁表,並用相應的硬體地址轉換機構來解決離散地址變換問題。頁式管理採用

spring事物管理宣告事務管理的xml配置

spring宣告式事務管理:xml配置如下 <!--  ================== 事務管理 ================== -->     <bean name="transactionManager"         class="or

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

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

求職筆記-作業系統-分段式儲存管理、分儲存管理的區別?

分頁式儲存管理 使用者程式的邏輯地址空間被劃分為若干個固定大小的地址空間,稱為“頁”,記憶體實體地址空間也分成相對應的若干個物理塊,頁和塊的大小相等,可將使用者程式的任一頁放在任一塊中,實現離散分配 。有效提高記憶體利用率。 分段式儲存管理 將使用者程

作業系統:虛擬儲存管理(缺中斷、頁面置換演算法)

1、基本工作原理 1、基本工作原理 在程序開始執行之前,不是全部裝入頁面,而是裝入一個或者零個頁面,之後根據程序執行的需要,動態裝入其他頁面;當記憶體已滿,而又需要裝入 新的頁面時,則根據某種演算法淘

c++ 計算機作業系統虛擬儲存管理系統模擬實現

本系統裸機上模擬硬體開始,進行了對計算機虛擬頁式儲存管理系統的模擬,通過對記憶體、外存、儲存管理部件、缺頁中斷機構等硬體的模擬,以及對程序的PCB,頁表等軟體結構的模擬,以請求分頁的方式,實現了先來先服

儲存管理(模擬作業系統

最近作業系統課程實踐要求,我們模擬頁式儲存管理,起初自己很沒有思路,但是在詳細的畫出整個的流程的時候自己還是發現了一些規律,並且發現可以陣列和佇列進行模擬,我在自己寫程式的時候用的是陣列模擬的,當然在程式中,也會有很多的陣列表示各種要記錄的東西,這就要求你對頁式儲存管理要相

儲存管理方式

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

實驗(三) 請求儲存管理

#include<bits/stdc++.h> using namespace std; typedef long long LL; #define INF 0x3f3f3f3f #define SIZE 1<<8 //地址流數上限 #define MAXN 32

請求儲存管理中頁面置換演算法的java實現

        儲存管理的主要功能之一是合理地分配空間。請求頁式管理是一種常用的虛擬儲存管理技術。         模擬頁式虛擬儲存管理中硬體的地址轉換和缺頁中斷,並用先進先出排程演算法(FIFO)處理缺頁中斷。 &nb

儲存管理2-與段式儲存管理

頁式儲存管理 計算機儲存的層次結構:暫存器,快取記憶體cache,主儲存器DRAM,DDRAM,外部儲存器 分割槽是程序的連續儲存;以下是分散儲存 原理:實體記憶體劃分許多固定大小的塊,稱物理頁面,

虛擬記憶體-儲存管理演算法

在請求分頁儲存管理系統中,由於使用了虛擬儲存管理技術,使得所有的程序頁面不是一次性地全部調入記憶體,而是部分頁面裝入。 這就有可能出現下面的情況:要訪問的頁面不在記憶體,這時系統產生缺

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

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

段式和儲存管理試題及答案(整理)

1、段式和頁式儲存管理的地址結構很類似,但是它們有實質上的不同,以下錯誤的是(D)       A.頁式的邏輯地址是連續的,段式的邏輯地址可以不連續       B.頁式的地址是一維的,段式的地址是二維的       C.分頁是作業系統進行的,分段是使用者確定的       D.頁式採用靜態重定位方式,段式

java實現儲存管理

基本框架 page.java //page類 package pagedStorageManagement; public class page { private int pageNumber;//頁號 private

分段,分與段儲存管理

一.  分頁儲存管理 1.基本思想 使用者程式的地址空間被劃分成若干固定大小的區域,稱為“頁”,相應地,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現了離散分配。 1)      等分記憶體 頁式儲存管理將記憶體空間

、分段和段儲存管理方式

1.分頁管理   分頁儲存管理是將一個程序的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,併為各頁加以編號,從0開始,如第0頁、第1頁等。相應地,也把記憶體空間分成與頁面相同大小的若干個儲存塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如0