1. 程式人生 > >記憶體離散分配 分頁、分段

記憶體離散分配 分頁、分段

基本分頁儲存管理方式
本部分討論不具備對換功能的純分頁模式,作業執行需要全部裝入記憶體。

離散分配記憶體:
作業規定大小劃分成小份;記憶體也按同樣大小劃分成小份
作業的任一小份可分散放入記憶體任意未使用的小份
(分頁方式下,記憶體的使用率高,浪費少。但不是絕對沒有碎片(程序的最後一頁不總是能佔滿一個物理塊))
1)頁面的概念
記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。
① 物理劃分塊的大小 = 邏輯劃分的頁的大小
②頁面大小要適中。
太大,(最後一頁)內碎片增大,類似連續分配的問題。
太小的話,頁面碎片總空間雖然小,提高了利用率,但每個程序的頁面數量較多,頁表過長,反而又增加了空間使用。
2)頁表的概念
為了找到被離散分配到記憶體中的作業,記錄每個作業各頁對映到哪個物理塊,形成的頁面對映表,簡稱頁表。
每個作業有自己的頁表
頁表的作用:頁號到物理塊號的地址對映
要找到作業A:關鍵是找到頁表(PCB),根據頁表找物理塊
3)地址的處理
連續方式下,每條指令用基地址+偏移量即可找到其物理存放的地址。
分頁方式下地址對映(地址計算)的過程?
若要執行某作業的一條指令,其相對地址是24B (設10B一頁,頁表如右表),其實體地址到底是多少呢?
分析其所在的頁和偏移得:2號頁(頁號從0開始) ,偏移4B處是該條指令
查頁表找頁面對應的塊(2號頁儲存在6號物理塊)
找物理塊6,向下偏移4B,找到要執行的指令。取出執行即可。
計算上就是求商(頁號)及取餘(偏移量)的過程
在這裡插入圖片描述


在這裡插入圖片描述
規律
作業相對地址在分頁下不同位置的數有一定的意義結構:
頁號+頁內地址(即頁內偏移)
關鍵的計算是:根據系統頁面大小找到不同意義二進位制位的分界線。
從地址中分析出頁號後,地址對映只需要把頁號改為對應物理塊號,偏移不變,即可找到記憶體中實際位置。
注意:一作業所有指令在使用者地址空間是順序編址
重要引數:系統頁面大小=8B,指令大小=1B
計算口訣:
頁面大小決定偏移量(頁內地址)的位數 n;
作業大小頁面數量
頁表長度 a
頁號的位數 m(或總位數-頁內位數)
記憶體容量決定塊數,塊數決定編址位數,即頁表項位數 b。
4)地址變換機構
暫存器。一個程序有n個頁,頁表就需要記錄n項資料,需要n個暫存器。不現實。
記憶體。只設置一個頁表暫存器PTR(page table register)記錄頁表在記憶體中的首地址和頁表長度,執行時快速定位頁表。
地址變換過程:
分頁系統中,程序建立,放入記憶體,構建頁表,在PCB中記錄頁表存放在記憶體的首地址及頁表長度。
1.執行某程序A時,將A程序PCB中的頁表資訊寫入PTR中;
2.每執行一條指令時,根據分頁計算原理,得到指令頁號X和內部偏移量Y;
3.CPU高速訪問PTR找到頁表在哪裡?
為防止錯誤檢索,增加預先的判斷:
計算得到的頁號是否大於頁表長度(即頁表項數)
一個5頁的程序,頁面編號0-4,若地址計算出的頁號不在該範圍,一定產生了越界錯誤。
4.查頁表資料,得到X實際對應存放的物理塊,完成地址對映計算,最終在記憶體找到該指令。
在這裡插入圖片描述

訪問記憶體的有效時間
程序發出邏輯地址的訪問請求,經過地址變換,到記憶體中找到對應的實際實體地址單元並取出資料,所需花費的總時間,稱為記憶體的有效訪問時間EAT(effective access time)
設訪問一次記憶體時間為t,則基本分頁機制下EAT=2t,因為:
CPU操作一條指令需訪問記憶體兩次:
訪問記憶體中的頁表(以計算指令所在的實際實體地址)
訪問指令記憶體地址
5)引入快表——針對訪問速度問題
問題:基本分頁機制下,一次指令需兩次記憶體訪問,處理機速度降低1/2,分頁空間效率的提高以如此的速度為代價,得不償失。
改進:減少第1步訪問記憶體的時間。增設一個具有“並行查詢”能力的高速緩衝暫存器,稱為“快表”,也稱“聯想暫存器”(Associative memory),IBM系統稱為TLB(Translation Look aside Buffer)。
快表放什麼?
正在執行程序的頁表的資料項。
引入快表後的記憶體訪問時間如何?
快表的暫存器單元數量是有限的,不能裝下一個程序的所有頁表項。雖不能完全避免兩次訪問記憶體,但如果命中率a高還是能大幅度提高速度。
設一次查詢訪問快表時間為t’ ,則
EAT= at’ + (1-a)(t’+t) + t= 2t +t’ -t
a
在這裡插入圖片描述
6)兩級、多級頁表,反置頁表——針對大頁表佔用記憶體問題
頁表大小的討論
程序分頁離散存放,但頁表的資料是連續在存放記憶體的。而頁表可能很大:
現代作業系統支援非常大的邏輯地址空間的程序。如32位系統,可編址的最大程式碼數為232,若頁面大小為4KB(4*210),則支援的最大程序頁表項數可達碼232/212=220,有1M個,每個頁表項佔1B(位元組),則頁表大小就有1MB。
①兩級頁表
將頁表分頁,並離散地將頁表的各個頁面分別存放在不同的物理塊中
為離散分配的頁表再建立一張頁表,稱為“外層頁表”,其每個表項記錄了頁表頁面所在的物理塊號。
兩級頁表下的地址格式:(4K 頁面、兩級頁表下的地址結構舉例)
在這裡插入圖片描述
在這裡插入圖片描述
②多級頁表
64位作業系統下,兩級仍然不足以解決頁表過大問題時,可按同樣道理繼續分頁下去形成多級頁表。
4.基本分段儲存管理方式
未完待續……

相關推薦

第四章 記憶體離散分配 分段

連續分配方式:一個程序連續的裝進記憶體一個大小合適的區。  “碎片”  “緊湊”  增大開銷 如果允許一個程序直接分散裝入多個不相鄰分割槽中,則無需“緊湊” 產生儲存管理的離散分配方式。

記憶體離散分配 分段

基本分頁儲存管理方式 本部分討論不具備對換功能的純分頁模式,作業執行需要全部裝入記憶體。 離散分配記憶體: 作業規定大小劃分成小份;記憶體也按同樣大小劃分成小份 作業的任一小份可分散放入記憶體任意未使用的小份 (分頁方式下,記憶體的使用率高,浪費少。但不是絕對沒

4.3-4.4記憶體離散分配 分段

一.基本分頁儲存管理方式 1.頁面的概念 記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。 a. 物理劃分塊的大小 = 邏輯劃分的頁的大小 b.頁面大小要適中。 太大,(最後一頁)內碎片增大,類似連續分配的問題。 太小的

作業系統第四章記憶體離散分配 分段

記憶體離散分配 分頁、分段 比較連續分配方式 作業邏輯地址空間有M大,就需要向記憶體申請一個M大的連續區域。 分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。 1)頁面的概念 記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小

記憶體離散分配分段

連續分配方式:一個程序連續的裝進記憶體一個大小合適的區。“碎片”  “緊湊”  增大開銷如果允許一個程序直接分散裝入多個不相鄰分割槽中,則無需“緊湊”產生儲存管理的離散分配方式。 基本分頁儲存管理 比較連續分配方式作業邏輯地址空間有M大,就需要向記憶體申請一個M大的連續區域。分頁的目的是更細粒度的處理

作業系統記憶體分配分段的區別

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

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

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

分段和段式儲存管理方式

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

作業系統記憶體管理(分段

分段分段本是由於8086是16位匯流排,為定址20位記憶體地址而增加的。在32位作業系統中,分段依然有用。1)段描述符:描述該段的安全屬性,為一個64位長的值。在實地址模式中,只需要使用段暫存器(CS,DS,SS和ES)就可以了,每個段暫存器都是16位的,對應於地址匯流排中的

11.連續分配分段三種儲存分配機制的優缺點

連續,設計簡單,直接定址,效率高。缺點:記憶體利用效率最低,有內部碎片。分頁,設計最複雜,容易產生外部碎片,無論資料有多少,都只能按照頁面大小分配,造成浪費。分段,程式設計師在程式設計和使用上多方面的要

作業系統 第四章 記憶體離散分配 分段--筆記*2

頁表筆記補充 每個程序一張頁表 一張OS反置頁表+沒程序一張外部頁表 **反置頁表:**站在物理角度,記錄佔用他的已調入記憶體的程序標識和頁號。系統中只需要一張表即可(例如:一個64MB記憶體,若頁面大小4KB[64M/4K=2^16 ,16個物理塊],反置頁

list記憶體擷取

 /**      * 設定記憶體分頁資料      * @param begin      * @param end      * @param list      * @return       */     public List setListPageDate(In

作業系統員動態記憶體分配————式儲存

4.3 知識點3:基本分頁儲存管理方式4.3.1 要點歸納1. 基本分頁儲存管理的原理在分割槽儲存管理中,要求把作業放在一個連續的儲存區中,因而會產生許多碎片,固定分割槽會產生內部碎片,動態分割槽會產生外部碎片。儘管通過拼接技術可以解決碎片問題,但代價較高。分頁儲存管理允許將作業存放到許多不相鄰接的記憶體區域

分段記憶體的區別

今天看了一下linux0.01的核心開發。雖然僅有8000行的程式碼。但涉及的知識面還是有點多。但萬事開頭難嘛。現在和大家分享一下在網上看到的一篇記憶體分頁和分段的區別。感覺看了這篇文章能對這方面有個較為直觀的印象了。一. 分頁儲存管理1.基本思想使用者程式的地址空間被劃分

Python之路65-Django自定義

python目錄一、XSS二、分頁1三、分頁2四、分頁3一、XSS有下面一段代碼,想將這段代碼中的字符串渲染到HTML頁面中,默認Django是不能這樣去操作的views.pydef user_list(request): page_str = """ <a href="/use

分段

分頁;分段一,分頁 1,基本思想 用戶程序的地址空間被劃分成若幹固定大小的區域,稱為“頁”,相應地,內存空間分成若幹個物理塊(稱為"幀"),頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。 2,地址結構 頁號 - 頁內位移量 頁號4位,每個作業最多

Laravel 自定義可以調整顯示數目

wid ima subst es2017 cti 選擇 admin custom -m {{-- 增加輸入框,跳轉任意頁碼和顯示任意條數 --}} <ul class="pagination pagination-sm"> <li>

Django Restful Framework【第五篇】視圖路由渲染器

framework 增刪改查 format conf apn register ali dmi elf 一、分頁 試問如果當數據量特別大的時候,你是怎麽解決分頁的? 方式a、記錄當前訪問頁數的數據id 方式b、最多顯示120頁等 方式c、只顯示上一頁,下一頁,不讓選擇頁

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

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

rest-framework框架 -- 解析器路由

表示 color 組件 elf post data ... rest art rmp 解析器 :reqest.data取值的時候才執行 對請求的數據進行解析:是針對請求體進行解析的。表示服務器可以解析的數據格式的種類 django中的發送請求 #如果是這樣的格式發送的數據