²Ù×÷ϵͳϰÌâ1£¨º¬´ð°¸£© ÏÂÔØ±¾ÎÄ

OutP:begin repeat

wait(full2); wait(mutex2);

Take a data from buffer2; Add to printer controler; signal(mutex2); signal(empty2); start printer;

until false end

£¨ÆÀ·Ö±ê×¼£ºÐźÅÁ¿ÉèÖÃ2·Ö£¬ÊäÈë½ø³Ì¡¢¼ÆËã½ø³Ì¡¢´òÓ¡½ø³Ì¸÷2·Ö£©

11£®ÔÚÒ»¸öÇëÇó·ÖҳϵͳÖУ¬ÓÐÒ»¸ö³¤¶ÈΪ 5 Ò³µÄ½ø³Ì£¬¼ÙÈçϵͳΪËü·ÖÅä 3 ¸öÎïÀí¿é £¬²¢ÇҴ˽ø³ÌµÄÒ³Ãæ×ßÏòΪ 2£¬3£¬2£¬1£¬5£¬2£¬4£¬5£¬3£¬2£¬5£¬2¡£ÊÔÓà FIFO ºÍ LRU Á½ÖÖËã·¨·Ö±ð¼ÆËã³ö³ÌÐò·ÃÎʹý³ÌÖÐËù·¢ÉúµÄȱҳ´ÎÊý¡££¨10·Ö£© ½â£ºFIFO£º

2 3 2 1 5 2 4 5 3 2 5 2 µÚ1Ò³ 2 2 2 5 5 5 3 3 3 µÚ2Ò³ 3 3 3 2 2 2 5 5 µÚ3Ò³ 1 1 1 4 4 4 2

ȱҳÖжϴÎÊý = 6

LUR£º

2 3 2 1 5 2 4 5 3 2 5 2 µÚ1Ò³ 2 2 2 2 5 5 5 3 µÚ2Ò³ 3 3 5 2 3 3 5 µÚ3Ò³ 1 1 4 4 2 2

ȱҳÖжϴÎÊý = 5

12. ½ø³Ì A1£¬A2£¬?£¬An ͨ¹ý K ¸ö»º³åÇøÏò½ø³Ì B1£¬B2£¬?£¬Bm ²»¶ÏµØ·¢ËÍÏûÏ¢¡£·¢ËͺͽÓÊÕ¹¤×÷×ñÑ­ÈçϹæÔò£º

1£® ÿ¸ö·¢Ëͽø³ÌÒ»´Î·¢ËÍÒ»¸öÏûÏ¢£¬Ð´È뻺³åÇø£¬»º³åÇø´óСÓëÏûÏ¢³¤¶ÈÒ»Ö£» 2£® ¶Ôÿ¸öÏûÏ¢£¬B1£¬B2£¬?£¬Bm ¶¼Ðè½ÓÊÕÒ»´Î£¬¶ÁÈë¸÷×ÔµÄÊý¾ÝÇøÄÚ£» 3£® K ¸ö»º³åÇø¶¼Âúʱ£¬·¢Ëͽø³ÌµÈ´ý£¬Ã»ÓпɶÁµÄÏûϢʱ£¬½ÓÊÕ½ø³ÌµÈ´ý¡£ ÊÔÓà wait ºÍ signal Ô­Óï²Ù×÷×éÖ¯ÕýÈ·µÄ·¢ËͺͽÓÊÕ²Ù×÷¡££¨10·Ö£© ½â£º BEGIN

Integer Mutex, Avail[n], Full[m]; Integer I;

Mutex:=1;

FOR i:=1 TO m DO BEGIN

Avail[I] := k; Full[I] := 0; END

PROCEDURE Send(K) Integer I; BEGIN

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

£±£® IFOËã·¨ £²£® LRUËã·¨ £³£® CLOCKËã·¨

£´£® µ±Ò³ÃæµÄ·ÃÎÊ´®Îª£º¡°4£¬0£¬0£¬0£¬2£¬4£¬2£¬1£¬0£¬3£¬2¡±µÄOPTËã·¨ ½â£º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 2 3

70 60 60

45 40 15

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

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

°²È«ÐòÁÐΪ£º1¡¢2¡¢3¡¢4

ËùÒÔϵͳÊǰ²È«µÄ£¬¿ÉÒÔ½øÐзÖÅä¡£ b£® ½ø³Ì ×î´ó Õ¼ÓÐ ÉÐÐè ¿ÉÓà ¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª 1 70 45 25 15 2 60 40 20 3 60 15 45 4 60 35 25

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

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

½â£º

visitors=m; cars=n; mutex=1; Pvi() Pci() { repeat { repeat wait(cars); wait(visitors); wait(mutex); wait(mutex); get on; start; travell; run; get off; stop; signal(cars); signal(visitors); wait(mutex); wait(mutex); until false; until false; } }

17.¶ÁÕßÓëдÕßÎÊÌâ (reader -- writer problems ) £¨10·Ö£©

ÔÚ¼ÆËã»úÌåϵÖУ¬¶ÔÒ»¸ö¹²ÏíÎļþ½øÐвÙ×÷µÄ½ø³Ì¿É·ÖΪÁ½Àࣺ¶Á²Ù×÷ºÍд²Ù×÷£¬ËüÃǷֱ𱻳ÆÎª¶ÁÕߺÍдÕß¡£·ÃÎʸÃÎļþʱ¶ÁÕߺÍдÕߣ¬Ð´ÕߺÍдÕ߼䱨ÐëʵÏÖ»¥³â¡£Ö»ÓÐÔÚûÓжÁÕß·ÃÎÊÎļþʱ£¬Ð´Õß²ÅÔÊÐíÐÞ¸ÄÎļþ¡£»òÕßдÕßÔÚÐÞ¸ÄÎļþʱ²»ÔÊÐí¶ÁÕßÈ¥¶Á£¬·ñÔò»áÔì³É¶Á³öµÄÎļþÄÚÈݲ»ÕýÈ·¡£ÊÔд³öËã·¨ÃèÊö¶ÁÕߺÍдÕßµÄÎÊÌâ¡£

½â£º ΪÁËʵÏÖ¶ÁÕßÓëдÕßµÄͬ²½ºÍ»¥³â£¬ÎÒÃÇÉèÖÃÒ»¸öÐźÅÁ¿S£¬ÓÃÓÚ¶ÁÕßÓëдÕßÖ®¼ä»òдÕßÓë¶ÁÕßÖ®¼äµÄ»¥³â£¬³õֵΪ¡°1¡±¡£ÓÃÒ»¸ö±äÁ¿rc ±íʾµ±Ç°ÕýÔÚ¶ÁµÄ¶ÁÕ߸öÊý£¬µ±½ø³Ì¿ÉÒÔÈ¥¶Á»ò¶Á½áÊøºó¶¼Òª¸Ä±ärc µÄÖµ£¬Òò´Ërc ÓÖ³ÉΪÈô¸É¶Á½ø³ÌµÄ¹²Ïí±äÁ¿£¬ËüÃDZØÐ뻥³âµØÐÞ¸Ärc¡£¹Ê±ØÐ붨ÒåÁíÒ»¸öÓÃÓÚ»¥³âµÄÐźÅÁ¿Sr£¬³õÖµÒ²ÊÇ¡°1¡±¡£¶ÁÕß--дÕßÎÊÌâ¿ÉÃèÊöÈçÏ£º

S, Sr£ºsemaphore£» int rc = 0; S=Sr=1;

process Reader I (i=1,2,...,m) process Writer j (j=1,2,...,k)