基本分頁存儲管理方式
概念
內(nèi)存劃分成多個(gè)小單元,每個(gè)單元K大小断傲,稱(物理)塊肄满。作業(yè)也按K單位大小劃分成片谴古,稱為頁面质涛。為了找到被離散分配到內(nèi)存中的作業(yè),記錄每個(gè)作業(yè)各頁映射到那個(gè)物理塊 掰担,形成頁面映射表汇陆,簡稱頁表。
頁表記錄的是頁號到物理塊號的地址映射
假如要找到作業(yè)A带饱,找到頁表(通過PCB毡代,頁表位置記錄在PCB中)–>根據(jù)頁表找到物理快
頁表實(shí)際存放的位置是內(nèi)存(或者頁表寄存器中)
地址的處理方式連續(xù)方式下,每條指令用基地址+偏移地址則可找到物理地址
由上圖可以看出:頁面大小為8B(8條指令)勺疼,則頁內(nèi)地址需要三位二進(jìn)制數(shù)來表示教寂,作業(yè)大小32B,32/8=4执庐,則需要4個(gè)塊酪耕,所以在地址中取后三位表示頁內(nèi)地址,(四個(gè)頁面需要2個(gè)二進(jìn)制位表示轨淌,所以再取倒數(shù)45位作為塊地址)迂烁,括號中只是舉個(gè)例子因?yàn)椴⒉灰欢ㄊ沁B續(xù)存儲,但是原理就是如此递鹉,除去后三位其余的表示塊號盟步,例如上圖中第三頁存到了第七個(gè)塊中,則它的塊號為111(頁號與塊號的映射關(guān)系存在頁表中)
規(guī)律
作業(yè)相對地址在分頁下不同位置的數(shù)有一定的意義結(jié)構(gòu):
頁號+頁內(nèi)地址(即頁內(nèi)偏移)
關(guān)鍵的計(jì)算是:根據(jù)系統(tǒng)頁面大小找到不同意義二進(jìn)制位的分界線梳虽。
從地址中分析出頁號后,地址映射只需要把頁號改為對應(yīng)物理塊號灾茁,偏移不變窜觉,即可找到內(nèi)存中實(shí)際位置。
**注意:**一作業(yè)所有指令在用戶地址空間是順序編址
舉例說明
答:頁面大小4K=2^12北专,所以需要12位二進(jìn)制數(shù)來表示頁內(nèi)地址禀挫,作業(yè)大小32K,32/4=8拓颓,所以需要八頁(即8個(gè)塊)语婴,需要三個(gè)二進(jìn)制數(shù)表示。
這里的頁表的大小是指存塊號占的地址
訪問內(nèi)存的有效時(shí)間
進(jìn)程發(fā)出邏輯地址的訪問請求驶睦,經(jīng)過地址變換砰左,到內(nèi)存中找到對應(yīng)的實(shí)際物理地址單元并取出數(shù)據(jù),所需花費(fèi)的總時(shí)間场航,稱為內(nèi)存的有效訪問時(shí)間EAT(effective access time)
設(shè)訪問一次內(nèi)存時(shí)間為t缠导,則基本分頁機(jī)制下EAT=2t
:因?yàn)椴僮饕粭l指令需要訪問內(nèi)存兩次
減少第1步訪問內(nèi)存的時(shí)間。增設(shè)一個(gè)具有“并行查詢”能力的高速緩沖寄存器溉痢,稱為“快表”僻造,也稱“聯(lián)想寄存器”(Associative memory)憋他,IBM系統(tǒng)稱為TLB(Translation Look aside Buffer)。
此時(shí):設(shè)一次查找訪問快表時(shí)間為t’ 髓削,則
EAT= at’ + (1-a)(t’+t) + t
= 2t +t’ -ta
兩者比較:
兩級頁表
理解
當(dāng)頁表中的項(xiàng)太多竹挡,會存在一個(gè)頁表放不下的情況(畢竟頁表也是存在內(nèi)存中,當(dāng)內(nèi)存的一個(gè)塊放不開頁表立膛,就會將一個(gè)頁表分開放入兩個(gè)塊中揪罕,為了能找到這兩個(gè)頁表的位置,就引入了二級頁表旧巾,又稱為外表用來存放頁表分開后的位置)
如圖:
理解:
外頁號的取值同前邊頁號的取值一樣
每個(gè)進(jìn)程一張頁表
一張OS反置頁表+沒進(jìn)程一張外部頁表
**反置頁表:**站在物理角度耸序,記錄占用他的已調(diào)入內(nèi)存的進(jìn)程標(biāo)識和頁號。系統(tǒng)中只需要一張表即可(例如:一個(gè)64MB內(nèi)存鲁猩,若頁面大小4KB[64M/4K=2^16 ,16個(gè)物理塊]坎怪,反置頁表占用64KB(16K*4B))
**進(jìn)程外部頁表:**每個(gè)進(jìn)程一張,記錄進(jìn)程不在內(nèi)存中的那些頁面所在物理位置廓握。
**如何提高檢索反置頁表的速度:**內(nèi)存容量大時(shí)搅窿,反置頁表的頁表項(xiàng)還是會很大,利用進(jìn)程標(biāo)識符和頁號去檢索一張大的線性表很費(fèi)時(shí)隙券,可利用hash算法提高檢索速度男应。
分段
程序通過分段劃分為多個(gè)模塊,每個(gè)段定義一組邏輯信息(如代碼段娱仔,數(shù)據(jù)段沐飘,棧段)
段的特點(diǎn)
每個(gè)段有自己的名字(一般是段號),都從0編址牲迫,可分別編寫和編譯耐朴。裝入內(nèi)存時(shí)每個(gè)段賦予各段一個(gè)段號。
每個(gè)段占據(jù)一塊連續(xù)的內(nèi)存(既有連續(xù)的盹憎,又有分離的)
各段的大小不等
地址結(jié)構(gòu):段號+段內(nèi)地址
段表:記錄每段實(shí)際存放的物理地址
分頁容易造成共享和非共享數(shù)據(jù)共處一頁筛峭,不方便設(shè)置權(quán)限。
段頁式存儲
基本原理:
將用戶程序分成若干段陪每,并為每個(gè)段賦予一個(gè)段名影晓。
把每個(gè)段分成若干頁
地址結(jié)構(gòu)包括段號、段內(nèi)頁號和頁內(nèi)地址三部分