內容簡介:
操作系統(tǒng)課程設計 存儲管理
以下是課程設計題目:
一、實驗目的
存儲管理的主要功能之一是合理地分配空間。請求頁式管理是一種常用的虛擬存儲管理技術。
本實驗的目的是通過請求頁式存儲管理中頁面置換算法模擬設計 , 了解虛擬存儲技術的特點 , 掌握請求頁式存儲管理的頁面置換算法。
二、實驗內容
通過隨機數產生一個指令序列,共320條指令。指令的地址按下述原則生成 :
① 50% 的指令是順序執(zhí)行的;
② 25% 的指令是均勻分布在前地址部分;
③ 25% 的指令是均勻分布在后地址部分。
具體的實施方法是 :
①在 [0,319] 的指令地址之間隨機選取一起點 m;
②順序執(zhí)行一條指令;
③在前地址[0,m+1]中隨機選取一條指令并執(zhí)行 , 該指令的地址為 m′;
④順序執(zhí)行一條指令 , 其地址為 m′+1;
⑤在后地址 [m′+2,319] 中隨機選取一條指令并執(zhí)行 ;
⑥重復上述步驟② ~ ⑤ , 直到執(zhí)行 320 次指令。
(1) 將指令序列變換成為頁地址流
設:①頁面大小為 1K;
②用戶內存容量為 4 頁到 32 頁 ;
③用戶虛存容量為 32K 。
在用戶虛存中 , 按每 K 存放 10 條指令排列虛存地址 , 即 320 條指令在虛存中的存放方式為 :
第 0 條 ~ 第 9 條指令為第 0 頁 ( 對應虛存地址為 [0,9]);
第 10 條 ~ 第 19 條指令為第 1 頁 ( 對應虛存地址為 [10,19] ) ;
┇
┇
第 310 條 ~ 第 319 條指令為第 31 頁 ( 對應虛存地址為 [310,319]) 。
按以上方式 , 用戶指令可組成 32 頁。
(2) 計算并輸出下述各種算法在不同內存容量下的命中率。
① 先進先出的算法 (FIFO);
② 最近最少使用算法 (LRR);
③ 最少訪問頁面算法 (LFR);
④ 最近最不經常使用算法 (NUR)。
命中率 = 1 - 頁面失效次數∕頁地址流長度
在本實驗中 , 頁地址流長度為 320, 頁面失效次數為每次訪問相應指令時 , 該指令所對應的頁不在內存的次數。
三、隨機數產生辦法
關于隨機數產生辦法 ,Linux 或 UNIX 系統(tǒng)提供函數 srand( ) 和 rand( ), 分別進行初 始化和產生隨機數。例如 :
srand ();
語句可初始化一個隨機數 ;
a[o]=10 * rand( ) / 32767 * 319 + 1;
a[1]= 10 * rand( ) / 32767 * a[o];
┇
語句可用來產生 a[0] 與 a[1] 中的隨機數。
以下是實驗指導:
【實驗內容】
〈任務〉
設計一個虛擬存儲區(qū)和內存工作區(qū) , 并使用下述算法計算訪問命中率。
(1) 先進先出的算法 (FIFO)
(2 )最近最少使用算法 (LRU)
(3) 最佳淘汰算法 (OPT)
(4) 最少訪問頁面算法 (LFU)
(5 )最近最不經常使用算法 (NUR)
命中率 =(1 一頁面失效次數 )/ 頁地址流長度
〈程序設計〉
本實驗的程序設計基本上按照實驗內容進行。即首先用Srand()和rand()函數定義
和產生指令序列,然后將指令序列變換成相應的頁地址流,并針對不同的算法計算出相應的命中率。相關定義如下:
1. 數據結構
(1) 頁面類型
typedef struct{
int pn,pfn,counter,time;
}pl_type;
其中 pn 為頁號 ,pfn 為面號 ,counter 為一個周期內訪問該頁面次數 ,time 為訪問時間。
(2) 頁面控制結構
struct pfc_struct{
int pn,pfn;
struct pfc_struct *next;
};
typedef struct pfc_struct pfc_type;
pfc_type pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;
其中 pfc[total_vp] 定義用戶進程虛頁控制結構 ,
*freepf_head 為空頁面頭的指針 ,
*busypf_head 為忙頁面頭的指針 ,
*busypf_tail 為忙頁面尾的指針。
2. 函數定義
(1)void initializd(): 初始化函數 , 給每個相關的頁面賦值。
(2)void FIFO(): 計算使用 FIFO 算法時的命中率。
(3)void LRU(): 計算使用 LRU 算法時的命中率。
(4)void OPT(): 計算使用 OPT 算法時的命中率。
以下是部分源代碼:
// test_1.cpp : 定義控制臺應用程序的入口點。
//
/**************************************************************
*此程序為頁面調度程序,用于模擬虛存與主存之間的頁面置換
*并同時采用FIFO,LRU,OPT,LFT,NUR幾種算法
*并比較在不同算法下及不同的主存頁面狀態(tài)下,主存的命中率的高低
**************************************************************
*/
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
#define TRUE 1
#define FALSE 0
#define INVALID -1 /*頁面失效符*/
#define null 0
#define total_instruction 320 /*指令流長*/
#define total_vp 32 /*虛頁長*/
#define clear_period 50 /*清零周期*/
typedef struct
{ /*頁面結構*/
int pn,pfn,counter,time;
}pl_type;
/*--pn為頁面隊列號,pfn為頁面控制結構中的頁號,counter為訪問次數--*/
pl_type pl[total_vp]; /*頁面結構數組;建立虛存頁面空間*/
相關說明:
1. 如您下載的資料不止一份,建議您注冊成為本站會員。會員請登錄后下載。
2. 會員購買金幣50元以下,0.7元/個,50元以上,0.5元/個。具體請看:下載與付款。
3. 會員48小時內下載同一文件,不重復扣金幣。
4. 下載后請用WinRAR或 WinZIP解壓縮后使用。
5. 如仍有其他下載問題,請看常見問題解答。
下載地址:
|