
ÊÛǰµç»°
135-3656-7657
ÊÛǰµç»° : 135-3656-7657
¹ú¼Ò¸ßм¼ÊõÆóÒµ Ê¡¼¶×¨¾«ÌØÐÂÆóÒµ
×ÉѯÈÈÏߣº135-3656-7657 400-6333-661
ÒýÈë½ø³ÌµÄ³Ì¿Ø½»»»Èí¼þ»¹Ó¦¿¼Âǽø³ÌµÄͬ²½(Synchroniza-tion)ºÍ»¥³â(MutualExclusion)o¸÷Öֳ̿ؽ»»»ÏµÍ³ÓÉÓÚÖжϻúÀí¡¢µ÷¶È²ßÂÔ¡¢×ÊÔ´·ÖÅ䷽ʽµÈ·½ÃæµÄ²îÒì,¶Ôͬ²½ºÍ»¥³âµÄÒªÇóºÍʵÏÖ·½Ê½Ò²»áÓÐËù²»Í¬¡£ÀýÈç,S1240ϵͳ¿¼ÂÇÁ˶ÔSSM(ϵͳ֧Ԯ»ú)ÄڵĹ²ÏíÊý¾ÝµÄ¿É¿¿´æÈ¡£¬ÉèÖÃÁËÁÙ½çÇø(CriticalRegion),²¢²ÉÓÃ¼à¿Ø(Monitor)·½Ê½¡£ÔÓïENTER_MONITOR(½øÈë¼à¿Ø)¿ÉʹÔËÐнøÈë¼à¿Ø·½Ê½,ÉèÖÃеÄÖÐ¶ÏÆÁ±Î×Ö£¬Ê¹ËùÓÐ¿ÉÆÁ±ÎÖжϲ»ÄܽøÈë¡£ÔÓïEXITÒ»MONITOR(Í˳ö¼à¿Ø)ÔòÓÃÀ´Í˳ö¼à¿Ø·½Ê½£¬»Ö¸´ÔÓÐÖÐ¶ÏÆÁ±Î×Ö¡£
DMS-100ϵͳ¶Ô½ø³ÌµÄͬ²½ºÍ»¥³âÓн϶àµÄÉèÊ©£¬ÒÔÏÂ×÷Ò»½éÉÜ¡£
1.½ø³ÌµÄͬ²½
ÔÚDMS—100ϵÁÐÖУ¬Í¬²½ÊÇÖ¸¶Ô½ø³Ì·ÃÎʹ²ÏíÊý¾ÝºÍÉêÇë¹²ÏíµÄϵͳ×ÊÔ´µÄͬ²½£¬ÉèÖÃÁ˺ÅÖ¾ºÍ±êÖ¾Á½ÖÖͬ²½ÔÓï¡£
(1)ºÅÖ¾
DMS-100ϵͳ²ÉÓÃDijkstraÌá³öµÄºÅÖ¾¸ÅÄÒÔ±£Ö¤¶Ô¹²ÏíÊý¾ÝµÄÓÐЧ´æÈ¡¡£
¢ÙpsemaºÍvsemaÔÓï
ÿ¸öÁÙ½çÇø¿É¾ßÓÐÏàÓ¦µÄºÅÖ¾¡£ËùνÁÙ½çÇø£¬ÊÇÖ¸ÔÚÈÎһʱ¿ÌÖ»ÔÊÐíÒ»¸ö½ø³ÌÔÚÖ´ÐеijÌÐò¶Î£¬Ò²¿É³ÆÎª»¥³â¶Î¡£
ÿ¸ö½ø³ÌÒª½øÈëijÁÙ½çÇø£¬±ØÐëÏÈÉêÇëºÅÖ¾£¬µ÷Óùý³Ìpsema£ºDCLpsemaPROC(sidsemaid usertypesemauser UPDATESsrcsemarc)
sid£ºÓë¸ÃÁÙ½çÇø¶ÔÓ¦µÄºÅ־ʶ±ðÂë¡£
usertype£º¸³ÓëÓû§½ø³ÌµÄ·ÃÎÊÀà±ð(¶Á»òд)¡£
src£»Ö¸Ê¾ºÅÖ¾ÊÇ·ñ¿ÉÓõķµ»ØÂë¡£
µ±½ø³ÌÀ뿪ÁÙ½çÇø£¬Òªµ÷Óùý³ÌvsemaÒÔÊͷźÅÖ¾£ºDCLvsemaPROC(sidsemaidUPDATESsrcsemarc)
sid£ºµ÷ÓÃpsemaʱËùÖ¸¶¨µÄºÅ־ʶ±ðÂë¡£
src£º·µ»ØÂë¡£
¢ÚºÅ־״̬
ºÅÖ¾¿É¾ßÓÐÒÔÏÂ3ÖÖ״̬£º
(a)idle(¿ÕÏÐ)
ûÓнø³ÌÔÚÁÙ½çÇøÖ´ÐС£
(b)readersin(¶Á)
Ò»¸ö»ò¶à¸ö½ø³ÌÔÚÁÙ½çÇøÖ´ÐÐÒÔ¶Á³öÊý¾Ý¡£
(c)writerin£¨Ð´£©
Ò»¸öÇÒÖ»ÄÜÓÐÒ»¸ö½ø³ÌÔÚÁÙ½çÇøÖ´ÐÐÒÔдÈëÊý¾Ý£¬Á˽âÒ²Òª¶Á³öÊý¾Ý¡£
¢ÛºÅÖ¾¶ÓÁÐ
ÿ¸öºÅÖ¾¾ßÓÐÏàÓ¦µÄ¶ÓÁУ¬¶ÓÁÐÖÐÊǵȴý½øÈëÁÙ½çÇøµÄ¸÷¸ö½ø³Ì£¬²ÉÓÃÏȵ½À´ÏÈ·þÎñ£¨FirstÒ»ComeFirstÒ»ServedÒ»FCFS£©µÄÔÔò¡£µ±Õý½øÁÙ½çÇøÖ´ÐеĽø³Ìµ÷ÓÃÁËvsemaºó£¬¿É´Ó¶ÓÁÐÖÐȡһ¸ö½ø³Ì¡£¿ÉÓÃʱÏÞÀ´±£Ö¤½Ï¶ÌµÄµÈ´ýʱ¼ä£¬Ê±ÏÞÊǴӸýø³ÌÅŵ½¶ÓÁÐÖ®Ê×ʱ²ÅÆðËã¡£È糬¹ýʱÏÞ£¬Ôò“ɱËÀ”³Ù³Ù²»À뿪ÁÙ½çÇøµÄ½ø³Ì£¬¶øÊ¹ÅÅÔÚ¶ÓÊ׵Ľø³Ì½øÈëÁÙ½çÇø¡£
Òª¶ÔÊý¾ÝдÈëµÄ½ø³ÌÔÚÉêÇëºÅ־ʱ£¬Èç¹ûºÅ־״̬Ϊ¶Á»òд£¬¶¼²»ÄܽøÈëÁÙ½çÇø¶øÒªÅÅÈëºÅÖ¾¶ÓÁС£Òª¶Á³öÊý¾ÝµÄ½ø³ÌÔÚÉêÇëºÅ־ʱ£¬ºÅ־״̬Ϊ¿ÕÏлò¶Á״̬£¬¶ÓÊײ¢ÎÞҪдÈëÊý¾ÝµÄ½ø³ÌÔڵȴý,Ôò¿É½øÈëÁÙ½çÇø¡£
ÔÚ¶Á״̬ʱ¿ÉÉèÒ»¼ÆÊýÆ÷ָʾÔÚÁÙ½çÇøÄڵĽø³ÌÊý£¬Ã¿µ±Ò»¸ö½ø³Ìµ÷ÓÃvsema,Ôò¼ÆÊýÆ÷¼õloµ±¼ÆÊýÆ÷¼õµ½Á㣬״̬¸ÄΪ¿ÕÏС£
(2)±êÖ¾
±êÖ¾ÓÃÀ´¿ØÖÆÓÐÏÞµÄϵͳ×ÊÔ´£¨ÀýÈ绺³åÆ÷£©µÄ·ÖÅäºÍ¹é»¹¡£Ã¿ÖÖÓÐÏÞµÄ×ÊÔ´¾ßÓжÔÓ¦µÄ±êÖ¾,±êÖ¾ÖеļÆÊýÆ÷µÄ³õֵΪ×ÊÔ´µÄÊýÁ¿£¬Ã¿µ±·ÖÅäÒ»¸ö×ÊÔ´£¬±êÖ¾¼ÆÊýÆ÷¼õ£¬Ã¿µ±¹é»¹Ò»¸ö×ÊÔ´£¬±êÖ¾¼ÆÊýÆ÷Ôö1¡£Òò´Ë,±êÖ¾¼ÆÊýÆ÷Öз´Ó³Á˴˿̿ÉÓõÄ×ÊÔ´Êý¡£±êÖ¾¼ÆÊýÆ÷»¹¿ÉÒÔΪ¸ºÖµ£¬±íÃ÷×ÊԴȫæʱÔڵȴý·ÖÅä×ÊÔ´µÄ½ø³ÌÊý¡£
ÔÚÒªÇó·ÖÅäijÖÖ×ÊԴʱ£¬½ø³Ì±ØÐëÏÈ×÷ÉêÇë±êÖ¾µÄ²Ù×÷,µ÷Óùý³Ìclaimflag:DCLclaimflagPROC£¨flidflagid timeouttime UPDATESfireflagrc)
Hid£º±ê־ʶ±ðÂë¡£
timeout:½ø³ÌÔÚ¶ÓÁÐÖеȴý·ÖÅä×ÊÔ´µÄ×î´óʱ¼ä°
fire£º·µ»ØÂë¡£
claimflag¹ý³Ì½«Ê×Ïȼì²é±êÖ¾¼ÆÊýÆ÷¡£Èç¼ÆÊýÆ÷´óÓÚÁ㣬ÉêÇë³É¹¦£¬½«×ÊÔ´·ÖÅ䏸½ø³Ì£¬½ø³Ì¿É¼ÌÐøÔËÐС£Èç¼ÆÊýÆ÷СÓÚ»òµÈÓÚÁ㣬±íʾ×ÊÔ´ÒÑȫ棬½ø³Ì±»¹ÒÆð¶øÖÃÓÚ±êÖ¾¶ÓÁÐÖ®ÖС£ÔÚÁ½ÖÖÇé¿ö϶¼Òª½«¼ÆÊýÆ÷¼õlo½ø³ÌµÈ´ýʱ³¤¿ÉÓÃʱÏÞ¼àÊÓ£¬Ê±ÏÞ´Ó½ø³Ì½øÈëµÈ´ý¶ÓÁпªÊ¼ÆðËã¡£·µ»ØÂë¿É·´Ó³ÉêÇë³É¹¦Óë·ñµÈ²»Í¬Çé¿ö¡£
µ±½ø³Ì¹é»¹×ÊԴʱ£¬µ÷Óùý³Ìreleaseflag,Ö´ÐÐÊͷűêÖ¾µÄ²Ù×÷£ºDCLreleaseflagPROC£¨flidflagid UPDATESfireflagrc£©
releaseflag½«¼ÆÊýÆ÷Ôö1,Èç¹ûÓнø³ÌÔڵȴý¶ÓÁÐÖУ¬Ôò¿ÉÈ¡³ö¶ÓÊ׵Ľø³Ì½øÐÐ×ÊÔ´·ÖÅä¡£