第4章習題解析
1.為什么要配置層次式存儲器?
答:這是因為:
a.設置多個存儲器可以使存儲器兩端的硬件能並行工作。
b.采用多級存儲系統,特別是Cache技術,這是一種減輕存儲器帶寬對系統性能影響的最佳結構方案。
c.在微處理機內部設置各種緩沖存儲器,以減輕對存儲器存取的壓力。增加CPU中寄存器的數量,也可大大緩解對存儲器的壓力。
2.可采用哪幾種方式將程序裝入內存?它們分別適用於何種場合?
答:將程序裝入內存可采用的方式有:絕對裝入方式、重定位裝入方式、動態運行時裝入方式;絕對裝入方式適用於單道程序環境中,重定位裝入方式和動態運行時裝入方式適用於多道程序環境中。
3.何為靜態鏈接?靜態鏈接時需要解決兩個什么問題?
答:靜態鏈接是指在程序運行之前,先將各自目標模塊及它們所需的庫函數,鏈接成一個完整的裝入模塊,以后不再拆開的鏈接方式。
將幾個目標鏈接裝配成一個裝入模塊時,需解決以下兩個問題:
將相對地址進行修改。即將除第一個模塊外的相對地址修改成裝入模塊中的相應的相對地址。
變換外部調用符號。即將每個模塊中所用的外部調用符號,都變換為相對地址。
4.何謂裝入時動態鏈接?裝入時動態鏈接方式有何優點?
答:裝入時動態鏈接是指將用戶源程序編譯后所得到的一組目標模塊,在裝入內存時,采用邊裝入邊鏈接的一種
鏈接方式,即在裝入一個目標模塊時,若發生一個外部模塊調用事件,將引起裝入程序去找相應的外部目標模塊,把它裝入內存中,並修改目標模塊中的相對地址。
裝入時動態鏈接方式有以下優點:
1)便於修改和更新 2)便於實現對目標模塊的共享
5.何謂運行時動態鏈接?運行時動態鏈接方式有何優點?
答:運行時動態鏈接是將對某些模塊的鏈接推遲到程序執行時才進行鏈接,也就是,在執行過程中,當發現一個被調用模塊尚未裝入內存時,立即由0S去找到該模塊並將之裝入內存,把它鏈接到調用者模塊上。
優點:凡是在執行過程中未被用過的目標模塊,都不會被調入內存和被鏈接到裝入模塊上,這樣不僅能加快程序的裝入過程,而且可節省大量的內存空間。
6.在動態分區分配方式中,應如何將各空閑分區鏈接成空閑分區鏈?
答:應在每個分區的起始地址部分,設置一些用於控制分區分配的信息,以及用於鏈接各分區的前向指針;在分區尾部則設置一后向指針,通過前,后向指針將所有的分區鏈接成一個雙向鏈. P128圖4-7。主要使用雙向鏈表。
7.為什么要引入動態重定位?如何實現?
答:a.程序在運行過程中經常要在內存中移動位置,為了保證這些被移動了的程序還能正常執行,必須對程序和數據的地址加以修改,即重定位。引入重定位的目的就是為了滿足程序的這種需要。
b.要在不影響指令執行速度的同時實現地址變換,必須有硬件地址變換機構的支持,即須在系統中增設一個重定位寄存器,用它來存放程序在內存中的起始地址。程序在執行時,真正訪問的內存地址是相對地址與重定位寄存器中的地址相加而形成的。
8.什么是基於順序搜索的動態分區分配算法?它可分為哪幾種?
答:為了實現動態分區式分配,將系統中的空閑分區組織成空閑分區表或空閑分區鏈。所謂順序搜索,是指按表或鏈的組織順序,
檢索表或鏈上記錄的空閑分區,去尋找一個最符合算法的、大小能滿足要求的分區。分區存儲管理中常采用的分配策略有:首次適應算法、循環首次適應算法、最佳適應算法、最壞適應算法。
9.在采用首次適應算法回收內存時,可能出現哪幾種情況?應怎樣處理這些情況?
答:a.回收區與插入點的前一個分區相鄰接,此時可將回收區與插入點的前一分區合並,不再為回收分區分配新表項,而只修改前鄰接分區的大小;
b.回收分區與插入點的后一分區相鄰接,此時合並兩區,然后用回收區的首址作為新空閑區的首址,大小為兩者之和:
c.回收區同時與插入點的前后兩個分區鄰接,此時將三個分區合並,使用前鄰接分區的首址,大小為三區之和,取消后鄰接分區的表項;
d.回收區沒有鄰接空閑分區,則應為回收區單獨建立一個新表項,填寫回收區的首址和大小,並根據其首址,插入到空閑鏈中的適當位置.
10.什么是基於索引搜索的動態分區分配算法?它可分為哪幾種?
答:P131.快速適應算法、伙伴系統、哈希算法
11.令buddyK(x)表示大小為2的k次方、地址為x的塊的伙伴系統地址,試寫出buddyK(x)通用表達式?
答:P126。考研的同學可以關注一下。Buddy System是一種經典的內存管理算法,在Unix和Linux操作系統中都有用到,其作用是減少存儲空間中的空洞,減少碎片,增加利用率。在有的“數據結構”課本中有算法介紹。
這道題我看不懂其題意,大概是分配內存時x要找的空閑塊是:
pow(2,k-1)<=buddyK(x)<=pow(2,k)//pow是乘方函數Buddy System是一種連續的內存管理方法,可以結合離散的分頁分配方法使用,有利於為進程分配連續的物理塊,以提高分頁法的效率和程序的局部性。
12.分區存儲管理中常采用哪些分配策略?比較它們的優缺點。
答:分區存儲管理中常采用的分配策略有:首次適應算法、循環首次適應算法、最佳適應算法、最壞適應算法。
a.首次適應算法的優缺點:保留了高址部分的大空閑區,有利於后到來的大型作業的分配;低址部分不斷被划分,留下許多難以利用的、小的空閑區,且每次分區分配查找時都是從低址部分開始,會增加查找時的系統開銷。
b.循環首次適應算法的優缺點:使內存中的空閑分區分布得更為均勻,減少了查找時的系統開銷;缺乏大的空閑分區,從而導致不能裝入大型作業。
c.最佳適應算法的優缺點:每次分配給文件的都是最適合該文件大小的分區;內存中留下許多難以利用的小的空閑區。
d.最壞適應算法的優缺點:給文件分配分區后剩下的的空閑區不至於太小,產生碎片的幾率最小,對中小型文件分配分區操作有利;使存儲器中缺乏大的空閑區,對大型文件的分區分配不利。
13.為什么要引入對換?對換可分為哪幾種類型?
答:在多道環境下,一方面,在內存中的某些進程由於某事件尚未發生而被阻塞,但它卻占用了大量的內存空間,甚至有時可能出現在內存中所有進程都被阻塞而迫使CPU停止下來等待的情況;
另一方面,卻又有着許多作業在外存上等待,因無內存而不能進入內存運行的情況。顯然這對系統資源是一種嚴重的浪費,且使系統吞吐量下降。為了解決這一問題,在操作系統中引入了對換(也稱交換)技術。
可以將整個進程換入、換出,也可以將進程的一部分(頁、段)換入、換出。前者主要用於緩解目前系統中內存的不足,后者主要用於實現虛擬存儲。
14.對文件區管理的目標和對對換空間管理的目標有何不同?
答:對文件區管理的主要目標是提高文件存儲空間的利用率,然后才提高對文件的訪問速度,因此,對文件區空間的管理采取離散分配方式。
對對換空間管理的主要目標是提高進程換入和換出的速度,然后才是提高文件存儲空間的利用率,因此,對對換區空間的管理采取連續分配方式,較少的考慮外存中的碎片問題。
15.為實現對換,系統應具備哪幾方面功能?
答:系統應具備三方面功能:對換空間管理,進程換出,進程換入。
16.在以進程為單位進行對換時,每次是否將整個進程換出?為什么?
答:在以進程為單位進行對換時,並非每次將整個進程換出。這是因為:
a.從結構上講,進程是由程序段、數據段和進程控制塊組成的,其中進程控制塊總有部分或全部常駐內存,不被換出。
b.程序段和數據段可能正被若干進程共享,此時它們也不能被換出。
17.基於離散分配時所用的基本單位不同,可將離散分配分為哪幾種?
答:分頁存儲管理方式、分段存儲管理方式和段頁式存儲管理方式。
18.什么是頁面?什么是物理塊?頁面的大小應如何確定?
答:頁面:分頁存儲管理將進程的邏輯地址空間分成若干個頁,並為各頁加以編號。物理塊:把內存的物理地址空間分成若干個塊,並為各塊加以編號。頁面大小應選擇適中,且頁面大小應該是2的冪,通常為1KB~8KB。
19.什么是頁表?頁表的作用是什么?
答:頁表是分頁式存儲管理使用的數據結構。一個進程分為多少頁,它的頁表就有多少行。每一行記錄進程的一頁和它存放的物理塊的頁號、塊號對應關系。頁表用於進行地址變換。
20.為實現分頁存儲管理,需要哪些硬件支持?
答:需要有頁表機制、地址變換機構的硬件支持。
21.在分頁系統中是如何實現地址變換的?
答:利用地址變換機構實現從邏輯地址到物理地址的轉變換,通過頁表來實現從頁號到物理塊號的變換,將邏輯地址中的頁號轉換為內存中的物理塊號。
22.具有快表時是如何實現地址變換的?
23.較詳細的說明引入分段存儲管理方式是為了滿足用戶哪幾個方面的需求。
答:1)方便編程。用戶通常把自己的作業按照邏輯關系划分為若干段,每段都從0編址,並有自己名字和長度。因此,希望要訪問的邏輯地址是由段名和段內偏移量決定。
2)信息共享。在實現對程序和數據的共享時,是以信息邏輯單位為基礎。
分頁系統中的頁是存放信息的物理單位,無完整意義,不便於共享;段是信息的邏輯單位。為了實現段的共享,希望存儲管理能與用戶程序分段的組織方式相適3)信息保護。對信息的邏輯單位進行保護,分段能更有效方便地實現信息保護功能。
4)動態增長。在實際應用中,有些段特別是數據段,在使用過程中會不斷增長,事先又無法確切知道增長多少。分段存儲管理方式能較好解決這個問題
5)動態鏈接。運行時先將主程序對應的目標程序裝入內存並啟動運行,運行過程中又需要調用某段時,才將該段調入內存鏈接。所以動態鏈接也要求以段作為管理單位。
24.在具有快表的段頁式存儲管理方式中,如何實現地址變換?
答:在CPU給出有效地址后,由地址變換機構自動將頁號P送入高速緩沖寄存器,並將此頁號與高速緩存中的所有頁號比較,若找到匹配頁號,表示要訪問的頁表項在快表中。
可直接從快表讀出該頁對應物理塊號,送到物理地址寄存器中。如快表中沒有對應頁表項,則再訪問內存頁表,找到后,把從頁表項中讀出物理塊號送地址寄存器;
同時修改快表,將此頁表項存入快表。但若寄存器已滿,則0S必須找到合適的頁表項換出。
25.為什么說分段系統較之分頁系統更易於實現信息共享和保護?
答:a.對於分頁系統,每個頁面是分散存儲的,為了實現信息共享和保護,則頁面之間需要一一對應起來,為此需要建立大量的頁表項;
b.而對於分段系統,每個段都從0開始編址,並采用一段連續的地址空間,這樣在實現共享和保護時,只需為所要共享和保護的程序設置一個段表項,將其中的基址與內存地址一一對應起來即可。
26.分頁和分段有何區別?
答:a.分頁和分段都采用離散分配的方式,且都要通過地址映射機構來實現地址變換,這是它們的共同點;
b.對於它們的不同點有三,第一,從功能上看,頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率,即滿足系統管理的需要,而不是用戶的需要;
而段是信息的邏輯單位,它含有一組其意義相對完整的信息,目的是為了能更好地滿足用戶的需要;
第二頁的大小固定且由系統確定,而段的長度卻不固定,決定於用戶所編寫的程序;第三分頁的作業地址空間是一維的,而分段的作業地址空間是二維的。
27.試全面比較連續分配和離散分配方式.
答:a.連續分配是指為一個用戶程序分配一個連續的地址空間,包括單一連續分配方式和分區式分配方式,前者將內存分為系統區和用戶區,系統區供操作系統使用,用戶區供用戶使用,是最簡單的一種存儲方式,但只能用於單用戶單任務的操作系統中;
分區式分配方式分為固定分區和動態分區,固定分區是最簡單的多道程序的存儲管理方式,由於每個分區的大小固定,必然會造成存儲空間的浪費;
動態分區是根據進程的實際需要,動態地為之分配連續的內存空間,常用三種分配算法:首次適應算法,該法容易留下許多難以利用的小空閑分區,加大查找開銷;循環首次適應算法,該算法能使內存中的空閑分區分布均勻,但會致使缺少大的空閑分區;
最佳適應算法,該算法也易留下許多難以利用的小空閑區;b.離散分配方式基於將一個進程直接分散地分配到許多不相鄰的分區中的思想,分為分頁式存儲管理,分段存儲管理和段頁式存儲管理.分頁式存儲管理旨在提高內存利用率,滿足系統管理的需要,
分段式存儲管理則旨在滿足用戶(程序員)的需要,在實現共享和保護方面優於分頁式存儲管理,而段頁式存儲管理則是將兩者結合起來,取長補短,即具有分段系統便於實現,可共享,易於保護,可動態鏈接等優點,又能像分頁系統那樣很好的解決
外部碎片的問題,以及為各個分段可離散分配內存等問題,顯然是一種比較有效的存儲管理方式;c.綜上可見,連續分配方式和離散分配方式各有各自的特點,應根據實際情況加以改進和利用.