µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

²Ù×÷ϵͳ½Ì³ÌϰÌâ´ð°¸

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/9/18 7:18:42 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

{ int t, u; wait(s); x=0; t=0; if(x<1) t=t+z; u=t; signal(s); }

void main( )

{ parbegin(P1( ), P2( )); }

£¨6£©¹²Ïí´æ´¢ÇøÍ¨ÐÅÊÇÈçºÎʵÏֵģ¿

£¨7£©¼ÙÉèijϵͳδֱ½ÓÌṩÐźÅÁ¿»úÖÆ£¬µ«ÌṩÁ˽ø³ÌͨÐŹ¤¾ß¡£Èç¹ûij³ÌÐòÏ£ÍûʹÓùØÓÚÐźÅÁ¿µÄwait¡¢signal²Ù×÷£¬ÄÇô¸Ã³ÌÐòÓ¦ÈçºÎÀûÓÃͨÐŹ¤¾ßÄ£ÄâÐźÅÁ¿»úÖÆ£¿ÒªÇó˵Ã÷ÈçºÎÓÃsend/receive²Ù×÷¼°ÏûÏ¢±íʾwait/signal²Ù×÷¼°ÐźÅÁ¿¡£ 5£®Ó¦ÓÃÌâ

£¨1£©ÓÐÈý¸ö²¢·¢½ø³ÌR¡¢W1ºÍW2£¬¹²ÏíÁ½¸ö¸÷¿É´æ·ÅÒ»¸öÊýµÄ»º³åÇøB1¡¢B2¡£½ø³ÌRÿ´Î´ÓÊäÈëÉ豸¶ÁÈëÒ»¸öÊý£¬Èô¶ÁÈëµÄÊÇÆæÊý£¬Ôò½«Ëü´æÈëB1ÖУ¬Èô¶ÁÈëµÄÊÇżÊý£¬½«Ëü´æÈëB2ÖУ»µ±B1ÖÐÓÐÊý£¬Óɽø³ÌW1½«Æä´òÓ¡Êä³ö£»µ±B2ÖÐÓÐÊý£¬½ø³ÌW2½«Æä´òÓ¡Êä³ö¡£ÊÔ±àд±£Ö¤ÈýÕßÕýÈ·¹¤×÷µÄ³ÌÐò¡£

struct semaphone B1_Empty, B1_Full, B2_Empty, B2_Full; B1_Empty.value=1; B1_Full.value=0; B2_Empty.value=1; B2_Full.value=0; void R( ) { int a; While(1)

{ read a number a; if(a%2==1) { wait(B1_Empty);

put a in B1; signal(B1_Full);

} else

{ wait(B2_Empty);

put a in B2; signal(B2_Full);

} } } void W1( ) { while(1)

{ wait(B1_Full); print a number from B1; signal(B1_Empty); } }

void W2( ) { while(1) { wait(B2_Full); print a number from B2; signal(B2_Empty); } }

void main( )

{ parbegin(R( ), W1( ), W2( )); }

£¨2£©8¸öЭ×÷µÄÈÎÎñA¡¢B¡¢C¡¢D¡¢E¡¢F¡¢G¡¢H·Ö±ðÍê³É¸÷×ԵŤ×÷¡£ËüÃÇÂú×ãÏÂÁÐÌõ¼þ£ºÈÎÎñA±ØÐëÁìÏÈÓÚÈÎÎñB¡¢CºÍE£»ÈÎÎñEºÍD±ØÐëÁìÏÈÓÚÈÎÎñF£»ÈÎÎñBºÍC±ØÐëÁìÏÈÓëÈÎÎñD£»¶øÈÎÎñF±ØÐëÁìÏÈÓÚÈÎÎñGºÍH¡£ÊÔд³ö²¢·¢³ÌÐò£¬Ê¹µÃÔÚÈκÎÇé¿öÏÂËüÃǾùÄÜÕýÈ·¹¤×÷¡£

£¨3£©¶à¸ö½ø³Ì¹²ÏíÒ»¸öÎļþ£¬ÆäÖÐÖ»¶ÁÎļþµÄ³ÆÎª¶ÁÕߣ¬Ö»Ð´ÎļþµÄ³ÆÎªÐ´Õß¡£¶ÁÕß¿ÉÒÔͬʱ¶Á£¬µ«Ð´ÕßÖ»ÄܶÀÁ¢Ð´¡£ÎÊ£º

1£©ËµÃ÷½ø³Ì¼äµÄÖÆÔ¼¹ØÏµ£¬Ó¦ÉèÖÃÄÄЩÐźÅÁ¿£¿ 2£©ÓÃwait¡¢signal²Ù×÷д³öÆäͬ²½³ÌÐò¡£

3£©ÐÞ¸ÄÉÏÊöËã·¨£¬Ê¹µÃËü¶ÔдÕßÓÅÏÈ£¬¼´Ò»µ©ÓÐдÕßµ½´ï£¬ºóÐøµÄ¶ÁÕß±ØÐëµÈ´ý¡£¶øÎÞÂÛÊÇ·ñÓжÁÕßÔÚ¶ÁÎļþ¡£

¼û½Ì²Ä¡°¶ÁÕß-дÕßÎÊÌ⡱

£¨4£©×ÀÉÏÓÐÒ»¿ÕÅÌ£¬¿É·Åһֻˮ¹û¡£°Ö°Ö¿ÉÏòÅÌÖÐ·ÅÆ»¹û£¬Ò²¿ÉÏòÅÌÖзŽÛ×Ó£»¶ù×ÓרµÈ³ÔÅÌÖеĽÛ×Ó£»Å®¶ùרµÈ³ÔÅÌÖÐµÄÆ»¹û¡£¹æ¶¨Ò»´ÎÖ»ÄÜ·Åһֻˮ¹û£¬ÊÔд³ö°Ö°Ö¡¢¶ù×Ó¡¢Å®¶ùÕýȷͬ²½µÄ³ÌÐò¡£

struct semaphone plate, apple, orange; plate.value=1; apple.value=0; orange.value=0; void father( ) { while(1)

{ prepare an apple or orange; wait(plate); put the apple or orange in plate; if(Apple) signal(apple); //Èç¹û·ÅµÄÊÇÆ»¹û else signal(orange); //Èç¹û·ÅµÄÊǽÛ×Ó }

} void son( ) { while(1)

{ wait(orange); get an orange from the plate; signal(plate); } }

void daughter( ) { while(1) { wait(apple); get an apple from the plate; signal(plate); } }

Void main( )

£¨5£©Èý¸ö½ø³ÌP1¡¢P2¡¢P3»¥³âʹÓÃÒ»¸ö°üº¬N£¨N>0£©¸öµ¥ÔªµÄ»º³åÇø¡£P1ÿ´ÎÓÃprocuce£¨£©Éú³ÉÒ»¸öÕýÕûÊý²¢ÓÃput£¨£©ËÍÈ뻺³åÇøÄ³Ò»¿Õµ¥ÔªÖУ»P2ÿ´ÎÓÃgetodd£¨£©´Ó¸Ã»º³åÇøÖÐÈ¡³öÒ»¸öÆæÊý²¢ÓÃcountodd£¨£©Í³¼ÆÆæÊý¸öÊý£»P3ÿ´ÎÓÃgeteven£¨£©´Ó¸Ã»º³åÇøÖÐÈ¡³öÒ»¸öżÊý²¢ÓÃcounteven£¨£©Í³¼ÆÅ¼Êý¸öÊý¡£ÇëÓÃÐźÅÁ¿»úÖÆÊµÏÖÕâÈý¸ö½ø³ÌµÄͬ²½Ó뻥³â»î¶¯£¬²¢ËµÃ÷Ëù¶¨ÒåµÄÐźÅÁ¿µÄº¬Òå¡£ÒªÇóÓÃα´úÂëÃèÊö£¨2009ÄêÈ«¹ú˶ʿÑо¿ÉúÈëѧ¿¼ÊÔÌ⣩¡£

struct semaphone full_odd, full_even, mutex, empty; full_odd.value=0; full_even.value=0; mutex.value=1; empty.value=N; void P1( ) { int X; while(1)

{ X=produce( ); wait(empty); wait(mutex); put( ); if(X%2==0) signal(full_even); else signal(full_odd); signal(mutex); } }

void P2( )

{ wait(full_odd); wait(mutex); getodd( );

countodd( )=countodd( )+1; signal(empty); signal(mutex); }

void P3( )

{ wait(full_even); wait(mutex); geteven( ); counteven( )=counteven( )+1; signal(empty); signal(mutex); }

void main( )

{ parbegin(P1( ), P2( ), P3( )); }

£¨6£©·ÅСÇòÎÊÌ⣺һ¸öÏä×ÓÀïÖ»Óа×É«ºÍºÚÉ«Á½ÖÖСÇò£¬ÇÒÊýÁ¿×ã¹»¶à¡£ÏÖÔÚÐèÒª´ÓÖÐÈ¡³öһЩСÇò·ÅÈëÒ»¸ö´ü×ÓÖС£Ô¼¶¨£º1£©Ò»´ÎÖ»ÄÜ·ÅÈëÒ»¸öСÇò£»2£©°×ÇòµÄÊýÁ¿ÖÁ¶àÖ»ÄܱȺÚÇòÉÙN¸ö£¬ÖÁ¶àÖ»ÄܱȺÚÇò¶àM¸ö£¨M£¬NΪÕýÕûÊý£©¡£ÇëÓÃÐźÅÁ¿»úÖÆÊµÏÖ½ø³ÌµÄͬ²½Ó뻥³â¡£

struct semaphone mutex1, mutex2; int black=0, white=0; mutex1.value=1; mutex2.value=1; void put( ) { while(1)

{ wait(mutex1);

get a black ball or white ball from the box; signal(mutex1); wait(mutex2);

if(Black) //Èç¹ûÈ¡µ½µÄÊǺÚÇò if(black-white

void main( )

ËÑË÷¸ü¶à¹ØÓÚ£º ²Ù×÷ϵͳ½Ì³ÌϰÌâ´ð°¸ µÄÎĵµ
²Ù×÷ϵͳ½Ì³ÌϰÌâ´ð°¸.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c5fexb8nc7h68ub00wpj0_3.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©

Ïà¹ØÍÆ¼ö£º

ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top