2 任務:CLOCK算法 2.1 任務描述 設計CLOCK頁面置換算法模擬程序:從鍵盤輸入訪問串。計算CLOCK算法在不同內存頁框數時的缺頁數和缺頁率。要求程序模擬駐留集變化過程,即能模擬頁框裝入與釋放過程。 2.2任務要求 輸入串長度作為總頁框數目,補充程序完成CLOCK算法。 2.3算法思路 裝入內存的頁框用鏈接指針組織成循環隊列;為該隊列設置一個掃描指針,用于記錄上次替換后下一頁框的位置;每頁的頁表項設一個引用位;每訪問一頁,其“引用位”賦值為1。淘汰時,掃描循環隊列,若引用位為0則淘汰該頁;若引用位為1則改為0,繼續掃描下一頁。
#include "stdio.h"#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif#ifndef NULL
#define NULL 0
#endif#define INVALID -1 //-1表示缺頁//頁表結構
typedef struct pl_type{ int pn; //頁號int fn; //頁框號int r; //引用位
}pl_type;//頁框鏈結構
typedef struct fl_type{ int fn; //頁框號int pn; //頁號struct fl_type *next; //鏈接指針
}fl_type;//定義結構變量
pl_type pl[512];
fl_type fl[512],*head;int page[512]; //訪問串(存放每條指令的頁號)
int TOTAL_PAGES; //訪問串長度
int diseffect; //頁故障數void initialize(i