頁式儲存管理(不連續儲存)

2021-08-20 22:18:02 字數 2013 閱讀 9179

連續儲存管理不足

對空間要求高

會形成很多碎片

通過移動技術減少碎片會增加系統的開銷

頁式儲存管理就是把記憶體物理空間劃分成大小相等的若干區域,乙個區域稱為一塊.

把邏輯位址空間劃分為大小相等的若干頁,頁大小與塊大小相等

「頁」是邏輯單位,」塊」是物理單位

邏輯位址是指由程式產生的與段相關的偏移位址部分。頁式儲存器的邏輯位址由兩部分組成:頁號和頁內位址。

總共有 總共有

220個頁

面,每個

頁面大小

為212b

ytes總共

有220個

頁面,每

個頁面大

小為212

byte

s在儲存器裡以位元組為單位儲存資訊,為正確地存放或取得資訊,每乙個位元組單元給以乙個唯一的儲存器位址,稱為實體地址,又叫實際位址或絕對位址。

實體地址=塊號x塊長+頁內位址

根據作業長度確定頁面數,裝入記憶體時,根據作業的多少頁數分配多少塊記憶體空間

「位示圖」記錄記憶體的分配情況:每一位與乙個物理塊對應,構成一張記憶體分配表(位號x字型大小)

塊號i=字型大小x字長+位號

字型大小=[i字

長 i字長

]位號=i mod 字長

頁面映像表/頁表:實現了頁號到塊號的位址映像,是位址轉換的依據

動態重定位方式裝入作業

邏輯位址

→ →

實體地址

實體地址=頁內位址(邏輯位址可知)+塊號x塊長

排程作業選擇作業後,將作業的頁表始址送入頁表控制暫存器中 → →

位址轉換時,從頁表暫存器找到相應的頁表(頁號到塊號) → →

作業執行的時候,分頁位址變換機構自動將邏輯位址分為頁號和頁內位址兩部分,根據頁號求出塊號,再按邏輯位址中的頁內位址計算出欲訪問的記憶體單元的實體地址

頁表存放在記憶體中,每取乙個資料或指令至少需要訪問記憶體兩次

第一次:訪問記憶體中的頁表,找出塊號,與頁內位址求出實體地址

第二次:根據實體地址進行資料的訪問操作

快表:利用高速緩衝暫存器存放頁表的一部分,存放在高速緩衝暫存器的這部分頁表叫「快表」

快表登記了當前執行程式中最常用的頁號與記憶體中塊號的對應關係

{資料共

享(允許

不同作業

對共享的

資料頁採

用不同的

頁號)程

序共享(

要求邏輯

位址空間

是連續的

,程式運

行前的頁

號是確定

的)共 享{

資料共享

(允許不

同作業對

共享的數

據頁採用

不同的頁

號)程式

共享(要

求邏輯地

址空間是

連續的,

程式執行

前的頁號

是確定的

)保護:通常在頁表中增加一些標誌位,指出該頁的資訊可讀/寫、唯讀、只執行、不可訪問等,在cpu執行指令時進行核對,若不合法則中斷(如對唯讀模組進行寫操作)

連續儲存陣列

include include include struct arr void init arr struct arr parr,int length 初始化 struct arr parr,int val 追加 bool insert arr struct arr parr,int pos,int...

儲存管理的主要方法之連續儲存

一。單一連續區方式 任何時候只能讓乙個作業進入記憶體使用者區,記憶體利用率比較低,適用於使用者單任務系統。二。分割槽管理 主要包括固定分割槽和動態分割槽兩種。1.固定分割槽 思想 將記憶體使用者區事先劃分成若干固定長度的儲存塊進行分配。系統劃分 資料結構 用記憶體分配表 mat表 記錄記憶體使用情況...

建立連續儲存陣列

2017年6月16日 08 45 55 資料結構 c 建立連續儲存陣列 功能 初始化 追加 插入 刪除 排序 是否空 是否滿 include include include typedef struct arr sa void init sa arr,int len void show sa arr...