Ð뻥³âʹÓã¬ËùÒÔÁíÍ⻹ÐèÉèÖÃÒ»¸ö»¥³âÐźŵÆmutex,Æð³õֵΪ1¡£
¼Ù¶¨ÔÚÉú²úÕߺÍÏû·ÑÕßÖ®¼äµÄ¹«Óûº³åÇøÖУ¬¾ßÓÐn¸ö»º³åÇø£¬Õâʱ¿ÉÒÔÀûÓû¥³âÐźÅÁ¿mutexʵÏÖÖî½ø³Ì¶Ô»º³å³ØµÄ»¥³âʹÓã»ÀûÓÃÐźÅÁ¿emptyºÍfull·Ö±ð±íʾ»º³å³ØÖпջº³åÇøºÍÂú»º³åÇøµÄÊýÁ¿¡£ÓÖ¼Ù¶¨ÕâЩÉú²úÕߺÍÏû·ÑÕß»¥ÏàµÈЧ¹û£¬Ö»Òª»º³å³ØÎ´Âú£¬Éú²úÕß±ã¿ÉÒÔ½«ÏûÏ¢ËÍÈ뻺³å³Ø£»Ö»Òª»º³å³ØÎ´¿Õ£¬Ïû·ÑÕß±ã¿ÉÒÔ´Ó»º³å³ØÖÐÈ¡×ßÒ»¸öÏûÏ¢¡£
ÔÚÉú²úÕß---Ïû·ÑÕßÎÊÌâÖÐӦעÒ⣺Ê×ÏÈ£¬ÔÚÿ¸ö³ÌÐòÖÐÓÃÓÚ»¥³âµÄwait(mutex)ºÍsignal(mutex)±ØÐë³É¶Ô³öÏÖ£»Æä´Î£¬¶Ô×ÊÔ´ÐźÅÁ¿emptyºÍfullµÄwaitºÍsignal²Ù×÷£¬Í¬ÑùÐèÒª³É¶ÔµØ³öÏÖ£¬µ«ËüÃÇ·Ö±ð´¦ÓÚ²»Í¬µÄ³ÌÐòÖС£
Éú²úÕßÓëÏû·ÑÕß½ø³Ì¹²ÏíÒ»¸ö´óС¹Ì¶¨µÄ»º³åÇø¡£ÆäÖУ¬Ò»¸ö»ò¶à¸öÉú²úÕßÉú²úÊý¾Ý£¬²¢½«Éú²úµÄÊý¾Ý´æÈ뻺³åÇø£¬²¢ÓÐÒ»¸ö»ò¶à¸öÏû·ÑÕß´Ó»º³åÇøÖÐÈ¡Êý¾Ý¡£
¼ÙÉ軺³åÇøµÄ´óСΪn£¨´æ´¢µ¥ÔªµÄ¸öÊý£©£¬Ëü¿ÉÒÔ±»Éú²úÕߺÍÏû·ÑÕßÑ»·Ê¹Ó᣷ֱðÉèÖÃÁ½¸öÖ¸ÕëinºÍout£¬Ö¸ÏòÉú²úÕß½«´æ·ÅÊý¾ÝµÄ´æ´¢µ¥ÔªºÍÏû·ÑÕß½«È¡³öÊý¾ÝµÄ´æ´¢µ¥Ôª£¬Èçͼ£¬Ö¸ÕëinºÍout³õʼ»¯Ö¸Ïò»º³åÇøµÄµÚÒ»¸ö´æ´¢µ¥Ôª¡£Éú²úÕß´ÓµÚÒ»¸ö´æ´¢µ¥Ôª¿ªÊ¼´æ·ÅÊý¾Ý£¬Ò»´Î´æ·ÅÒ»ÌõÊý¾ÝÒ»ÌõÊý¾ÝÇÒinÖ¸ÕëÏòºóÒÆÒ»¸öλÖ㬵±in Ö¸ÕëÖ¸ÏòµÚn¸ö´æ´¢µ¥Ôª£¬ÏÂÒ»´Î½«Ö¸ÏòµÚÒ»¸ö´æ´¢µ¥Ôª£¬Èç´ËÑ»··´¸´Ê¹Óûº³åÇø¡£Ïû·ÑÕß´Ó»º³åÇøÖÐÖðÌõÈ¡×ßÊý¾Ý£¬Ò»´ÎȡһÌõÊý¾Ý£¬ÏàÓ¦µÄ´æ´¢µ¥Ôª±äΪ¡°¿Õ¡±£¬¿ÉÒÔ±»Éú²úÕßÔÙ´ÎʹÓá£Ã¿´ÎÈ¡×ßÒ»ÌõÊý¾Ý£¬outÖ¸ÕëÏòºóÒÆÒ»¸ö´æ´¢µ¥ÔªÎ»Öá£ÊÔÏ룬Èç¹û²»¿ØÖÆÉú²úÕßÓëÏû·ÑÕߣ¬½«»á²úÉúʲô½á¹û£¿
1 2 3 4 5 6 7 8 n ¡¡ ¡¡
In out
1 2 3 4 5 6 7 8 n ¡¡
¡¡
In out
ÆäÖУ¬in±íʾ´æÊý¾ÝλÖã¬out±íʾȡÊý¾ÝλÖÃ
£º £º±»Õ¼Óõ¥Ôª £º¿Õ´æ´¢µ¥Ôª ͼ£ºÉú²úÕß/Ïû·ÑÕßÑ»·Ê¹Óûº³åÇø
Ê×ÏÈ£¬Éú²úÕߺÍÏû·ÑÕß¿ÉÄÜͬʱ½øÈ뻺³åÇø£¬ÉõÖÁ¿ÉÄÜͬʱ¶Á/дһ¸ö´æ´¢µ¥Ôª£¬½«µ¼ÖÂÖ´Ðнá¹û²»È·¶¨¡£ÕâÏÔÈ»ÊDz»ÔÊÐíµÄ¡£ËùÒÔ£¬±ØÐëʹÉú²úÕߺÍÏû·ÑÕß»¥³â½øÈ뻺³åÇø¡£¼´Ä³Ê±¿ÌÖ»ÔÊÐíÒ»¸öʵÌ壨Éú²úÕß»òÏû·ÑÕߣ©·ÃÎÊ»º³åÇø£¬Éú²úÕß»¥³âÏû·ÑÕßºÍÆäËûÈκÎÉú²úÕß¡£
Æä´Î£¬Éú²úÕß²»ÄÜÏòÂúµÄ»º³åÇøÐ´Êý¾Ý£¬Ïû·ÑÕßÒ²²»ÄÜÔÚ¿Õ»º³åÇøÖÐÈ¡Êý¾Ý£¬¼´Éú²úÕßÓëÏû·ÑÕß±ØÐëͬ²½¡£µ±Éú²úÕß²úÉú³öÊý¾Ý£¬ÐèÒª½«Æä´æÈ뻺³åÇøÖ®Ç°£¬Ê×Ïȼì²é»º³åÇøÖÐÊÇ·ñÓС°¿Õ¡±´æ´¢µ¥Ôª£¬Èô»º³åÇø´æ´¢µ¥ÔªÈ«²¿ÓÃÍ꣬ÔòÉú²úÕß±ØÐë×èÈûµÈ´ý£¬Ö±µ½Ïû·ÑÕßÈ¡×ßÒ»¸ö´æ´¢µ¥ÔªµÄÊý¾Ý£¬»½ÐÑËü¡£Èô»º³åÇøÄÚÓС°¿Õ¡±´æ´¢µ¥Ôª£¬Éú²úÕßÐèÒªÅжϴËʱÊÇ·ñÓбðµÄÉú²úÕß»òÏû·ÑÕßÕýÔÚʹÓûº³åÇø£¬ÈôÊÇÓУ¬Ôò×èÈûµÈ´ý£¬·ñÔò£¬»ñµÃ»º³åÇøµÄʹÓÃȨ£¬½«Êý¾Ý´æÈ뻺³åÇø£¬ÊÍ·Å»º³åÇøµÄʹÓÃȨ¡£Ïû·ÑÕßÈ¡Êý¾Ý֮ǰ£¬Ê×Ïȼì²é»º³åÇøÖÐÊÇ·ñ´æÔÚ×°ÓÐÊý¾ÝµÄ´æ´¢µ¥Ôª£¬Èô»º³åÇøÎª¡°¿Õ¡±£¬Ôò×èÈûµÈ´ý£¬·ñÔò£¬Åжϻº³åÇøÊÇ·ñÕýÔÚ±»Ê¹Óã¬ÈôÕý±»Ê¹Óã¬ÈôÕý±»Ê¹Óã¬Ôò×èÈûµÈ´ý£¬·ñÔò£¬»ñµÃ»º³åÇøµÄʹÓÃȨ£¬½øÈ뻺³åÇøÈ¡Êý¾Ý£¬ÊÍ·Å»º³åÇøµÄʹÓÃȨ¡£ÆäÖ´ÐÐÁ÷³ÌÈçͼËùʾ£¬Î±´úÂëÈçͼËùʾ¡£
2¡¢Éæ¼°µÄÊý¾Ý½á¹¹
¢ÙÓÃ×ÊÔ´ÏòÁ¿Available¡£ÕâÊÇÒ»¸öº¬ÓÐm¸öÔªËØµÄÊý×飬ÆäÖеÄÿһ¸öÔªËØ´ú±íÒ»Àà¿ÉÀûÓõÄ×ÊÔ´ÊýÄ¿£¬Æä³õʼֵÊÇϵͳÖÐËùÅäÖõĸÃÀàÈ«²¿¿ÉÓÃ×ÊÔ´µÄÊýÄ¿£¬ÆäÊýÖµËæ¸ÃÀà×ÊÔ´µÄ·ÖÅäºÍ»ØÊÕ¶ø¶¯Ì¬µØ¸Ä±ä¡£Èç¹ûAvailable[j]=K£¬Ôò±íʾϵͳÖÐÏØÓÐRJÀà×ÊÔ´K¸ö¡£
¢ÚÐèÇó¾ØÕóMAX¡£ÕâÊÇÒ»¸öN*MµÄ¾ØÕó£¬Ëü¶¨ÒåÁËϵͳÖÐN¸ö½ø³ÌÖеÄÿһ¸ö½ø³Ì¶ÔMÀà×ÊÔ´µÄ×î´óÐèÇó¡£Èç¹ûMAX[i,j]=K£¬Ôò±íʾ½ø³ÌIÐèÒªRJÀà×ÊÔ´µÄ×î´óÊýĿΪK¡£
¢Û¾ØÕóAllocation¡£ÕâÒ²ÊÇÒ»¸öN*MµÄ¾ØÕó£¬Ëü¶¨ÒåÁËϵͳÖÐÿһÀà×ÊÔ´
µ±Ç°ÒÑ·ÖÅä¸øÃ¿Ò»½ø³ÌµÄ×ÊÔ´Êý¡£Èç¹ûAllocation[i,j]=K£¬Ôò±íʾ½ø³Ìiµ±Ç°ÒÑ·ÖµÃRJÀà×ÊÔ´µÄÊýĿΪK¡£
¢Ü¾ØÕóNeed¡£ÕâÒ²ÊÇÒ»¸öN*MµÄ¾ØÕó£¬ÓÃÒÔ±íʾÿһ¸ö½ø³ÌÉÐÐèµÄ¸÷Àà×ÊÔ´Êý¡£Èç¹ûNeed[i,j]=K£¬Ôò±íʾ½ø³ÌI»¹ÐèÒªRJÀà×ÊÔ´K¸ö£¬·½ÄÜÍê³ÉÆäÈÎÎñ¡£
ÉÏÊöÈý¸ö¾ØÕó¼ä´æÔÚÏÂÊö¹ØÏµ£º Need[i,j]=MAX[i,j]-Allocation[i,j]
Èý¡¢Êý¾ÝÁ÷³Ìͼ£º 3.1¡¢Éú²úÕß
3.2¡¢Ïû·ÑÕß