ʵ Ñé ±¨ ¸æ
£¨2014 / 2015 ѧÄê µÚ Ò» ѧÆÚ£©
¿Î³ÌÃû³Æ ʵÑéÃû³Æ
¼ÆËã»ú²Ù×÷ϵͳ
ÐéÄâ´æ´¢ÖÐÒ³ÃæÖû»Ëã·¨µÄÄ£ÄâʵÏÖ 2014
ʵÑéʱ¼ä Ö¸µ¼µ¥Î» Ö¸µ¼½Ìʦ
Äê 12 ÔÂ 19 ÈÕ
ÄϾ©Óʵç´óѧ
´ÞÑÜ
ѧÉúÐÕÃû ѧԺ(ϵ)
ÎïÁªÍøÔº
°à¼¶Ñ§ºÅ ר Òµ
ÍøÂ繤³Ì
ʵ Ñé ±¨ ¸æ
ʵÑéÃû³Æ ÐéÄâ´æ´¢ÖÐÒ³ÃæÖû»Ëã·¨µÄÄ£ÄâʵÏÖ ÊµÑéÀàÐÍ ÉÏ»úʵÑé ʵÑéѧʱ Ò»¡¢ ʵÑéÄ¿µÄºÍÒªÇó Ä¿µÄ£º ͨ¹ýÇëÇóҳʽ´æ´¢¹ÜÀíÖÐÒ³ÃæÖû»Ë㷨ģÄâÉè¼Æ£¬ Á˽âÐéÄâ´æ´¢¼¼ÊõµÄ¼¼ÊõÌØµã£¬ ÕÆÎÕÇëÇóҳʽ´æ´¢¹ÜÀíµÄÒ³ÃæÖû»Ëã·¨ ÒªÇó£º (1)Éè¼ÆÊµÏÖÏÂÃæËã·¨£¬²¢Êä³öÏÂÊö¸÷ÖÖËã·¨µÄÃüÖÐÂÊ¡£ ¢ÙÏȽøÏȳöµÄËã·¨£¨FIFO£©£» ¢Ú×î½ü×îÉÙʹÓÃËã·¨£¨LRR)£» ¢Û×î¼ÑÌÔÌËã·¨£¨OPT£©ÏÈÌÔÌ×î²»³£ÓõÄÒ³µØÖ·¡£ (2)¶à´Î·´¸´ÔËÐиĽøºóµÄ³ÌÐò£¬¹Û²ì²¢¼Ç¼ÔËÐнá¹û£¬²¢·ÖÎöÔÒò¡£ Ö¸µ¼½Ìʦ ´ÞÑÜ 4 ʵÑéʱ¼ä 2014.12.19 ¶þ¡¢ÊµÑé»·¾³(ʵÑéÉ豸) Vc++6.0 - 2 -
¶þ¡¢ ʵÑéÔÀí¼°ÄÚÈÝ
ʵÑéÈý
#include
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 -