操作系统之内存管理:4、基本地址变换机构(段氏、页式、段页式)
4、基本地址變換機(jī)構(gòu)
- 頁式
- 1、頁式
- 硬件實(shí)現(xiàn)流程
- 地址變化步驟
- 例
- 問題
- 2、頁式+快表
- 什么是快表?
- 引入快表后地址變換步驟
- 引入快表后的硬件實(shí)現(xiàn)
- 快表無法裝入完整的慢表,達(dá)到高命中率的基礎(chǔ)原理是什么?-------->局部性原理
- 有無快表的對(duì)比:
- 3、兩級(jí)頁表
- 單級(jí)頁表存在的問題
- 二級(jí)頁表的邏輯地址結(jié)構(gòu)
- 二級(jí)頁表的硬件實(shí)現(xiàn)(解決第一個(gè)問題)
- 二級(jí)頁表如何實(shí)現(xiàn)地址轉(zhuǎn)換?
- 第二個(gè)問題的解決?
- 什么叫各級(jí)頁表大小不能超過一個(gè)頁面?
- 段氏
- 什么叫分段?
- 如何確定進(jìn)程的每個(gè)段在內(nèi)存中存放的位置?--------->段表
- 段氏硬件實(shí)現(xiàn)流程
- 內(nèi)存訪問次數(shù)
- 分段、分頁管理的對(duì)比
- 段頁式
- 段氏和頁式的缺點(diǎn)
- 如何確定進(jìn)程的每個(gè)段在內(nèi)存中存放的位置?--------->段表+頁表
- 段頁式管理的邏輯地址結(jié)構(gòu)
- 段頁氏硬件實(shí)現(xiàn)流程
頁式
1、頁式
硬件實(shí)現(xiàn)流程
需要進(jìn)行倆次內(nèi)存訪問
地址變化步驟
例
問題
2、頁式+快表
什么是快表?
快表:就是高速緩存cache,訪問速度快于內(nèi)存,造價(jià)高于內(nèi)存
所以:cache的容量小于內(nèi)存,
cache和快表(TLB)的區(qū)別:TLB 中只有頁表項(xiàng)的副本,而普通 Cache 中可能會(huì)有其他各種數(shù)據(jù)的副本
引入快表后地址變換步驟
什么叫快表和慢表同時(shí)查找?
就是在訪問快表的同時(shí)也訪問慢表,所以在上面的例子中可以節(jié)省一秒時(shí)間
引入快表后的硬件實(shí)現(xiàn)
假如:
第一次訪問(0,0),檢查越界后查詢快表,未命中,查詢頁表,并將該頁表項(xiàng)復(fù)制到快表,訪問物理地址。(訪問兩次內(nèi)存)
第二次訪問(0,4),檢查越界后查詢快表,命中,直接訪問物理地址(訪問一次內(nèi)存)
第三次訪問(0,8),檢查越界后查詢快表,命中,直接訪問物理地址(訪問一次內(nèi)存)
快表無法裝入完整的慢表,達(dá)到高命中率的基礎(chǔ)原理是什么?-------->局部性原理
有無快表的對(duì)比:
3、兩級(jí)頁表
單級(jí)頁表存在的問題
由于段氏內(nèi)存分配的一個(gè)優(yōu)點(diǎn)就是可以進(jìn)行非連續(xù)的存儲(chǔ),但是當(dāng)我們采用頁式存儲(chǔ)的時(shí)候,邏輯地址與頁表項(xiàng)需要建立一一對(duì)應(yīng)的關(guān)系,當(dāng)邏輯地址太多時(shí),就需要一片很長的連續(xù)空間進(jìn)行頁表存儲(chǔ),這樣就喪失了非連續(xù)存儲(chǔ)的優(yōu)勢(shì)。因此,提出了二級(jí)頁表的概念。
二級(jí)頁表的邏輯地址結(jié)構(gòu)
二級(jí)頁表的硬件實(shí)現(xiàn)(解決第一個(gè)問題)
我們可以類比于一級(jí)頁表,一級(jí)頁表可以將一個(gè)程序分頁存儲(chǔ)到不同不連續(xù)的內(nèi)存單元。那二級(jí)頁表其實(shí)就是將一級(jí)頁表分頁存儲(chǔ)到不同不連續(xù)的內(nèi)存單元,即將一級(jí)頁表再分頁。這樣就可以解決第一個(gè)問題了。
二級(jí)頁表如何實(shí)現(xiàn)地址轉(zhuǎn)換?
就是先用一級(jí)頁表查到二級(jí)頁表存放的位置,在從二級(jí)頁表查到物理地址。相對(duì)于一級(jí)頁表的方式,就是多了一步頁表查詢的過程。
第二個(gè)問題的解決?
見下篇博客:操作系統(tǒng)之內(nèi)存管理:5、虛擬存儲(chǔ)技術(shù)
什么叫各級(jí)頁表大小不能超過一個(gè)頁面?
其中,二級(jí)頁表在沒有快表時(shí)需要進(jìn)行3次內(nèi)存的訪問才能找到實(shí)際的物理地址。n級(jí)頁表需要訪問n+1次。
段氏
什么叫分段?
1、當(dāng)我們寫一個(gè)程序時(shí)會(huì)有一個(gè)main()函數(shù),已經(jīng)一系列的子函數(shù);那么分段的意思就是:按照完整的自身邏輯結(jié)構(gòu)(比如一個(gè)函數(shù))將一個(gè)程序劃分成多個(gè)塊,然后將不同的塊存儲(chǔ)到不同不連續(xù)的內(nèi)存段中。(如上圖所示),一個(gè)函數(shù)名就對(duì)應(yīng)一個(gè)斷號(hào)。
2、用戶要對(duì)分段存儲(chǔ)的程序進(jìn)行數(shù)據(jù)的訪問時(shí),需要有倆個(gè)參數(shù):第一個(gè)是段名,第二個(gè)是段內(nèi)偏移量,所以稱段氏的地址空間是二維的
3、段是信息的邏輯單位。分頁的主要目的是更好地滿足用戶需求。。分段對(duì)用戶是可見的,用戶編程時(shí)需要顯式地給出段名。
如何確定進(jìn)程的每個(gè)段在內(nèi)存中存放的位置?--------->段表
我們可以通過邏輯地址與段表,段表與物理地址的映射關(guān)系實(shí)現(xiàn)從邏輯地址到物理地址的轉(zhuǎn)化
段氏硬件實(shí)現(xiàn)流程
首先用短號(hào)與段表寄存器對(duì)比查看是否越界;
未越界則查找段表中對(duì)應(yīng)的段表項(xiàng)
然后段內(nèi)地址與段長對(duì)比,判斷是否越界
未越界則查找物理地址
假如現(xiàn)在要查找:(2,1024),未越界則查找到段基址:40K,在加上偏移量:1K,所以最終的物理地址為41K處
內(nèi)存訪問次數(shù)
分段、分頁管理的對(duì)比
假如現(xiàn)在程序有三個(gè)段:0,1,2;第二段可共享;用段氏就很容易實(shí)現(xiàn)共享;若采用頁式:
可能出現(xiàn)一頁中一部分可共享,一部分不可共享的情況。
段頁式
段氏和頁式的缺點(diǎn)
如何確定進(jìn)程的每個(gè)段在內(nèi)存中存放的位置?--------->段表+頁表
段頁式和段氏中的段表存儲(chǔ)字段不同。
段頁式管理的邏輯地址結(jié)構(gòu)
段頁氏硬件實(shí)現(xiàn)流程
不使用快表時(shí)內(nèi)存訪問次數(shù):每次地址轉(zhuǎn)化都需要訪問內(nèi)存3次。
總結(jié)
以上是生活随笔為你收集整理的操作系统之内存管理:4、基本地址变换机构(段氏、页式、段页式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端基础-html-表格的结构标签(了解
- 下一篇: 自定义View相关