¼ÆËã»ú²Ù×÷ϵͳÊÔÌâ¿â£¨Ô­£© ÏÂÔر¾ÎÄ

13£®Ò»¸ö½ø³ÌµÄ´óСΪ5¸öÒ³Ã棬ΪËü·ÖÅäÁËËĸöÎïÀí¿é¡£µ±Ç°Ã¿¸ö¿éµÄÇé¿öÈçϱíËùʾ£¨¶¼ÎªÊ®½øÖÆÊý£¬ÇÒ´Ó0¿ªÊ¼¼ÆÊý¡££©¡£µ±ÐéÒ³4·¢Éúȱҳʱ£¬Ê¹ÓÃÏÂÁеÄÒ³ÃæÖû»Ëã·¨£¬ÄÄÒ»¸öÎïÀí¿é½«±»»»³ö£¿²¢½âÊÍÔ­Òò£®£¨10·Ö£© Ò³ºÅ 2 1 0 3

0 1 2 3

¿éºÅ 60 130 26 20 IFOËã·¨ LRUËã·¨ CLOCKËã·¨

µ±Ò³ÃæµÄ·ÃÎÊ´®Îª£º¡°4£¬0£¬0£¬0£¬2£¬4£¬2£¬1£¬0£¬3£¬2¡±µÄOPTËã·¨

¼ÓÔØʱ¼ä

161 0 160 0 162 1 163 1

·ÃÎÊʱ¼ä

1 0 0 1

·ÃÎÊλR ÐÞ¸ÄλM

£±£® £²£® £³£® £´£®

½â£º1£®»»³öµÚ3ºÅÐéÒ³£¬ÒòΪËü¼ÓÔصÄʱ¼ä×îÔ磻 2£®»»³öµÚ1ºÅÐéÒ³£¬ÒòΪËü×î½ü×î¾Ãû±»·ÃÎÊ£»

3£®»»³öµÚ1ºÅÐéÒ³£¬ÒòΪËü×î½ü¼Èû±»·ÃÎÊ£¬ÓÖû±»Ð޸ģ» 4£®»»³öµÚ3ºÅÐéÒ³£¬ÒòΪËüÀë·ÃÎʵã×îÔ¶¡£

14. ÓÃÕûÐÍÐźÅÁ¿ÃèÊöÔÚÕÜѧ¼Ò½ø²ÍÎÊÌâÖУ¬ÖÁ¶àÔÊÐí4¸öÕÜѧ¼Òͬʱ½ø²ÍµÄËã·¨¡££¨10·Ö£© ½â£ºpublic class diningphilosophers {

semaphore [] fork = new semaphore [5] (1); semaphore room = new semaphore (4); int i;

void philosopher (int i) { while (true) think();

wait (room); wait (fork[i]);

wait (fork [(i+1) % 5]); eat();

signal (fork [(i+1) % 5]); signal (fork[i]); signal (room); } void main() {

parbegin (philosopher (0), philosopher (1), philosopher (2), philosopher (3), philosopher (4)); } }

15£®¿¼ÂÇÒ»¸öÓÐ150¸ö´æ´¢Æ÷µ¥ÔªµÄϵͳ£¬ÈçÏ·ÖÅä¸øÈý¸ö½ø³Ì£º ½ø³Ì ×î´ó Õ¼ÓÐ ¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª 1 70 45 2 60 40 3 60 15

ʹÓÃÒøÐмÒËã·¨£¬ÒÔÈ·¶¨ÏÂÃæµÄÈκÎÒ»¸öÇëÇóÊÇ·ñ°²È«£º

a£®µÚ4¸ö½ø³Ìµ½´ï£¬×î¶àÐèÒª60¸ö´æ´¢µ¥Ôª£¬×î³õÐèÒª25¸öµ¥Ôª£»

b£®µÚ4¸ö½ø³Ìµ½´ï£¬×î¶àÐèÒª60¸ö´æ´¢µ¥Ôª£¬×î³õÐèÒª35¸öµ¥Ôª£» Èç¹û°²È«¸ø³ö°²È«ÐòÁУ»Èô²»°²È«¸ø³ö½á¹û·ÖÅä¼ò±í¡££¨10·Ö£© ½â£º½ø³Ì ×î´ó Õ¼ÓÐ ÉÐÐè ¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª 1 70 45 25 2 60 40 20 3 60 15 45 4 60 25 35 °²È«ÐòÁÐΪ£º1¡¢2¡¢3¡¢4

ËùÒÔϵͳÊÇ°²È«µÄ£¬¿ÉÒÔ½øÐзÖÅä¡£ b£®

½ø³Ì ×î´ó Õ¼ÓÐ ÉÐÐè ¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª 1 70 45 25 2 60 40 20 3 60 15 45 4 60 35 25

¿ÉÓÃ 15

¿ÉÓÃ

25

µ±Ç°¿ÉÓõÄ×ÊÔ´²»¹»ÈκÎÒ»¸ö½ø³ÌÔËÐÐÍê±Ï£¬ËùÒÔ²»°²È«¡£

16. Jruassic ¹«Ô°ÓÐÒ»¸ö¿ÖÁú²©Îï¹ÝºÍÒ»¸ö¹«Ô°.ÓÐm¸öÂÿͺÍnÁ¾³µ,ÿÁ¾³µÖ»ÄÜÈÝÄÉÒ»¸öÂÿ͡£ÂÿÍÔÚ²©Îï¹Ý¹äÁËÒ»»á¶ù£¬È»ºóÅŶӳË×øÂÃÐгµ¡£µ±Ò»Á¾³µ¿ÉÓÃʱ£¬ËüÔØÈëÒ»¸öÂÿͣ¬È»ºóÈƹ«Ô°ÐÐÊ»ÈÎÒⳤµÄʱ¼ä¡£Èç¹ûnÁ¾³µ¶¼Òѱ»ÂÿͳË×øÓÎÍ棬ÔòÏë×ø³µµÄÂÿÍÐèÒªµÈ´ý£»Èç¹ûÒ»Á¾³µÒѾ­¾ÍÐ÷£¬µ«Ã»ÓÐÂÿ͵ȴý£¬ÄÇôÕâÁ¾³µµÈ´ý¡£Ê¹ÓÃÐźÅÁ¿Í¬²½m¸öÂÿͺÍnÁ¾³µµÄ½ø³Ì¡££¨10·Ö£© ½â£º

visitors=m; Pvi() { repeat wait(cars); wait(mutex); get on; travell; get off; signal(cars); wait(mutex); until false; }

cars=n;

mutex=1; Pci() { repeat wait(visitors); wait(mutex); start; run; stop; signal(visitors); wait(mutex); until false; }

18¡¢Èô¸É¸öµÈ´ý·ÃÎÊ´ÅÅÌÕßÒÀ´ÎÒª·ÃÎʵĴŵÀΪ20£¬44£¬40£¬4£¬80£¬12£¬76£¬¼ÙÉèÿÒƶ¯Ò»¸ö´ÅµÀÐèÒª3ºÁÃëʱ¼ä£¬Òƶ¯±Ûµ±Ç°Î»ÓÚ40ºÅÖùÃ棬Çë°´ÏÂÁÐËã·¨·Ö±ðд³ö·ÃÎÊÐòÁв¢¼ÆËãΪÍê³ÉÉÏÊö¸÷´Î·ÃÎÊ×ܹ²»¨·ÑµÄÑ°µÀʱ¼ä¡£

£¨1£©ÏÈÀ´ÏÈ·þÎñËã·¨£» £¨2£©×î¶ÌÑ°µÀʱ¼äÓÅÏÈËã·¨¡£

£¨3£©É¨ÃèËã·¨£¨µ±Ç°´ÅÍ·Òƶ¯µÄ·½ÏòΪ´ÅµÀµÝÔö£©£¨10·Ö£© ½â£º

£¨1£©´ÅµÀ·ÃÎÊ˳ÐòΪ£º20£¬44£¬40£¬4£¬80£¬12£¬76

Ñ°µÀʱ¼ä=£¨20+24+4+36+76+68+64£©*3=292*3=876 £¨2£©´ÅµÀ·ÃÎÊ˳ÐòΪ£º40£¬44£¬20£¬12£¬4£¬76£¬80 Ñ°µÀʱ¼ä=£¨0+4+24+8+8+72+4£©*3=120*3=360 £¨3£©´ÅµÀ·ÃÎÊ˳ÐòΪ£º40£¬44£¬76£¬80£¬20£¬12£¬4 Ñ°µÀʱ¼ä=£¨0+4+32+4+60+8+8£©*3=116*3=348

19¡¢Éú²úÕߺÍÏû·ÑÕßÎÊÌâ £¨10·Ö£©

ÓÐÒ»×éÉú²úÕßP1£¬P2£¬¡­¡­£¬PMºÍÒ»×éÏû·ÑÕßC1£¬C2£¬¡­¡­£¬CK£¬ËûÃÇͨ¹ýÓÉn¸ö»·Ðλº³åÇø¹¹³ÉµÄ»º³å³Ø½øÐÐͨÐÅ£¬Éú²úÕ߰ѲúÆ··ÅÈ뻺³åÇø£¬Ïû·ÑÕß´Ó»º³åÇøÈ¡²úÆ·À´Ïû·Ñ¡£ÇëÓÃwaitºÍsignalÔ­ÓïʵÏÖËûÃǵÄͬ²½²Ù×÷¡£

½â£ºÉú²úÕߺÍÏû·ÑÕßÎÊÌâ begin

Var mutex,empty,full:semaphore:=1,n,0; buffer:array[0,¡­,n-1] of item; in,out:integer := 0,0; parbegin

producer: begin repeat produce next product ; wait (empty); wait (mutex); buffer(in):=nextp ; in := (in+1) mod n ; signal (full); signal (mutex); until false ; end consumer: begin repeat wait (full); wait (mutex); nextc := buffer(out); out := (out+1) mod n; signal (empty); signal (mutex); consume the item in nextc; until false ; end parend end

21£®½ñÓÐÈý¸ö²¢·¢½ø³ÌR£¬M£¬P£¬ËüÃǹ²ÏíÁËÒ»¸ö¿ÉÑ­»·Ê¹ÓõĻº³åÇøB£¬»º³åÇøB¹²ÓÐN¸öµ¥Ôª¡£½ø³ÌR¸ºÔð´ÓÊäÈëÉ豸¶ÁÐÅÏ¢£¬Ã¿¶ÁÒ»¸ö×Ö·ûºó£¬°ÑËü´æ·ÅÔÚ»º³åÇøBµÄÒ»¸öµ¥ÔªÖУ»½ø³ÌM¸ºÔð´¦Àí¶ÁÈëµÄ×Ö·û£¬Èô·¢ÏÖ¶ÁÈëµÄ×Ö·ûÖÐÓпոñ·û£¬Ôò°ÑËü¸Ä³É¡°£¬¡±£»½ø³ÌP¸ºÔð°Ñ´¦ÀíºóµÄ×Ö·ûÈ¡³ö²¢´òÓ¡Êä³ö¡£µ±»º³åÇøµ¥ÔªÖеÄ×Ö·û±»½ø³ÌPÈ¡³öºó£¬ÔòÓÖ¿ÉÓÃÀ´´æ·ÅÏÂÒ»´Î¶ÁÈëµÄ×Ö·û¡£ÇëÓÃPV²Ù×÷Ϊͬ²½»úÖÆд³öËüÃÇÄÜÕýÈ·²¢·¢Ö´ÐеijÌÐò¡£ £¨10·Ö£© ½â£º£¨10·Ö£© begin

Var mutex,input,calculate,output:semaphore:=1,n,0,0; buffer:array[0,¡­,n-1] of item; in,mid,out:integer := 0,0,0; proR() { do { wait (input); wait (mutex); buffer(in):=input data; in := (in+1) mod n ; signal (calculate); signal (mutex); while true ; } proM() { do { wait (calculate); wait (mutex); buffer(middle):=calculate data ; mid := (mid+1) mod n ; signal (output); signal (mutex); } while true ; } proP() { do { wait (output); wait (mutex); buffer(out):=calculate data ; out := (out+1) mod n ; signal (input); signal (mutex); } while true ; }

25¡¢Éèij×÷ÒµÕ¼ÓÐ7¸öÒ³Ã棬Èç¹ûÔÚÖ÷´æÖÐÖ»ÔÊÐí×°Èë4¸ö¹¤×÷Ò³Ãæ(¼´¹¤×÷¼¯Îª4)£¬×÷ÒµÔËÐÐʱ£¬Êµ¼Ê·ÃÎÊÒ³ÃæµÄ˳ÐòÊÇ£º1£¬ 2£¬ 3£¬ 6£¬ 4£¬ 7£¬ 3£¬ 2£¬ 1£¬ 4£¬ 7£¬ 5£¬ 6£¬ 5£¬ 2£¬ 1¡£ÊÔÓÃFIFO¡¢LRUÒ³ÃæÖû»Ëã·¨£¬Áгö¸÷×ÔµÄÒ³ÃæÌÔ̭˳ÐòºÍÒ³ÃæÖû»´ÎÊý¡£¼ÙÉ迪ʼʱûÓÐÈκÎÒ³ÔÚÄÚ´æÖС£ (10·Ö) ½â£ºFIFO£º

1£¬ 2£¬ 3£¬ 6£¬ 4£¬ 7£¬ 3£¬ 2£¬ 1£¬ 4£¬ 7£¬ 5£¬ 6£¬ 5£¬ 2£¬ 1 1 1 1 1 4 4 4 4 5 5 2 2 2 2 7 7 7 7 6

3 3 3 2 2 2 2 2

6 6 6 6 1 1 1 Ò³ÃæÖû»´ÎÊýΪ£º10´Î LRU£º

1£¬ 2£¬ 3£¬ 6£¬ 4£¬ 7£¬ 3£¬ 2£¬ 1£¬ 4£¬ 7£¬ 5£¬ 6£¬ 5£¬ 2£¬ 1 1 1 1 1 4 4 4 1 1 1 1 6 6 6 2 2 2 2 7 7 7 4 4 4 4 2 2

3 3 3 3 3 3 3 7 7 7 7 7 1

6 6 6 2 2 2 2 5 5 5 5 Ò³ÃæÖû»´ÎÊýΪ£º14´Î

26¡¢Ä³³µÕ¾ÊÛƱÌü£¬ÈκÎʱ¿Ì×î¶à¿ÉÈÝÄÉ20Ãû¹ºÆ±Õß½øÈ룬µ±ÊÛƱÌüÖÐÉÙÓÚ20Ãû¹ºÆ±Õßʱ£¬ÔòÌüÍâµÄ¹ºÆ±Õß¿ÉÁ¢¼´½øÈ룬·ñÔòÐèÔÚÍâÃæµÈ´ý¡£Èô°ÑÒ»¸ö¹ºÆ±Õß¿´×÷Ò»¸ö½ø³Ì£¬Çë»Ø´ðÏÂÁÐÎÊÌ⣺

(1)ÓÃwaitºÍsignal²Ù×÷¹ÜÀíÕâЩ²¢·¢½ø³Ìʱ£¬Ó¦ÔõÑù¶¨ÒåÐźÅÁ¿£¬Ð´³öÐźÅÁ¿µÄ³õÖµÒÔ¼°ÐźÅÁ¿¸÷ÖÖÈ¡ÖµµÄº¬Òå¡£