ºÃÎĵµ - רҵÎÄÊéд×÷·¶ÎÄ·þÎñ×ÊÁÏ·ÖÏíÍøÕ¾

²Ù×÷ϵͳʵÑ鱨¸æ-(5)

ÓÉ ÌìÏ ·ÖÏí ʱ¼ä£º ¼ÓÈëÊÕ²Ø ÎÒҪͶ¸å µãÔÞ

»³»¯Ñ§Ôº ÊýѧϵÐÅÏ¢Óë¼ÆËã¿Æѧרҵ ¡¶²Ù×÷ϵͳ¡· ʵÑ鱨¸æ

ʵÑéÃû³Æ£º´æ´¢¹ÜÀí

ѧºÅ °à¼¶ ÐÕÃû

1 ʵÑéÄ¿µÄ£º

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

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

2 ʵÑéÔ¤±¸ÄÚÈÝ£º

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

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

¢ÙÔÚ [0£¬319] µÄÖ¸ÁîÖ®¼äËæ¼´Ñ¡È¡Ò»Æðµãm; ¢Ú˳ÐòÖ´ÐÐÒ»ÌõÖ¸Á¼´Ö´ÐеØַΪm+1µÄÖ¸Á

¢ÛÔÚÇ°µØÖ·[0£¬m+1]ÖÐËæ»úÑ¡È¡Ò»ÌõÖ¸Áî²¢Ö´ÐУ¬¸ÃÖ¸ÁîµÄµØַΪm¡ä£» ¢Ü˳ÐòÖ´ÐÐÒ»ÌõÖ¸ÁÆäµØַΪ m¡ä+ 1£»

¢ÝÔÚºóµØÖ·[m¡ä+ 2£¬319]ÖÐËæ»úÑ¡È¡Ò»ÌõÖ¸Áî²¢Ö´ÐУ» ¢ÞÖظ´ÉÏÊö²½Öè¢Ù-¢Ý£¬Ö±µ½Ö´ÐÐ320´ÎÖ¸Áî¡£ £¨2£©½«Ö¸ÁîÐòÁб任ΪҳµØÖ·Á÷ É裺¢ÙÒ³Ãæ´óСΪ1k£»

¢ÚÓû§ÄÚ´æÈÝÁ¿Îª4Ò³µ½32Ò³£» ¢ÛÓû§Ðé´æÈÝÁ¿Îª32k¡£

ÔÚÓû§Ðé´æÖУ¬°´Ã¿k´æ·Å10ÌõÖ¸ÁîÅÅÔÚÐé´æµØÖ·£¬¼´320ÌõÖ¸ÁîÔÚÐé´æÖеĴæ·Å·½Ê½Îª£º

µÚ0Ìõ-µÚ9ÌõÖ¸ÁîΪµÚ0Ò³£¨¶ÔÓ¦Ðé´æµØַΪ[0£¬9]£©£»

µÚ10Ìõ-µÚ19ÌõÖ¸ÁîΪµÚÒ»Ò³£¨¶ÔÓ¦Ðé´æµØַΪ[10£¬19]£©£» ¡­ ¡­

µÚ310Ìõ~µÚ319ÌõÖ¸ÁîΪµÚ31Ò³£¨¶ÔÓ¦ÐéµØַΪ[310£¬319]£©¡£ °´ÒÔÉÏ·½Ê½£¬Óû§Ö¸Áî¿É×é³É32Ò³¡£

£¨3£©¼ÆËã²¢Êä³öÏÂÊö¸÷ÖÖËã·¨ÔÚ²»Í¬ÄÚ´æÈÝÁ¿ÏµÄÃüÖÐÂÊ¡£ ¢ÙÏȽøÏȳöµÄËã·¨£¨FIFO£©£» ¢Ú×î½ü×îÉÙʹÓÃËã·¨£¨LRR)£»

¢Û×î¼ÑÌÔÌ­Ëã·¨£¨OPT£©ÏÈÌÔÌ­×î²»³£ÓõÄÒ³µØÖ·£» ¢Ü×îÉÙ·ÃÎÊÒ³ÃæËã·¨£¨LFR£©£» ¢Ý×î½ü×î²»¾­³£Ê¹ÓÃËã·¨£¨NUR£©¡£ ÆäÖТۺ͢ÜΪѡÔñÄÚÈÝ¡£

»³»¯Ñ§Ôº ÊýѧϵÐÅÏ¢Óë¼ÆËã¿Æѧרҵ ¡¶²Ù×÷ϵͳ¡· ʵÑ鱨¸æ

ÃüÖÐÂÊ=1-Ò³ÃæʧЧ´ÎÊý/Ò³µØÖ·Á÷³¤¶È

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

3¡¢Ëæ»úÊý²úÉú°ì·¨£¬Linux»òUNIXϵͳÌṩº¯Êýstrand()ºÍrand(),·Ö±ð½øÐгõʼ»¯ºÍ²úÉúËæ»úÊý¡£ÀýÈ磺 srand ();

Óï¾ä¿É³õʼ»¯Ò»¸öËæ»úÊý£» a[0]=10*rand()/65535*319+1; a[1]=10*rand()/65535*a[0];

Óï¾ä¿ÉÓÃÀ´²úÉúa[0]Óëa[1]ÖеÄËæ»úÊý¡£

3 ʵÑéÄÚÈÝ£º

<ÈÎÎñ>

Éè¼ÆÒ»¸öÐéÄâ´æ´¢ÇøºÍÄڴ湤×÷Çø,²¢Ê¹ÓÃÏÂÁÐËã·¨¼ÆËã·ÃÎÊÃüÖÐÂÊ.

£¨1£© ½øÏȳöµÄËã·¨£¨FIFO£©

£¨2£© ×î½ü×îÉÙʹÓõÄËã·¨£¨LRU£© £¨3£© ×î¼ÑÌÔÌ­Ëã·¨(OPT) £¨4£© ×îÉÙ·ÃÎÊÒ³ÃæËã·¨(LFU) £¨5£© ×î½ü×î²»¾­³£Ê¹ÓÃËã·¨(NUR)

ÃüÖÐÂÊ=(1-Ò³ÃæʧЧ´ÎÊý)/Ò³µØÖ·Á÷³¤¶È

4 ʵÑé²½Öè:

±¾ÊµÑéµÄ³ÌÐòÉè¼Æ»ù±¾ÉÏ°´ÕÕʵÑéÄÚÈݽøÐС£¼´Ê×ÏÈÓÃsrand()ºÍrand()º¯Êý¶¨ÒåºÍ²úÉúÖ¸ÁîÐòÁУ¬È»ºó½«Ö¸ÁîÐòÁб任³ÉÏàÓ¦µÄÒ³µØÖ·Á÷£¬²¢Õë¶Ô²»Í¬µÄËã·¨¼ÆËã³öÏàÓ¦µÄÃüÖÐÂÊ¡£Ïà¹Ø¶¨ÒåÈçÏ£º 1 Êý¾Ý½á¹¹

(1)Ò³ÃæÀàÐÍ typedef struct{

int pn,pfn,counter,time; }pl-type;

ÆäÖÐpn ΪҳºÅ,pfnΪÃæºÅ, counterΪһ¸öÖÜÆÚÄÚ·ÃÎʸÃÒ³ÃæµÄ´ÎÊý, timeΪ·ÃÎÊʱ¼ä. (2) Ò³Ãæ¿ØÖƽṹ pfc-struct{

int pn,pfn;

struct pfc_struct *next; }

typedef struct pfc_struct pfc_type;

pfc_type pfc_struct[total_vp],*freepf_head,*busypf_head; pfc_type *busypf_tail;

ÆäÖÐpfc[total_vp]¶¨ÒåÓû§½ø³ÌÐéÒ³¿ØÖƽṹ, *freepf_headΪ¿ÕÒ³ÃæÍ·µÄÖ¸Õë, *busypf_headΪæҳÃæÍ·µÄÖ¸Õë,

»³»¯Ñ§Ôº ÊýѧϵÐÅÏ¢Óë¼ÆËã¿Æѧרҵ ¡¶²Ù×÷ϵͳ¡· ʵÑ鱨¸æ

*busypf_tailΪæҳÃæβµÄÖ¸Õë. 2£®º¯Êý¶¨Òå

£¨1£©Void initialize( ):³õʼ»¯º¯Êý,¸øÿ¸öÏà¹ØµÄÒ³Ã渳ֵ. £¨2£©Void FIFO( ):¼ÆËãʹÓÃFIFOË㷨ʱµÄÃüÖÐÂÊ. £¨3£©Void LRU( ):¼ÆËãʹÓÃLRUË㷨ʱµÄÃüÖÐÂÊ. £¨4£©Void OPT( ):¼ÆËãʹÓÃOPTË㷨ʱµÄÃüÖÐÂÊ. £¨5£©Void LFU( ):¼ÆËãʹÓÃLFUË㷨ʱµÄÃüÖÐÂÊ. £¨6£©Void NUR( ):¼ÆËãʹÓÃNURË㷨ʱµÄÃüÖÐÂÊ. 3.±äÁ¿¶¨Òå

(1)int a[total_instruction]: Ö¸ÁîÁ÷Êý¾Ý×é.

(2)int page[total_instruction]: ÿÌõÖ¸ÁîËùÊôµÄÒ³ºÅ.

(3)int offset[total_instruction]: ÿҳװÈë10ÌõÖ¸ÁîºóÈ¡Ä£ÔËËãÒ³ºÅÆ«ÒÆÖµ. (4)int total_pf: Óû§½ø³ÌµÄÄÚ´æÒ³ÃæÊý. (5)int disaffect: Ò³ÃæʧЧ´ÎÊý. 4.³ÌÐò²Î¿¼Ô´Âë¼°½á¹û <³ÌÐò>

#define TRUE 1 #define FALSE 0 #define INVALID -1 #define NULL 0

#define total_instruction 320 /*Ö¸ÁîÁ÷³¤*/ #define total_vp 32 /*ÐéÒ³³¤*/ #define clear_period 50 /*Çå0ÖÜÆÚ*/

typedef struct /*Ò³Ãæ½á¹¹*/ {

int pn; //Ò³ºÅ logic number

int pfn; //Ò³Ãæ¿ò¼ÜºÅ physical frame number int counter; //¼ÆÊýÆ÷ int time; //ʱ¼ä }pl_type;

pl_type pl[total_vp]; /*Ò³ÃæÏßÐԽṹ---Ö¸ÁîÐòÁÐÐèҪʹÓõØÖ·*/

typedef struct pfc_struct /*Ò³Ãæ¿ØÖƽṹ£¬µ÷¶ÈËã·¨µÄ¿ØÖƽṹ*/ { int pn; int pfn;

struct pfc_struct *next; }pfc_type;

²Ù×÷ϵͳʵÑ鱨¸æ-(5)

»³»¯Ñ§ÔºÊýѧϵÐÅÏ¢Óë¼ÆËã¿Æѧרҵ¡¶²Ù×÷ϵͳ¡·ÊµÑ鱨¸æʵÑéÃû³Æ£º´æ´¢¹ÜÀíѧºÅ°à¼¶ÐÕÃû1ʵÑéÄ¿µÄ£º´æ´¢¹ÜÀíµÄÖ÷Òª¹¦ÄÜÖ®Ò»ÊǺÏÀíµØ·ÖÅä¿Õ¼ä¡£ÇëÇóҳʽ¹ÜÀíÊÇÒ»ÖÖ³£ÓõÄÐéÄâ´æ´¢¹ÜÀí¼¼Êõ¡£<
ÍƼö¶È£º
µã»÷ÏÂÔØÎĵµÎĵµÎªdoc¸ñʽ
73xbr82ssg7f1wl0k4bu3bj0w6iihw013kg
ÁìÈ¡¸£Àû

΢ÐÅɨÂëÁìÈ¡¸£Àû

΢ÐÅɨÂë·ÖÏí