²Ù×÷ϵͳʵÑ鱨¸æ
ѧ Ôº ר Òµ °à ¼¶ ѧ ºÅ ÐÕ Ãû Ö¸µ¼½Ìʦ
£¨2010Äê12 Ô£©
¼ÆËã»ú ѧԺ רҵ °à ѧºÅ£º
ÐÕÃû£º Ð×÷Õߣº________ ½ÌʦÆÀ¶¨£º
¿¼ÇÚÇé¿ö
³ÌÐòÔËÐÐÇé¿ö ³ÌÐòÖÊÁ¿ ʵÑé¼¼ÄÜ ´´Ð¾«Éñ ʵÑ鱨¸æ Éè¼ÆÎĵµ
ʵÑé__Ò»__ÌâÄ¿__ ½ø³Ìµ÷¶È______ _ µÚ 8 ÖÜÐÇÆÚÈý ʵÑé__¶þ__ÌâÄ¿__ ×÷Òµµ÷¶È_______ µÚ 9 ÖÜÐÇÆÚËÄ ÊµÑé__Èý(×ÛºÏÐÔ)ÌâÄ¿__Ö÷´æ¿Õ¼äµÄ·ÖÅäÓë»ØÊÕ_ µÚ 10 ÖÜÐÇÆÚËÄ ÊµÑé__ËÄ _ÌâÄ¿_ Îļþϵͳ _µÚ 15 ÖÜÐÇÆÚËÄ
ʵÑéÆ½Ì¨£º
1¡¢
¼ÆËã»ú¼°²Ù×÷ϵͳ£ºMicrosoft Windows XP Professional (SP3)
2¡¢ ±à³Ì»·¾³£º VC++ 6.0 Ô´³ÌÐòÃûºÍ¿ÉÖ´ÐгÌÐòÃû£º ʵÑéÒ»£º
Ô´Îļþ£º Èý¼¶·´À¡¶ÓÁе÷¶ÈËã·¨.cpp ¿ÉÖ´ÐÐÎļþ£º Èý¼¶·´À¡¶ÓÁе÷¶ÈËã·¨.exe
ʵÑé¶þ£º
Ô´Îļþ£º µ¥µÀÅú´¦Àíϵͳ×÷Òµµ÷¶È.cpp ¿ÉÖ´ÐÐÎļþ£ºµ¥µÀÅú´¦Àíϵͳ×÷Òµµ÷¶È.exe
ʵÑéÈý(×ÛºÏÐÔ)£º
Ô´Îļþ£º Ö÷´æ¿Õ¼ä·ÖÅäºÍ»ØÊÕ.cpp ¿ÉÖ´ÐÐÎļþ£ºÖ÷´æ¿Õ¼ä·ÖÅäºÍ»ØÊÕ.exe
ʵÑéËÄ£º
Ô´Îļþ£º Îļþϵͳ.cpp ¿ÉÖ´ÐÐÎļþ£º Îļþϵͳ.exe
2
ѧºÅ£º ÐÕÃû£º Ð×÷Õߣº________
ʵÑé__Ò»__ÌâÄ¿__ ½ø³Ìµ÷¶È___µÚ ÖÜÐÇÆÚ__ _
Ò»¡¢ÊµÑéÄ¿µÄ
Óø߼¶ÓïÑÔ±àдºÍµ÷ÊÔÒ»¸ö½ø³Ìµ÷¶È³ÌÐò£¬ÒÔ¼ÓÉî¶Ô½ø³ÌµÄ¸ÅÄî¼°½ø³Ìµ÷¶ÈËã·¨µÄÀí½â¡£
¶þ¡¢ÊµÑéÄÚÈݺÍÒªÇó
Éè¼ÆÒ»¸öÓÐ N¸ö½ø³Ì¹²ÐеĽø³Ìµ÷¶È³ÌÐò¡£ÒªÇó²ÉÓÃ×î¸ßÓÅÏÈÊýÓÅÏÈËã·¨£¬Ê±¼äƬÂÖתËã·¨£¬¶à¼¶¶ÓÁе÷¶ÈËã·¨ÕâÈýÖÖËã·¨¡£
¡¤ ÿ¸ö½ø³ÌÓÐÒ»¸ö½ø³Ì¿ØÖƿ飨 PCB£©±íʾ¡£½ø³Ì¿ØÖÆ¿é¿ÉÒÔ°üº¬ÈçÏÂÐÅÏ¢£º½ø³ÌÃû¡¢ÓÅÏÈÊý¡¢µ½´ïʱ¼ä¡¢ÐèÒªÔËÐÐʱ¼ä¡¢ÒÑÓÃCPUʱ¼ä¡¢½ø³Ì״̬µÈµÈ¡£
¡¤ ½ø³ÌµÄÓÅÏÈÊý¼°ÐèÒªµÄÔËÐÐʱ¼ä¿ÉÒÔÊÂÏÈÈËΪµØÖ¸¶¨£¨Ò²¿ÉÒÔÓÉËæ»úÊý²úÉú£©¡£½ø³ÌµÄµ½´ïʱ¼äΪ½ø³ÌÊäÈëµÄʱ¼ä¡£ ½ø³ÌµÄÔËÐÐʱ¼äÒÔʱ¼äƬΪµ¥Î»½øÐмÆËã¡£
¡¤ ÿ¸ö½ø³ÌµÄ״̬¿ÉÒÔÊǾÍÐ÷ W£¨Wait£©¡¢ÔËÐÐR£¨Run£©¡¢»òÍê³ÉF£¨Finish£©ÈýÖÖ״̬֮һ¡£
¡¤ ¾ÍÐ÷½ø³Ì»ñµÃ CPUºó¶¼Ö»ÄÜÔËÐÐÒ»¸öʱ¼äƬ¡£ÓÃÒÑÕ¼ÓÃCPUʱ¼ä¼Ó1À´±íʾ¡£
¡¤ Èç¹ûÔËÐÐÒ»¸öʱ¼äƬºó£¬½ø³ÌµÄÒÑÕ¼Óà CPUʱ¼äÒÑ´ïµ½ËùÐèÒªµÄÔËÐÐʱ¼ä£¬Ôò³·Ïû¸Ã½ø³Ì£¬Èç¹ûÔËÐÐÒ»¸öʱ¼äƬºó½ø³ÌµÄÒÑÕ¼ÓÃCPUʱ¼ä»¹Î´´ïËùÐèÒªµÄÔËÐÐʱ¼ä£¬Ò²¾ÍÊǽø³Ì»¹ÐèÒª¼ÌÐøÔËÐУ¬´ËʱӦ½«½ø³ÌµÄÓÅÏÈÊý¼õ1£¨¼´½µµÍÒ»¼¶£©£¬È»ºó°ÑËü²åÈë¾ÍÐ÷¶ÓÁеȴýCPU¡£ ÿ½øÐÐÒ»´Îµ÷¶È³ÌÐò¶¼´òÓ¡Ò»´ÎÔËÐнø³Ì¡¢¾ÍÐ÷¶ÓÁС¢ÒÔ¼°¸÷¸ö½ø³ÌµÄ PCB£¬ÒÔ±ã½øÐмì²é¡£
ÖØ¸´ÒÔÉϹý³Ì£¬Ö±µ½ËùÓеĽø³Ì¶¼Íê³ÉΪֹ¡£
Èý¡¢ÊµÑéÖ÷ÒªÒÇÆ÷É豸ºÍ²ÄÁÏ ÊµÑé»·¾³
Ó²¼þ»·¾³£º¸öÈĘ̈ʽ»ú Microsoft Windows XP Professional (SP3) Èí¼þ»·¾³£ºCÓïÑÔ±à³Ì»·¾³£¬VC++ 6.0
ËÄ¡¢ÊµÑéÔÀí¼°Éè¼Æ·½°¸
1¡¢ÊµÑéÔÀí
£¨3£©±àд²¢µ÷ÊÔÒ»¸öÄ£ÄâµÄ½ø³Ìµ÷¶È³ÌÐò£¬²ÉÓᰶ༶·´À¡¶ÓÁС±µ÷¶ÈËã·¨¶ÔÎå¸ö½ø³Ì½øÐе÷¶È¡£
¶à¼¶·´À¡¶ÓÁе÷¶ÈËã·¨µÄ»ù±¾Ë¼ÏëÊÇ£ºµ±Ò»¸öнø³Ì½øÈëÄÚ´æºó,Ê×ÏȽ«Ëü·ÅÈëµÚÒ»¶ÓÁеÄĩβ,°´FCFSÔÔòÅŶӵȴýµ÷¶È.µ±ÂÖµ½¸Ã½ø³ÌÖ´ÐÐʱ,ÈçËüÄÜÔÚ¸Ãʱ¼äƬÄÚÍê³É,±ã¿É×¼±¸³·Àëϵͳ;Èç¹ûËüÔÚÒ»¸öʱ¼äƬ½áÊøÊ±ÉÐδÍê³É,µ÷¶È³ÌÐò±ã½«¸Ã½ø³ÌתÈëµÚ¶þ¶ÓÁеÄĩβ,ÔÙͬÑùµØ°´FCFSÔÔòµÈ´ýµ÷¶ÈÖ´ÐУ¬ÒÔ´ËÀàÍÆ¡£
1¡¢ÉèÖöà¸ö¾ÍÐ÷¶ÓÁУ¬²¢¸ø¶ÓÁи³Ó費ͬµÄÓÅÏȼ¶Êý£¬µÚÒ»¸ö×î¸ß£¬ÒÀ´ÎµÝ¼õ¡£ 2¡¢¸³Óè¸÷¸ö¶ÓÁÐÖнø³ÌÖ´ÐÐʱ¼äƬµÄ´óС£¬ÓÅÏȼ¶Ô½¸ßµÄ¶ÓÁУ¬Ê±¼äƬԽС¡£ 3¡¢µ±Ò»¸öнø³Ì½øÈëÄÚ´æºó£¬Ê×ÏȽ«Æä·ÅÈëÒ»¸ö¶ÔÁÐĩ⣬Èç¹ûÔÚÒ»¸öʱ¼äƬ
3
½áÊøÊ±ÉÐδÍê³É£¬½«ÆäתÈëµÚ¶þ¶ÓÁÐĩβ¡£
4¡¢µ±Ò»¸ö½ø³Ì´ÓÒ»¸ö¶ÔÁÐÒÆÖÁµÚn¸ö¶ÓÁк󣬱ãÔÚµÚn¸ö¶ÓÁÐÖвÉÓÃʱ¼äƬÂÖתִÐÐÍê¡£
5¡¢½öµ±Ê±¼äƬ¿ÕÏÐʱ£¬²Åµ÷¶ÈµÚ¶þ¸ö¶ÓÁÐÖеĽø³Ì¡£
(1~i-1)¿ÕÏÐʱ£¬²Åµ÷¶Èi£¬Èç¹û´¦Àí»úÕýÔÚµÚi¶ÓÁÐÖÐÔËÐУ¬ÓÖÓÐнø³Ì½øÈëÓÅÏÈȨ½Ï¸ß¶ÓÁУ¬Ôòнø³ÌÇÀÕ¼´¦Àí»ú£¬½«ÕýÔÚÔËÐеĽø³Ì·ÅÈëµÚi¶ÓÁжÓ⣬½«´¦Àí»ú·Ö¸øÐ½ø³Ì¡£
2¡¢ Éè¼Æ·½°¸
struct pcb {
char name[10]; //½ø³ÌÃû
char state; //½ø³Ì״̬ w£ºµÈ´ý r£ºÔËÐÐ int queue; //½ø³Ì¶ÓÁÐ 1£º2£º3 int priority; // Êý×ÖԽСÓÅÏȼ¶Ô½¸ß int needtime; //ÐèÔËÐÐʱ¼ä int runtime; //ÒѾÔËÐÐʱ¼ä
pcb *link; //½ø³Ì¶ÓÁÐÏÂÒ»Ö¸Õë }*ready=NULL,*run; typedef struct pcb PCB;
//·Ö±ðÉèÖÃÈýÌõ¾ÍÐ÷¶ÓÁÐÍ·Ö¸ÕëºÍβָÕë
PCB *First=NULL,*Second=NULL,*Third=NULL,*end1=NULL,*end2=NULL,*end3=NULL; //ΪÈýÌõ¾ÍÐ÷¶ÓÁÐÉèÖÃÈý¸öʱ¼äƬ£º1£º2£º3 int time[3];
4