ÄϾ©Óʵç´óѧʵÑ鱨¸æÄ£°æ 2 - ͼÎÄ

ʵ Ñé ±¨ ¸æ

£¨2014 / 2015 ѧÄê µÚ Ò» ѧÆÚ£©

¿Î³ÌÃû³Æ ʵÑéÃû³Æ

¼ÆËã»ú²Ù×÷ϵͳ

ÐéÄâ´æ´¢ÖÐÒ³ÃæÖû»Ëã·¨µÄÄ£ÄâʵÏÖ 2014

ʵÑéʱ¼ä Ö¸µ¼µ¥Î» Ö¸µ¼½Ìʦ

Äê 12 ÔÂ 19 ÈÕ

ÄϾ©Óʵç´óѧ

´ÞÑÜ

ѧÉúÐÕÃû ѧԺ(ϵ)

ÎïÁªÍøÔº

°à¼¶Ñ§ºÅ ר Òµ

ÍøÂ繤³Ì

ʵ Ñé ±¨ ¸æ

ʵÑéÃû³Æ ÐéÄâ´æ´¢ÖÐÒ³ÃæÖû»Ëã·¨µÄÄ£ÄâʵÏÖ ÊµÑéÀàÐÍ ÉÏ»úʵÑé ʵÑéѧʱ Ò»¡¢ ʵÑéÄ¿µÄºÍÒªÇó Ä¿µÄ£º ͨ¹ýÇëÇóҳʽ´æ´¢¹ÜÀíÖÐÒ³ÃæÖû»Ë㷨ģÄâÉè¼Æ£¬ Á˽âÐéÄâ´æ´¢¼¼ÊõµÄ¼¼ÊõÌØµã£¬ ÕÆÎÕÇëÇóҳʽ´æ´¢¹ÜÀíµÄÒ³ÃæÖû»Ëã·¨ ÒªÇó£º (1)Éè¼ÆÊµÏÖÏÂÃæËã·¨£¬²¢Êä³öÏÂÊö¸÷ÖÖËã·¨µÄÃüÖÐÂÊ¡£ ¢ÙÏȽøÏȳöµÄËã·¨£¨FIFO£©£» ¢Ú×î½ü×îÉÙʹÓÃËã·¨£¨LRR)£» ¢Û×î¼ÑÌÔÌ­Ëã·¨£¨OPT£©ÏÈÌÔÌ­×î²»³£ÓõÄÒ³µØÖ·¡£ (2)¶à´Î·´¸´ÔËÐиĽøºóµÄ³ÌÐò£¬¹Û²ì²¢¼Ç¼ÔËÐнá¹û£¬²¢·ÖÎöÔ­Òò¡£ Ö¸µ¼½Ìʦ ´ÞÑÜ 4 ʵÑéʱ¼ä 2014.12.19 ¶þ¡¢ÊµÑé»·¾³(ʵÑéÉ豸) Vc++6.0 - 2 -

¶þ¡¢ ʵÑéÔ­Àí¼°ÄÚÈÝ

ʵÑéÈý

#include #include #include #include #define Bsize 4

typedef struct BLOCK//ÉùÃ÷Ò»ÖÖÐÂÀàÐÍ¡ª¡ªÎïÀí¿éÀàÐÍ {

int pagenum;//Ò³ºÅ

int accessed;//·ÃÎÊ×ֶΣ¬ÆäÖµ±íʾ¶à¾Ãδ±»·ÃÎÊ

}BLOCK;

int pc;//³ÌÐò¼ÆÊýÆ÷£¬ÓÃÀ´¼Ç¼ָÁîµÄÐòºÅ int n;//ȱҳ¼ÆÊýÆ÷£¬ÓÃÀ´¼Ç¼ȱҳµÄ´ÎÊý static int temp[320];//ÓÃÀ´´æ´¢320ÌõËæ»úÊý

BLOCK block[Bsize]; //¶¨ÒåÒ»´óСΪ4µÄÎïÀí¿éÊý×é

//************************************************************* void init( ); //³ÌÐò³õʼ»¯º¯Êý

int findExist(int curpage);//²éÕÒÎïÀí¿éÖÐÊÇ·ñÓиÃÒ³Ãæ int findSpace( );//²éÕÒÊÇ·ñÓпÕÏÐÎïÀí¿é int findReplace( );//²éÕÒÓ¦ÓèÖû»µÄÒ³Ãæ void display ( );//ÏÔʾ

void suijishu( );//²úÉú320ÌõËæ»úÊý,ÏÔʾ²¢´æ´¢µ½temp[320] void pagestring( );//ÏÔʾµ÷ÓõÄÒ³Ãæ¶ÓÁÐ void OPT( );//OPTËã·¨ void LRU( );// LRUËã·¨ void FIFO( );//FIFOËã·¨

//************************************************************* void init( ) {

for(int i=0;i

block[i].pagenum=-1; block[i].accessed=0;

- 3 -

pc=n=0; } }

//------------------------------------------------------------- int findExist(int curpage) {

for(int i=0; i

if(block[i].pagenum == curpage )

return i;//¼ì²âµ½ÄÚ´æÖÐÓиÃÒ³Ãæ£¬·µ»ØblockÖеÄλÖà }

return -1; }

//------------------------------------------------------------- int findSpace( ) {

for(int i=0; i

if(block[i].pagenum == -1)

return i;//ÕÒµ½¿ÕÏеÄblock£¬·µ»ØblockÖеÄλÖà }

return -1; }

//------------------------------------------------------------- int findReplace( ) {

int pos = 0;

for(int i=0; i

if(block[i].accessed >block[pos].accessed)

pos = i;//ÕÒµ½Ó¦ÓèÖû»Ò³Ã棬·µ»ØBLOCKÖÐλÖà } return pos; }

//------------------------------------------------------------- void display( )

- 4 -

{

for(int i=0; i

if(block[i].pagenum != -1)

{ printf(\ }

cout<

//------------------------------------------------------------- void suijishu( ) { int flag=0; cin>>pc;

cout<<\°´ÕÕÒªÇó²úÉúµÄ320¸öËæ»úÊý£º*******\ for(int i=0;i<320;i++) { temp[i]=pc;

if(flag%2==0) pc=++pc20; if(flag==1) pc=rand( )% (pc-1);

if(flag==3) pc=pc+1+(rand( )%(320-(pc+1))); flag=++flag%4; printf(\

if((i+1)==0) cout<

//------------------------------------------------------------- void pagestring( ) {

for(int i=0;i<320;i++) {

printf(\ if((i+1)==0) cout<

//------------------------------------------------------------- void OPT( ) {

int exist,space,position ;

- 5 -

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4