(操作系统题目题型总结)第四章:存储管理
文章目錄
- 費翔林操作系統課后題
- 思考題
- 應用題
費翔林操作系統課后題
思考題
1.試述存儲管理的基本功能(★★★)
【答案】
- 存儲分配:為進程分配內存空間以便運行,完成內存區的分配和回收工作
- 地址映射:為了使編程更加方便,程序員寫程序時應該只需要關注指令、數據和邏輯地址,而無需關心物理內存的實際情況,實際轉換應該交給操作系統負責
- 存儲保護:系統負責隔離分配給進程的內存區,使之互不干擾、免遭破壞,確保進程對存儲單元的獨占式使用,防止地址越界或操作越權
- 存儲共享:為了節省內存空間和實現進程通信,系統允許多個進程共享內存區
- 存儲擴充:操作系統把內存和外存結合起來,進程一個容量近似外存、速度近似內存的虛擬存儲器。允許用戶的邏輯地址空間大于內存的物理地址空間,虛存管理自動在內存和外存之間移動信息
2.試述計算機系統中的存儲器層次,為什么要配置層次式存儲器(★★★)
【答案】
采用層次結構的存儲子系統可以在容量大小、速度快慢、價格高低等因素取得一個平衡點,獲得較好的性價比。計算機系統的存儲器層次結構自上而下分為:寄存器、緩存、內存、磁盤、磁帶5層,存儲介質的訪問速度自上而下越來越快,容量越來越小,價格越來越高
3:什么是邏輯地址和物理地址
【答案】
邏輯地址:程序員視角中看到的地址
物理地址:數據在主存中真實的地址、
4:何謂地址轉換(重定位)?哪些方法可以實現地址轉換(★★★)
【答案】
可執行程序邏輯地址轉換為物理地址的過程稱之為地址重定位
- 靜態地址重定位:由裝載程序實現裝載代碼模塊的加載和地址轉換,把它裝入分配給進程的內存指定區域,其中所有邏輯地址修改為內存物理地址
- 動態地址重定位:由裝載程序實現裝載代碼模塊的加載,把它再裝入分配個進程的內存指定區域,但對鏈接程序處理過的應用程序的邏輯地址則不做任何修改,程序內存起始地址被置入硬件專用寄存器——重定位寄存器
- 運行時鏈接地址重定位:現代操作系統通常支持動態鏈接系統庫及運行時鏈接裝載方式,不再要求啟動執行程序時就已裝載整個程序的所有目標模塊
5.分區存儲管理中常采用哪些分配策略?比較其優缺點?(★★★)
①:單一連續分配
②:固定分區分配
③:動態分區分配
6.什么是移動技術?在什么情況下采用這種技術?
【答案】
當在未分配區表中找不到足夠大的空閑區來裝入新進程時,可以采用移動技術把已經在內存中的進程分區連接在一起,使分散的空閑區匯集成片,也叫內存緊湊。第一種方法是把所有當前占用的分區內容移動到內存的一端;第二種方法是把占用分區內容移動到內存的一端,但是當產生足夠大的空閑區時就停止移動
7.若采用表格方式管理可變分區,試繪制分配和釋放一個存儲區的算法流程圖
【答案】
假設進程A請求xxxKB的內存區
8.什么是存儲保護?在分區存儲管理中如何實現分區的保護(★★★)
【答案】
分區保護的目的是防止未經核準的用戶訪問分區
- 上界/下界寄存器保護:界寄存器中存放的是作業的裝入地址,下界寄存器裝入的是作業的結束地址,形成的物理地址必須滿足上界寄存器<=物理地址<=下界寄存器
- 基址/限長寄存器保護:基址寄存器中存放的是作業的裝入地址,限長寄存器裝入的是作業長度,形成的物理地址必須滿足基址寄存器<=物理地址<基址寄存器+限長寄存器
9.什么是虛擬存儲器?列舉采用虛擬存儲技術的必要性和可能性(★★★)
【答案】
虛擬存儲器是指在具有層次結構存儲器的計算機系統中,具有請求調入和交換功能,為用戶提供一個比實際物理內存容量大得多的可尋址的一種存儲器系統,它能從邏輯上對內存容量進行擴充
- 必要性:
- 可能性:根據程序的局部性定理,應用程序在執行之前,沒有必要全部裝入內存,而只需要將那些當前要運行的部分頁或段先裝入內存即可運行,其余部分可以仍然留在外存。程序在執行時,如果它所訪問的頁(段)已經調入內存,便可繼續執行下去
10.試述請求分頁虛存管理的實現原理(★★★)
【答案】
請求分頁虛存管理是將進程信息副本存放外存,當它被調度投入運行時,程序和數據沒有全部裝入內存,僅當裝入當前使用頁面,進程執行過程中訪問到不在內存的頁面時,再由系統自動調入。用得較多的分頁虛存管理是請求分頁,當需要執行某條指令或使用某個數據而發現它們不在內存時產生缺頁異常,系統從磁盤中把此指令或數據所在的頁面調入,這樣做能夠保證用不到的頁面不會被裝入內存
11.分頁虛存管理中有哪幾種比較常見的頁面淘汰算法
【答案】
- OPT:最優算法
- FIFO:先進先出算法
- PageBuf:頁面緩沖算法
- LRU:近期最少用算法
- NRU:最近未使用算法
- NFU:最不經常使用算法
- aging:老化算法
- SCR:第二次機會算法
- Clock1:時鐘算法
- Clock2:改進型時鐘算法
- ws:工作集算法
- PDFF:缺頁頻率替換算法
12.試比較分頁虛存管理和分段虛存管理(★★★)
【答案】
13.試述幾種存儲保護方法
【答案】
- 界地址保護:上下界保護,地址檢查機構和基址、限長寄存器和動態地址轉換機構。
- 存儲鍵保護
14.試述存儲管理中的碎片。列出各種存儲管理方法中可能產生何種碎片(★★★)
【答案】
- 內部碎片:在一個分區內部出現的碎片叫做內部歲批判。比如固定分區就會產生內部碎片
- 外部碎片:在所有分區之外新增的碎片叫做外部碎片。比如在動態分區法中出現的越來越多的小空閑塊就是外部碎片
15.試述分頁存儲管理中決定頁面大小的主要因素
- 頁面大小的設置主要因素是與系統的硬件有關
- 如果頁面較小,虛存的頁面數就增加,頁表也隨著擴大,占用的空間多,但內
碎片小,浪費少;如果頁面較大,可以減少頁表所耗費的存儲空間,有利于提高IO 的效率,但內部碎片大,浪費多
16.實現虛擬存儲必須要有哪些軟硬件支持
【答案】
- 硬件:Cache
- 軟件:局部性原理
17.如果內存中的某頁正在與外部設備交換信息,那么當發生缺頁中斷時,可以將這一頁淘汰嗎?有什么解決方法
【答案】
不可以。
18.為什么在頁式存儲器中實現程序共享時,必須對共享程序給出相同的頁號
【答案】
實現程序共享時,由于頁式存儲結構要求邏輯地址空間是連續的,共享程序若含有轉移指令,這些轉移指令的轉移地址是確定的,所以在程序運行前共享程序的頁號必須是確定的
19.在段式存儲器中實現程序共享時,共享段的段號是否一定相同?
【答案】
不用。幾道作業共享的例行程序可放在一個段中,只要讓各道作業的共享部分有相同的基址/限長值就行了,共享的段號不一定相同
20.試述段頁式存儲器的優缺點
【答案】
- 優點:段頁式存儲分配方式既照顧到了用戶共享和使用方便的需求,又考慮到了主存的利用率,提高了系統的性能
- 缺點:段頁式存儲分配方式的空間浪費要比頁式管理的多。作業各段的最后一頁都有可能浪費一部分空間。另外段表和頁表占用的空間都比頁式和段式的多,這樣就增加了系統開銷
21.什么是抖動?請給出抖動的例子(★★★)
【答案】
在請求分頁存儲管理中,可能出現這種情況,即對剛被替換出去的頁,立即又要被訪問。需要將它調入,因無空閑內存又要替換另一頁,而后者又是即將被訪問的頁,于是造成了系統需花費大量的時間忙于進行這種頻繁的頁面交換,致使系統的實際效率很低,嚴重導致系統癱瘓,這種現象稱為抖動現象
抖動現象發生在FIFO頁面置換算法中,FIFO還會產生Belady現象,因而FIFO并不是一個好的置換算法。
22.在可變分區存儲管理中回收一個分區時有多種不同的鄰接情況,試討論各種情況的處理方法
【答案】
- 回收分區的上鄰分區是空閑的:需要將兩個相鄰的空閑區合并成一個更大的空閑區,然后修改空閑區表
- 回收分區的下鄰分區是空閑的:需要將兩個相鄰的空閑區合并成一個更大的空閑區,然后修改空閑區表
- 回收分區的上、下鄰分區都是空閑的:需要將三個空閑區合并成一個更大的空閑區,然后修改空閑區表
- 回收分區的上、下鄰分區都不是空閑的:則直接將空閑區記錄在空閑區表中。
23.在請求分頁存儲管理中,如果把進程的頁框數增加一倍,那么缺頁中斷次數會減少至一半嗎?
【答案】
當然不一定是一半,這還得取決于操作系統內核的相關結構以及實際運行情況。因為系統中,缺頁中斷次數和頁面大小有些關系,但并不只取決于頁面大小,還跟系統總內存總量等很多因素有關,當系統內存不足時,會發生頁面交換,此時也會產生很多次缺頁中斷,但與頁面大小就沒有太大關系了
24.試討論虛擬存儲器容量與地址總線寬度、內存容量及外存容量之間的關系(★★★)
【答案】
虛存的最大容量由CPU的地址長度決定。虛存的實際容量由CPU的地址長和外存的容量決定,當CPU的地址長度能表示的大小遠遠大于外存容量時,虛存的實際容量為內存和外存容量之和;當外存容量遠大于CPU字長能表示的大小時,虛存的實際容量由CPU字長決定。一般情況下,CPU的地址長度能表示的大小都大于外存容量
25.分頁存儲管理中大頁面與小頁面各自特點
【答案】
- 如果頁面較小,虛存的頁面數就增加,頁表也隨著擴大,占用的空間多,但內
碎片小,浪費少 - 如果頁面較大,可以減少頁表所耗費的存儲空間,有利于提高IO 的效率,但內部碎片大,浪費多
26.試述缺頁中斷與一般中斷之間的區別
【答案】
范圍不同
- 一般中斷只需要保護現場,然后就直接跳到需及時處理的地方
- 缺頁中斷除了保護現場之外,還要判斷內存中是否有足夠的空間存儲所需的頁或段,然后再把所需頁調進來再使用
結果不同
- 一般中斷在處理完之后返回時,執行下一條指令
- 缺頁中斷返回時,執行產生中斷的那一條指令
次數不同
- 在指令執行期間產生和處理缺頁中斷信號,一條指令在執行期間,可能產生多次缺頁中斷
- 一般中斷只產生一次,發生中斷指令后轉入相應處理程序進行處理,恢復被中斷程序現場
1.程序運行的基本原理
2.鏈接方式
3.裝入方式
4.動態分區分配算法
5.分頁中頁框和頁的關系
6.分頁管理地址轉換
7.分頁邏輯地址結構
8.程序訪問的局部性原理
9.兩級頁表
10.分頁分段各自優缺點
11.頁面置換算法總結
12.駐留集
應用題
【答案】
【答案】
(1)首次適應算法
12KB選中分區3,這時分區3還剩8KB。10KB選中分區1,恰好分配故應刪
去分區1。9KB選中分區4,這時分區4還剩9KB
(2)最佳適應算法
12KB選中分區7,恰好分配故應刪去分區7。10KB 選中分區1,恰好分配故
應刪去分區1。9KB選中分區6,恰好分配故應刪去分區6。
(3)最差適應算法
12KB選中分區3,這時分區3還剩8KB。10KB選中分區4,這時分區4還
剩8KB。9KB選中分區8,這時分區8還剩6KB
(4)下次適應算法
12KB選中分區3,這時分區3還剩8KB。10KB選中分區4,這時分區4還
剩8KB。9KB選中分區6,恰好分配故應刪去分區6。
【答案】
由題目可知,頁內偏移量占12位,故一個頁面大小為212=42^{12}=4212=4KB,共有2202^{20}220個頁面
【答案】
數據如果在緩存了,那么直接訪問;如果不在緩存,需要裝入
- 數據在緩存中的比率為:n?1n\frac{n-1}{n}nn?1?
- 數據在內存中的比率為:(1?n?1n)×m?1m=m?1nm(1-\frac{n-1}{n})×\frac{m-1}{m}=\frac{m-1}{nm}(1?nn?1?)×mm?1?=nmm?1?
- 數據在輔存中的比率為:(1?n?1n)×(1?m?1m)=1nm(1-\frac{n-1}{n})×(1-\frac{m-1}{m})=\frac{1}{nm}(1?nn?1?)×(1?mm?1?)=nm1?
- 平均訪問時間為==(n?1n×A)+(m?1nm×(A+B))+(1nm×(A+B+C))=A+Bn+Cnm(\frac{n-1}{n}×A)+(\frac{m-1}{nm}×(A+B))+(\frac{1}{nm}×(A+B+C))=A+\frac{B}{n}+\frac{C}{nm}(nn?1?×A)+(nmm?1?×(A+B))+(nm1?×(A+B+C))=A+nB?+nmC?
【答案】
(1)2.4us
(2)0.8×1.2+0.2×2.4=1.24us
將下列段號和位數轉化為對應物理地址
【答案】
- <0,430>:649
- < 3,400>:1727
- <1,1>:2301
- <2,50>:由于140>90,越界
- <4,4>:1956
【答案】
首先將邏輯地址11123456轉為二進制,也即001 001 001 010 011 100 101 110,由于頁面大小為1KB,因此后10位作為偏移量,即1100101110。主存大小為2182^{18}218B,所以主存塊為256塊,因此這里100(八進制)=001000000是合法的地址,接著與后10位拼接,形成地址001000000 1100101110,故物理地址為201456(八進制)
【答案】
由題意可知,頁號部分占用4位。2F6A對應的二進制為:0010 1111 0110 1010,又因為其對應的物理塊號為14,所以對應物理地址為EF6AH
【答案】
一共有100×100=10000個數據,每頁存放200個數據,也即有50頁,對于程序A,中斷次數為50次(訪問完一行數據需要中斷一次),但是對于程序B,訪問不連續,是按照一列一列跳轉訪問,所以中斷次數會增加,也即5000次(訪問一個數據就需要中斷一次)
【答案】
t1t_{1}t1?時刻的工作集為{1,2,3,6,7,8,9}
t2t_{2}t2?時刻的工作集為{3,4}
19:有一個分頁虛擬存儲系統,測得CPU和磁盤利用率如下。試指出每種情況下所存在的問題和采取的措施
(1)CPU:13%;磁盤97%
(2)CPU:87%;磁盤3%
(1)CPU:13%;磁盤3%
【答案】
(1)系統可能出現抖動,可以暫停運行部分進程
(2)系統運行進程,可以增加進程數進一步提高資源利用率
(3)處理器和設備利用率均很低,可以增加并發運行的進程數目
【答案】
當數組元素a [0],a[1] ,…,a[19]存放在一個頁面中時,其空間局部性和時間局部性較好,也就是說,在很短時間內執行都掛行循環乘法程序,而且數組元素分布在緊鄰連續的存儲單元中。當數組元素存放在不同頁面中時,其時間局部性雖相同,但空間局部性較差,因為處理的數組元素分布在不連續的存儲單元中
【答案】
快表的命中率為0.75,則缺失率為0.25,又缺頁中斷率為0.1,則內存命中率為0.15
如果在快表中,那么訪問時間就是1×0.75
如果未在快表中且內存命中(肯定實現已經訪問了快表),那么訪問時間就是2×0.15
如果未在快表且未在內存,那么訪問時間就是(2+5000)×0.1
所以時間是501.25us
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的(操作系统题目题型总结)第四章:存储管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 多线程编程使用pthread
- 下一篇: JAVA Io 缓冲输入输出流