¡¶²Ù×÷ϵͳÔÀí¡·
ʵ Ñé Ö¸ µ¼ Êé
Îâ΢ ±à
ǰ ÑÔ
1£®ÊµÑé×ÜÌåÄ¿±ê
ͨ¹ýѧÉú×Ô¼º¶¯ÊÖÉè¼ÆÊµÑéÑéÖ¤ÀíÂÛ֪ʶ£¬Ê¹Ñ§ÉúÕÆÎÕ²Ù×÷ÏµÍ³ÌØÕ÷ºÍ¹¦ÄÜ£¬ÕÆÎÕ²»Í¬µ÷¶ÈË㷨Ͻø³ÌµÄµ÷¶È¡¢½ø³Ì¿ØÖÆ¡¢½ø³Ìµ÷¶ÈÓëËÀËø£¬²¢±ØÐëÕÆÎÕ×÷Òµ¹ÜÀí¡¢´æ´¢Æ÷¹ÜÀí¡¢É豸¹ÜÀíºÍÎļþ¹ÜÀíµÄÖ÷ÒªÔÀí¡£¼ÓÉî¶Ô²Ù×÷ϵͳ»ù±¾ÔÀíÀí½â¡£ ¢² ÊÊÓÃרҵ
¼ÆËã»ú¿ÆÑ§Óë¼¼Êõ
¢³ ÏÈÐ޿γÌ
CÓïÑÔ³ÌÐòÉè¼Æ¡¢¼ÆËã»ú×é³ÉÔÀí¡¢Êý¾Ý½á¹¹
¢´ ʵÑé¿Îʱ·ÖÅä ʵÑéÏîÄ¿ ʵÑéÒ» µ¥´¦ÀíÆ÷ϵͳµÄ½ø³Ìµ÷¶È ʵÑé¶þÉè¼ÆÒ»¸öÓÐN¸ö½ø³Ì¹²ÐеĽø³Ìµ÷¶È³ÌÐò¡£ ʵÑéÈýÅú´¦ÀíϵͳÖÐ×÷Òµµ÷¶È ʵÑéËÄ ÒøÐмÒËã·¨ ʵÑéÎåLRUÒ³ÃæÖû»µ÷¶ÈËã·¨ ʵÑéÁù ¶ÀÕ¼É豸µÄ·ÖÅäºÍ»ØÊÕÄ£Äâ ѧʱ 2 4 2 4 4 4 ¢µ ʵÑé»·¾³ ÓÐ40̨ÖеÈÅäÖõļÆËã»ú×é³ÉµÄСÐ;ÖÓòÍøµÄʵÑéÊÒ»·¾³¡£¼ÆËã»úµÄ¾ßÌåÒªÇ󣺢±Pentium 133HzÒÔÉϵÄCPU£»¢²½¨ÒéÖÁÉÙ256MBµÄÄڴ棻¢³½¨ÒéÓ²ÅÌÖÁÉÙ2GB£¬²¢ÓÐ1GB¿ÕÏпռ䡣4.°²×°Windows²Ù×÷ϵͳ¼°CÓïÑÔ±àÒë³ÌÐò¡£ ¢¶ ʵÑé×ÜÌåÒªÇó
ÅàÑø¼ÆËã»úרҵµÄѧÉúµÄϵͳ³ÌÐòÉè¼ÆÄÜÁ¦£¬ÊDzÙ×÷ϵͳ¿Î³ÌµÄÒ»¸ö·Ç³£ÖØÒªµÄ»·½Ú¡£Í¨¹ý²Ù×÷ϵͳÉÏ»úʵÑ飬¿ÉÒÔÅàÑøÑ§Éú³ÌÐòÉè¼ÆµÄ·½·¨ºÍ¼¼ÇÉ£¬Ìá¸ßѧÉú±àÖÆÇåÎú¡¢ºÏÀí¡¢¿É¶ÁÐԺõÄϵͳ³ÌÐòµÄÄÜÁ¦£¬¼ÓÉî¶Ô²Ù×÷ϵͳ¿Î³ÌµÄÀí½â¡£Ê¹Ñ§Éú¸üºÃµØÕÆ
ÎÕ²Ù×÷ϵͳµÄ»ù±¾¸ÅÄî¡¢»ù±¾ÔÀí¡¢¼°»ù±¾¹¦ÄÜ£¬¾ßÓзÖÎöʵ¼Ê²Ù×÷ϵͳ¡¢Éè¼Æ¡¢¹¹ÔìºÍ¿ª·¢ÏÖ´ú²Ù×÷ϵͳµÄ»ù±¾ÄÜÁ¦¡£ ¢· ±¾ÊµÑéµÄÖØµã¡¢Äѵ㼰½Ì°¸·½·¨½¨Òé
ÖØµã£ºÀí½â½ø³Ìµ÷¶ÈÖÐPCBµÄÉè¼Æ£¬ÒÔʵÏÖ¶Ô½ø³ÌµÄµ÷¶È¡£ Äѵ㣺½ø³Ìµ÷¶È³ÌÐòµÄÉè¼Æ£¬É豸¹ÜÀí³ÌÐòµÄÉè¼Æ¡£
½Ì°¸·½·¨½¨Ò飺Á¦ÕùÔÚ±¾Ö¸µ¼ÊéµÄ°ïÖúÏ£¬¶ÀÁ¢Éè¼Æ³ÌÐòÒÔ¼ÓÉîÀí½â¡£
Ä¿ ¼ ʵÑéÒ»¡¢ µ¥´¦ÀíÆ÷ϵͳµÄ½ø³Ìµ÷¶È
ʵÑé¶þ Éè¼ÆÒ»¸öÓÐ N¸ö½ø³Ì¹²ÐеĽø³Ìµ÷¶È³ÌÐò¡£ÊµÑéÈý Åú´¦ÀíϵͳÖÐ×÷Òµµ÷¶È ʵÑéËÄ ÒøÐмÒËã·¨
ʵÑéÎå LRUÒ³ÃæÖû»µ÷¶ÈËã·¨ ʵÑéÁù ¶ÀÕ¼É豸µÄ·ÖÅäºÍ»ØÊÕÄ£Äâ
5
10 15 18 25 29
ʵÑéÒ» µ¥´¦ÀíÆ÷ϵͳµÄ½ø³Ìµ÷¶È
Ò»¡¢ÊµÑéÄ¿µÄ
Ä£Äâµ¥´¦ÀíÆ÷ϵͳµÄ½ø³Ìµ÷¶È£¬²ÉÓö¯Ì¬ÓÅÏÈȨµÄ½ø³Ìµ÷¶ÈËã·¨×÷Ϊ½ø³ÌÉè¼ÆËã·¨£¬ÒÔ¼ÓÉî¶Ô½ø³ÌµÄ¸ÅÄî¼°½ø³Ìµ÷¶ÈËã·¨µÄÀí½â£® ¶þ¡¢ÊµÑéÀàÐÍ<º¬ÑéÖ¤ÐÍ¡¢Éè¼ÆÐÍ»ò×ÛºÏÐÍ£©
Éè¼ÆÐÍ
Èý¡¢ÊµÑéÒÇÆ÷
һ̨°²×°Windows²Ù×÷ϵͳ¼°CÓïÑÔ±àÒë³ÌÐòµÄpc»ú¡£
ËÄ¡¢ÊµÑéÔÀí Î塢ʵÑé·½·¨Óë²½Öè
<Ò»£©ÄÚÈÝ£º
<1£©ÓÃCÓïÑÔʵÏÖ¶ÔN¸ö½ø³ÌʹÓö¯Ì¬ÓÅÏÈȨËã·¨µÄ½ø³Ìµ÷¶È¡£ <2£©ÃèÊöÓÃÀ´±êʶ½ø³ÌµÄ½ø³Ì¿ØÖÆ¿éPCB½á¹¹¡£
? ½ø³Ì±êʶÊýID
? ½ø³ÌÓÅÏÈÊýPRIORITY£¬²¢¹æ¶¨ÓÅÏÈÊýÔ½´óµÄ½ø³Ì£¬ÆäÓÅÏÈȨԽ¸ß<ÈËΪָ¶¨»òËæ»úÊý£©¡£
? ½ø³ÌÒÑÕ¼ÓõÄCPUʱ¼äCPUTIME¡£
? ½ø³Ì»¹ÐèÕ¼ÓõÄCPUʱ¼äALLTIME£¬µ±½ø³ÌÔËÐÐÍê±ÏALLTIMEÊÇΪ0¡£ ? ½ø³ÌµÄ×èÈûʱ¼äSTARTBLOCK£¬±íʾµ±½ø³ÌÔÙÔËÐÐSTARTBLOCK¸öʱ¼äƬºó£¬½ø³Ì½«½øÈë×èÈû״̬¡£ ? ½ø³Ì±»×èÈûµÄʱ¼äBLOCKTIME£¬±íʾÒÑ×èÈûµÄ½ø³ÌÔٵȴýBLOCKTIME¸öʱ¼äƬºó½«×ª»»³É¾ÍÐ÷״̬¡£ ? ½ø³Ì״̬STATE¡£
? ¶ÓÁÐÖ¸ÕëNEXT£¬ÓÃÀ´½«PCBÅųɶÓÁС£
<3£©ÊÖ¹¤ÊäÈ뽨Á¢¼¸¸ö½ø³Ì£¬½¨Á¢Ò»¸ö¾ÍÐ÷¶ÓÁУ¬°´ÓÅÏÈÊýÓɸߵ½µÍÅÅÁС£ <4£©½øÐнø³Ìµ÷¶È
<5£©Ã¿½øÐÐÒ»´Îµ÷¶È³ÌÐò¶¼´òÓ¡Ò»´ÎÔËÐнø³Ì¡¢¾ÍÐ÷¶ÓÁС¢ÒÔ¼°¸÷¸ö½ø³ÌµÄPCB£¬ÒÔ±ã½øÐмì²é¡£Öظ´ÒÔÉϹý³Ì£¬Ö±µ½ËùÒª½ø³Ì¶¼Íê³ÉΪֹ¡£ <¶þ£©²Î¿¼³ÌÐò£º
#include \
#define running 1 /*ÓÃrunning ±íʾ½ø³Ì´¦ÓÚÔËÐÐ̬*/
#define aready 2 /*ÓÃaready±íʾ½ø³Ì´¦ÓÚ¾ÍÐ÷̬*/
#define blocking 3 /*ÓÃblocking±íʾ½ø³Ì´¦Óڵȴý̬*/
#define sometime 5 /*ÓÃsometime ±íʾʱ¼äƬ´óС*/
#define n 10 /* ¼Ù¶¨ÏµÍ³ÔÊÐí½ø³Ì¸öÊýΪ10 */
struct
{
int name¡£ /*½ø³Ì±êʶ·û*/
int status¡£ /*½ø³Ì״̬*/
int ax, bx, cx,dx¡£ /*½ø³ÌÏÖ³¡ÐÅÏ¢£¬Í¨ÓüĴæÆ÷ÄÚÈÝ*/
int pc¡£ /*½ø³ÌÏÖ³¡ÐÅÏ¢£¬³ÌÐò¼ÆÊýÆ÷ÄÚÈÝ*/
int psw¡£ /*½ø³ÌÏÖ³¡ÐÅÏ¢£¬³ÌÐò״̬×ּĴæÆ÷ÄÚÈÝ*/
int next¡£ /*ÏÂÒ»¸ö½ø³Ì¿ØÖÆ¿éµÄλÖÃ*/
}pcbarea[n]¡£ /*¶¨ÒåÄ£Äâ½ø³Ì¿ØÖÆ¿éÇøÓòµÄÊý×é*/
int PSW,AX,BX,CX,DX,PC,TIME¡£ /*Ä£Äâ¼Ä´æÆ÷*/
int run¡£ /*¶¨ÒåÖ¸ÏòÕýÔÚÔËÐнø³ÌµÄ½ø³Ì¿ØÖÆ¿éµÄÖ¸Õë*/
struct
{
int head¡£
int tail¡£
}ready¡£ /*¶¨ÒåÖ¸Ïò¾ÍÐ÷¶ÓÁеÄÍ·Ö¸ÕëheadºÍβָÕëtail*/
int block¡£ /*¶¨ÒåÖ¸ÏòµÈ´ý¶ÓÁеÄÖ¸Õë*/
int pfree¡£ /*¶¨ÒåÖ¸Ïò¿ÕÏнø³Ì¿ØÖÆ¿é¶ÓÁеÄÖ¸Õë*/
sheduling( >
/*½ø³Ìµ÷¶Èº¯Êý*/
{
int i¡£
if (ready.head==-1> /*¿ÕÏнø³Ì¿ØÖÆ¿é¶ÓÁÐΪ¿Õ£¬Í˳ö*/
{
printf(\ÎÞ¾ÍÐ÷½ø³Ì\\n\¡£
return¡£
}
i=ready.head¡£ /*¾ÍÐ÷¶ÓÁÐÍ·Ö¸Õ븳¸øi*/