2 任務:LRU算法 2.1 任務描述 設計LRU頁面置換算法模擬程序:從鍵盤輸入訪問串。計算LRU算法在不同內存頁框數時的缺頁數和缺頁率。要求程序模擬駐留集變化過程,即能模擬頁框裝入與釋放過程。 2.2任務要求 輸入串長度作為總頁框數目,補充程序完成LRU算法。 2.3算法思路 LRU算法的原理是置換過去被訪問距當前最遠的頁。LRU的實現有幾種方法,如計時法、計數法、隊列法。這里采用計時法。給每頁設一個訪問時間time,初始值都為-1。每訪問一頁,把它的time置為當前時間。缺頁時,若需替換,淘汰time值最小的頁面,淘汰后把該time置為-1。程序修改如下:
#include <stdio.h>
#include <stdlib.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 time; //訪問時間int dist; //下次訪問離當前頁的距離
}pl_type;//頁框鏈結構類型
typedef struct fl_type {int pn; //頁號int fn; //頁框號struct fl_type *next; //鏈接指針
}fl_type;//結構變量
pl_type pl[512]; //頁表
fl_type fl[512],*free_head,*busy_head,*busy_tail; //頁框int pag