資源簡(jiǎn)介
這個(gè)呢是大二的操作系統(tǒng)的課程設(shè)計(jì),我選的頁(yè)面置換,好久沒(méi)看了,運(yùn)行沒(méi)問(wèn)題可能排版什么的不太妥當(dāng),大家參考參考就好啦,不過(guò)我不知道為什么發(fā)出去都要積分才可以看,本來(lái)想發(fā)不用積分就可以下載的,但是不太會(huì),哈哈哈畢竟剛開(kāi)始上傳資源嘛
代碼片段和文件信息
#include
#include
#include
int?knum;?//物理的塊數(shù)
int?ynum;?//訪問(wèn)頁(yè)面?zhèn)€數(shù)
static?int?memery[10]={0};?//塊中的頁(yè)號(hào)
static?int?page[100]={0};?//頁(yè)面號(hào)
static?int?temp[100][10]={0};?//存入輸出需要用到的數(shù)組
void?FIFO();//先進(jìn)先出置換算法
void?LRU();//最近最久未使用算法
void?OPT();//最佳置換算法
void?print(unsigned?int?count);//輸出函數(shù)
void?main()
{
?????int?i;
?????int?chance;
?????printf(“歡迎來(lái)到頁(yè)面置換!\n“);
?????system(“pause“);//請(qǐng)按任意鍵繼續(xù)
?????system(“cls“);//清屏
?????printf(“請(qǐng)輸入塊數(shù):\n“);
?????scanf(“%d“&knum);
?????printf(“請(qǐng)輸入訪問(wèn)頁(yè)面數(shù):\n“);
?????scanf(“%d“&ynum);
?????printf(“請(qǐng)輸入訪問(wèn)頁(yè)面:\n“);
?????for(i=0;i ?????scanf(“%d“&page[i]);
?????do{
?????printf(“--------------------------\n“);
?????printf(“看看哪個(gè)算法能被你抽中呀!\n“);
?????printf(“\n“);
?????printf(“1.先進(jìn)先出\n“);
?????printf(“2.最近最久未使用\n“);
?????printf(“3.最優(yōu)算法\n“);
?????printf(“--------------------------\n“);
?????printf(“請(qǐng)輸入你所選擇的算法序號(hào):“);
?????scanf(“%d“&chance);
????????switch(chance)
????????{
????????case?1:
????????????FIFO();
????????????break;
????????case?2:
????????????LRU();
????????????break;
????????case?3:
????????????OPT();
????????????break;
????????case?4:
????????????exit(0);
default:
printf(“輸入錯(cuò)誤,請(qǐng)重新輸入:“);
????????}
????}while?(chance!=4);
getch();
}
void?print(unsigned?int?count)
{
????int?ijkl;
????for(j=0;j ????{
????for(i=0;i ?????????{
?????????????if(i>=j)
printf(“?%d“temp[i][j]);
else
printf(“??“);
?????????}
?????}
?????printf(“----------------------------------------\n“);
printf(“缺頁(yè)次數(shù):%d\t\t“count+knum);
printf(“缺頁(yè)率:%d/%d\n“count+knumynum);
printf(“置換次數(shù):%d\t\t“count);
printf(“----------------------------------------\n“);
}
void?FIFO()//先進(jìn)先出
{
????int?memery[10]={0};
????int?time[10]={0};?/*記錄進(jìn)入物理塊的時(shí)間*/
????int?ijkm;
????int?max=0;?/*記錄換出頁(yè)*/
????int?count=0;?/*記錄置換次數(shù)*/
/*前mSIZE個(gè)數(shù)直接放入*/
????for(i=0;i ????{
????????memery[i]=page[i];
????????time[i]=i;
????????for(j=0;j temp[i][j]=memery[j];
????}
????for(i=knum;i ????{
/*判斷新頁(yè)面號(hào)是否在物理塊中*/
????????for(j=0k=0;j ????????{
????????????if(memery[j]!=page[i])
????????????????k++;
????????}
????????if(k==knum)?/*如果不在物理塊中*/
????????{
????????????count++;
/*計(jì)算換出頁(yè)*/
????????????max=tim
評(píng)論
共有 條評(píng)論