作業系統 課堂問答筆記16 習題答案

2021-10-05 02:00:16 字數 2849 閱讀 4009

說明:其他」課堂問答筆記「也在」作業系統「專欄

本節課課後討論彙總:

動態分割槽分配演算法和固定分割槽分配演算法的區別?4種動態分割槽分配演算法各自的優缺點?

答:固定分割槽分配是在處理作業之前儲存器就已經被劃分成若干個分割槽,每個分割槽的大小可以相同,也可以不同。但是,一旦劃分好分割槽後,記憶體中的分割槽的個數就固定了,且每個分割槽的大小固定不變(利用分割槽說明表來管理所有的這些分割槽,表中的狀態那一列用來表明該分割槽是否已分配給某個作業)。

動態分割槽分配在每次裝入作業時採用某種演算法動態地為作業從可用記憶體中劃分出乙個分割槽。因此,記憶體中空閒分割槽(注意是空閒分割槽)的個數和每個空閒分割槽的大小將隨著系統中執行的作業情況而變化(利用空閒分割槽表來管理這些空閒分割槽,表中所有的分割槽都是未分配的,即空閒的(注:空閒分割槽表中不包含已經分配的分割槽)。當給某個作業分配乙個空閒分割槽時,有可能要把該空閒分割槽從表中移出,也可能把該空閒分割槽的剩餘部分保留在表中);另外動態分割槽分配演算法還涉及當某個作業完成後記憶體**的問題(某個作業完成後其占用的記憶體又變成空閒,需要重新加入到空閒分割槽表中)。

固定分割槽分配方式存在內部碎片,而動態分割槽分配方式存在外部碎片。

1)首次適應演算法(first fit):將空閒分割槽鏈以位址遞增的順序連線;在進行記憶體分配時,從鏈首開始順序查詢,直到找到一塊分割槽的大小可以滿足需求時,按照該作業的大小,從該分割槽中分配出記憶體,將剩下的空閒分割槽仍然鏈在空閒分割槽鏈中。

優點:高址部分的大的空閒分割槽得到保留,為大作業的記憶體分配創造了條件;

缺點:每次都是優先利用低址部分的空閒分割槽,造成低址部分產生大量的外部碎片;每次都是從低址部分查詢,使得查詢空閒分割槽的開銷增大。

2)迴圈首次適應演算法(next fit):分配記憶體時不是從鏈首進行查詢可以分配記憶體的空閒分割槽,而是從上一次分配記憶體的空閒分割槽的下乙個分割槽開始查詢,直到找到可以為該程序分配記憶體的空閒分割槽;

優點:使得空閒分割槽分布更加均勻;空閒分割槽的查詢開銷小;

缺點:高址部分的大空閒分割槽被分小,使得大作業進入無法分配記憶體。

3)最佳適應演算法(best fit):將空閒分割槽鏈中的空閒分割槽按照空閒分割槽由小到大的順序排序,從而形成空閒分割槽鏈。每次從鏈首進行查詢合適的空閒分割槽為作業分配記憶體,這樣每次找到的空閒分割槽是和作業大小最接近的,所謂「最佳」。

優點:第一次找到的空閒分割槽是大小最接近待分配記憶體作業大小的;

缺點:產生大量難以利用的外部碎片。

4)最壞適應演算法(worst fit):與最佳適應演算法剛好相反,將空閒分割槽鏈的分割槽按照從大到小的順序排序形成空閒分割槽鏈,每次查詢時只要看第乙個空閒分割槽是否滿足即可。

優點:效率高,分割槽查詢方便;

缺點:當小作業把大空閒分區分小了,那麼,大作業就找不到合適的空閒分割槽。

動態分割槽分配演算法存在幾種記憶體**的問題?

答:當使用者作業或程序執行結束時,儲存管理程式要收回已使用完畢的空閒區,並將其插入空閒分割槽表或空閒分割槽鏈中。

在將乙個新空閒分割槽插入空閒分表或空閒分割槽鏈時,該空閒區和上下相鄰區的關係是下述4種關係之一:

1)該空閒分割槽的上下兩相鄰分割槽都是空閒區:將三個空閒區合併為乙個空閒區。新空閒區的起始位址為上空閒區的起始位址,大小為三個空閒區之和。空閒區合併後,取消空閒分割槽表或空閒分割槽鏈中下空閒區的表目項,修改上空閒區的對應項(主要是修改空閒分割槽大小)。

2)該空閒分割槽的上相鄰區是空閒區:將釋放區與上空閒區合併為乙個空閒區,其起始位址為上空閒區的起始位址,大小為上空閒區與釋放區之和。合併後,修改上空閒區對應的空閒分割槽表的表目項(主要是修改空閒分割槽大小)。

3)該空閒分割槽的下相鄰區是空閒區:將釋放區與下空閒區合併,並將釋放區的起始位址作為合併區的起始位址、合併區的長度為釋放區與下空閒區之和(修改下空閒區對應的空閒分割槽表的表目項)。

4)上下兩相鄰區都不是空閒分割槽:釋放區作為乙個新空閒空閒分割槽插入空閒分割槽表或空閒分割槽鏈中(即空閒分割槽表或空閒分割槽鏈中增加一項)。

第1種表中要刪除1項(刪除下空閒區);第2,3種表中要修改1項(第2種修改上空閒區,第3種修改下空閒區);第4種表中要新增1項。

動態可重定位分割槽分配有解決碎片問題嗎?

答:在連續分配方式中,必須把乙個系統或使用者程式裝入一連續的記憶體空間。如果在系統中只有若干個小的分割槽,即使它們的容量總和大於要裝入的程式,但由於這些分割槽不相鄰接,也無法把該程式裝入記憶體。這種不能被利用的小分割槽稱為「零頭」或「碎片」。通過移動記憶體中作業的位置,然後把原來多個分散的空閒小分割槽拼接成乙個大分割槽的方法,稱為「拼接」或「緊湊」。所謂拼接是指移動記憶體中所有已分配區到記憶體的一端,使本來分散的小空閒區連成乙個大的空閒區。因此能夠有效解決前面的分配演算法產生的碎片問題。

由於經過緊湊後的某些使用者程式在記憶體中的位置發生了變化,此時若不對程式和資料的位址加以修改(變換),則程式必將無法執行。為此,在每次「緊湊」後,都必須對移動了的程式或資料進行重定位(該演算法名稱中的「可重定位」就是指這個意思)。

簡要描述對換技術的原理?

答:在多道程式環境下,可能會有如下兩個問題:

1)記憶體中的某些程序可能被阻塞(由於等待i/o或其他原因),但是該程序占用了大量的記憶體空間,甚至會發生記憶體中所有的程序都被阻塞的情況。

2)在上述情況下,還有些作業在外存上等待調入記憶體,但因記憶體空間已被那些阻塞的程序占用所以這些在外存上等待的作業無法被調入記憶體執行。

對換技術是把記憶體中暫時不能執行的程序或暫時不用的程式或資料,調出到外存上,以便騰出足夠的記憶體空間,再把具備執行條件的程序或程序所需要的程式和資料調入記憶體。對換分為如下三類:

程序對換(整體對換):以程序為單位進行對換。

頁面對換(部分對換):以頁面為單位進行對換。

分段對換(部分對換):以分段為單位進行對換。

有關分頁、分段是下節課的內容。對換技術是實現虛擬儲存器的基礎(注:虛擬儲存器是本章最後的內容,教材安排在下一章)。

簡要描述夥伴系統?

作業系統 課堂問答筆記07 習題答案

說明 其他 課堂問答筆記 也在 作業系統 專欄 程序互斥演算法 4種程式實現方法的優缺點?空閒讓進 當臨界區空閒時,可以允許乙個請求進入臨界區的程序立即進入臨界區。忙則等待 當已有程序進入臨界區時,其他試圖進入臨界區的程序必須等待。有限等待 對請求訪問的程序,應保證能在有限時間內進入臨界區 保證不會...

作業系統 課堂問答筆記03

機器的速度和人的速度的不匹配導致資源浪費。同時 這兩個字要打引號,因cpu在任何時刻只能做一件事,巨集觀上可以理解計算機可以同時做多件事情 即在任何乙個時間點,計算機只做一件事 但考察乙個時間段,計算機完成了多件事情。按照事先制定的規則排隊。就像你乙個晚上做了很多門課的作業,但是任何乙個時刻,只做一...

作業系統 課堂問答筆記06

就緒 程序處於萬事俱備只欠東風 就差cpu的執行 的狀態。已經為程序建立好了pcb,並放到就緒佇列中排隊,就等cpu資源就可以執行了。pcb 程序控制塊 阻塞 程序因為需要某個條件 如i o 而暫時停止cpu的執行,喚醒 把程序由阻塞變為就緒 之前的條件已經得到滿足 掛起 因記憶體空間不足而暫時把記...