操作系統--精髓與設計原理(第八版)第七章復習題答案
7.1內存管理需要滿足哪些需求?
- 重定位
- 保護
- 共享
- 邏輯組織
- 物理組織
7.2為何需要重定位進程的能力?
在多道程序設計系統中,可用的內存空間通常被多個進程共享。通常情況下,程序員事先並不知道在某個程序執行期間會有其他哪些程序駐留在內存中。此外,我們還希望提供一個巨大的就緒進程池,以便把活動進程換入或換出內存,進而使處理器的利用率最大化。程序換出到磁盤中后,下次換入時要放到與換出前相同的內存區域會很困難。相反,我們需要把進程重定位(relocate) 到內存的不同區域。
7.3 為何不可能在編譯時實施內存保護?
由於程序在內存中的位置不可預測,因而在編譯時不可能檢查絕對地址來確保保護。此外,大多數程序設計語言允許在運行時進行地址的動態計算。因此必須在運行時檢查進程產生的所有內存訪問。
7.4允許兩個或多 個進程訪問內存某一特定區域的原因是什么?
任何保護機制都必須具有一定的靈活性,以允許多個進程訪問內存的同一部分。例如,多個進程正在執行同一個程序時,允許每個進程訪問該程序的同一個副本,要比讓每個進程有自己單獨的副本更有優勢。合作完成同一個任務的進程可能需要共享訪問相同的數據結構。因此,內存管理系統在不損害基本保護的前提下,必允許對內存共享區域進行受控訪問。我們將會看到用於支持重定位的機制也支持共享。
7.5 在固定分區方案中,使用大小不等的分區有何好處?
可緩解因程序太大而無法放到固定大小的分區和因程序太小產生大量內部碎片的問題。
7.6 內部碎片和外部碎片有何區別?
- 內部碎片:由於裝入的數據塊小於分區大小,因而導致分區內部存在空間浪費,這種現象稱為內部碎片( internal fragmentation)。
- 外部碎片:隨着時間的推移,內存中形成了越來越多的碎片,內存的利用率隨之下降。這種現象稱為外部碎片(external fragmentation),指在所有分區外的存儲空間變成了越來越多的碎片,這與前面所講的內部碎片正好對應。
7.7邏輯地址、相對地址和物理地址有何區別?
- 邏輯地址(logical address) 是指與當前數據在內存中的物理分配地址無關的訪問地址,在執行對內存的訪問之前必須把它轉換為物理地址。
- 相對地址(relative address) 是邏輯地址的一個特例,它是相對於某些已知點(通常是程序的開始處)的存儲單元。
- 物理地址( physical address) 或絕對地址是數據在內存中的實際位置。
7.8 頁和頁框有何區別?
- 頁(page):一頁指一系列的線性地址和包含於其中的數據。
- 頁框(pageframe):分頁單元認為所有的RAM被分成了固定長度的頁框每個頁框可以包含一頁,也就是說一個頁框的長度和一個頁的長度是一樣的。頁框是內存的一部分,是一個實際的存儲區域。頁只是一組數據塊,可以存放在任何頁框中。
也就是說頁對應的是線性(虛擬)地址的東西,而頁框對應的是物理地址,是實際的存儲區域。
7.9頁和段有何區別?
頁大小相等,段可以大小不等;分頁對程序員來說是透明的,而分段通常是可見的。
