²Ù×÷±ê׼ϵͳ¡ªºÓº£´óѧÎÄÌìѧԺ ÏÂÔØ±¾ÎÄ

}

} while (b==0);

cout<<\×ð¾´µÄÓû§,ÄúËù´´½¨µÄ½ø³ÌÊýΪ\plist head;

head=(plist)malloc(sizeof(pcb));//Ϊͷ½áµã·ÖÅä¿Õ¼ä head->next=NULL;

create(head,a);//ͨ¹ý²åÈëµÄ·½·¨¹¹ÔìÁ´±í cout<

cout<<\³õʼ»¯´´½¨µÄ½ø³ÌΪ:\start=clock();

showjincheng(head); //ÏÔʾÁ´±íµÄÄÚÈÝ yunxing(head); //¶Ô½ø³Ì½øÐвÙ×÷µÄ¹ý³Ì cout<

cout<<\ËùÓеĽø³Ì¶¼ÒѾ­ÔËÐнáÊøÁË£¡\cout<

shijian=double(finish-start)/CLOCKS_PER_SEC; cout<<\³ÌÐòµÄÖ´ÐÐʱ¼äΪ\cout<

ʵÑé¶þ ´æ´¢¹ÜÀí

Ò»¡¢ÊµÑéÄ¿µÄ

´æ´¢¹ÜÀíµÄÖ÷Òª¹¦ÄÜÖ®Ò»ÊǺÏÀíµØ·ÖÅä¿Õ¼ä¡£ÇëÇóҳʽ¹ÜÀíÊÇÒ»ÖÖ³£ÓõÄÐé

Äâ´æ´¢¹ÜÀí¼¼Êõ¡£

±¾ÊµÑéµÄÄ¿µÄÊÇͨ¹ýÇëÇóҳʽ´æ´¢¹ÜÀíÖÐÒ³ÃæÖû»Ë㷨ģÄâÉè¼Æ , Á˽âÐéÄâ´æ´¢¼¼ÊõµÄÌØµã , ÕÆÎÕÇëÇóҳʽ´æ´¢¹ÜÀíµÄÒ³ÃæÖû»Ëã·¨¡£

¶þ¡¢ÊµÑéÄÚÈÝ

ͨ¹ýËæ»úÊý²úÉúÒ»¸öÖ¸ÁîÐòÁÐ,¹²320ÌõÖ¸Áî¡£Ö¸ÁîµÄµØÖ·°´ÏÂÊöÔ­ÔòÉú³É : ¢Ù 50% µÄÖ¸ÁîÊÇ˳ÐòÖ´Ðеģ»

¢Ú 25% µÄÖ¸ÁîÊǾùÔÈ·Ö²¼ÔÚǰµØÖ·²¿·Ö£» ¢Û 25% µÄÖ¸ÁîÊǾùÔÈ·Ö²¼ÔÚºóµØÖ·²¿·Ö¡£ ¾ßÌåµÄʵʩ·½·¨ÊÇ :

¢ÙÔÚ [0,319] µÄÖ¸ÁîµØÖ·Ö®¼äËæ»úѡȡһÆðµã m; ¢Ú˳ÐòÖ´ÐÐÒ»ÌõÖ¸Áî;

¢ÛÔÚǰµØÖ·[0,m+1]ÖÐËæ»úѡȡһÌõÖ¸Áî²¢Ö´ÐÐ , ¸ÃÖ¸ÁîµÄµØÖ·Îª m¡ä; ¢Ü˳ÐòÖ´ÐÐÒ»ÌõÖ¸Áî , ÆäµØÖ·Îª m¡ä+1;

¢ÝÔÚºóµØÖ· [m¡ä+2,319] ÖÐËæ»úѡȡһÌõÖ¸Áî²¢Ö´ÐÐ ; ¢ÞÖØ¸´ÉÏÊö²½Öè¢Ú ~ ¢Ý , Ö±µ½Ö´ÐÐ 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)£» ¢Ú ×î½ü×î¾ÃδʹÓÃËã·¨ (LRU);

ÃüÖÐÂÊ = 1 - Ò³ÃæÊ§Ð§´ÎÊý¨MÒ³µØÖ·Á÷³¤¶È

ÔÚ±¾ÊµÑéÖÐ , Ò³µØÖ·Á÷³¤¶ÈΪ 320, Ò³ÃæÊ§Ð§´ÎÊýΪÿ´Î·ÃÎÊÏàÓ¦Ö¸Áîʱ , ¸ÃÖ¸ÁîËù¶ÔÓ¦µÄÒ³²»ÔÚÄÚ´æµÄ´ÎÊý¡£

Èý¡¢ÐéÄâÄÚ´æÊµÏÖÔ­Àíͼ

ÄÚ´æ·ÖÅäºÍ»ØÊÕ»úÖÆ ÇëÇóÒ³»úÖÆ µØÖ·Ó³Éä»úÖÆ ½»»»»úÖÆ

»º´æºÍˢлúÖÆ ËÄ£®Ô´³ÌÐò·ÖÎö

/*08¼ÆËã»ú4°à*/ #include #include //¶ÓÁÐ

#include //»ñȡϵͳµÄʱ¼ä using namespace std;

typedef struct //Ò³ÃæµÄ½á¹¹ÌåÐÅÏ¢ {

int id; //Ò³ÃæµÄidºÅ

int staytime; //ÔÚÄÚ´æÖеÄÍ£ÁôµÄʱ¼ä int unusualtime; //¶à¾Ãδ±»Ê¹ÓõÄʱ¼ä }Cpage;

deque queue; //¿ÉÒÔÖ±½ÓµÄʹÓöÓÁеķ½·¨ deque interPage; //ÄÚ´æÖеÄÒ³Ãæ deque exterPage; //Íâ´æÖÐÒ³Ãæ int xianzaiweizhi;

int lacknum[2] ={0,0}; //ȱʧµÄÒ³ÃæÊý

int getRandNum(int range) //·µ»Ø[0,range)·¶Î§ÄÚµÄÕûÊý {

return int(rand()%range); //¸ù¾Ýsrandº¯ÊýµÃµ½Ëæ»úÊý

}

void InitDevice() //³õʼ»¯ÔËÐжÓÁÐ °´ÕÕ25% 50% 25%µÄ±ê×¼Éú³É {

srand(int(time(NULL)));

//ͨ¹ýµ÷ÓÃϵͳʱ¼ä,²úÉúËæ»úÊý,²¢Ç¿ÖƵÄת»¯³ÉÕûÐÍ int yehao = getRandNum(320); //Ëæ»úÑ¡ÔñµÚÒ»ÌõÖ¸Áî queue.push_back(yehao); //½«Æä²åÈë¶ÓÁÐ if(yehao <319)

queue.push_back(yehao+1); //˳ÐòÖ´ÐÐÏÂÒ»ÌõÖ¸Áî while(queue.size() < 320) //Ò»Ö±ÔËÐе½¶ÓÁÐÖеĸöÊýµÈÓÚ320 {

yehao = getRandNum(yehao); //Ìø×ªµ½m1ÊôÓÚ[0,m-1] queue.push_back(yehao); //½«m1²åÈë¶ÓÁÐ if(yehao < 319)

queue.push_back(yehao+1); //½«m1+1²åÈë¶ÓÁÐ int temp = 320 - (yehao + 2);

yehao = yehao+2+getRandNum(temp);//Ìø×ªµ½m2ÊôÓÚ[m+2,319] queue.push_back(yehao); //²åÈë¶ÓÁÐ if(yehao < 319)

queue.push_back(yehao+1); //½«m2+1²åÈë¶ÓÁÐ }

while(queue.size() > 320)