操作系統(tǒng)——內(nèi)存離散分配

基本分頁(yè)存儲(chǔ)管理方式


概念

內(nèi)存劃分成多個(gè)小單元,每個(gè)單元K大小,稱(chēng)(物理)塊。作業(yè)也按K單位大小劃分成片,稱(chēng)為頁(yè)面。為了找到被離散分配到內(nèi)存中的作業(yè),記錄每個(gè)作業(yè)各頁(yè)映射到那個(gè)物理塊 ,形成頁(yè)面映射表,簡(jiǎn)稱(chēng)頁(yè)表。
頁(yè)表記錄的是頁(yè)號(hào)到物理塊號(hào)的地址映射
假如要找到作業(yè)A,找到頁(yè)表(通過(guò)PCB,頁(yè)表位置記錄在PCB中)–>根據(jù)頁(yè)表找到物理快
頁(yè)表實(shí)際存放的位置是內(nèi)存(或者頁(yè)表寄存器中)


地址的處理方式連續(xù)方式下,每條指令用基地址+偏移地址則可找到物理地址


由上圖可以看出:頁(yè)面大小為8B(8條指令),則頁(yè)內(nèi)地址需要三位二進(jìn)制數(shù)來(lái)表示,作業(yè)大小32B,32/8=4,則需要4個(gè)塊,所以在地址中取后三位表示頁(yè)內(nèi)地址,(四個(gè)頁(yè)面需要2個(gè)二進(jìn)制位表示,所以再取倒數(shù)45位作為塊地址),括號(hào)中只是舉個(gè)例子因?yàn)椴⒉灰欢ㄊ沁B續(xù)存儲(chǔ),但是原理就是如此,除去后三位其余的表示塊號(hào),例如上圖中第三頁(yè)存到了第七個(gè)塊中,則它的塊號(hào)為111(頁(yè)號(hào)與塊號(hào)的映射關(guān)系存在頁(yè)表中)

規(guī)律

作業(yè)相對(duì)地址在分頁(yè)下不同位置的數(shù)有一定的意義結(jié)構(gòu):

頁(yè)號(hào)+頁(yè)內(nèi)地址(即頁(yè)內(nèi)偏移)

關(guān)鍵的計(jì)算是:根據(jù)系統(tǒng)頁(yè)面大小找到不同意義二進(jìn)制位的分界線(xiàn)。

從地址中分析出頁(yè)號(hào)后,地址映射只需要把頁(yè)號(hào)改為對(duì)應(yīng)物理塊號(hào),偏移不變,即可找到內(nèi)存中實(shí)際位置。

**注意:**一作業(yè)所有指令在用戶(hù)地址空間是順序編址

舉例說(shuō)明


答:頁(yè)面大小4K=2^12,所以需要12位二進(jìn)制數(shù)來(lái)表示頁(yè)內(nèi)地址,作業(yè)大小32K,32/4=8,所以需要八頁(yè)(即8個(gè)塊),需要三個(gè)二進(jìn)制數(shù)表示。


這里的頁(yè)表的大小是指存塊號(hào)占的地址

訪問(wèn)內(nèi)存的有效時(shí)間

進(jìn)程發(fā)出邏輯地址的訪問(wèn)請(qǐng)求,經(jīng)過(guò)地址變換,到內(nèi)存中找到對(duì)應(yīng)的實(shí)際物理地址單元并取出數(shù)據(jù),所需花費(fèi)的總時(shí)間,稱(chēng)為內(nèi)存的有效訪問(wèn)時(shí)間EAT(effective access time)

設(shè)訪問(wèn)一次內(nèi)存時(shí)間為t,則基本分頁(yè)機(jī)制下EAT=2t

:因?yàn)椴僮饕粭l指令需要訪問(wèn)內(nèi)存兩次

減少第1步訪問(wèn)內(nèi)存的時(shí)間。增設(shè)一個(gè)具有“并行查詢(xún)”能力的高速緩沖寄存器,稱(chēng)為“快表”,也稱(chēng)“聯(lián)想寄存器”(Associative memory),IBM系統(tǒng)稱(chēng)為T(mén)LB(Translation Look aside Buffer)。

此時(shí):設(shè)一次查找訪問(wèn)快表時(shí)間為t’ ,則

EAT= at’ + (1-a)(t’+t) + t

= 2t +t’ -ta

兩者比較:



兩級(jí)頁(yè)表


理解

當(dāng)頁(yè)表中的項(xiàng)太多,會(huì)存在一個(gè)頁(yè)表放不下的情況(畢竟頁(yè)表也是存在內(nèi)存中,當(dāng)內(nèi)存的一個(gè)塊放不開(kāi)頁(yè)表,就會(huì)將一個(gè)頁(yè)表分開(kāi)放入兩個(gè)塊中,為了能找到這兩個(gè)頁(yè)表的位置,就引入了二級(jí)頁(yè)表,又稱(chēng)為外表用來(lái)存放頁(yè)表分開(kāi)后的位置)

如圖:


理解:

外頁(yè)號(hào)的取值同前邊頁(yè)號(hào)的取值一樣

每個(gè)進(jìn)程一張頁(yè)表

一張OS反置頁(yè)表+沒(méi)進(jìn)程一張外部頁(yè)表

**反置頁(yè)表:**站在物理角度,記錄占用他的已調(diào)入內(nèi)存的進(jìn)程標(biāo)識(shí)和頁(yè)號(hào)。系統(tǒng)中只需要一張表即可(例如:一個(gè)64MB內(nèi)存,若頁(yè)面大小4KB[64M/4K=2^16 ,16個(gè)物理塊],反置頁(yè)表占用64KB(16K*4B))

**進(jìn)程外部頁(yè)表:**每個(gè)進(jìn)程一張,記錄進(jìn)程不在內(nèi)存中的那些頁(yè)面所在物理位置。

**如何提高檢索反置頁(yè)表的速度:**內(nèi)存容量大時(shí),反置頁(yè)表的頁(yè)表項(xiàng)還是會(huì)很大,利用進(jìn)程標(biāo)識(shí)符和頁(yè)號(hào)去檢索一張大的線(xiàn)性表很費(fèi)時(shí),可利用hash算法提高檢索速度。

分段

程序通過(guò)分段劃分為多個(gè)模塊,每個(gè)段定義一組邏輯信息(如代碼段,數(shù)據(jù)段,棧段)

段的特點(diǎn)

每個(gè)段有自己的名字(一般是段號(hào)),都從0編址,可分別編寫(xiě)和編譯。裝入內(nèi)存時(shí)每個(gè)段賦予各段一個(gè)段號(hào)。

每個(gè)段占據(jù)一塊連續(xù)的內(nèi)存(既有連續(xù)的,又有分離的)

各段的大小不等

地址結(jié)構(gòu):段號(hào)+段內(nèi)地址

段表:記錄每段實(shí)際存放的物理地址





分頁(yè)容易造成共享和非共享數(shù)據(jù)共處一頁(yè),不方便設(shè)置權(quán)限。


段頁(yè)式存儲(chǔ)

基本原理:
將用戶(hù)程序分成若干段,并為每個(gè)段賦予一個(gè)段名。
把每個(gè)段分成若干頁(yè)
地址結(jié)構(gòu)包括段號(hào)、段內(nèi)頁(yè)號(hào)和頁(yè)內(nèi)地址三部分


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 基礎(chǔ)知識(shí) 1.1、 基本概念、 功能 馮諾伊曼體系結(jié)構(gòu)1、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2、順序執(zhí)...
    yunpiao閱讀 5,784評(píng)論 1 22
  • 操作系統(tǒng)對(duì)內(nèi)存的管理 沒(méi)有內(nèi)存抽象的年代 在早些的操作系統(tǒng)中,并沒(méi)有引入內(nèi)存抽象的概念。程序直接訪問(wèn)和操作的都是物...
    Mr槑閱讀 16,962評(píng)論 3 24
  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計(jì)算機(jī)的軟硬件資源,并合理的組織調(diào)度計(jì)算機(jī)的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 12,477評(píng)論 3 34
  • 你的愛(ài)是吻,卻不曾想吻出了痕跡,那便是傷害。還記得年少輕狂時(shí),我那顆叛逆的心指使我的手寫(xiě)下我行我素的這句話(huà)。兒童時(shí)...
    左小祺閱讀 504評(píng)論 3 15
  • 2017年12月20日 00:27。 想你。 夜 我寫(xiě)下最后一個(gè)字 便可以跌在黑夜 漫長(zhǎng)的夜 思念你 我試探又收回...
    煢kriya閱讀 333評(píng)論 0 5

友情鏈接更多精彩內(nèi)容