½ø³Ì¹ÜÀíÁ·Ï°Ìâ

½â£º±¾ÌâÊǶÁÕߣ­Ð´ÕßÎÊÌâ¡£ÔÚ±¾ÌâÖУ¬ÔÊÐí¶Á½ø³Ìͬʱ¶ÁÊý¾Ý¿â£¬µ«Ð´½ø³ÌÕýÔÚдÊý¾Ý¿âʱ²»ÔÊÐíÆäËû½ø³Ì¶Á¸ÃÊý¾Ý¿â£¬Ò²²»ÔÊÐíÆäËû½ø³Ìд¸ÃÊý¾Ý¿â¡£ÎªÁ˽â¾ö¶Á¡¢Ð´½ø³ÌÖ®¼äµÄͬ²½£¬Ó¦¸ÃÉèÖÃ2¸öÐźÅÁ¿ºÍÒ»¸ö¹²Ïí±äÁ¿£º¶Á»¥³âÐźÅÁ¿rmutex£¬ÓÃÓÚʹ¶Á½ø³Ì»¥³âµØ·ÃÎʹ²Ïí±äÁ¿count£¬Æä³õֵΪ1£»Ð´»¥³âÐźÅÁ¿wmutex£¬ÓÃÓÚʵÏÖд½ø³ÌÓë¶Á½ø³ÌµÄ»¥³â¼°Ð´½ø³ÌÓëд½ø³ÌµÄ»¥³â£¬Æä³õֵΪ1£»¹²Ïí±äÁ¿count£¬ÓÃÓڼǼµ±Ç°ÕýÔÚ¶ÁÊý¾Ý¿âµÄ¶Á½ø³ÌÊýÄ¿£¬³õֵΪ0¡£Æä¹¤×÷¹ý³ÌÃèÊöÈçÏ£º Semaphore rmutex=1; Semaphore wmutex=1; Int count=0; Main() {

Cobegin

Reader(); Writer(); Coend } Reader() {

While(true) {

P(rmutex);

If(count==0) p(wmutex); Count ++; V(rmutex); ¶ÁÊý¾Ý¿â£» P(rmutex); Count --;

If (count==0) v(wmutex); V(rmutex); } } Writer() {

While(true) {

P(wmutex); дÊý¾Ý¿â£»

V(wmutex); } }

×¢Ò⣺ÕýÈ·Àí½âÐźÅÁ¿rmutexµÄÒâÒåÊÇÀí½â¶ÁÕߣ­Ð´ÕßÎÊÌâµÄ¹Ø¼ü¡£RmutexÊÇÒ»¸ö»¥³âÐźÅÁ¿£¬ÓÃÓÚʹ¶Á½ø³Ì»¥³âµØ·ÃÎʹ²

Ïí±äÁ¿count¡£ÐźÅÁ¿rmutex²¢²»±íʾ¶Á½ø³ÌµÄÊýÄ¿£¬±íʾ¶Á½ø³ÌÊýÄ¿µÄÊǹ²Ïí±äÁ¿count¡£µ±Ò»¸ö¶Á½ø³ÌÒª¶ÁÊý¾Ý¿âʱ£¬Ó¦½«¶Á½ø³Ì¼ÆÊýcountÔö¼Ó1£»Èç¹û´Ëǰ£¨count¼Ó1ÒÔǰ£©Êý¾Ý¿âÖÐÎÞ¶Á½ø³Ì£¬»¹Ó¦¶Ôд»¥³âÐźÅÁ¿wmutex×öp²Ù×÷£¬ÕâÑù£¬ÈôÊý¾Ý¿âÖÐÎÞд½ø³ÌÔòͨ¹ýp²Ù×÷×èÖ¹ºóÐøÐ´½ø³Ìд£¬ÈôÊý¾Ý¿âÖÐÓÐд½ø³Ì£¬Ôòͨ¹ýp²Ù×÷ÈöÁ½ø³ÌµÈ´ý¡£Í¬Àí£¬µ±Ò»¸ö¶Á½ø³ÌÍê³É¶ÁÊý¾Ý¿â²Ù×÷ʱ£¬Ó¦½«¶Á½ø³Ì¼ÆÊýcount¼õÉÙ1£»Èç¹û´Ëʱ£¨count¼õ1ÒÔºó£©Êý¾Ý¿âÖÐÒÑÎÞ¶Á½ø³Ì£¬»¹Ó¦¶Ôд»¥³âÐźÅÁ¿wmutex×öv²Ù×÷£¬ÒÔÔÊÐíд½ø³Ìд¡£

6. ¾ÍÐ÷¶ÓÁÐÖÐÓÐ10¸ö½ø³Ì£¬ÏµÍ³½«Ê±¼äƬÉèΪ200ms£¬CPU½øÐнø³ÌÇл»Òª»¨·Ñ10ms£¬ÊÔÎÊϵͳ¿ªÏúËùÕ¼µÄ±ÈÂÊԼΪ¶àÉÙ£¿ ½â£ºÒò¾ÍÐ÷¶ÓÁÐÖÐÓÐ10¸ö½ø³Ì£¬ËüÃÇÒÔʱ¼äƬÂÖתµÄ·½Ê½Ê¹ÓÃCPU£¬Ê±¼äƬ³¤¶ÈΪ200ms¡£µ±Ò»¸öʱ¼äƬÓÃÍêʱ£¬µ÷¶È½ø³Ì½«µ±Ç°ÔËÐнø³ÌÉèÖÃΪ¾ÍÐ÷״̬²¢·ÅÈë¾ÍÐ÷¶ÓÁÐ⣬ÔÙ´Ó¾ÍÐ÷¶ÓÁÐÊ×Ñ¡Ôñ½ø³ÌͶÈëÔËÐУ¬ÕâÒ»¹ý³Ì£¨½ø³ÌÇл»£©Òª»¨·Ñʱ¼ä10ms¡£Òò´Ëϵͳ¿ªÏúËùÕ¼±ÈÂÊΪ£º10/£¨200+10£©=4.8%

7¡¢ÔÚOSÖÐÒýÆð½ø³Ìµ÷¶ÈµÄÖ÷ÒªÒòËØÓÐÄÄЩ£¿ ¡¾½â¡¿

ÔÚOSÖÐÒýÆð½ø³Ìµ÷¶ÈµÄÖ÷ÒªÒòËØÓУº

£¨1£©È±·¦×ÊÔ´¡£ÕýÔÚÔËÐеĽø³ÌÒòΪij¸öÌõ¼þ²»ÄÜÂú×㣬²»µÃ²»½øÈë×èÈû״̬£¬´Ëʱ£¬ÔËÐнø³Ì±»³·Ï£¬ÒýÆðµ÷¶ÈʹÁíÒ»¸ö½ø³Ì½øÈëÔËÐÐ

£¨2£©Ê±¼äƬµ½¡£Èç¹ûÊÇ·Öʱϵͳ»òÕßÒÔʱ¼äƬ×÷Ϊ¼¤Àøµ÷¶ÈµÄϵͳ£¬Ê±¼äƬÊÇÒýÆðÓ²¼þ¼¤ÀøµÄÖ÷ÒªÒòËØ£¬Ã¿µ±Ê±¼äƬµ½£¬ÕýÔÚÔËÐеĽø³Ì±»ÔÝʱֹͣ£¬½«ËüÔÙ´ÎÅÅÈë¾ÍÐ÷¶ÓÁУ¬ÒýÆðµ÷¶ÈʹÁíÒ»¾ÍÐ÷½ø³Ì½øÈëÔËÐС£

£¨3£©ÍⲿÖжϡ£ÍⲿÖжÏÐźÅÒ²½«ÒýÆðµ÷¶È£¬Èç´òÓ¡»ú´òÓ¡Íê³É£¬Í¨¹ý´òӡͨµÀ»òÕßÐźÅÏß·´«ËÍÒ»¼¤ÀøÐźţ¬½«Ô­µÈ´ý½ø³Ì»½ÐÑÖØÐ½øÈëÔËÐУ¬»òÒýÆðµ÷¶ÈʹÁíÒ»½ø³ÌÔËÐС£

£¨4£©½ø³Ì½áÊø¡£½ø³ÌÕý³£Ö´ÐÐÍê±Ï£¬Í˳ö²¢ÖÕÖ¹£¬´Ëʱ½«¼¤ÀøÏµÍ³µ÷¶ÈÁíÒ»½ø³Ì½øÈëÔËÐС£

8. ¼ÙÉèÓÐ4µÀ×÷Òµ£¬ËüÃǵÄÌύʱ¼ä¼°Ö´ÐÐʱ¼äÒѸø³ö¡£

×÷ÒµºÅ Ìύʱ¿Ì(ʱ) Ö´ÐÐʱ¼ä(Сʱ) 1 10£º 00 2 2 10£º 20 1 3 10£º 40 0£®5 4 10£º 50 0£®3

²ÉÓÃÏÈÀ´ÏÈ·þÎñµ÷¶ÈËã·¨ºÍ×î¶Ì×÷ÒµÓÅÏȵ÷¶ÈË㷨ʱµÄƽ¾ùÖÜתʱ¼äºÍƽ¾ù´øÈ¨ÖÜתʱ¼ä£¬²¢Ö¸³öËüÃǵĵ÷¶È˳Ðò¡£

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4