操作系統實驗--存儲管理

一、實驗名稱

存儲管理

二、實驗內容

        設計一個請求頁式存儲管理方案,並編寫模擬程序實現。淘汰算法採用兩種不同的算法如:FIFO和LRU,並比較它們的不同之處。

三、實驗原理和設計思路

        不同的置換算法,可使同一組進程發生的缺頁率不同,如果採用的置換算法不當,會大大降低CPU的使用高效率。
        FIFO算法優先置換最先進入內存的頁。LRU每次選擇離當前時間被訪問最遠的頁置換。

四、核心代碼

// 框架採用Houchaoqun_XMU提供的源代碼
//海轟根據實驗具體要求進行了改進
void FIFO()
{
	cout<<"------------------ FIFO算法------------------ "<<endl;
	cout<<"頁面置換情況如下:"<<endl;
	initial();
	bool isInQueue;
	int point = 0;  
	for (int i = MinBlockNum;i<PageNum;i++)
	{
		isInQueue = false;
		for (int k = 0;k<MinBlockNum;k++)
		{
			if (VirtualQueue[k] == PageOrder[i])   //如果當前頁面在隊列中
			{
				isInQueue = true;
			}
		}

		if (!isInQueue)   //如果當前頁面不在隊列中,則進行相應的處理
		{
			LackPageNum++;  //缺頁數加1

			VirtualQueue[point] = PageOrder[i];
			display(PageOrder[i],!isInQueue);// 填滿之後的輸出
			point++;
			if (point == MinBlockNum) 
			{
				point = 0;  //當point指向隊尾後一位的時候,將point重新指向隊首
			}
		}
		else
		{
				display(PageOrder[i],!isInQueue);
		}
	}	
}
void LRU()
{
	cout<<"------------------LRU算法------------------ "<<endl;
	cout<<"頁面置換情況如下:"<<endl;

	initial();
	bool isInQueue;
	int point,k;  //指向最長時間未被訪問的下標
	
	for(int i = MinBlockNum;i<PageNum;i++)
	{
		isInQueue = false;	
		for (k = 0;k<MinBlockNum;k++)
		{
			if (VirtualQueue[k] == PageOrder[i])   //如果當前頁面在隊列中
			{
				isInQueue = true;
			}
		}

		if (!isInQueue)
		{
			LackPageNum++;
			point = 0;
			for (int j = 1;j<MinBlockNum;j++)
			{
				if (LRUtime[point]<LRUtime[j])
				{
					point = j;
				}
			}

			for (int s = 0;s<MinBlockNum;s++)//其餘頁面對應的時間要+1
			{
				if (VirtualQueue[s] != VirtualQueue[point])
				{
					LRUtime[s]++;
				}
			}

			VirtualQueue[point] = PageOrder[i];
			LRUtime[point] = 0;

			display(PageOrder[i],!isInQueue);
		}//if
		else   //負責更新當前對應頁面的時間
		{
			for (int s = 0;s<MinBlockNum;s++)//其餘頁面對應的時間要+1
			{
				if (VirtualQueue[s] != PageOrder[i])
				{
					LRUtime[s]++;
				}
				else
					LRUtime[s] = 0;
			}
				display(PageOrder[i],!isInQueue);
		}
	}//for
}

五、結果截圖(部分)

在這裏插入圖片描述

雨聽

青苔入鏡 檐下風鈴 搖晃曾經 回憶 無從剪接
微信搜索【海轟Pro】
相互學習,共同進步!
海轟會不間斷更新源碼的 Thanks♪(・ω・)ノ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章