Ìύʱ¼äºÍ¹À¼ÆÔËÐÐʱ¼äÓÉÏÂ±í¸ø³ö£º
×÷Òµ Ìύʱ¼ä ¹À¼ÆÔËÐÐʱ¼ä£¨·ÖÖÓ£© 1 8£º00 60 2 8£º20 35
3 8£º25 20 4 8£º30 25 5 8£º35 5 6 8£º40 10
ϵͳ²ÉÓöÌ×÷ÒµÓÅÏȵ÷¶ÈËã·¨£¬×÷Òµ±»µ÷¶È½øÈëϵͳºóÖÐ;²»µÃÍ˳ö¡£µ«×÷ÒµÔËÐÐʱ¿É±»¸ü¶ÌµÄ×÷ÒµÇÀÕ¼¡£·Ö±ð¸ø³ö6¸ö×÷ÒµµÄÖ´ÐÐʱ¼äÐòÁУ¬×÷ÒµµÄÖÜתʱ¼ä£¬ ƽ¾ùÖÜתʱ¼ä¡£
´ð£º
×÷ÒµµÄÖ´ÐÐ˳ÐòΪ£º1£¨8£º20£©£¬2£¨8£º25£©£¬3£¨8£º45£©£¬5£¨8£º50£©£¬6£¨9£º00£©£¬4£¨9£º25£©£¬2£¨9£º55£©£¬1£¨10£º35£©
×÷Òµ1µÄÖÜתʱ¼ä = 155 min ×÷Òµ2µÄÖÜתʱ¼ä = 95 min ×÷Òµ3µÄÖÜתʱ¼ä = 20 min ×÷Òµ4µÄÖÜתʱ¼ä = 55 min ×÷Òµ5µÄÖÜתʱ¼ä = 15 min ×÷Òµ6µÄÖÜתʱ¼ä = 20 min
×÷ÒµµÄƽ¾ùÖÜתʱ¼äΪ£º360/6=60
3.20 ÔÚÒ»¸öʵʱϵͳÖÐÓÐ4¸öÖÜÆÚÐÔʼþ£¬ÖÜÆÚ·Ö±ðΪ50¡¢100¡¢150¡¢200ms¡£¼ÙÉèÆä´¦Àíʱ¼ä·Ö±ðÐèÒª30¡¢25¡¢20ºÍxms£¬Ôò¸Ãϵͳ¿Éµ÷¶ÈÔÊÐíµÄxÖµ×î´óΪ¶àÉÙ£¿ ½â:
30/50 + 25/100 +150/20 +200/x =1 X = 10/3
3.21 ijϵͳµÄ½ø³Ì״̬±ä»¯Èçͼ3.23Ëùʾ£¬¸ÃϵͳµÄ½ø³Ìµ÷¶ÈΪ·ÇÇÀÕ¼·½Ê½£¬¸ù¾Ý¸Ã״̬ͼÐðÊöϵͳµÄµ÷¶È²ßÂÔ¡¢µ÷¶ÈЧ¹û¡£ µÍÓÅÏȼ¶¾ÍÐ÷ ÔËÐÐ Æä´ÎÑ¡Ôñ100ms Ê×ÏÈÑ¡Ôñ100ms
×èÈû ¸ßÓÅÏȼ¶¾ÍÐ÷
ͼ3.23 ״̬±ä»¯Í¼
y´ð£ºÊ×ÏȲÉÓÃÓÅÏÈȨ¸ßÕßÓÅÏȵ÷¶ÈËã·¨£¬È»ºó²ÉÓÃʱ¼äƬΪ100msµÄµ÷¶ÈËã·¨¡£
¸Ãµ÷¶ÈËã·¨Èç¹ûµ÷¶ÈЧ¹û¿¼ÂǸüÖܵ½µÄ»°£¬Ó¦¸ÃÈÃ×èÈû¶ÓÁÐÉϵĽø³Ì»½ÐѺó½øÈëµÍÓÅÏȼ¶¾ÍÐ÷¶ÓÁУ¬ÕâÑùÄܹ»±£Ö¤ÓÅÏȼ¶¸ßµÄ½ø³Ì¼°Ê±µ÷¶È£¬ÓÅÏȼ¶µÍµÄ½ø³ÌÄܹ»ºÏÀíµÄµÃµ½µ÷¶È¡£
µÚ4ÕÂ
4.13 Èç¹ûÓÐn¸ö½ø³Ì¹²ÏíÒ»¸ö»¥³â¶Î
£¨1£©Èç¹ûÿ´ÎÖ»ÔÊÐíÒ»¸ö½ø³Ì½øÈ뻥³â¶Î¡£
£¨2£©Èç¹ûÿ´Î×î¶àÔÊÐím¸ö½ø³Ìͬʱ½øÈ뻥³â¶Î£¨m £¨1£©»¥³âÐźÅÁ¿³õֵΪ1£¬±ä»¯·¶Î§Îª[-n+1£¬1]¡£ µ±Ã»Óнø³Ì½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎª1£» µ±ÓÐ1¸ö½ø³Ì½øÈ뻥³â¶Îʱ£¬µ«Ã»Óнø³ÌµÈ´ý½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎª0£» µ±ÓÐ1¸ö½ø³Ì½øÈ뻥³â¶Î£¬ÓÐ1¸ö½ø³ÌµÈ´ý½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎª-1£» ×î¶à¿ÉÓÐn-1¸ö½ø³ÌµÈ´ý½øÈ뻥³â¶Î£¬¹Ê´ËʱÐźÅÁ¿µÄֵΪ-£¨n-1£©¡£ £¨2£©»¥³âÐźÅÁ¿³õֵΪm£¬±ä»¯·¶Î§Îª[m-n£¬m]¡£ µ±Ã»Óнø³Ì½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎªm£» µ±ÓÐ1¸ö½ø³Ì½øÈ뻥³â¶Îʱ£¬µ«Ã»Óнø³ÌµÈ´ý½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎªm-1£» µ±ÓÐm¸ö½ø³Ì½øÈ뻥³â¶Î£¬µ«Ã»Óнø³ÌµÈ´ý½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎª0£» µ±ÓÐm¸ö½ø³Ì½øÈ뻥³â¶Î£¬ÓÐ1¸ö½ø³ÌµÈ´ý½øÈ뻥³â¶Îʱ£¬ÐźÅÁ¿ÖµÎª-1£» ×î¶à¿ÉÓÐn-m¸ö½ø³ÌµÈ´ý½øÈ뻥³â¶Î£¬¹Ê´ËʱÐźÅÁ¿µÄֵΪ-£¨n-m£©¡£ 4.14 ÔÚÁ½ÌõË«ÏòµÀ·µÄ½»²æÂ·¿Ú£¬Ã»ÓÐÐÐÈËͨ¹ý£¬Ö»ÓÐÆû³µÍ¨¹ý¡£½»Í¨Çé¿öÈç Ï£º £¨1£©Èκθø¶¨µÄʱ¿ÌÖ»ÄÜÓÐÒ»Á¾³µ¹ýÂí·£» £¨2£©µ±Ò»Á¾³µµ½´ï½»²æÂ·¿Ú²¢ÇÒÁíÒ»Ìõ½ÖµÀÉÏûÓгµÀ´µ½µÄʱºò£¬Ó¦¸ÃÔÊÐí´Ë³µÍ¨¹ý£» £¨3£©µ±Á½¸ö·½ÏòÉ϶¼Óгµµ½´ïµÄʱºò£¬ËüÃÇÓ¦¸ÃÂÖÁ÷ͨ¹ý£¬ÒÔ·ÀÖ¹ÔÚÆäÖÐÒ»¸ö·½ÏòÉϵÄÎÞÏÞÆÚÑÓ³Ù¡£ ÓÃÐźÅÁ¿²Ù×÷ʵÏÖµÀ·½»Í¨ÎÊÌâ¡£ ½â£º semphore S1=0,S2=0;//ÓÐÎÞ³µµ½´ï£¬Îª0ʱÎÞµ½´ï semphore M1=1,M2=0;//·Öб»Õ¼ P1: if(³µµ½´ï) v(S1); while(!S1); if(!S2) ¹ýÒ»Á¾³µ£» else { p(M2); p(M1); ¹ýÒ»Á¾³µ£» v(M1); } P2: if(³µµ½´ï) v(S2); while(!S2); if(!S1) ¹ýÒ»Á¾³µ£» else { p(M1); p(S2); ¹ýÒ»Á¾³µ£» v(M2); } 4.15 ÔÚÕÜѧ¼Ò½ø²ÍÎÊÌâÖУ¬¼ÙÉè5¸öÕÜѧ¼ÒÖеÚi¸öÖ´ÐÐÏÂÃæµÄ´úÂë¶Î p(mutex); p(fork[i]); p(fork[i+1%5]); v(mutex); eat; v(fork[i]); v(fork[i+1%5]); £¨1£©ËµÃ÷Õâ¶Î´úÂëÊÇ·ñÂú×ãÕÜѧ¼Ò½ø²ÍÎÊÌâµÄËùÓÐÐèÇó¡£ £¨2£©Èç¹ûV(mutex)Óï¾ä¸ÄÔÚµÚ¶þ¸öV()²Ù×÷Ö®ºó£¬»òÕßÔÚÁ½¸öP()²Ù×÷Ö®¼ä£¬ËµÃ÷ÕâÁ½ÖÖ½â¾ö·½·¨ÊǸĽøÁËËã·¨»¹ÊDZ仵ÁËËã·¨¡£ ´ð£º (a)Âú×ã (b)¶¼²»ÐÐ 4.16 ÓÐÁ½¸öÓÅÏȼ¶ÏàͬµÄ½ø³ÌP1ºÍP2£¬¸÷×ÔÖ´ÐеIJÙ×÷ÈçÏ£¬ÐÅ ºÅÁ¿S1ºÍS2µÄ³õÖµ¶¼Îª0£¬ÊÔÎÊP1¡¢P2²¢·¢Ö´Ðкó£¬x¡¢y¡¢z µÄÖµ¸÷Ϊ¶àÉÙ£¿ P1£º P2£º begin begin y: = 1; £¨1£© x: = 1; £¨5£© y: = y + 3; £¨2£© x: = x + 5; £¨6£© V(S1); P(S1); z: = y + 1; £¨3£© x: = x + y; £¨7£© P(S2); V(S2); y: = y + z; £¨4£© z: = x + z; £¨8£© end; end; ´ð£ºÓï¾ä£¨1£©£¨2£©£¨5£©£¨6£©²»Ïཻ£¬ÈκÎÖ´ÐÐ˳Ðò£¬½á¹ûÏàͬ¡£ Çé¿ö1£ºÓï¾ä£¨4£©ÏÈÖ´ÐÐx=10£¬y=9£¬z=15£» Çé¿ö2£ºÓï¾ä£¨8£©ÏÈÖ´ÐÐx=10£¬y=19£¬z=15£» Çé¿ö3£ºÓï¾ä£¨3£©ÍƳٵ½Óï¾ä£¨8£©Ö®ºó£¬x²»¶¨£¬y=4£¬z²»¶¨£» ? 4.17 Á½¸ö½ø³ÌA¡¢B£¬¿¼ÂÇÏÂÃæµÄÐźÅÁ¿±àÂë semaphore s = 1; int x=10,y=2; fork(A£¬0); fork(B£¬0); A( ) { B( ) { £¨1£© x++; £¨4£© if (x>10) £¨2£© V(s); £¨5£© x??; £¨3£© y=x?2; £¨6£© else {P(s); } x?? ;} } ·Ö±ð˵Ã÷£¨1£©¡¢£¨2£©¡¢£¨3£©¡¢£¨4£©¡¢£¨5£©¡¢£¨6£©Óï¾äÖ®ºóµÄx¡¢yֵΪ¶àÉÙ£¿ ´ð£º £¨1£©x=11,y=2 (2) x=11,y=2 (3) x=11,y=9 (4)x=11,y=9 (5) x=10,y=9 (6) x=10,y=8 4.18 Èý¸ö½ø³Ì£ºÊäÈë¡¢¼ÆËã¡¢Êä³ö¡£ËüÃÇͨ¹ýÁ½¸ö»º³åÇø´«µÝÊý¾Ý£¬Èçͼ4.11Ëùʾ¡£ ÿ¸ö»º³åÇøÒ»´ÎÖ»ÄÜ·ÅÈëÒ»ÌõÊý¾Ý¡£Ð´³öÓÃÐźÅÁ¿½øÐÐͬ²½¡£ ½â£ºvar empty1,full1,empty2,full2:semaphore:=1,0,1,0; begin parbegin I:begin repeat wait(empty1); put to buffer1; signal(full1); until false;