²Ù×÷ϵͳ¿ÎºóϰÌâ1-9´ð°¸½ÌѧÎݸ ÏÂÔØ±¾ÎÄ

Ìύʱ¼äºÍ¹À¼ÆÔËÐÐʱ¼äÓÉÏÂ±í¸ø³ö£º

×÷Òµ Ìύʱ¼ä ¹À¼ÆÔËÐÐʱ¼ä£¨·ÖÖÓ£© 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;