{
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²Ù×÷£¬ÒÔÔÊÐíд½ø³Ìд¡£
9. ¾ÍÐ÷¶ÓÁÐÖÐÓÐ10¸ö½ø³Ì£¬ÏµÍ³½«Ê±¼äƬÉèΪ200ms£¬CPU½øÐнø³ÌÇл»Òª»¨·Ñ10ms£¬ÊÔÎÊϵͳ¿ªÏúËùÕ¼µÄ±ÈÂÊԼΪ¶àÉÙ£¿
½â£ºÒò¾ÍÐ÷¶ÓÁÐÖÐÓÐ10¸ö½ø³Ì£¬ËüÃÇÒÔʱ¼äƬÂÖתµÄ·½Ê½Ê¹ÓÃCPU£¬Ê±¼äƬ³¤¶ÈΪ200ms¡£µ±Ò»¸öʱ¼äƬÓÃÍêʱ£¬µ÷¶È½ø³Ì½«µ±Ç°ÔËÐнø³ÌÉèÖÃΪ¾ÍÐ÷״̬²¢·ÅÈë¾ÍÐ÷¶ÓÁÐ⣬ÔÙ´Ó¾ÍÐ÷¶ÓÁÐÊ×Ñ¡Ôñ½ø³ÌͶÈëÔËÐУ¬ÕâÒ»¹ý³Ì£¨½ø³ÌÇл»£©Òª»¨·Ñʱ¼ä10ms¡£Òò´Ëϵͳ¿ªÏúËùÕ¼±ÈÂÊΪ£º10/£¨200+10£©=4.8%
10. ÔÚµ¥CPUºÍÁ½Ì¨ÊäÈë/Êä³öÉ豸£¨I1£¬I2£©µÄ¶àµÀ³ÌÐòÉè¼Æ»·¾³Ï£¬Í¬Ê±Í¶ÈëÈý¸ö×÷ÒµJob1¡¢Job2¡¢Job3ÔËÐС£ÕâÈý¸ö×÷Òµ¶ÔCPUºÍÊäÈë/Êä³öÉ豸µÄʹÓÃ˳ÐòºÍʱ¼äÈçÏÂËùʾ£º
Job1:I2(30ms);CPU(10ms);I1(30ms);CPU(10ms);I2(20ms)
µÚ 33 Ò³ ¹² 36 Ò³
Job2:I2(20ms);CPU(20ms);I2(40ms)
Job3:CPU(30ms);I1(20ms); CPU(10ms);I1(10ms)
¼Ù¶¨CPU¡¢I1¡¢I2¶¼Äܲ¢Ðй¤×÷£¬Job1ÓÅÏȼ¶×î¸ß£¬Job2´ÎÖ®£¬Job3ÓÅÏȼ¶×îµÍ£¬ÓÅÏȼ¶¸ßµÄ×÷Òµ¿ÉÒÔÇÀÕ¼ÓÅÏȼ¶µÍµÄ×÷ÒµµÄCPUµ«²»ÇÀÕ¼I1ºÍI2¡£ÊÔÇó£º Èý¸ö×÷Òµ´ÓͶÈëµ½Íê³É·Ö±ðÐèÒªµÄʱ¼ä ´ÓͶÈëµ½Íê³ÉµÄCPUÀûÓÃÂÊ I/OÉ豸ÀûÓÃÂÊ¡£
½â£ºÈý¸ö×÷Òµ²¢·¢Ö´ÐÐʱµÄ¹¤×÷Çé¿öÈçͼ4.2Ëùʾ¡£ £¨1£©ÓÉÉÏͼ¿ÉÒÔ¿´³öJob1´ÓͶÈëµ½ÔËÐÐÍê³ÉÐèÒª110ms£¬Job2´ÓͶÈëµ½ÔËÐÐÍê³ÉÐèÒª90ms£¬Job3´ÓͶÈëµ½ÔËÐÐÍê³ÉÐèÒª110ms.
£¨2£©CPUÔÚʱ¼ä¶Î60msµ½70ms£¬80msÖÁ90ms£¬100msÖÁ110msÆÚ¼ä¿ÕÏУ¬ËùÒÔCPUµÄÀûÓÃÂÊΪ£º£¨110-30£©/110=72.7%
£¨4£© É豸I1ÔÚʱ¼ä¶Î20msµ½40ms£¬90msÖÁ100msÆÚ¼ä¿ÕÏУ¬ËùÒÔÉ豸I1
µÄÀûÓÃÂÊΪ£º£¨110-30£©/110=72.7%£»É豸I2ÔÚʱ¼ä¶Î30msÖÁ50msÆÚ¼ä¿ÕÏУ¬ËùÒÔÉ豸I2µÄÀûÓÃÂÊΪ£º£¨110-20£©/110=81.8%¡£
11.ÊÔÀûÓÃBernstein Ìõ¼þÖ¤Ã÷ÉÏÌâÖеÄS2ºÍS3Óï¾äÊÇ¿ÉÒÔ²¢·¢Ö´Ðе쬶øS3ºÍS4Óï¾äÊDz»Äܲ¢·¢Ö´Ðеģ¿ ¡¾½â¡¿£¨1£© ¡ßR(S2) ¡É W( S3)={}£» W(S2) ¡É R(S3)={}£» W(S2) ¡É W(S3)={}£»
¡àR(S2) ¡É W( S3)¡È W(S2) ¡É R(S3) ¡È W(S2) ¡É W(S3)={}
¡àS2¡¢S3¿ÉÒÔ²¢·¢Ö´ÐÐ
£¨2£©¡ßR(S3) ¡É W( S4)={}£»
W(S3) ¡É R(S4)={c}£» W(S3) ¡É W(S4)={};
¡àR(S3) ¡É W( S4)¡È W(S3) ¡É R(S4) ¡È W(S3) ¡É W(S4)={c}²»Êǿռ¯
¡àS3£¬S4²»Äܲ¢·¢Ö´ÐÐ
12.ʲôÊÇÁÙ½ç×ÊÔ´£¨P16£©ºÍÁÙ½çÇø£¨P50£©£¿ ¡¾½â¡¿ÄÇЩ¶à¸ö½ø³Ì±ØÐ뻥³â·ÃÎʵķ½Ê½À´ÊµÏÖ×ÊÔ´¹²ÏíµÄÓ²¼þ×ÊÔ´ºÍÈí¼þ×ÊÔ´½ÐÁÙ½ç×ÊÔ´¡£
ÎÒÃǰÑÔÚÿ¸ö½ø³ÌÖзÃÎÊÁÙ½ç×ÊÔ´µÄÄǶδúÂë³ÆÎªÁÙ½çÇø¡£
13¡¢ÔÚOSÖÐÒýÆð½ø³Ìµ÷¶ÈµÄÖ÷ÒªÒòËØÓÐÄÄЩ£¿ ¡¾½â¡¿
ÔÚOSÖÐÒýÆð½ø³Ìµ÷¶ÈµÄÖ÷ÒªÒòËØÓУº
£¨1£©È±·¦×ÊÔ´¡£ÕýÔÚÔËÐеĽø³ÌÒòΪij¸öÌõ¼þ²»ÄÜÂú×㣬²»µÃ²»½øÈë×èÈû״̬£¬´Ëʱ£¬ÔËÐнø³Ì±»³·Ï£¬ÒýÆðµ÷¶ÈʹÁíÒ»¸ö½ø³Ì½øÈëÔËÐÐ
£¨2£©Ê±¼äƬµ½¡£Èç¹ûÊÇ·Öʱϵͳ»òÕßÒÔʱ¼äƬ×÷Ϊ¼¤Àøµ÷¶ÈµÄϵͳ£¬Ê±¼äƬÊÇÒýÆðÓ²¼þ¼¤ÀøµÄÖ÷ÒªÒòËØ£¬Ã¿µ±Ê±¼äƬµ½£¬ÕýÔÚÔËÐеĽø³Ì±»ÔÝʱֹͣ£¬½«ËüÔÙ´ÎÅÅÈë¾ÍÐ÷¶ÓÁУ¬ÒýÆðµ÷¶ÈʹÁíÒ»¾ÍÐ÷½ø³Ì½øÈëÔËÐС£
£¨3£©ÍⲿÖжϡ£ÍⲿÖжÏÐźÅÒ²½«ÒýÆðµ÷¶È£¬Èç´òÓ¡»ú´òÓ¡Íê³É£¬Í¨¹ý´òӡͨµÀ»òÕßÐźÅÏß·´«ËÍÒ»¼¤ÀøÐźţ¬½«ÔµÈ´ý½ø³Ì»½ÐÑÖØÐ½øÈëÔËÐУ¬»òÒýÆðµ÷¶È
µÚ 34 Ò³ ¹² 36 Ò³
ʹÁíÒ»½ø³ÌÔËÐС£
£¨4£©½ø³Ì½áÊø¡£½ø³ÌÕý³£Ö´ÐÐÍê±Ï£¬Í˳ö²¢ÖÕÖ¹£¬´Ëʱ½«¼¤ÀøÏµÍ³µ÷¶ÈÁíÒ»½ø³Ì½øÈëÔËÐС£
14.ÓÐÁ½¸ö½ø³ÌP1ºÍP2£¬ËüÃÇÖ´ÐеĹý³ÌÈçÏ£º P1: 10ÃëCPU²Ù×÷¡¢20ÃëI/O²Ù×÷£¨É豸1£©¡¢5ÃëCPU²Ù×÷¡¢10ÃëI/O²Ù×÷£¨É豸2£©¡¢5ÃëCPU²Ù×÷¡¢½áÊø P2: 15ÃëI/O²Ù×÷£¨É豸1£©¡¢10ÃëCPU²Ù×÷¡¢15ÃëI/O²Ù×÷£¨É豸2£©¡¢10ÃëCPU²Ù×÷¡¢½áÊø
£¨1£© Èç¹û½ø³ÌP1ºÍP2˳ÐòÖ´ÐУ¬Ç뻳ö½ø³ÌP1ºÍP2Ö´ÐÐÇé¿öͼ£» £¨2£© Èç¹û½ø³ÌP1ºÍP2²¢·¢Ö´ÐУ¬Ç뻳ö½ø³ÌP1ºÍP2Ö´ÐÐÇé¿öͼ£» £¨3£© ·Ö±ð¼ÆËãÔÚ£¨1£©ºÍ£¨2£©Çé¿öÏ£¬CPUµÄÀûÓÃÂÊ¡¢É豸1ºÍÉ豸2µÄ
ÀûÓÃÂÊ¡£
½â£º (1) P1: CPU I/O(DEV1) CPU I/O(DEV2) CPU 0 10 30 35 45 50 P2: I/O(DEV1) CPU I/O(DEV2) CPU 50 65 75 90 100 (2)
P1 P1 CPU(P1) CPU(P2) CPU CPU(P2) CPU I/O(DEV1)(P2) I/O(DEV1)(P1) I/O(DEV2)(P2) I/O(DEV2) 0 10 15 25 35 40 50 55 (3)
ÔÚÇé¿ö£¨1£©Ï£¬
CPUµÄÀûÓÃÂÊ=40/100=40% É豸1µÄÀûÓÃÂÊ=35/100=35% É豸2µÄÀûÓÃÂÊ=25/100=25% ÔÚÇé¿ö£¨2£©Ï£¬
CPUµÄÀûÓÃÂÊ=40/55=73% É豸1µÄÀûÓÃÂÊ=35/55=64% É豸2µÄÀûÓÃÂÊ=25/55=45%
15.ÔÚÎå״̬ͼÖУ¬¼ÙÈç¼ÆËã»úÖ»ÓÐÒ»¸öCPU£¬Èç¹ûϵͳÖÐÓÐN¸ö½ø³Ì£º
£¨1£©ÔËÐеĽø³Ì×î¶à¼¸¸ö£¬×îÉÙ¼¸¸ö£»¾ÍÐ÷½ø³Ì×î¶à¼¸¸ö×îÉÙ¼¸¸ö£»µÈ´ý½ø³Ì
×î¶à¼¸¸ö£¬×îÉÙ¼¸¸ö£¿
µÚ 35 Ò³ ¹² 36 Ò³
£¨2£©ÓÐûÓÐÕâÑùµÄ״̬ת»»£¬ÎªÊ²Ã´£¿ µÈ´ý¡ª>ÔËÐÐ £» ¾ÍÐ÷¡ª>µÈ´ý
£¨3£©Ò»¸ö½ø³Ì״̬µÄת»»ÊÇ·ñ»áµ¼ÖÂÁíÒ»¸ö½ø³ÌµÄ״̬ת»»£¬ÇëÁгöËùÓеĿÉ
ÄÜ¡£ ½â£º
£¨1£©Èç¹ûϵͳÖÐÓÐN¸ö½ø³Ì£¬ÔËÐеĽø³Ì×î¶à1¸ö£¬×îÉÙ0¸ö£»¾ÍÐ÷½ø³Ì×î¶àN-1¸ö×îÉÙ0¸ö£»µÈ´ý½ø³Ì×î¶àN¸ö£¬×îÉÙ0¸ö¡£ £¨2£©Ã»ÓÐÕâÑùµÄ״̬ת»»¡£
£¨3£© н¨ µ½ ¾ÍÐ÷ µ¼Ö ÔËÐÐ µ½ ¾ÍÐ÷ ¾ÍÐ÷ µ½ ÔËÐÐ µ¼Ö ÎÞ
ÔËÐÐ µ½ ÔËÐÐ µ½ µÈ´ý µ½ ÔËÐÐ µ½ ¾ÍÐ÷ µ¼Ö ¾ÍÐ÷ µ½ µÈ´ý µ¼Ö ¾ÍÐ÷ µ½ ¾ÍÐ÷ µ¼Ö ¾ÍÐ÷ µ½ ½áÊø µ¼Ö ¾ÍÐ÷ µ½ µÚ 36 Ò³ ¹² 36 Ò³
ÔËÐÐ ÔËÐÐ µÈ´ý ÔËÐÐ