導航:首頁 > 源碼編譯 > 置換演算法的缺點

置換演算法的缺點

發布時間:2023-02-15 17:04:43

『壹』 操作系統課程設計,用C#實現內存頁面的置換。實現演算法間比較

頁面置換演算法

一.題目要求:

通過實現頁面置換演算法的FIFO和LRU兩種演算法,理解進程運行時系統是怎樣選擇換出頁面的,對於兩種不同的演算法各自的優缺點是哪些。

要求設計主界面以靈活選擇某演算法,且以下演算法都要實現 1) 最佳置換演算法(OPT):將以後永不使用的或許是在最長(未來)時間內不再被訪問的頁面換出。

2) 先進先出演算法(FIFO):淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。

3) 最近最久未使用演算法(LRU):淘汰最近最久未被使用的頁面。 4) 最不經常使用演算法(LFU) 二.實驗目的:

1、用C語言編寫OPT、FIFO、LRU,LFU四種置換演算法。 2、熟悉內存分頁管理策略。 3、了解頁面置換的演算法。 4、掌握一般常用的調度演算法。 5、根據方案使演算法得以模擬實現。 6、鍛煉知識的運用能力和實踐能力。 三、設計要求

1、編寫演算法,實現頁面置換演算法FIFO、LRU;

2、針對內存地址引用串,運行頁面置換演算法進行頁面置換; 3、演算法所需的各種參數由輸入產生(手工輸入或者隨機數產生); 4、輸出內存駐留的頁面集合,頁錯誤次數以及頁錯誤率;

四.相關知識:

1.虛擬存儲器的引入:

局部性原理:程序在執行時在一較短時間內僅限於某個部分;相應的,它所訪問的存儲空間也局限於某個區域,它主要表現在以下兩個方面:時間局限性和空間局限性。

2.虛擬存儲器的定義:

虛擬存儲器是只具有請求調入功能和置換功能,能從邏輯上對內存容量進行擴充的一種存儲器系統。

3.虛擬存儲器的實現方式:

分頁請求系統,它是在分頁系統的基礎上,增加了請求調頁功能、頁面置換功能所形成的頁面形式虛擬存儲系統。

請求分段系統,它是在分段系統的基礎上,增加了請求調段及分段置換功能後,所形成的段式虛擬存儲系統。

4.頁面分配:

平均分配演算法,是將系統中所有可供分配的物理塊,平均分配給各個進程。 按比例分配演算法,根據進程的大小按比例分配物理塊。

考慮優先的分配演算法,把內存中可供分配的所有物理塊分成兩部分:一部分按比例地分配給各進程;另一部分則根據個進程的優先權,適當的增加其相應份額後,分配給各進程。

5.頁面置換演算法:

常用的頁面置換演算法有OPT、FIFO、LRU、Clock、LFU、PBA等。 五、設計說明

1、採用數組頁面的頁號

2、FIFO演算法,選擇在內存中駐留時間最久的頁面予以淘汰;

分配n個物理塊給進程,運行時先把前n個不同頁面一起裝入內存,然後再從後面逐一比較,輸出頁面及頁錯誤數和頁錯誤率。

3、LRU演算法,根據頁面調入內存後的使用情況進行決策;

同樣分配n個物理塊給進程,前n個不同頁面一起裝入內存,後面步驟與前一演算法類似。

選擇置換演算法,先輸入所有頁面號,為系統分配物理塊,依次進行置換: 六.設計思想:

OPT基本思想:

是用一維數組page[pSIZE]存儲頁面號序列,memery[mSIZE]是存儲裝入物理塊中的頁面。數組next[mSIZE]記錄物理塊中對應頁面的最後訪問時間。每當發生缺頁時,就從物理塊中找出最後訪問時間最大的頁面,調出該頁,換入所缺的頁面。

FIFO基本思想:

是用隊列存儲內存中的頁面,隊列的特點是先進先出,與該演算法是一致的,所以每當發生缺頁時,就從隊頭刪除一頁,而從隊尾加入缺頁。或者藉助輔助數組time[mSIZE]記錄物理塊中對應頁面的進入時間,每次需要置換時換出進入時間最小的頁面。

LRU基本思想:

是用一維數組page[pSIZE]存儲頁面號序列,memery[mSIZE]是存儲裝入物理塊中的頁面。數組flag[10]標記頁面的訪問時間。每當使用頁面時,刷新訪問時間。發生缺頁時,就從物理塊中頁面標記最小的一頁,調出該頁,換入所缺的頁面。 七.流程圖:

如下頁所示

六.運行結果: 1. 按任意鍵進行初始化:

2. 載入數據:

3. 進入置換演算法選擇界面:

4.運算中延遲操作:

5.三種演算法演示結果:

『貳』 請分別給出三種不同的頁面置換演算法,並簡要說明他們的優缺點

[fifo.rar]
-
操作系統中內存頁面的先進先出的替換演算法fifo
[先進先出頁面演算法程序.rar]
-
分別實現最佳置換演算法(optimal)、先進先出(fifo)頁面置換演算法和最近最久未使用(LRU)置換演算法,並給出各演算法缺頁次數和缺頁率。
[0022.rar]
-
模擬分頁式虛擬存儲管理中硬體的地址轉換和缺頁中斷,以及選擇頁面調度演算法處理缺頁中斷
[Change.rar]
-
java實現操作系統的頁面置換
其中包括
最佳置換演算法(Optimal)、先進先出演算法(First-in,
First-out)
、最近最久不用的頁面置換演算法(LeastRecently
Used
Replacement)三種演算法的實現
[M_Management.rar]
-
操作系統中內存管理頁面置換演算法的模擬程序,採用的是LRU置換演算法
[detail_of_44b0x_TCPIP.rar]
-
TCPIP
程序包載入到44b0x
的ADS1.2工程文件的說明書。說名了載入過程的細節和如何處理演示程序和代碼。演示代碼已經上傳,大家可以搜索
[.rar]
-
java操作系統頁面置換演算法:
(1)進先出的演算法(fifo)
(2)最近最少使用的演算法(LRU)
(3)最佳淘汰演算法(OPT)
(4)最少訪問頁面演算法(LFU)
(註:由本人改成改進型Clock演算法)
(5)最近最不經常使用演算法(NUR)

『叄』 2018-06-09

一、常見的批處理作業調度演算法

1.先來先服務調度演算法(FCFS):就是按照各個作業進入系統的自然次序來調度作業。這種調度演算法的優點是實現簡單,公平。其缺點是沒有考慮到系統中各種資源的綜合使用情況,往往使短作業的用戶不滿意,因為短作業等待處理的時間可能比實際運行時間長得多。

2.短作業優先調度演算法(SPF): 就是優先調度並處理短作業,所謂短是指作業的運行時間短。而在作業未投入運行時,並不能知道它實際的運行時間的長短,因此需要用戶在提交作業時同時提交作業運行時間的估計值。

3.最高響應比優先演算法(HRN):FCFS可能造成短作業用戶不滿,SPF可能使得長作業用戶不滿,於是提出HRN,選擇響應比最高的作業運行。響應比=1+作業等待時間/作業處理時間。

4. 基於優先數調度演算法(HPF):每一個作業規定一個表示該作業優先順序別的整數,當需要將新的作業由輸入井調入內存處理時,優先選擇優先數最高的作業。

5.均衡調度演算法,即多級隊列調度演算法

基本概念:

  作業周轉時間(Ti)=完成時間(Tei)-提交時間(Tsi)

  作業平均周轉時間(T)=周轉時間/作業個數

  作業帶權周轉時間(Wi)=周轉時間/運行時間

  響應比=(等待時間+運行時間)/運行時間

二、進程調度演算法

1.先進先出演算法(FIFO):按照進程進入就緒隊列的先後次序來選擇。即每當進入進程調度,總是把就緒隊列的隊首進程投入運行。

2. 時間片輪轉演算法(RR):分時系統的一種調度演算法。輪轉的基本思想是,將CPU的處理時間劃分成一個個的時間片,就緒隊列中的進程輪流運行一個時間片。當時間片結束時,就強迫進程讓出CPU,該進程進入就緒隊列,等待下一次調度,同時,進程調度又去選擇就緒隊列中的一個進程,分配給它一個時間片,以投入運行。

3. 最高優先順序演算法(HPF):進程調度每次將處理機分配給具有最高優先順序的就緒進程。最高優先順序演算法可與不同的CPU方式結合形成可搶占式最高優先順序演算法和不可搶占式最高優先順序演算法。

4. 多級隊列反饋法:幾種調度演算法的結合形式多級隊列方式。

三、空閑分區分配演算法

\1. 首先適應演算法:當接到內存申請時,查找分區說明表,找到第一個滿足申請長度的空閑區,將其分割並分配。此演算法簡單,可以快速做出分配決定。

2. 最佳適應演算法:當接到內存申請時,查找分區說明表,找到第一個能滿足申請長度的最小空閑區,將其進行分割並分配。此演算法最節約空間,因為它盡量不分割到大的空閑區,其缺點是可能會形成很多很小的空閑分區,稱為「碎片」。

3. 最壞適應演算法:當接到內存申請時,查找分區說明表,找到能滿足申請要求的最大的空閑區。該演算法的優點是避免形成碎片,而缺點是分割了大的空閑區後,在遇到較大的程序申請內存時,無法滿足的可能性較大。

四、虛擬頁式存儲管理中的頁面置換演算法

1.理想頁面置換演算法(OPT):這是一種理想的演算法,在實際中不可能實現。該演算法的思想是:發生缺頁時,選擇以後永不使用或在最長時間內不再被訪問的內存頁面予以淘汰。

2.先進先出頁面置換演算法(FIFO):選擇最先進入內存的頁面予以淘汰。

3. 最近最久未使用演算法(LRU):選擇在最近一段時間內最久沒有使用過的頁,把它淘汰。

4.最少使用演算法(LFU):選擇到當前時間為止被訪問次數最少的頁轉換。

三、磁碟調度

1.先來先服務(FCFS):是按請求訪問者的先後次序啟動磁碟驅動器,而不考慮它們要訪問的物理位置

2.最短尋道時間優先(SSTF):讓離當前磁軌最近的請求訪問者啟動磁碟驅動器,即是讓查找時間最短的那個作業先執行,而不考慮請求訪問者到來的先後次序,這樣就克服了先來先服務調度演算法中磁臂移動過大的問題

3.掃描演算法(SCAN)或電梯調度演算法:總是從磁臂當前位置開始,沿磁臂的移動方向去選擇離當前磁臂最近的那個柱面的訪問者。如果沿磁臂的方向無請求訪問時,就改變磁臂的移動方向。在這種調度方法下磁臂的移動類似於電梯的調度,所以它也稱為電梯調度演算法。

4.循環掃描演算法(CSCAN):循環掃描調度演算法是在掃描演算法的基礎上改進的。磁臂改為單項移動,由外向里。當前位置開始沿磁臂的移動方向去選擇離當前磁臂最近的哪個柱面的訪問者。如果沿磁臂的方向無請求訪問時,再回到最外,訪問柱面號最小的作業請求。

對一個進程來說,一個重要的指標是它執行所需要的時間. 從進程提交到進程完成的時間間隔為周轉時間.也就是等待進入內存的時間,在就緒隊列中等待的時間,在 CPU中執行的時間和I/O操作的時間的總和.

例1.設一個系統中有5個進程,它們的到達時間和服務時間如下,A的到達時間為0,服務時間為3;B的到達時間為2,服務時間為6;C的到達時間為4,服務時間為4;D的到達時間為6,服務時間為5;E的 到達時間為8,服務時間為2,忽略1/0以及其他開銷時間,若分別按先來先服務(fFCFS)進行CPU調度,其平均周轉時間為?

10.2

6.4

8.6

4.5

先來先服務調度演算法

進程名  到達時間 服務時間  開始執行時間  完成時間  周轉時間

A              0              3                0                3                3

B              2              6                3                9                7

C              4              4                9                13              9

D              6              5                13              18              12

E              8              2                18              20              12

周轉時間 = 完成時間 - 到達時間

平均周轉時間 = 所有進程周轉時間 / 進程數 = (3+7+9+12+12)/ 5 = 8.6

單道批處理系統中有4個作業,J1的提交時間8.0,運行時間為2.0;J2的提交時間8.6,運行時間為0.6;J3提交時間8.8,運行時間為0.2;J4的提交時間9.0,運行時間為0.5。在採用響應比高者優先調度演算法時,其平均周轉時間為T為()小時?

2.5

1.8

1.975

2.675

周轉時間=作業完成時間-作業提交時間

響應比=(作業等待時間+作業執行時間)/作業執行時間

當提交J1時,只有J1作業,執行J1,J1的周轉時間為2,此時時間為10.

J2、J3、J4提交時,由於正在執行J1,因此等待。

當J1執行完畢(此時時間為10),J2、J3、J4的等待時間分別為:1.4,1.2,1,

其響應比分別為:1.4/0.6+1=3.33    1.2/0.2+1=7      1/0.5+1=3,因此執行J3,J3的周轉時間為1.2+0.2=1.4

當J3執行完畢(此時時間為10.2),J2和J4的等待時間分別為1.6,1.2,

其響應比分別為:1.6/0.6+1=3.66      1.2/0.5+1=3.4,因此執行J2,J2的周轉時間為1.6+0.6=2.2

執行J2完畢後時間為10.8,接下來執行J4,執行完後時時間為11.3,J4的周轉時間為2.3

於是平均周轉時間為(2+1.4+2.2+2.3)/4=1.975

如果系統作業幾乎同時到達,則使系統平均作業周轉時間最短的演算法是短作業優先。

例3、

現有4個同時到達的作業J1,J2,J3和J4,它們的執行時間分別是3小時,5小時,7小時,9小時系統按單道方式運行且採用短作業優先演算法,則平均周轉時間是()小時

12.5

24

19

6

作業到達時間執行時間開始時間完成時間周轉時間

J103033

J20 5388

J30781515

J409152424

平均周轉時間(3+8+15+24)/4=12.5 

有4個進程A,B,C,D,設它們依次進入就緒隊列,因相差時間很短可視為同時到達。4個進程按輪轉法分別運行11,7,2,和4個時間單位,設時間片為1。四個進程的平均周轉時間為 ()?

15.25

16.25

16.75

17.25

17.75

18.25

A:1  4  4  3  3  2  2  2  1  1  1  共24

B:2  4  4  3  3  2  2                  共20

C:3  4                                      共7

D:4  4  3  3                              共14

字母後面的數字為等待的時間加運行時間

平均周轉時間為(24+20+7+14)/4=16.25

例5、假設系統按單值方式運行且採用最短作業優先演算法,有J1,J2,J3,J4共4個作業同時到達,則以下哪幾種情況下的平均周轉時間為10分鍾?

執行時間J1:1分鍾 J2:5分鍾 J3:9分鍾 J4:13分鍾

執行時間J1:1分鍾 J2:4分鍾 J3:7分鍾 J4:10分鍾

執行時間J1:2分鍾 J2:4分鍾 J3:6分鍾 J4:8分鍾

執行時間J1:3分鍾 J2:6分鍾 J3:9分鍾 J4:12分鍾

首先,短作業優先則短時間的作業利用資源,其餘的作業等待

根據平均周轉時間概念,將所有作業"等待時間"加上"運行時間"除以"作業數量"即可得到平均周轉時間

A: (J1執行1分鍾 + J2等待1分鍾 + J2執行5分鍾 + J3等待6分鍾 + J3執行9分鍾 + J4等待15分鍾 + J4執行13分鍾) / 4  = 50/4 = 12.5

B:  (J1執行1分鍾 + J2等待1分鍾 + J2執行4分鍾 + J3等待5分鍾 + J3執行7分鍾 + J4等待12分鍾 + J4執行10分鍾) / 4  = 40/4 = 10

C: (J1執行2分鍾 + J2等待2分鍾 + J2執行4分鍾 + J3等待6分鍾 + J3執行6分鍾 + J4等待12分鍾 + J4執行8分鍾) / 4    = 40/4 = 10

D:  (J1執行3分鍾 + J2等待3分鍾 + J2執行6分鍾 + J3等待9分鍾 + J3執行9分鍾 + J4等待18分鍾 + J4執行12分鍾) / 4  = 50/4 = 12.5

例6、假設系統中有5個進程,它們的到達時間和服務時間見下表1,忽略I/O以及其他開銷時間,若按先來先服務(FCFS)、非搶占的短作業優先和搶占的短作業優先三種調度演算法進行CPU調度,請給出各個進程的完成時間、周轉時間、帶權周轉時間、平均周轉時間和平均帶權周轉時間,完成表2。  表1 進程到達和需要服務時間  進程    到達時間    服務時間  A          0            3  B          2            6  C          4            4  D          6            5  E          8            2

表2 進程的完成時間和周轉時間

                  進程                  A      B        C      D      E        平均

  FCFS          完成時間      3      9      13      18      20 

                周轉時間            3      7        9      12      12      8.6

            帶權周轉時間      1.00 1.17  2.25  2.40    6.00      2.56

  SPF(非搶占)  完成時間    3      9      15      20      11 

                周轉時間            3      7      11      14      3        7.6

            帶權周轉時間      1.00  1.17  1.75    2.80    1.50    1.84

  SPF(搶占)    完成時間    3      15      8      20      10 

                周轉時間            3      13      4      14      2        7.2

            帶權周轉時間      1.00  2.16  1.00  2.80  1.00    1.59

例7、假定在單道批處理環境下有5個作業,各作業進入系統的時間和估計運行時間如下表所示:    作業  進入系統時間    估計運行時間/分鍾      1            8:00                40      2            8:20                30      3            8:30                12      4            9:00                18

      5            9:10                5

如果應用先來先服務和應用最短作業優先的作業調度演算法,試將下面表格填寫完整。

(1) 如果應用先來先服務的作業調度演算法,試將下面表格填寫完整。

    作業  進入系統時間  估計運行時間/分鍾  開始時間  結束時間  周轉時間/分鍾

    1        8:00            40            8:00    8:40        40

    2        8:20            30            8:40    9:10        50

    3        8:30            12            9:10    9:22        52

    4        9:00            18            9:22    9:40        40

    5        9:10            5              9:40    9:45        35

作業平均周轉時間T= 43.4  217

2)如果應用最短作業優先的作業調度演算法,試將下面表格填寫完整。    作業  進入系統時間  估計運行時間/分鍾  開始時間  結束時間  周轉時間/分鍾    1        8:00            40              8:00    8:40          40    2        8:20            30              8:52    9:22          62    3        8:30            12              8:40    8:52          22    4        9:00            18              9:27    9:45          45    5        9:10            5              9:22    9:27          17作業平均周轉時間T= 37.2  186

CPU和兩台輸入/輸出設備(I1,I2)多道程序設計環境下,同時有三個作業J1,J2,J3進行,這三個作業

使用CPU和輸入/輸出設備的順序和時間如下所示:

J1:I2(35ms);CPU(15ms);I1(35ms);CPU(15ms);I2(25ms)

J2:I1(25ms);CPU(30ms);I2(35ms)

J3:CPU(30ms);I1(25ms);CPU(15ms);I1(15ms);

假定CPU,I1,I2都能並行工作,J1的優先順序最高,J2次之,J3優先順序最低,優先順序高的作業可以搶占優先順序低的作業的CPU,但不能搶佔I1,I2,作業從J3開始到完成需要多少時間?

『肆』 採用首次適應演算法和最優置換演算法,對內存的分配和回收速度會造成什麼不同的影響

首次適應分配演算法(FF):
對空閑分區表記錄的要求是按地址遞增的順序排列的,每次分配時,總是從第1條記錄開始順序查找空閑分區表,找到第一個能滿足作業長度要求的空閑區,分割這個空閑區,一部分分配給作業,另一部分仍為空閑區。
最佳置換演算法(OPT):
選擇以後永不使用或在最長時間內不再被訪問的內存頁面予以淘汰。

閱讀全文

與置換演算法的缺點相關的資料

熱點內容
pythonredisdict 瀏覽:382
如何攻擊別人網賭伺服器 瀏覽:878
隱私與應用加密的圖案密碼 瀏覽:34
陳情令王一博解壓 瀏覽:35
c編譯器使用說明 瀏覽:703
鄭州前端程序員私活有風險嗎 瀏覽:10
小型螺桿機壓縮機 瀏覽:516
成人解壓最好的方法 瀏覽:48
最小製冷壓縮機 瀏覽:488
xampp支持python 瀏覽:367
深圳周立功單片機 瀏覽:61
圓上點與點之間角度演算法 瀏覽:869
怎麼知道微信關聯了哪些app 瀏覽:702
android事件驅動 瀏覽:888
簽約大屏系統源碼 瀏覽:808
安卓系統怎麼轉入平板 瀏覽:429
安卓手機相機怎麼提取文字 瀏覽:219
如何查看伺服器映射的外網地址 瀏覽:985
圖片刺綉演算法 瀏覽:675
阿里雲伺服器沒有實例 瀏覽:605