1. 可采用哪幾種方式將程序裝入內存?它們分別適用于何種場合?
a. 首先由編譯程序將用戶源代碼編譯成若干目標模塊,再由鏈接程序將編譯后形成的目標模塊和所需的-庫函數鏈接在一起,組成一個裝入模塊,再由裝入程序將裝入模塊裝入內存;?
b. 裝入模塊的方式有: 絕對裝入方式,可重定位方式和動態運行時裝入方式;?
c. 絕對裝入方式適用于單道程序環境下;?
d. 可重定位方式適用于多道程序環境下;?
e. 動態運行時裝入方式也適用于多道程序環境下.
2. 何謂靜態鏈接及裝入時動態鏈接和運行時的動態鏈接?
a. 靜態鏈接是指事先進行鏈接形成一個完整的裝入模塊,以后不再拆開的鏈接方---式;
b. 裝入時動態鏈接是指目標模塊在裝入內存時,邊裝入邊鏈接的鏈接方式;
c. 運行時的動態鏈接是將某些目標模塊的鏈接推遲到執行時才進行.
3. 在進行程序鏈接時,應完成哪些工作?
a. 對相對地址進行修改;?
b. 變換外部調用符號.
4. 在動態分區分配方式中,可利用哪些分區分配算法?
a. 首次適應算法;?
b. 循環首次適應算法;?
c. 最佳適應算法.
5. 在動態分區分配方式中,應如何將各空閑分區鏈接成空閑分區鏈?
應在每個分區的起始地址部分,設置一些用于控制分區分配的信息,以及用于鏈接各分區的前向指針;在分區尾部則設置一后向指針,通過前,后向指針將所有的分區鏈接成一個雙向鏈.
6. 為什么要引入動態重定位?如何實現?
a. 為了在程序執行過程中,每當訪問指令或數據時,將要訪問的程序或數據的邏輯地址轉換成物理地址,引入了動態重定位.?
b. 可在系統中增加一個重定位寄存器,用它來裝入(存放)程序在內存中的起始地址,程序在執行時,真-正訪問的內存地址是相對地址與重定位寄存器中的地址相加而形成的,從而實現動態重定位.
7. 在采用首次適應算法回收內存時,可能出現哪幾種情況?應怎樣處理這些情況?
a. 回收區與插入點的前一個分區相鄰接,此時可將回收區與插入點的前一分區合并,不再為回收分區分配新表項,而只修改前鄰接分區的大小;
b. 回收分區與插入點的后一分區相鄰接,此時合并兩區,然后用回收區的首址作為新空閑區的首址,大-小為兩者之和;
c. 回收區同時與插入點的前后兩個分區鄰接,此時將三個分區合并,使用前鄰接分區的首址,大小為三區之和,取消后鄰接分區的表項;
d. 回收區沒有鄰接空閑分區,則應為回收區單獨建立一個新表項,填寫回收區的首址和大小,并根據其首址,插入到空閑鏈中的適當位置.
8. 在系統中引入對換后帶有哪些好處?
能將內存中暫時不運行的進程或暫時不用的程序和數據,換到外存上,以騰出足夠的內存空間,把已具備運行條件的進程或進程所需的程序和數據換入內存,從而大大地提高了內存的利用率.
9.為實現對換,系統應具備哪幾方面功能?
a. 對對換空間的管理;?
b. 進程的換出;?
c. 進程的換入.
10.在以進程為單位進行對換時,每次是否都將整個進程換出?為什么?
a. 以進程為單位進行對換時,每次都將整個進程換出;?
b. 目的為了解決內存緊張的問題,提高內存的利用率.
11.請較詳細地說明,引入分段存儲管理是為了滿足用戶哪幾方面的需要?
a. 方便了編程;?
b. 實現了分段共享;?
c. 實現了分段保護;?
d. 實現了動態鏈接;?
e. 實現了動態增長;
12.在具有快表的段頁式存儲管理方式中,如何實現地址變換?
首先,必須配置一段表寄存器,在其中存放段表始址和段長TL. 進行地址變換時,先利用段號S,與段長TL進行比較,若STL,表示未越界,(若S=TL,表示段號太大,訪問越界,產生越界中斷信號)于是利用段表始址和段號來求出該段對應的段表項在段表中的位置,從中求出該段的頁表始址,并利用邏輯地址中的段內頁號P來獲得對應頁的頁表項位置,從中讀出該頁所在的物理塊號b,再用塊號b和頁內地址構成物理地址.
13.為什么說分段系統較之分頁系統更易于實現信息共享和保護?
a. 對于分頁系統,每個程序段是分散存儲的,一個程序段可能對應著幾個不同的頁。為了實現信息共享和保護,則頁面之間需要一一對應起來,為此需要建立大量的頁表項;
b. 而對于分段系統,每個段都從0開始編址,并采用一段連續的地址空間,這樣在實現共享和保護時.只需為所要共享和保護的程序設置一個段表項,將其中的基址與內存地址一一對應起來即可.
14.分頁和分段有何區別?
a. 分頁和分段都采用離散分配的方式,且都要通過地址映射機構來實現地址變換,這是它們的共同點;
b. 對于它們的不同點有三,第一,從功能上看,頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率,即滿足系統管理的需要,而不是用戶的需要;而段是信息的邏輯單位,它含有一組其意義相對完整的信息,目的是為了能更好地滿足用戶的需要;
c. 頁的大小固定且由系統確定,而段的長度卻不固定,決定于用戶所編寫的程序;
d. 分頁的作業地址空間是一維的,而分段的作業地址空間是二維的.
15.試全面比較連續分配和離散分配方式.
a. 連續分配是指為一個用戶程序分配一個連續的地址空間,包括單一連續分配方式和分區式分配方式,前者將內存分為系統區和用戶區,系統區供操作系統使用,用戶區供用戶使用,是最簡單的一種存儲方式,但只能用于單用戶單任務的操作系統中;分區式分配方式分為固定分區和動態分區,固定分區是最簡單的多道程序的存儲管理方式,由于每個分區的大小固定,必然會造成存儲空間的浪費;動態分區是根據進程的實際需要,動態地為之分配連續的內存空間,常用三種分配算法: 首次適應算法FF,該法容易留下許多難以利用的小空閑分區,加大查找開銷;循環首次適應算法,該算法能使內存中的空閑分區分布均勻,但會致使缺少大的空閑分區;最佳適應算法,該算法也易留下許多難以利用的小空閑區;
b. 離散分配方式基于將一個進程直接分散地分配到許多不相鄰的分區中的思想,分為分頁式存儲管理,分段存儲管理和段頁式存儲管理. 分頁式存儲管理旨在提高內存利用率,滿足系統管理的需要,分段式存儲管理則旨在滿足用戶(程序員)的需要,在實現共享和保護方面優于分頁式存儲管理,而段頁式存儲管理則是將兩者結合起來,取長補短,即具有分段系統便于實現,可共享,易于保護,可動態鏈接等優點,又能像分頁系統那樣很好的解決外部碎片的問題,以及為各個分段可離散分配內存等問題,顯然是一種比較有效的存儲管理方式;c. 綜上可見,連續分配方式和離散分配方式各有各自的特點,應根據實際情況加以改進和利用.