《作業系統--精髓與設計原理》第七章複習題
第七章 記憶體管理
一、記憶體管理需要滿足哪些需求?重定位、保護、共享、邏輯組織、物理組織
二、為何需要重定位程序的能力?
在多道程式設計系統中,可用的記憶體空間通常被多個程序共享。通常情況下,程式設計師事先並不知道在某個程式執行期間會有其他哪些程式駐留在記憶體中。此外,我們還希望提供一個巨大的就緒程序池,以便把活動程序換入或換出記憶體,進而使處理器的利用率最大化。程式換出到磁碟後,下次換入時要放到與換出前相同的記憶體區域中會很難。相反,我們需要把程序重定位(relocate)到記憶體的不同區域。
三、為何不可能在編譯時實施記憶體保護?
由於程式在記憶體中的位置不可預測,因而在編譯時不可能檢查到絕對地址來確保保護。
此外,大多數程式設計語言允許在執行時進行地址的動態計算(如通過計算陣列下標或資料結構中的指標)。因此,必須在執行時檢查程序產生的所有記憶體訪問,以確保它們只訪問分配給該程序的記憶體空間。(所幸的是,既支援重定位也支援保護需求的機制已經存在)
四、允許兩個或多個程序訪問記憶體某一特定區域的原因是什麼?
任何保護機制都必須具有一定的靈活性,以允許多個程序訪問記憶體的同一部分。例如,多個程序正在執行同一個程式時,允許每個程序訪問該程式的一個副本,要比讓每個程序有自己的副本更有優勢。合作完成同一個任務的程序可能需要共享訪問相同的資料結構。因此,記憶體管理系統在不損害基本保護的前提下,必須允許對記憶體共享區域進行受控訪問。
五、在固定分割槽方案中,使用大小不等的分割槽有何好處?
- 可以提供很多分割槽的同時提供一到兩個非常大的分割槽。大的分割槽允許將很大的程序全部載入主存中。
- 由於小的程序可以被放入小的分割槽中,從而減少了內部碎片。
六、內部碎片和外部碎片有何區別?
內部碎片是指由於被裝入的資料塊小於分割槽大小而導致的分割槽內部所浪費的空間。
外部碎片是與動態分割槽相關的一種現象,它是指在所有分割槽外部的儲存空間會變成越來越多的碎片。
七、邏輯地址、相對地址和實體地址有何區別?
邏輯地址(logical address)是指與當前資料在記憶體中的物理分配地址無關的訪問地址,在執行對記憶體的訪問之前必須把它轉換為實體地址。
相對地址(relative address)是邏輯地址的一個特例,它是相對於某些已知點(通常是程式的開始處)的儲存單元。
實體地址(physical address)或絕對地址是資料在記憶體中的實際位置。
八、頁和頁框有何區別?
在分頁系統中,程序和磁碟上儲存的資料被分為大小固定相等的小塊,叫做頁(page)。而主存中被分成了同樣大小的小塊,叫做幀(frame)。一頁恰好可以裝入一幀中。如果記憶體被劃分成大小固定、相等的塊,且塊相對比較少,每個程序也被分成同樣大小的塊,那麼程序中稱為頁的塊可以分配到記憶體中稱為頁框的可用塊。
九、頁和段有何區別?
分段是細分使用者程式的另一種可選方案。採用分段技術,程式和相關的資料被劃分成一組段。儘管有一個最大段長度,但並不需要所有的程式的所有段的長度都相等。和分頁一樣,採用分段計數時的邏輯地址也由兩部分組成:段號和偏移量。(分頁是頁號和偏移量)