Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¶àºË¶à´¦ÀíÆ÷¼Ü¹¹Èí¼þÉè¼ÆµÄ×¢ÒâÊÂÏî
 
×÷ÕߣºGurudutt Kumar V J
  2788  次浏览      28
 2020-7-2 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª±¾ÎļòÒª½éÉÜÁ˶àºË¶àÏ̻߳·¾³µÄÌØÐÔ£¬¶ÔÈí¼þÉè¼Æ¾ö²ßµÄÓ°ÏìÒÔ¼°Ð©ÖØÒª¿¼ÂÇÊÂÏîºÍ¼¼ÇÉ¡£
±¾ÎÄÀ´×ÔÓÚIBM£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

¼ò½é

¼ÆËãÓ²¼þÕýÔÚ¿ìËÙÅ·¢Õ¹¡£ÔÚʱÖÓËÙ¶È³ÊÆ½ÎÈ״̬µÄͬʱ£¬¾§Ìå¹ÜÃܶÈÔÚ²»¶ÏÔö³¤¡£´¦ÀíÆ÷ÖÆÔìÉÌÏ£Íûͨ¹ýÈÃÿ¸öоƬӵÓжà¸öºËºÍÓ²¼þÏß³ÌÀ´Ìá¸ß¶à´¦ÀíÄÜÁ¦¡£ÀýÈ磬IBM POWER7? ¶Ô³Æ¶à´¦ÀíÆ÷¼Ü¹¹Í¨¹ýÿ¸öºËÖ§³Ö¶à´ï 4 ¸öÏ̡߳¢Ã¿¸öоƬ֧³Ö 8 ¸öºË¡¢Ã¿Ì¨·þÎñÆ÷Ö§³Ö 32 ¸öоƬ²å²ÛÀ´ÊµÏָ߶Ȳ¢ÐÐÐÔ£¬×ܹ² 1024 ¸ö²¢·¢Ó²¼þÏ̡߳£Ïà±È֮ϣ¬IBM POWER6? ¼Ü¹¹½öÖ§³Öÿ¸öºË 2 ¸öÏ̡߳¢Ã¿¸öоƬ 2 ¸öºË¡¢Ã¿Ì¨·þÎñÆ÷ 32 ¸öоƬ²å²Û£¬×ܹ² 128 ¸ö²¢ÐÐÓ²¼þÏ̡߳£

¿ª·¢Èí¼þʱ£¬Ä¿Ç°Éè¼ÆÈËÔ±ÐèÒª¿¼ÂÇ¿ÉÄܻᲿÊðÈí¼þµÄ¶à´¦ÀíÆ÷¡¢¶àºË¼Ü¹¹¡£ÕâÊÇÒòΪ£º

ͨ¹ýʹÓøü¶àºË¡¢Ó²¼þÏ̡߳¢¸ü¸ßµÄÄڴ棬ӦÓóÌÐòÓ¦¸Ã»á¸üºÃµØÖ´Ðк͸ü³öÉ«µØÉìËõÐÔ£¬²¢ÄÜÂú×ã²»¶ÏÔö³¤µÄÐÔÄܺÍЧÂÊÐèÇó¡£

Ëæ×ÅÔ½À´Ô½¶àµØÊ¹ÓöàºË¡¢¶à´¦ÀíÆ÷ϵͳ£¬Èí¼þÉè¼Æ×¢ÒâÊÂÏîÏÖÔÚÓ¦¸Ã¿¼Âǰüº¬Äܹ»ÔÚÕâЩ¼ÆËã×ÊÔ´Ö®¼äÓÐЧµØ·Ö·¢Èí¼þ¹¦Äܵķ½·¨¡£

Èç¹ûÔÚÉè¼ÆµÄ¹ý³ÌÖÐûÓп¼ÂÇÕâЩ¿¼ÂÇÊÂÏÄÇôÔÚ¶à´¦ÀíÆ÷¡¢¶àºË»·¾³ÖÐÔËÐÐÓ¦ÓóÌÐò¿ÉÄܻᵼÖÂÑÏÖØÇÒ²»Ò×·¢ÏÖµÄÐÔÄÜÎÊÌâ¡£

±¾ÎĽ«»á¼òÒª½éÉÜΪ¶àºË¡¢¶à´¦ÀíÆ÷»·¾³Éè¼ÆÈí¼þʱµÄÒ»Ð©ÖØÒª×¢ÒâÊÂÏî¡£

ÔÚоƬ¶àÏ̡߳¢¶àºË¡¢¶à´¦ÀíÆ÷¼Ü¹¹ÉÏÈí¼þ¿ÉÉìËõÐÔµÄ×è°­

Ó¦ÓóÌÐòÓ¦¸ÃÄܹ»ÔÚ¶àºË¡¢¶à´¦ÀíÆ÷»·¾³ÖиüºÃµØÉìËõ¡¢¸ü³öÉ«µØÖ´ÐС£µ«ÊÇ£¬Èç¹ûÓ¦ÓóÌÐòÉè¼ÆµÄЧÂʵÍÏ£¬Ôò¿ÉÄÜ»áÔÚÕâÑùµÄ»·¾³ÖÐÖ´Ðеýϲµ«Í¨¹ýʹÓÿÉÓõļÆËã×ÊÔ´¿ÉÒÔ¸üºÃµØÉìËõºÍ¸ü³öÉ«µØÖ´ÐС£Õâ¸ö¿ÉÉìËõÐÔµÄÒ»Ð©ÖØÒª×è°­¿ÉÄÜÊÇ£º

ЧÂʵÍϵIJ¢Ðл¯£ºµ¥Æ¬Ó¦ÓóÌÐò»òÈí¼þÎÞ·¨ÓÐЧʹÓÿÉÓõļÆËã×ÊÔ´¡£ÄúÐèÒª½«Ó¦ÓóÌÐò×éÖ¯³É²¢ÐÐÈÎÎñ¡£ÔÚ´«Í³µÄ²»Ö§³Ö¶àÏ̵߳ÄÓ¦ÓóÌÐò»òÈí¼þÖУ¬ÎÒÃǻᾭ³£¿´µ½Õâ¸öÎÊÌâ¡£ÕâЩӦÓóÌÐòÔÚ¶àºË¡¢¶à´¦ÀíÆ÷¡¢Ð¾Æ¬¶àÏß³ÌÓ²¼þÉÏÎÞ·¨ÉìËõ£¬²¢ÇÒÎÞ·¨ÊµÏÖ¸üºÃµÄÍÌÍÂÁ¿¡£Ïß³ÌÌ«¶à¿ÉÄÜ»áºÍÏß³ÌÌ«ÉÙÒ»Ñù£¬¶¼²»»á²úÉúºÃµÄ½á¹û¡£

´®ÐÐÆ¿¾±£ºÔÚ¶à¸öÏ̻߳ò½ø³ÌÖ®¼ä¹²ÏíÊý¾Ý½á¹¹µÄÓ¦ÓóÌÐò¿ÉÄÜ»áÓд®ÐÐÆ¿¾±¡£ÎªÁ˱£³ÖÊý¾ÝÍêÕûÐÔ£¬¿ÉÄܱØÐëʹÓÃËø¶¨ºÍ´®Ðл¯¼¼Êõ£¨ÀýÈ磬¶ÁÈ¡Ëø¡¢¶ÁÐ´Ëø¡¢Ð´ÈëËø¡¢×ÔÐýËø¡¢»¥³âµÈ£©½«ÕâЩ¹²ÏíÊý¾Ý½á¹¹µÄ·ÃÎÊ´®Ðл¯¡£Éè¼ÆµÃЧÂʵÍϵÄËø¿ÉÄÜ»áÓÉÓÚ¶à¸öÏ̻߳ò½ø³ÌÖ®¼äµÄ¸ß¶ÈËøÕùÓöøµ¼Ö´®ÐÐÆ¿¾±£¬´Ó¶ø³¢ÊÔ»ñÈ¡Ëø¡£Õâ¿ÉÄÜ»áDZÔڵؽµµÍÓ¦ÓóÌÐò»òÈí¼þµÄÐÔÄÜ¡£Ó¦ÓóÌÐòµÄÐÔÄÜ¿ÉÄÜ»áËæ×źËÐÄ»ò´¦ÀíÆ÷ÊýÁ¿µÄÔö¼Ó¶ø½µµÍ¡£

¶Ô²Ù×÷ϵͳ (OS) »òÔËÐÐʱ»·¾³µÄ¹ý¶ÈÒÀÀµ£ºÄú²»ÄÜÒÀÀµ²Ù×÷ϵͳ¡¢ÔËÐÐʱ»·¾³»ò±àÒëÆ÷À´Íê³ÉÉìËõÓ¦ÓóÌÐò»òÈí¼þËùÐèµÄÒ»ÇвÙ×÷¡£µ«ÊÇ£¬±àÒëÆ÷ºÍÔËÐÐʱ»·¾³¿ÉÒÔ°ïÖúÌṩһ¶¨µÄÓÅ»¯£¬Äú²»ÄÜÒÀÀµËüÃǽâ¾öËùÓпÉÉìËõÐÔÎÊÌâ¡£ÀýÈ磬²»ÄÜÒÀÀµ Java? ÐéÄâ»ú (JVM) ͨ¹ý×Ô¶¯²¢ÐÐÀ´·¢ÏÖ Java Ó¦ÓóÌÐòµÄ×î¼Ñ¿ÉÉìËõµÄ»ú»á¡£

¹¤×÷¸ºÔصIJ»Æ½ºâ¿ÉÄÜÊÇÒ»¸öÆ¿¾±£º¹¤×÷¸ºÔصIJ»¾ùÔÈ·Ö²¼¿ÉÄܵ¼ÖÂÎÞ·¨ÓÐЧµØÀûÓüÆËã×ÊÔ´¡£Äú¿ÉÄܱØÐ뽫½Ï´óµÄÈÎÎñ»®·Ö³É¿ÉÒÔ²¢ÐÐÔËÐеĽÏСµÄÈÎÎñ£¬»¹¿ÉÄܱØÐ뽫´®ÐÐËã·¨¸ü¸ÄΪ²¢ÐÐËã·¨£¬ÒÔ±ãÌá¸ßÐÔÄܺͿÉÉìËõÐÔ¡£

I/O Æ¿¾±£ºÓÉÓÚ×èÖ¹´ÅÅÌÊäÈë/Êä³ö (I/O) »ò¸ßÍøÂçÑÓ³Ù¶øµ¼ÖÂµÄÆ¿¾±¿ÉÄÜ»áÑÏÖØÒÖÖÆÓ¦ÓóÌÐòµÄ¿ÉÉìËõÐÔ¡£

ÎÞЧµÄÄÚ´æ¹ÜÀí£ºÔÚ¶àºËƽ̨ÉÏ£¬ÒòΪÓкܶദÀíµ¥Ôª£¬Òò´Ë´¿¼ÆËã¿ÉÄܷdz£Á®¼Û£¬²¢ÇÒÖ÷ÒªÄÚ´æ¿ÉÄÜÒ²²»ÊÇÎÊÌ⣬ÒòΪËüÕýÔÚ±äµÃÔ½À´Ô½´ó¡£µ«ÊÇ£¬ÄÚ´æ´ø¿íÒ»Ö±ÊÇÒ»¸öÆ¿¾±£¬ÒòΪËùÓд¦ÀíÆ÷ºËÐͼ¹±Ï×ÁËÒ»¸öͨÓõÄ×ÜÏß¡£ÎÞЧµÄÄÚ´æ¹ÜÀí¿ÉÄܵ¼ÖÂһЩÄÑÒÔ¼ì²âµ½µÄÐÔÄÜÎÊÌ⣬±ÈÈçα¹²Ïí¡£

µÍ´¦ÀíÆ÷ÀûÓÃÂÊ¿ÉÄÜ»áÃ÷È·±íÃ÷×ÊÔ´ÀûÓÃÂÊδ´ïµ½×î¼ÑÖµ¡£ÎªÁËÁ˽âÐÔÄÜÎÊÌ⣬ÄúÐèÒªÆÀ¹ÀÒ»ÏÂÓ¦ÓóÌÐòÊÇ·ñ¾ßÓÐÌ«ÉÙ»òÌ«¶àµÄỊ̈߳¬ÊÇ·ñÓÐËø¶¨»òͬ²½ÎÊÌâ¡¢ÍøÂç»ò I/O ÑÓ³Ù¡¢ÄÚ´æ¶¶¶¯»òÆäËûÄÚ´æ¹ÜÀíÎÊÌâ¡£Ö»Òª×ÊÔ´ÊÇ»¨·ÑÔÚÓÐÒâÒåµÄ¹¤×÷µÄÓ¦ÓóÌÐòÏß³ÌÉÏ£¬¸ß´¦ÀíÆ÷ÀûÓÃÂÊͨ³£¶¼»á²»´í¡£

оƬ¶àÏß³Ì (CMT)¡¢¶àºËºÍ¶à´¦ÀíÆ÷ (MP) ϵͳ¸ÅÊö

ÔÚÌÖÂÛоƬ¶àÏ̡߳¢¶àºË¡¢¶à´¦ÀíÆ÷»·¾³µÄÉè¼Æ×¢ÒâÊÂÏî֮ǰ£¬ÎÒÃÇ»á¼òÒª½éÉÜÕâÀàϵͳ¡£Í¼ 1 ËùÊöµÄϵͳÓÐÁ½¸ö´¦ÀíÆ÷£¬Ã¿¸ö´¦ÀíÆ÷ÓÐÁ½¸öºËÐÄ£¬²¢ÇÒÿ¸öºËÐÄÓÐÁ½¸öÓ²¼þÏ̡߳£Ã¿¸öºËÐÄÓÐÒ»¸ö L1 »º´æºÍÒ»¸ö L2 »º´æ¡£Òò´Ë£¬Ã¿¸öºËÐÄ¿ÉÄܶ¼ÓµÓÐ×Ô¼ºµÄ L2 »º´æ£¬»òÕßͬһ¸ö´¦ÀíÆ÷ÉϵĺËÐÄ¿ÉÄܻṲÏí L2 »º´æ¡£Í¬Ò»¸öºËÉϵÄÓ²¼þÏ̻߳ṲÏí L1 ºÍ L2 »º´æ¡£

ͼ 1. Ò»¸öµäÐ͵ÄоƬ¶àÏ̡߳¢¶àºË¡¢¶à´¦ÀíÆ÷ϵͳ

ÃèÊöоƬ¶àÏ̡߳¢¶àºË¡¢¶à´¦ÀíÆ÷ϵͳµÄ·½¿òͼ¡£

ËùÓк˺ʹ¦ÀíÆ÷¶¼¹²Ïíϵͳ×ÜÏߣ¬²¢Í¨¹ýϵͳ×ÜÏß·ÃÎÊÖ÷ÒªÄÚ´æ»ò RAM¡£¶ÔÓÚÓ¦ÓóÌÐòºÍ²Ù×÷ϵͳ£¬¸Ãϵͳ¿´ÆðÀ´¾ÍÏñÊÇ 8 ¸öÂß¼­´¦ÀíÆ÷¡£

ÒÔÏÂÖØÒª¸ÅÄ°ïÖúÎÒÃÇÁ˽âΪÕâÑùÒ»¸öоƬ¶àÏ̡߳¢¶àºË¡¢¶à´¦ÀíÆ÷»·¾³Éè¼ÆÓ¦ÓóÌÐòʱËùÃæÁÙµÄÌôÕ½¡£

»º´æÒ»ÖÂÐÔ

»º´æÒ»ÖÂÐÔÊDZíʾ´¦ÀíÆ÷»º´æÖеÄÊý¾ÝÏîĿֵÓëϵͳÄÚ´æÖеÄÊý¾ÝÏîĿֵÏàͬµÄÒ»ÖÖ״̬¡£¸Ã״̬¶ÔÓÚÈí¼þÀ´ËµÊÇ͸Ã÷µÄ¡£µ«ÊÇ£¬ÏµÍ³ÎªÁ˱£³Ö»º´æÒ»ÖÂÐÔ¶øÖ´ÐеIJÙ×÷¿ÉÄÜ»áÓ°ÏìÈí¼þµÄÐÔÄÜ¡£

¿¼ÂÇÕâÑùÒ»¸öʾÀý£ºÎÒÃǼٶ¨ÔÚͼ 1 ËùÊöµÄϵͳÖУ¬Ïß³Ì 1 ÕýÔÚ´¦ÀíÆ÷ 0 ÉÏÔËÐУ¬¶øÏß³Ì 2 ÕýÔÚ´¦ÀíÆ÷ 1 ÉÏÔËÐС£Èç¹ûÕâÁ½¸öÏ̶߳¼ÕýÔÚ¶ÁÈ¡ºÍдÈëÏàͬµÄÊý¾ÝÏÄÇô¸Ãϵͳ±ØÐëÖ´ÐжîÍâµÄ²Ù×÷£¬ÒÔÈ·±£ÔÚ½øÐÐÿ¸ö¶ÁÈ¡ºÍдÈë²Ù×÷ʱ£¬Ï̶߳¼¿´µ½ÏàͬµÄÊý¾ÝÖµ¡£

µ±Ïß³Ì 1 ÔÚÓëÏß³Ì 2 ¹²ÏíµÄÊý¾ÝÏîÖÐÖ´ÐÐдÈë²Ù×÷ʱ£¬»áÔÚÆä´¦ÀíÆ÷»º´æºÍϵͳÄÚ´æÖиüиÃÊý¾ÝÏµ«²»»áÔÚÏß³Ì 2 ´¦ÀíÆ÷µÄ»º´æÖÐÁ¢¼´¸üÐÂÊý¾Ý£¬ÒòΪÏß³Ì 2 ¿ÉÄܲ»ÔÙÐèÒª·ÃÎʸÃÊý¾ÝÏî¡£Èç¹ûÏß³Ì 2 Ö®ºó·ÃÎʸÃÊý¾ÝÏÔòÆä´¦ÀíÆ÷ÉϵĻº´æ×Óϵͳ±ØÐëÊ×ÏÈ´ÓϵͳÄÚ´æÖлñȡеÄÊý¾ÝÖµ¡£Òò´Ë£¬Ïß³Ì 1 µÄдÈë»áÆÈʹÏß³Ì 2 ÔÚÏ´ηÃÎʸÃÊý¾ÝʱµÈ´ý´ÓϵͳÄÚ´æÖжÁÈ¡Êý¾Ý¡£½öµ±Êý¾Ý±»ÆäÖÐÒ»¸öÏß³ÌÐÞ¸Äʱ£¬²Å»á³öÏÖÕâÖÖÇé¿ö¡£Èç¹ûÿ¸öÏ̶߳¼½øÐÐÁËһϵÁеÄдÈë²Ù×÷£¬ÄÇôÕâ¿ÉÄÜ»áÑÏÖØÓ°ÏìϵͳµÄÐÔÄÜ£¬ÒòΪËùÓÐʱ¼ä¶¼»¨·ÑÔڵȴý¸üÐÂϵͳÄÚ´æÖеÄÊý¾ÝÖµÉÏ¡£ÕâÖÖÇé¿ö±»³ÆÎª¡°Æ¹ÅÒЧӦ¡±£¬µ±ÔÚ¶à´¦ÀíÆ÷ºÍ¶àºËϵͳÉÏÔËÐÐʱ£¬Ó¦±ÜÃâ·¢ÉúÕâÖÖÇé¿ö£¬ÕâÊÇÒ»ÏîÖØÒªµÄÈí¼þÉè¼Æ×¢ÒâÊÂÏî¡£

Ðá̽ - Snooping

ÕâÊÇÒ»¸ö¸ú×Ùÿ¸ö»º´æÐеÄ״̬µÄ»º´æ×Óϵͳ¡£¸ÃϵͳʹÓÃÒ»¸ö³ÆÎª ¡°×ÜÏß¶¯Ì¬¼àÊÓ¡± »òÕß³ÆÎª¡°×ÜÏßÐá̽¡± µÄ¼¼ÊõÀ´¼àÊÓÔÚϵͳ×ÜÏßÉÏ·¢ÉúµÄËùÓÐÊÂÎñ£¬ÒÔ¼ì²â»º´æÖеÄij¸öµØÖ·ÉϺÎʱ·¢ÉúÁ˶ÁÈ¡»òдÈë²Ù×÷¡£

µ±Õâ¸ö»º´æ×ÓϵͳÔÚϵͳ×ÜÏßÉϼì²âµ½¶Ô»º´æÖмÓÔØµÄÄÚ´æÇøÓò½øÐеĶÁÈ¡²Ù×÷ʱ£¬Ëü»á½«¸Ã»º´æÐеÄ״̬¸ü¸ÄΪ ¡°shared¡±¡£Èç¹ûËü¼ì²âµ½¶Ô¸ÃµØÖ·µÄдÈë²Ù×÷ʱ£¬»á½«»º´æÐеÄ״̬¸ü¸ÄΪ ¡°invalid¡±¡£

¸Ã»º´æ×ÓϵͳÏëÖªµÀ£¬µ±¸ÃϵͳÔÚ¼àÊÓϵͳ×ÜÏßʱ£¬ÏµÍ³ÊÇ·ñÔÚÆä»º´æÖаüº¬Êý¾ÝµÄΩһ¸±±¾¡£Èç¹ûÊý¾ÝÓÉËü×Ô¼ºµÄ CPU ½øÐÐÁ˸üУ¬ÄÇôÕâ¸ö»º´æ×Óϵͳ»á½«»º´æÐеÄ״̬´Ó ¡°exclusive¡± ¸ü¸ÄΪ ¡°modified¡±¡£Èç¹û¸Ã»º´æ×Óϵͳ¼ì²âµ½ÁíÒ»¸ö´¦ÀíÆ÷¶Ô¸ÃµØÖ·µÄ¶ÁÈ¡£¬Ëü»á×èÖ¹·ÃÎÊ£¬¸üÐÂϵͳÄÚ´æÖеÄÊý¾Ý£¬È»ºóÔÊÐí¸Ã´¦ÀíµÄ·ÃÎʼÌÐø½øÐС£Ëü»¹ÔÊÐí½«¸Ã»º´æÐеÄ״̬±ê¼ÇΪ shared¡£

ÓйØÕâЩ¸ÅÄîµÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·ÖÖÐÓÐ¹Ø ¡°¶àºË¶à´¦ÀíÆ÷ϵͳµÄÈí¼þÉè¼ÆÎÊÌ⡱ µÄÎÄÕ¡£

¶àºË¶à´¦ÀíÆ÷»·¾³¶ÔÈí¼þÉè¼Æ¾ö²ßµÄÓ°Ïì

µ±Éè¼ÆÒªÔÚ¶àºË»ò¶à´¦ÀíÆ÷ϵͳÉÏÔËÐеÄÈí¼þʱ£¬Ö÷ÒªµÄ¿¼ÂÇÊÂÏîÊÇÈçºÎ·ÖÅ佫ÔÚ¿ÉÓõĴ¦ÀíÆ÷ÉÏÍê³ÉµÄ¹¤×÷¡£·ÖÅä¸Ã¹¤×÷µÄ×î³£Ó÷½·¨ÊÇʹÓÃÒ»¸öÏß³ÌÄ£ÐÍ£¬¸ÃÄ£ÐͿɽ«¹¤×÷·Ö³É¿ÉÒÔÔÚ²»Í¬´¦ÀíÆ÷Éϲ¢ÐÐÔËÐеĸ÷¸öÖ´Ðе¥Ôª¡£Èç¹ûÏß³ÌÖ®¼ä±Ë´ËÍêÈ«¶ÀÁ¢£¬ÄÇôËüÃǵÄÉè¼ÆÎÞÐ迼ÂÇËüÃÇÖ®¼äµÄ½»»¥·½Ê½¡£ÀýÈ磬ÔÚÒ»¸öϵͳÉÏÔËÐеÄÁ½¸ö³ÌÐò£¬Ã¿¸ö³ÌÐò¶¼Ê¹Óõ¥¶ÀµÄ½ø³ÌÔÚ×Ô¼ºµÄºËÐÄÉÏÔËÐУ¬Òò´ËÎÞÐè±Ë´Ë½øÐйØ×¢¡£³ÌÐòµÄÐÔÄܲ»»áÊܵ½ÈκÎÓ°Ï죬³ý·ÇËüÃÇÕùÓù²ÏíµÄ×ÊÔ´£¬±ÈÈçϵͳÄÚ´æ»òÏàͬµÄ I/O É豸¡£

½ÓÏÂÀ´ÒªÌÖÂÛµÄÖØµãÊǺËÐĺʹ¦ÀíÆ÷ÓëÖ÷ÒªÄÚ´æµÄ¹µÍ¨·½Ê½£¬ÒÔ¼°Õâ¶ÔÈí¼þÉè¼Æ¾ö²ßÓкÎÓ°Ïì¡£

Çë²Î¼ûÒÔÏÂÖØÒªµÄÉè¼Æ×¢ÒâÊÂÏî¡£

±ÜÃâÄÚ´æÕùÓÃ

ÔÚÄÚ´æºÍ»º´æÖУ¬¸÷ÖÖ²»Í¬µÄºË¹²ÏíÒ»¸öͨÓõÄÊý¾ÝÇøÓò£¬ÕâÐèÒªÔÚËüÃÇÖ®¼ä½øÐÐͬ²½¡£µ±²»Í¬µÄºËͬʱ·ÃÎÊͬһ¸öÊý¾ÝÇøÓòʱ£¬»á·¢ÉúÄÚ´æÕùÓá£ÔÚ²»Í¬µÄºËÖ®¼äͬ²½Êý¾Ý»áÒò×ÜÏßͨÐÅ¡¢Ëø¶¨³É±¾ÒÔ¼°»º´æÈ±Ê§¶øÓкܴóµÄÐÔÄÜËðʧ¡£

Èç¹ûÓ¦ÓóÌÐòÓжà¸öỊ̈߳¬²¢ÇÒËùÓÐÏ̶߳¼¸üлòÐÞ¸Äͬһ¸öÄÚ´æµØÖ·£¬ÄÇôÕýÈçÇ°Ãæ²¿·ÖËùÌÖÂÛµÄÄÇÑù£¬ÎªÁ˱£³Ö»º´æÒ»ÖÂÐÔ£¬¿ÉÄÜ»á²úÉúÒ»´ÎÖØ´óµÄƹÅÒЧӦ¡£Õâ»áµ¼ÖÂÐÔÄܽµµÍ¡£

ÓйصÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·ÖÖÐ ¡°¶àºËƽ̨µÄÄÚ´æÎÊÌ⡱ ÎÄÕ嵀 ¡°ÄÚ´æÕùÓá± ²¿·Ö¡£¸ÃÎÄÕ°üº¬Ò»¸ö¼òµ¥µÄ³ÌÐò£¬´Ë³ÌÐòÑÝʾÁËÄÚ´æÕùÓõIJ»Á¼Ó°Ïì¡£¸ÃʾÀýչʾ£¬¼´Ê¹¶à¸öÏß³ÌÖ®¼äÖ»¹²ÏíÒ»¸ö±äÁ¿£¬µ±¶Ô¸üÐÂʹÓÃÔ­×ÓÖ¸Áîʱ£¬ÐÔÄÜËðʧҲ»áºÜ´ó¡£

±ÜÃâÄÚ´æÕùÓõļ¼ÇÉ

²»ÒªÔÚºËÖ®¼ä¹²Ïí¿ÉдÈëµÄ״̬£º

ΪÁË×î´ó³Ì¶ÈµØ¼õÉÙÄÚ´æ×ÜÏßͨÐÅ£¬¿ÉÒÔͨ¹ý×îС»¯¹²ÏíλÖÃ/Êý¾Ý¾¡¿ÉÄܵؼõÉÙºËÐĽ»»¥£¬¼´Ê¹¹²ÏíÊý¾ÝûÓÐËø±£»¤£¬¶øÓÐһЩӲ¼þ¼¶±ðÔ­×ÓÖ¸ÁÈç Microsoft? Windows? 32 λƽ̨É쵀 InterlockedExchangeAdd64£©±£»¤Ò²ÊÇÈç´Ë¡£

¼õÉÙÏß³ÌÖ®¼äµÄÄÚ´æÕùÓõÄÒ»¸ö·½·¨ÊÇ´Ó¶à¸öÏß³ÌÖÐÏû³ý¶Ô¹²ÏíÄÚ´æÇøÓòµÄ¸üС£ÀýÈ磬¼´±ãÊÇÔÚ¶à¸öÏß³ÌÐèÒª¸üÐÂÈ«¾Ö¼ÆÊýÆ÷»òÀÛ¼Æ×ÜÊý£¨Èçͳ¼ÆÊý¾Ý£©Ê±£¬¸÷¸öÏß³ÌÒ²¿ÉÒÔ±£³ÖÏ̱߳¾µØ×ÜÊý£¬²¢ÈÃÈ«¾Ö×ÜÊý½öÔÚÐèҪʱͨ¹ýÒ»¸öͨÓõÄÏ߳̽øÐиüС£Òò´Ë£¬ÔÚ¹²ÏíÄÚ´æÇøÓòÉϵÄÕùÓûá´ó´ó¼õÉÙ¡£

Ç÷ÏòÓÚ¼õÉÙËøÕùÓõÄģʽ»á¼õÉÙÄÚ´æÍ¨ÐÅ£¬ÒòΪËüÊÇÒ»¸ö¹²ÏíµÄ¿ÉдÈë״̬£¬¸Ã״̬ÐèҪʹÓÃËø²¢²úÉúÕùÓá£

±ÜÃâÓɺ˻º´æÔì³ÉµÄα¹²Ïí¡£ÓйصÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄÏÂһС½Ú¡£

±ÜÃâα¹²Ïí

Èç¹ûÁ½¸ö»ò¶à¸ö´¦ÀíÆ÷ÕýÔÚÏòͬһ»º´æÐеIJ»Í¬²¿·ÖÖÐдÈëÊý¾Ý£¬ÄÇôºÜ¶à»º´æºÍ×ÜÏßͨÐÅ¿ÉÄܻᵼÖÂÆäËû´¦ÀíÆ÷ÉϵľÉÐеÄÿ¸ö»º´æ¸±±¾Ê§Ð§»ò½øÐиüС£Õâ³ÆÎª ¡°Î±¹²Ïí¡± »òÕßÒ²³ÆÎª ¡°CPU »º´æÐиÉÈÅ¡±¡£ºÍÁ½¸ö»ò¶à¸öÏ̹߳²ÏíͬһÊý¾Ý£¨Òò´ËÐèÒª³ÌÐò»¯µÄͬ²½»úÖÆÀ´È·±£°´Ë³Ðò·ÃÎÊ£©µÄÕæÕý¹²Ïí²»Í¬£¬µ±Á½¸ö»ò¶à¸öÏ̷߳ÃÎÊλÓÚͬһ»º´æÐÐÉϵÄÎÞ¹ØÊý¾Ýʱ£¬¾Í»á²úÉúα¹²Ïí¡£

ͨ¹ýÒÔÏ´úÂëÆ¬¶Î¸üºÃµØÁ˽âα¹²Ïí£¨²Î¿¼£ºÎ±¹²Ïí£©¡£

Çåµ¥ 1. ÓÃÓÚÑÝʾα¹²ÏíµÄ´úÂëʾÀý

double sumLocal[N_THREADS];
. . . . .
. . . . .
void ThreadFunc(void *data)
{
. . . . . . .
int id = p->threadId;
sumLocal[id] = 0.0;
. . . . . .
. . . . . .
for (i=0; i<N; i++)
sumLocal[id] += p[i];
. . . . . .
}

ÔÚÉÏÃæµÄ´úÂëʾÀýÖУ¬±äÁ¿ sumLocal µÄ´óСÓëÏ̵߳ÄÊýÁ¿Ïàͬ¡£Êý×é sumLocal ¿ÉÄܻᵼÖÂα¹²Ïí£¬ÒòΪµ±ËüÃÇÐ޸ĵÄÔªËØÎ»ÓÚͬһ»º´æÐÐÉÏʱ£¬¶à¸öÏ̻߳áÔÚÊý×éÖÐÖ´ÐÐдÈë²Ù×÷¡£Í¼ 2 ÑÝʾÁ˵±ÔÚ sumLocal ÖÐÐÞ¸ÄÁ½¸öÁ¬ÐøµÄÔªËØÊ±£¬Ïß³Ì 0 ºÍÏß³Ì 1 Ö®¼äµÄα¹²Ïí¡£Ïß³Ì 0 ºÍÏß³Ì 1 ÕýÔÚÐÞ¸ÄÊý×é sumLocal ÖÐÁ¬ÐøµÄ²»Í¬ÔªËØ¡£ÕâÐ©ÔªËØÔÚÄÚ´æÖб˴ËÁÚ½ü£¬Òò´Ë½«Î»ÓÚͬһ¸ö»º´æÐÐÉÏ¡£ÈçͼËùʾ£¬»º´æÐб»¼ÓÔØµ½ CPU0 ºÍ CPU1 µÄ»º´æÖУ¨»ÒÉ«¼ýÍ·£©¡£¼´Ê¹Ïß³ÌÕýÔÚÐÞ¸ÄÄÚ´æÖеIJ»Í¬ÇøÓò£¨ºìÉ«ºÍÀ¶É«¼ýÍ·£©£¬ÎªÁ˱£³Ö»º´æÒ»ÖÂÐÔ£¬ÔÚ¼ÓÔØ¸Ã»º´æÐеÄËùÓд¦ÀíÆ÷ÉÏ£¬¸Ã»º´æÐлáʧЧ£¬´Ó¶øÇ¿ÖƽøÐиüС£

ͼ 2. α¹²Ïí£¨²Î¿¼£º²Î¿¼×ÊÁϲ¿·ÖÖеıÜÃâºÍ±êʶÏß³ÌÖ®¼äµÄα¹²Ïí¡££©

ÃèÊöÏß³Ì 0 ºÍÏß³Ì 1 Ö®¼äα¹²ÏíµÄ·½¿òͼ¡£

α¹²Ïí»áÑÏÖØ½µµÍÓ¦ÓóÌÐòµÄÐÔÄÜ£¬²¢ÇҺܲ»ÈÝÒ×¼ì²âµ½¡£ÓйØÑÝʾα¹²Ïí²»Á¼Ó°ÏìµÄ¼òµ¥³ÌÐò£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·ÖÖеÄÎÄÕ ¡°¶àºËƽ̨ - CS Liu µÄÄÚ´æÎÊÌ⡱¡£

±ÜÃâα¹²ÏíµÄ¼¼ÇÉ

¿ÉÒÔʹÓÿÉÓÃÓÚ¶Ôij¸öÌØ¶¨´¦ÀíÆ÷½øÐÐÓÐÌõ¼þµØ±àÒëµÄ±àÒëÆ÷¶ÔÆëÖ¸Áͨ¹ý½«Êý¾Ý½á¹¹Ó뻺´æÐб߽ç¶ÔÆëÀ´±ÜÃâα¹²Ïí¡£ÀýÈ磬ÔÚ Linux? ƽ̨ÉÏ£¬Í·Îļþ adm-i386/cache.h Ϊ Intel? x86 ¼Ü¹¹ÏµÁÐµÄ L1 »º´æÐдóС¶¨ÒåÁ˺ê L1_CACHE_BYTES¡£ÄúÒ²¿ÉÒÔͨ¹ý±à³Ì·½Ê½È·¶¨´¦Àí»º´æÐеĴóС¡£ÓйØÔÚ»º´æÐб߽çÉÏ¶ÔÆëÊý¾Ý½á¹¹ÒÔ¼°Í¨¹ý±à³Ì·½Ê½´´½¨¿çƽ̨º¯ÊýÒÔ»ñÈ¡»º´æÐдóСµÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·Ö¡£

ÁíÒ»¸ö¼¼ÇÉÉæ¼°¶Ô¾­³£·ÃÎʵÄÊý¾Ý½á¹¹ÁìÓò½øÐзÖ×飬ÒÔ±ãÈÃËüÃdzÉΪµ¥¸öµÄ»º´æÐУ¬Òò´Ë¿ÉÒÔͨ¹ýµ¥¸öÄÚ´æ·ÃÎÊÀ´¼ÓÔØËüÃÇ¡£Õâ»á¼õÉÙÄÚ´æÑÓ³Ù¡£µ«ÊÇÈç¹ûÊý¾Ý½á¹¹·Ç³£¾Þ´ó£¬Ôò¿ÉÄÜ»áÔö¼Ó»º´æÕ¼Ó㬲¢ÇÒ¿ÉÄÜÐèÒªÎþÉüһЩ´ò°üЧÂÊÀ´¼õÉÙ»òÏû³ýα¹²Ïí¡£ÓйØÏêϸÐÅÏ¢£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·ÖÖÐµÄ ¡°»º´æ±à³ÌÑùʽµÄÔªËØ¡± ÎÄÕ¡£

ΪÁË·ÀÖ¹Êý×éÖз¢Éúα¹²Ïí£¬Ó¦¸Ã½«Êý×éÓ뻺´æµÄ´óСƥÅä¡£½á¹¹µÄ´óС±ØÐëÊÇ´¦ÀíÆ÷»º´æÐдóСµÄÕûÊý±¶¡£

Èç¹ûÐèÒª¼Ù¶¨»º´æÐдóСÒÔ±ãÇ¿ÖÆ¶ÔÆë£¬ÔòӦʹÓà 32 ×Ö½Ú¡£Çë×¢Ò⣺

32 ×Ö½Ú¶ÔÆëµÄ»º´æÐÐͬʱҲÊÇ 16 ×Ö½Ú¶ÔÆëµÄ»º´æÐС£

ÔÚ´ó¶àÊý´¦ÀíÆ÷ÉÏ£¬Êʺϼٶ¨ 32 ×Ö½Ú»º´æÐдóС¡£ÀýÈ磬IBM PowerPC? 601 ÃûÒåÉÏÓÐÒ»¸ö 64 ×Ö½Ú»º´æÐУ¬µ«Ëüʵ¼ÊÉÏÓÐÁ½¸öÒÑÁ¬½ÓµÄ 32 ×Ö½Ú»º´æÐС£Sparc64 ÓÐÒ»¸ö 32 ×Ö½Ú L1 ºÍÒ»¸ö 64 ×Ö½Ú L2 »º´æÐС£Alpha ÓÐÒ»¸ö 32 ×Ö½Ú L1 »º´æÐС£Itanium ¼Ü¹¹ÓÐÒ»¸ö 64 ×Ö½Ú L1 »º´æÐУ¬IBM System z? ÓÐÒ»¸ö 256K L1 »º´æÐÐºÍ 128 ×Ö½Ú»º´æÐУ¬¶ø x86 ´¦ÀíÆ÷ÓÐ 64 ×Ö½Ú L1 »º´æÐС£

ÔÚÒ»¸öºËÉÏÓÐЧִÐеÄͨÓùæÔòÊǽ«Êý¾Ý½ô½ô°ü¹ü£¬ÒÔ±ã¸ÃÊý¾ÝÕ¼ÓýÏÉٵĿռ䡣µ«ÔÚ¶àºË´¦ÀíÆ÷ÉÏ£¬°ü¹ü¹²ÏíÊý¾Ý¿ÉÄܻᵼÖÂÑÏÖØµÄα¹²Ïí¡£Í¨³££¬½â¾ö·½°¸Êǽô½ô°ü¹üÊý¾Ý£¬¸øÃ¿¸öÏß³ÌÌṩËü×Ô¼ºµÄרÓø±±¾ÒÔ±ãʹÆä¼ÌÐø¹¤×÷£¬Ö®ºóÔÙ½«½á¹û½øÐкϲ¢¡£

Ïß³ÌʹÓÃÁ˳ĵæ½á¹¹»òÊý¾Ý£¬È·±£²»Í¬Ïß³ÌËùÓµÓлòÐ޸ĵÄÊý¾ÝλÓÚ²»Í¬µÄ»º´æÐÐÉÏ¡£

Ïû³ýα¹²Ïí£¿´íÎó£¡

ÔÚÀíÏëÇé¿öÏ£¬ÎÒÃǵÄÄ¿±êÊÇÏû³ý¹²Ïí£¬¶ø²»Ö»ÊÇα¹²Ïí¡£Í¨³££¬Èí¼þÉè¼ÆÓ¦¸Ã¾¡Á¦Ïû³ý¶ÔËø¡¢Í¬²½»úÖÆÒÔ¼°¹²ÏíµÄÐèÇó¡£ÓйصÄÖØÒª¹Ûµã£¬Çë²ÎÔÄ Dmitriy Vyukov µÄÎÄÕ¡£

α¹²Ïí²»ÈÝÒ×¼ì²â£¬µ«Óм¸¸ö¹¤¾ß£¨Èç Oprofile ºÍ Valgrind µÄ Êý¾ÝÕùÓüì²â (DRD) Ä£¿é£©¿ÉÒÔΪÄúÌṩ°ïÖú¡£

Ïû³ý»ò¼õÉÙËøÕùÓÃ

Õâ¸öÉè¼Æ×¢ÒâÊÂÏîÊÇÇ°ÃæÌáµ½µÄÁ½¸ö¿¼ÂÇÊÂÏîµÄÀ©Õ¹£¬Ä¿µÄÊDZÜÃâÄÚ´æÕùÓúÍα¹²Ïí¡£ÕýÈçÇ°Ãæ²¿·ÖËùÊö£¬Èí¼þÉè¼ÆÕßµÄÖ÷ҪĿ±êÓ¦¸ÃÊÇÏû³ý¹²Ïí£¬ÒÔ±ãÏ̻߳ò½ø³ÌÖ®¼ä²»»á·¢Éú×ÊÔ´ÕùÓá£Ç°Ã沿·ÖÖÐËùÊöµÄһЩ¼¼ÇÉ£¨ÈçʹÓÃÏ̱߳¾µØ±äÁ¿´úÌæÈ«¾Ö¹²ÏíÇøÓò£©¿ÉÒÔ·ÀÖ¹·¢ÉúÄÚ´æÕùÓúÍα¹²Ïí¡£µ«ÊÇ£¬¸Ã¼¼Çɲ¢²»ÊÊÓÃÓÚËùÓÐÇé¿ö¡£

ÀýÈ磬Èç¹ûÓÐÒ»¸ö±£³Ö×ÊԴ״̬µÄÊý¾Ý½á¹¹£¬ÔòÓпÉÄÜÎÞ·¨ÔÚÿ¸öÏß³ÌÖаüº¬¸Ã½á¹¹µÄ¸±±¾¡£¸ÃÊý¾Ý½á¹¹¿ÉÄܱØÐëÓÉÓ¦ÓóÌÐòÖеÄËùÓÐÏ̶߳ÁÈ¡ºÍÐ޸ġ£Òò´Ë£¬±ØÐëʹÓÃͬ²½¼¼ÊõÀ´±£³ÖÊý¾ÝµÄÒ»ÖÂÐÔÒÔ¼°´ËÀ๲ÏíÊý¾Ý½á¹¹µÄÍêÕûÐÔ¡£Èç¹û´æÔÚÓÃÓÚ±£»¤¹²Ïí×ÊÔ´µÄËø»òͬ²½¹¹Ô죬Ôò¿ÉÄÜ»áÔÚ¶à¸öÏ̻߳ò½ø³ÌÖ®¼ä³öÏÖËøÕùÓ㬴Ӷø½µµÍÐÔÄÜ¡£

ÔÚ¶àºË¡¢¶à´¦ÀíÆ÷ϵͳÉÏ£¬¿ÉÄÜÓпռäÀ´Í¬Ê±ÔËÐдóÁ¿Ï̻߳ò½ø³Ì£¬µ«ÊÇ£¬Èç¹ûÕâЩÏ̱߳ØÐë²»¶ÏµØ±Ë´Ë¾ºÕù£¬ÒÔ·ÃÎÊ»òÐ޸Ĺ²Ïí×ÊÔ´»òÊý¾Ý½á¹¹£¬ÄÇôϵͳµÄ×ÜÌåÍÌÍÂÁ¿»áÓÐËù½µµÍ¡£Õâ»áµ¼ÖÂÓ¦ÓóÌÐòÎÞ·¨Í¨¹ýÉìËõÀ´ÓÐЧµØÀûÓÿÉÓõļÆËã×ÊÔ´¡£ÔÚÓÉÓÚËøÕùÓöøµ¼ÖÂÐÔÄܽµµÍµÄ¼«»µÇé¿öÏ£¬Ëæ×źËÐÄ»ò´¦ÀíÆ÷ÊýÁ¿µÄÔö¼Ó£¬Ó¦ÓóÌÐòµÄÐÔÄÜ»áÓÐËù½µµÍ¡£

±ÜÃâËøÕùÓõļ¼ÇÉ

±ÜÃâÔÚÊý¾Ý½á¹¹Öз¢ÉúËøÕùÓõķ½·¨Ö®Ò»ÊDzÉÓò¢·¢Êý¾Ý½á¹¹Éè¼ÆºÍÎÞËøËã·¨£¬Õâ»áÏû³ýËøÒÔ¼°´«Í³µÄͬ²½¼¼ÇÉ£¨±ÈÈ绥³â£©¡£ÓжàÖÖ²¢·¢Êý¾Ý½á¹¹µÄÉè¼Æ²¢²»ÐèÒªÀûÓÃͬ²½»úÖÆ£¬±ÈÈ绥³â¡£ÓйشËÀಢ·¢Êý¾Ý½á¹¹Éè¼ÆµÄһЩʾÀý£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·Ö¡£

ÎÞËøËã·¨µÄһЩʾÀýÈçÏ£º

ʹÓà Ïà¶ÔÂÛ±à³Ì µÄ¿ÉÉìËõ²¢·¢¹þÏ£±í£º¸Ã¼¼ÇɵÄ×î¼òµ¥Ê¾ÀýÊÇ Read Copy Update (RCU)£¬ËüרÓÃÓÚ Linux Äںˣ¬´ó´óÌá¸ßÁË Linux Äں˵ÄÐÔÄÜ£¬²¢¼ò»¯ÁË Linux Äں˵ĴúÂë¡£

ÎÞËø¿ÉÀ©Õ¹ÓÐÐò·Ö¸îµÄ¹þÏ£ÁÐ±í£ºÕâ¸öÎÞËøµÝ¹é¿ÉÀ©Õ¹¹þÏ£Ë㷨ʹÓÃÁËÎÞËøµÄÁ´½ÓÁÐ±í£¬ÕâЩÁбíʹÓÃÔ­×ÓÖ¸ÁîÀ´ÐÞ¸ÄÁ´½ÓµÄÁÐ±í¡£

ÔÚ Linux ÄÚºËÖУ¬¹ã·ºÊ¹ÓÃÁËÿ´¦ÀíÆ÷±äÁ¿£¬ÏµÍ³ÉϵÄÿ¸ö´¦ÀíÆ÷¶¼»ñµÃÁË×Ô¼ºµÄÒ»¸ö¸ø¶¨±äÁ¿µÄ¸±±¾¡£·ÃÎÊÿ´¦ÀíÆ÷±äÁ¿²»ÐèҪʹÓÃËø£¬´ËÍ⣬ÒòΪÔÚ²»Í¬µÄ´¦ÀíÆ÷ÉÏ£¬ÕâЩ±äÁ¿Î´ÔÚÏß³ÌÖ®¼ä¹²Ïí£¬Òò´ËûÓÐα¹²Ïí»òÄÚ´æÕùÓá£ÕâÖÖ¼¼Çɷdz£ÊʺÏÊÕ¼¯Í³¼ÆÐÅÏ¢¡£

¼õÉÙËøÕùÓõļ¼ÇÉ

µ±Ê¹Óô«Í³Ëø»òͬ²½¼¼ÇÉ£¨Èç×ÔÐýËø£©Ê±£¬±ØÐë×¢ÒâµÄÊÇ£¬²»ÒªÊ¹Óõ¥Æ¬Ëø»òÈ«¾ÖËø£¬¶øÊǽ«ÕâÐ©Ëø·Ö³É¸üϸСµÄ²¿·Ö¡£Òò´Ë£¬Ëø»á±£»¤Êý¾Ý½á¹¹ÖеÄij¸öÌØ¶¨ÇøÓòÒÔ¼°½ÏСµÄÇøÓò¡£ÕâÑù¶à¸öÏ߳̾ÍÄܹ»Í¨¹ý»ñÈ¡±£»¤ÕâЩ³ÉÔ±µÄÏàÓ¦Ëø£¬ÔÚͬһÊý¾Ý½á¹¹µÄ²»Í¬³ÉÔ±Éϲ¢·¢½øÐвÙ×÷¡£ÕâÖÖ·½·¨¿ÉÒÔʵÏÖ¸ü¶à²¢·¢¡£

ÉõÖÁµ±Èí¼þÉè¼ÆÖеÄͬ²½»úÖÆÄܹ»ÊµÏÖ¸üºÃµÄ²¢·¢ºÍ¼õÉÙËøÕùÓÃʱ£¬Ò²¿ÉÄÜ»áÓÉÓÚα¹²Ïí¶øµ¼Ö·¢ÉúÐÔÄÜÎÊÌâ¡£ÀýÈ磬¿¼ÂÇÒ»¸ö¹þÏ£Êý¾Ý½á¹¹¡£Èç¹û´æÔÚÒ»¸ö×ÔÐýËøÊý×飬ÓÃÓÚ±£»¤¹þÏ£ÖеÄÿ¸ö¹þϣͰ£¬ÄÇôÔÚ×ÔÐýËøÊý×éÖпÉÄÜ»á³öÏÖα¹²Ïí¡£Á½¸öÏß³ÌÔÚÁ½¸ö²»Í¬µÄ´¦ÀíÆ÷ÉÏÔËÐУ¬Ã¿¸öÏ̶߳¼Ëø¶¨¹þÏ£ÖеIJ»Í¬¹þϣͰ£¬ÄÇôµ±ËüÃÇËùÐèµÄ×ÔÐýËøÎ»ÓÚͬһ¸ö»º´æÐÐÉÏʱ£¬¿ÉÄܻᷢÉúα¹²Ïí¡£Òò´Ë£¬ÔÚÉè¼Æ´ËÀàË㷨ʱÐèÒª¿¼ÂDzÉÓñÜÃâ·¢Éúα¹²ÏíµÄͨÓü¼ÇÉ¡£

¼ì²âËøÕùÓÃÒÔ¼°Ïû³ý»ò¼õÉÙËøÕùÓöÔÓÚÔÚ¶àºË¡¢¶à´¦ÀíÆ÷»·¾³ÖÐÌṩӦÓóÌÐòµÄ¿ÉÉìËõÐԷdz£ÖØÒª¡£²Ù×÷ϵͳÌṩÁËÓÃÓÚ¼ì²âºÍ¶ÈÁ¿ÓÉÓÚËøÕùÓöøµ¼ÖÂÐÔÄÜÆ¿¾±µÄʵÓù¤¾ß¡£ÀýÈ磬Solaris ÌṩÁË Lockstat ʵÓù¤¾ß£¬ÓÃÓÚ¶ÈÁ¿ÄÚºËÄ£¿éÖеÄËøÕùÓá£Í¬Ñù£¬Linux ÄÚºËÒ²ÌṩÁË Lockstat ºÍ Lockdep ¿ò¼Ü£¬ÓÃÓÚ¼ì²âºÍ¶ÈÁ¿ËøÕùÓÃÒÔ¼°ÐÔÄÜÆ¿¾±¡£"Windows ÐÔÄܹ¤¾ß°ü - Xperf" ÔÚ Windows ÉÏÌṩÁËÀàËÆµÄ¹¦ÄÜ¡£ÓйصÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ ²Î¿¼×ÊÁÏ ²¿·Ö¡£

±ÜÃâ¶ÑÕùÓÃ

C/C++ ±ê×¼ÄÚ´æ¹ÜÀíÀý³ÌÊÇʹÓÃÌØ¶¨ÓÚÆ½Ì¨µÄÄÚ´æ¹ÜÀí API ʵÏֵģ¬Ëüͨ³£»ùÓڶѵĸÅÄî¡£ÕâЩ¿âÀý³Ì£¨ÎÞÂÛÊǵ¥Ḭ̈߳汾»¹ÊǶàḬ̈߳汾£©ÔÚµ¥¸ö¶ÑÉÏ·ÖÅä»òÊÍ·ÅÄÚ´æ¡£ËüÊÇÈ«¾Ö×ÊÔ´£¬ÔÚij¸ö½ø³ÌÖеÄÏß³ÌÖ®¼ä¹²Ïí²¢ÕùÓ᣶ÑÕùÓÃÊÇÄÚ´æÃܼ¯ÐͶàÏß³ÌÓ¦ÓóÌÐòµÄÆ¿¾±Ö®Ò»¡£

±ÜÃâ¶ÑÕùÓõļ¼ÇÉ

ʹÓÃÏ̱߳¾µØ/רÓöѽøÐÐÄÚ´æ¹ÜÀí£¬´Ó¶øÏû³ýÁË×ÊÔ´ÕùÓá£ÔÚ Windows ƽ̨ÉÏ£¬¿ÉÒÔʹÓà HeapCreate() Ϊÿ¸öÏ̴߳´½¨Ò»¸öרÓöѣ¬²¢½«·µ»ØµÄ¶Ñ¾ä±ú´«µÝ¸ø HeapAlloc()/HeapFree() º¯Êý¡£

²Î¿¼×ÊÁÏ ²¿·ÖÖÐµÄ ¡°¶àºËƽ̨µÄÄÚ´æÎÊÌâ - CS Liu¡± ÎÄÕÂÌṩÁËÒ»¸ö¶ÑÕùÓÃʾÀý¡£ÔÚÕâ¸ö²Î¿¼×ÊÁÏÖУ¬×÷ÕßÑÝʾÁËÈçºÎʹÓÃרÓöѽ«ÐÔÄÜÌá¸ß 3 ±¶×óÓÒ£¨ÓëʹÓÃÈ«¾Ö¶ÑÏà±È£©¡£

×¢Ò⣺

ÔÚ Windows ƽ̨ÉÏ£¬µ±´´½¨¶Ñʱ£¬¿ÉÒÔÉèÖà heap_no_serialization ±êÖ¾£¬ÕâÒâζ×Å´Ó¶à¸öÏ̷߳ÃÎÊËüʱ²»ÐèÒª½øÐÐͬ²½¡£µ«ÊÂʵ֤Ã÷£¬ÔÚ vista ¼°¸ü¸ß°æ±¾µÄ²Ù×÷ϵͳÉÏ£¬½«¸Ã±êÖ¾ÉèÖÃΪÏß³Ì˽ÓжÑËÙ¶È»áºÜÂý¡£

Heap_no_serialization ºÍһЩµ÷ÊÔ·½°¸½«½ûÓà ¡°Low Fragment Heap¡± ¹¦ÄÜ£¬ÏÖÔÚÕâÊǶѵÄÊÂʵĬÈϲßÂÔ£¬Òò´Ë½øÐÐÁ˸߶ÈÓÅ»¯¡£

Ìá¸ß´¦ÀíÆ÷¹ØÁª

´¦ÀíÆ÷¹ØÁªÊÇÒ»¸öÏ̻߳ò½ø³ÌÊôÐÔ£¬¸ÃÊôÐÔ¸æËß²Ù×÷ϵͳ¿ÉÒÔÔÚÄÄЩºË»òÂß¼­´¦ÀíÆ÷ÉÏÔËÐнø³Ì¡£Õâ¸üÊʺÏǶÈëʽÈí¼þÉè¼Æ¡£

ͼ 3 ÏÔʾÁËÒ»¸öϵͳÅäÖ㬸ÃÅäÖðüº¬Á½¸ö´¦ÀíÆ÷£¬Ã¿¸ö´¦ÀíÆ÷ÓÐÁ½¸öºË£¬ÕâÁ½¸öºË¶¼ÓÐÒ»¸ö¹²ÏíµÄ L2 »º´æ¡£ÔÚ¸ÃÅäÖÃÖУ¬ÔÚͬһ´¦ÀíÆ÷ÉϵÄÁ½¸öºËÖ®¼äÒÔ¼°²»Í¬´¦ÀíÆ÷ÉϵÄÁ½¸öºËÖ®¼ä£¬»º´æ×ÓϵͳµÄÐÐΪ½«»áÓÐËù²»Í¬¡£Èç¹ûÁ½¸öÏà¹ØµÄ½ø³Ì»òij¸ö½ø³ÌµÄÁ½¸öÏà¹ØÏ̱߳»·ÖÅä¸øÍ¬Ò»´¦ÀíÆ÷ÉϵÄÁ½¸öºË£¬ÄÇôËüÃÇ¿ÉÒÔ¸üºÃµØÀûÓù²ÏíµÄ L2 »º´æ£¬¶øÇÒ¿ÉÒÔ¼õÉÙ±£³Ö»º´æÒ»ÖÂÐԵĿªÏú¡£

ͼ 3. ¶à¸öºË¹²ÏíÒ»¸ö L2 »º´æµÄϵͳ

ÃèÊö¶àºË¶à´¦ÀíÆ÷ϵͳ£¨Ä³¸ö´¦ÀíÆ÷Éϵĺ˹²ÏíÒ»¸ö L2 »º´æ£©µÄ·½¿òͼ¡£

Éè¼Æ×¢ÒâÊÂÏî

ǶÈëʽϵͳµÄÈí¼þÉè¼ÆÕß¿ÉÒÔÀûÓÃÕâ¸ö±£³Ö»º´æÒ»ÖÂÐÔÏà¶Ô½ÏµÍµÄ¿ªÏú£¬Í¨¹ý±à³Ì¿ØÖÆÏòºË·ÖÅäÏ̡߳£

ÔÚ Linux ºÍ Windows ²Ù×÷ϵͳÉϵÄÒÔÏÂϵͳµ÷ÓÿÉÒÔ¸æËßÓ¦ÓóÌÐò£¬¶ÔÓÚÌØ¶¨µÄ½ø³ÌÀ´Ëµ£¬´¦ÀíÆ÷ÊÇÈçºÎ¹ØÁªµÄ£¬²¢Îª½ø³ÌÉèÖô¦ÀíÆ÷¹ØÁªÑÚÂ룺

Çåµ¥ 2. ÓÃÓÚ¹ÜÀí´¦ÀíÆ÷¹ØÁªµÄϵͳµ÷ÓÃ

Linux Example:
/* Get a process' CPU affinity mask */
extern int
sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *cpuset);

/* Set a process's affinity mask */
extern int
sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset);

Windows Example:
/* Set processor affinity */
BOOL WINAPI
SetProcessAffinityMask (Handle hProcess, DWORD_PTR dwProcessAffinityMask);

/* Set Thread affinity */
DWORD_PTR WINAPI
SetThreadAffinityMask (Handle hThread, DWORD_PTR dwThreadAffinityMask);

±à³ÌÄ£ÐÍ

µ±ÎªÓ¦ÓóÌÐòÖеÄÏ̷߳ÖÅ乤×÷ʱ£¬Èí¼þÉè¼ÆÕß¿ÉÒÔ¿¼ÂÇÁ½¸ö²»Í¬µÄ±à³ÌÄ£ÐÍ¡£ËüÃÇÊÇ£º

¹¦ÄÜ·Ö½â

¸ÃÄ£Ð͵ÄÄ¿±êÊÇÁ˽âÓ¦ÓóÌÐò»òÈí¼þ±ØÐëÖ´ÐеIJÙ×÷£¬²¢½«Ã¿¸ö²Ù×÷·ÖÅ䏸²»Í¬µÄÏ̡߳£

¿ÉÒÔ½«¶à¸ö²Ù×÷×éºÏÔÚÒ»¸öÏß³ÌÖУ¬µ«¹¦ÄÜ·Ö½âµÄ½á¹ûÊÇÿ¸ö²Ù×÷¶¼ÓÉÌØ¶¨µÄÏß³ÌÀ´Ö´ÐС£

Óò·Ö½â»ò³ÆÎªÊý¾Ý·Ö½â

¸ÃÄ£Ð͵ÄÄ¿±êÊÇ·ÖÎöÈí¼þ»òÓ¦ÓóÌÐòËùÐèµÄÊý¾Ý¼¯£¬ÒÔ±ã¶ÔËüÃǽøÐйÜÀí»ò´¦Àí£¬²¢½«ÕâЩÊý¾Ý¼¯·Ö½â³É¿ÉÒÔµ¥¶À´¦ÀíµÄ½ÏС×é¼þ¡£

Èí¼þÖеÄÏ̻߳áÖØ¸´ÒªÖ´ÐеIJÙ×÷£¬µ«Ã¿¸öÏ߳̽«ÔÚµ¥¶ÀµÄÊý¾Ý×é¼þÉÏÖ´ÐвÙ×÷¡£

Èí¼þËùÐèµÄ²Ù×÷ÀàÐÍÒÔ¼°Êý¾ÝÌØÐÔ¶¼»áÓ°ÏìÄ£Ð͵ÄÑ¡Ôñ£¬µ«ÊDZØÐëÁ˽âÕâЩģÐÍÈçºÎÔÚ¶à´¦ÀíÆ÷»ò¶àºË»·¾³ÖÐÖ´ÐС£

Èí¼þÉè¼ÆÕßÐèÒª¿¼Âǵö×¢ÒâÊÂÏî

¾¡¹ÜÊý¾Ý·Ö½âÖеĻº´æ½»»¥¿´ËƷdz£¼òµ¥£¨Òâζ×ÅÊý¾Ý·Ö½âÓÅÓÚ¹¦Äֽܷ⣩£¬µ«Ö§³ÖÓò·Ö½âËùÐèµÄÈí¼þÉè¼Æ¿ÉÄÜÃæÁٷdz£´óµÄÌôÕ½¡£

·Ö½âÄ£ÐÍÖеÄÊý¾ÝÈÔÈ»ÐèҪλÓÚ²»Í¬µÄ»º´æÐÐÉÏ£¬ÒÔ±ÜÃâ³öÏÖα¹²ÏíµÄ¿ÉÄÜ¡£

ÔÚ ²Î¿¼×ÊÁϲ¿·ÖÖеĶàºË¶à´¦ÀíÆ÷ϵͳµÄÈí¼þÉè¼ÆÎÊÌâ²Î¿¼ÎÄÏ×ÖУ¬Ïêϸ½éÉÜÁ˱à³ÌÄ£ÐÍ¡¢Îª¶àºË¶à´¦ÀíÆ÷¼Ü¹¹½øÐÐÈí¼þÉè¼ÆÊ±Ó¦ÓÃÕâЩģÐ͵ÄÌôÕ½ºÍÓÅÊÆ¡£

½áÊøÓï

±¾ÎļòÒª½éÉÜÁ˶àºË¶àÏ̻߳·¾³µÄÌØÐÔ£¬»¹½éÉÜÁËÔÚ¶àºË¶à´¦ÀíÆ÷ϵͳÉÏ¿ÉÄܵ¼Ö½µµÍÓ¦ÓóÌÐòÐÔÄÜ»ò·Á°­Ó¦ÓóÌÐò¿ÉÉìËõÐÔµÄÒ»Ð©ÖØÒªÎÊÌ⣬ÌÖÂÛÁËÔÚÕâÑùµÄ»·¾³ÖÐÉè¼ÆÈí¼þʱµÄÒ»Ð©ÖØÒª¿¼ÂÇÊÂÏîºÍ¼¼ÇÉ¡£¿¼ÂÇÁËÕâЩ¿¼ÂÇÊÂÏî¶øÉè¼ÆµÄÈí¼þ»òÓ¦ÓóÌÐò¿ÉÒÔÓÐЧµØÀûÓÿÉÓõļÆËã×ÊÔ´£¬»¹¿ÉÒÔ±ÜÃâÐÔÄܺͿÉÉìËõÐÔÎÊÌâ

 
   
2788 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
»ùÓÚFPGAµÄÒì¹¹¼ÆËãÔÚ¶àýÌåÖеÄÓ¦ÓÃ
ÉîÈëLinuxÄں˼ܹ¹¡ª¡ª¼ò½éÓë¸ÅÊö
LinuxÄÚºËϵͳ¼Ü¹¹½éÉÜ
dzÎöǶÈëʽCÓÅ»¯¼¼ÇÉ
½ø³Ì¼äͨÐÅ£¨IPC£©½éÉÜ
×îпγÌ
ǶÈëʽLinuxÇý¶¯¿ª·¢
´úÂëÕû½àÖ®µÀ-̬¶È¡¢¼¼ÒÕÓëϰ¹ß
ǶÈëʽÈí¼þ²âÊÔ
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
ǶÈëʽÈí¼þ¿É¿¿ÐÔÉè¼Æ
³É¹¦°¸Àý
ij¾ü¹¤Ëù ǶÈëʽÈí¼þ¼Ü¹¹
Öк½¹¤ÒµÄ³Ñо¿Ëù ǶÈëʽÈí¼þ¿ª·¢Ö¸ÄÏ
ij¹ìµÀ½»Í¨ ǶÈëʽÈí¼þ¸ß¼¶Éè¼ÆÊµ¼ù
ÉîÛÚ Ç¶ÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
ijÆóÒµ »ùÓÚIPDµÄǶÈëʽÈí¼þ¿ª·¢