第四章 儲存器管理
1、什麼是靜態鏈結、裝入時動態鏈結和執行時的動態鏈結?
靜態鏈結是在生成可執行程式的時候就把庫中的內容加入到程式中。靜態鏈結在一開始就把所有模組都載入進入記憶體,所以如果模組很多的話效率就會被大大拉低。
載入時動態鏈結是在將功能模組讀入記憶體時當把乙個模組載入記憶體時檢查有呼叫關係的模組載入記憶體。
執行時動態鏈結是在執行程式呼叫到模組內容時再將動態庫中的相應模組載入到記憶體。
2. 簡述分頁系統和分段系統的異同點。
分頁就是將程序的邏輯位址空間分成若干大小相等的片(即頁),然後裝入記憶體。
分段就是使用者可以把自己的作業按邏輯關係劃分為若干個段,每個段都是從0開始編址,並有自己的名字和長度
相同點:
兩者都屬於儲存器管理方式中的離散分配方式。都要通過位址對映機構來實現位址變換。
不同點:
1、頁是資訊的物理單位,分頁是為實現離散分配方式,以消減記憶體的外零頭,提高記憶體的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是使用者的需要。
段是資訊的邏輯單位,它含有一組其意義相對完整的資訊。分段的目的是為了能更好的滿足使用者的需要。
2、頁的大小固定且由系統確定,把邏輯位址劃分為頁號和頁內位址兩部分,是由機器硬體實現的,因而乙個系統只能有一種大小的頁面。
段的長度卻不固定,決定於使用者所編寫的程式,通常由編輯程式在對源程式進行編輯時,根據資訊的性質來劃分。
3、分頁的作業位址空間是維一的,即單一的線性空間,程式設計師只須利用乙個記憶符,即可表示一位址。
分段的作業位址空間是二維的,程式設計師在標識乙個位址時,既需給出段名,又需給出段內位址。
3. 什麼情況下需要重定位?為什麼要引入重定位?
由於乙個作業裝入到與其位址空間不一致的儲存空間,要對有關位址部分的調整,這個時候需要重定位。
當程式裝入到記憶體後,鏈結位址跟執行位址不同,我們需要用到變數的時候直接用變數名訪問它就行了。有的程式不可避免也要用到變數,各個變數在記憶體中的位置自然也不相同。因為這些變數沒有固定的位址,那麼程式在執行的過程中只有重定位後才可以訪問相關資源。
4. 在具有快表的段頁式儲存管理方式中,如何實現位址變換?
在段頁式系統中,為了便於實現位址變換,須配置乙個段表暫存器,其中存放段表始址和段長tl。
進行位址變換時,首先利用段號s,將它與段長tl進行比較。若s在段頁式系統中,為了獲得一條指令或資料,須三次訪問記憶體。第一次訪問記憶體中的段表,從中取得頁表始址; 第二次訪問記憶體中的頁表,從中取出該頁所在的物理塊號,並將該塊號與頁內位址一起形成指令或資料的實體地址; 第三次訪問才是真正從第二次訪問所得的位址中,取出指令或資料。顯然,這使訪問記憶體的次數增加了近兩倍。
為了提高執行速度,在位址變換機構中增設乙個高速緩衝暫存器。每次訪問它時,都須同時利用段號和頁號去檢索快取記憶體,若找到匹配的表項,便可從中得到相應頁的物理塊號,用來與頁內位址一起形成實體地址; 若未找到匹配表項,則仍須再三次訪問記憶體。
5. 什麼是對換技術?為什麼要引入對換? 對換有哪些型別?
把記憶體中暫時不能執行的程序或者暫時不用的程式和資料換出到外存上,以騰出足夠的記憶體空間,再把已具備執行條件的程序或程序所需要的程式和資料換入記憶體。
引入原因:在多道程式環境下,一方面,在記憶體中某些程序由於某事件尚未發生而阻塞,但它卻占用了大量的記憶體空間,甚至有時可能在記憶體中所有程序都被阻塞,而無可執行的程序,迫使cpu停止下來等待的情況;另一方面,卻又有著許多作業,因記憶體空間不足了,一直駐留在外存上,不能進入記憶體執行。
對換型別:(1)整體對換(2)部分(分頁、分段)對換
6. 在採用首次適應演算法**記憶體時,可能出現哪幾種情況?應怎樣處理這些情況?
可能出現4種情況:
(1)**區前鄰空閒區。將**區與前鄰空閒區合併,將前鄰空閒區大小修改為兩者之和。
(2)**區後鄰空閒區。將兩區合併,改後鄰空閒區始址為**區始址,大小為兩者之和。
(3)**區前後均鄰空閒區。將三個分割槽合併,修改前鄰空閒區大小為三者之和。
(4)**區前後均不鄰空閒區。為**區設定空閒區表項,填入**區始址和大小並插入空閒區佇列。
7. 給定記憶體空閒分割槽,按位址從小到大為:100k、500k、200k、300k、600k。現有使用者程序依次分別212k、417k、112k、426k。(1)分別用首次適應演算法、迴圈首次適應演算法、最佳適應演算法、最壞適應演算法將它們裝入到記憶體的哪個分割槽?(2)哪個演算法最有效利用記憶體?
分割槽號分區長
首次適應演算法
迴圈首次適應演算法
最佳適應演算法
最壞適應演算法
1100k
2500k
1 )212k
3 )112k
1 )212k
3 )112k
2 ) 417k
2 ) 417k
3200k
3 ) 112k
4300k
1 ) 212k
5600k
2 )417k
2 ) 417k
4 ) 426k
1 ) 212k
3 ) 112k
4 ) 426k無法滿足,需等待
4 ) 426k無法滿足,需等待
4 ) 426k無法滿足,需等待
最佳適應演算法最有效利用記憶體。
8、某系統採用頁式儲存管理策略,擁有邏輯空間32頁,每頁2kb,擁有物理空間1mb。
(1)寫出邏輯位址的格式。
(2)若不考慮訪問許可權等,程序的頁表有多少項?每項至少有多少位?
(3)如果物理空間減少一半,頁表結構應相應作怎樣的改變?
該系統擁有邏輯空間32頁,故邏輯位址中頁號必須用5位來描述,而每頁為2kb,因此,頁內位址必須用11位來描述。這樣,可得到它的邏輯位址格式如下
每個程序最多有32個頁面,因此,程序的頁表項最多為32項;若不考慮訪問許可權等,則頁表項中只需給出頁所對應的物理塊號。1mb的物理空間可分成29個記憶體塊,故每個頁表項至少有9位。
物理空間減少一半,則頁表中項表項數仍不變,但每項的長度可減少1位。
9、已知某分頁系統,主存容量為64k位元組,頁面大小為1k,對乙個4頁大的作業,其0、1、2、3頁分別被分配到主存的2、4、6、7塊中,試:將十進位制的邏輯位址1023、2500、3500、4500轉換成實體地址。
1023 : 1023 / 1024 = 0; 所以在第0頁,第2塊
1023 % 1024 = 1023; 2 * 1024 + 1023 = 3071
2500: 2500 / 1024 = 2; 所以在第2頁,第6塊
2500 % 1024 = 452 6 * 1024 + 452 = 6596
3500: 3500 / 1024 = 3; 所以在第3頁,第7塊
3500 % 1024 = 428; 7 * 1024 + 428 = 7596
4500 4500 / 1024 = 4; 不存在第4頁,所以越界了,產生越界中斷。
對於下表所示的段表,請將邏輯位址(0,137),(1,4000), (2,3600), (5,239)轉換成實體地址。
段號記憶體始址段長0
50k10k
160k3k2
70k5k
3120k8k4
150k
4k(0,137): 137 < 10k ; 50k + 137 = 51337
(1,4000) : 4000 > 3k 段內位址越界
(2,3600): 3600 < 5k 70k + 3600 = 57280
(5,239): 段號越界
python書中練習題 python練習題
1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...
python的練習題 Python練習題
1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...
Linux 練習題15 1磁碟管理
linux 練習題15.1磁碟管理 前提 在linux伺服器中新增加一塊硬碟 dev sdb 子專案1 建立 dev sdb1和 dev sdb5建立 dev sdb1主分割槽 300m大小 root localhost aoian fdisk dev sdb 歡迎使用 fdisk util lin...