ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
°ËÍòС˵Íø ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

smt-µÚ5²¿·Ö

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡



߳̽«±äΪ¿Éµ÷¶ÈÏ̡߳£Èç¹ûÔÚ×Ô¶¯ÖØÖÃʼþÉϵ÷ÓÃP¡¡u¡¡l¡¡s¡¡e¡¡E¡¡v¡¡e¡¡n¡¡tº¯Êý£¬ÄÇôֻÓÐÒ»¸öµÈ´ý¸ÃʼþµÄÏ̱߳äΪ¿Éµ÷¶ÈÏ̡߳£Èç¹ûÔÚ·¢³öʼþʱûÓÐÈκÎÏß³ÌÔڵȴý¸Ãʼþ£¬ÄÇô½«²»ÆðÈκÎ×÷Óã§5£§¡£¡¡¡¡¡¡2¡¢¡¡Critical¡¡Section¡¡¡¡¡¡Ê¹ÓÃÁÙ½çÇøÓòµÄµÚÒ»¸öÖÒ¸æ¾ÍÊDz»Òª³¤Ê±¼äËøסһ·Ý×ÊÔ´¡£ÕâÀïµÄ³¤Ê±¼äÊÇÏà¶ÔµÄ£¬ÊÓ²»Í¬³ÌÐò¶ø¶¨¡£¶ÔһЩ¿ØÖÆÈí¼þÀ´Ëµ£¬¿ÉÄÜÊÇÊýºÁÃ룬µ«ÊǶÔÁíÍâһЩ³ÌÐòÀ´Ëµ£¬¿ÉÒÔ³¤´ïÊý·ÖÖÓ¡£µ«½øÈëÁÙ½çÇøºó±ØÐ뾡¿ìµØÀ뿪£¬ÊÍ·Å×ÊÔ´¡£Èç¹û²»ÊͷŵĻ°£¬»áÈçºÎ£¿´ð°¸ÊDz»»áÔõÑù¡£Èç¹ûÊÇÖ÷Ị̈߳¨GUIỊ̈߳©Òª½øÈëÒ»¸öûÓб»ÊͷŵÄÁÙ½çÇø£¬ºÇºÇ£¬³ÌÐò¾Í»á¹ÒÁË£¡ÁÙ½çÇøÓòµÄÒ»¸öȱµã¾ÍÊÇ£ºCritical¡¡Section²»ÊÇÒ»¸öºËÐĶÔÏó£¬ÎÞ·¨»ñÖª½øÈëÁÙ½çÇøµÄÏß³ÌÊÇÉúÊÇËÀ£¬Èç¹û½øÈëÁÙ½çÇøµÄÏ̹߳ÒÁË£¬Ã»ÓÐÊÍ·ÅÁÙ½ç×ÊÔ´£¬ÏµÍ³ÎÞ·¨»ñÖª£¬¶øÇÒûÓа취ÊͷŸÃÁÙ½ç×ÊÔ´¡£Õâ¸öȱµãÔÚ»¥³âÆ÷£¨Mutex£©Öеõ½ÁËÃÖ²¹¡£Critical¡¡SectionÔÚMFCÖеÄÏàӦʵÏÖÀàÊÇCcriticalSection¡£CcriticalSection£º£ºLock£¨£©½øÈëÁÙ½çÇø£¬CcriticalSection£º£ºUnLock£¨£©À뿪ÁÙ½çÇø¡£¡¡¡¡¡¡3¡¢¡¡Mutex¡¡¡¡¡¡»¥³âÆ÷µÄ¹¦ÄܺÍÁÙ½çÇøÓòºÜÏàËÆ¡£Çø±ðÊÇ£ºMutexËù»¨·ÑµÄʱ¼ä±ÈCritical¡¡Section¶àµÄ¶à£¬µ«ÊÇMutexÊǺËÐĶÔÏó£¨Event¡¢SemaphoreÒ²ÊÇ£©£¬¿ÉÒÔ¿ç½ø³ÌʹÓ㬶øÇҵȴýÒ»¸ö±»ËøסµÄMutex¿ÉÒÔÉ趨TIMEOUT£¬²»»áÏñCritical¡¡SectionÄÇÑùÎÞ·¨µÃÖªÁÙ½çÇøÓòµÄÇé¿ö£¬¶øÒ»Ö±ËÀµÈ¡£MFCÖеĶÔÓ¦ÀàΪCMutex¡£Win32º¯ÊýÓУº´´½¨»¥³âÌåCreateMutex£¨£©¡¡£¬´ò¿ª»¥³âÌåOpenMutex£¨£©£¬ÊÍ·Å»¥³âÌåReleaseMutex£¨£©¡£MutexµÄÓµÓÐȨ²¢·ÇÊôÓÚÄǸö²úÉúËüµÄỊ̈߳¬¶øÊÇ×îºóÄǸö¶Ô´ËMutex½øÐеȴý²Ù×÷£¨WaitForSingleObjectµÈµÈ£©²¢ÇÒÉÐδ½øÐÐReleaseMutex£¨£©²Ù×÷µÄÏ̡߳£Ïß³ÌÓµÓÐMutex¾ÍºÃÏñ½øÈëCritical¡¡SectionÒ»Ñù£¬Ò»´ÎÖ»ÄÜÓÐÒ»¸öÏß³ÌÓµÓиÃMutex¡£Èç¹ûÒ»¸öÓµÓÐMutexµÄÏß³ÌÔÚ·µ»Ø֮ǰûÓе÷ÓÃReleaseMutex£¨£©£¬ÄÇôÕâ¸öMutex¾Í±»ÉáÆúÁË£¬µ«Êǵ±ÆäËûÏ̵߳ȴý£¨WaitForSingleObjectµÈ£©Õâ¸öMutexʱ£¬ÈÔÄÜ·µ»Ø£¬²¢µÃµ½Ò»¸öWAIT_ABANDONED_0·µ»ØÖµ¡£Äܹ»ÖªµÀÒ»¸öMutex±»ÉáÆúÊÇMutexÌØÓеġ£¡¡¡¡¡¡4¡¢¡¡Semaphore¡¡¡¡¡¡ÐźÅÁ¿ÊÇ×î¾ßÀúÊ·µÄͬ²½»úÖÆ¡£ÐźÅÁ¿Êǽâ¾öproducer/consumerÎÊÌâµÄ¹Ø¼üÒªËØ¡£¶ÔÓ¦µÄMFCÀàÊÇCsemaphore¡£Win32º¯ÊýCreateSemaphore£¨£©ÓÃÀ´²úÉúÐźÅÁ¿¡£ReleaseSemaphore£¨£©ÓÃÀ´½â³ýËø¶¨¡£SemaphoreµÄÏÖÖµ´ú±íµÄÒâÒåÊÇÄ¿Ç°¿ÉÓõÄ×ÊÔ´Êý£¬Èç¹ûSemaphoreµÄÏÖֵΪ1£¬±íʾ»¹ÓÐÒ»¸öËø¶¨¶¯×÷¿ÉÒԳɹ¦¡£Èç¹ûÏÖֵΪ5£¬¾Í±íʾ»¹ÓÐÎå¸öËø¶¨¶¯×÷¿ÉÒԳɹ¦¡£µ±µ÷ÓÃWait¡­µÈº¯ÊýÒªÇóËø¶¨£¬Èç¹ûSemaphoreÏÖÖµ²»Îª0£¬Wait¡­ÂíÉÏ·µ»Ø£¬×ÊÔ´Êý¼õ1¡£µ±µ÷ÓÃReleaseSemaphore£¨£©×ÊÔ´Êý¼Ó1£¬µ±Ê±²»»á³¬¹ý³õʼÉ趨µÄ×ÊÔ´×ÜÊý¡£
£§±à¼­±¾¶Î£§ÓйضàÏ̵߳ÄһЩ¼¼ÊõÎÊÌâ
¡¡¡¡1¡¢¡¡ºÎʱʹÓöàỊ̈߳¿¡¡¡¡¡¡2¡¢¡¡Ïß³ÌÈçºÎͬ²½£¿¡¡¡¡¡¡3¡¢¡¡Ïß³ÌÖ®¼äÈçºÎͨѶ£¿¡¡¡¡¡¡4¡¢¡¡½ø³ÌÖ®¼äÈçºÎͨѶ£¿¡¡¡¡¡¡ÏÈÀ´»Ø´ðµÚÒ»¸öÎÊÌ⣬Ïß³Ìʵ¼ÊÖ÷ÒªÓ¦ÓÃÓÚËĸöÖ÷ÒªÁìÓò£¬µ±È»¸÷¸öÁìÓòÖ®¼ä²»ÊǾø¶Ô¹ÂÁ¢µÄ£¬ËûÃÇÓпÉÄÜÊÇÖصþµÄ£¬µ«ÊÇÿ¸ö³ÌÐòÓ¦¸Ã¶¼¿ÉÒÔ¹éÓÚij¸öÁìÓò£º¡¡¡¡¡¡1¡¢¡¡offloading¡¡time¡­consuming¡¡task¡£Óɸ¨ÖúÏß³ÌÀ´Ö´ÐкÄʱ¼ÆË㣬¶øʹGUIÓиüºÃµÄ·´Ó¦¡£ÎÒÏëÕâÓ¦¸ÃÊÇÎÒÃÇ¿¼ÂÇʹÓÃÏß³Ì×î¶àµÄÒ»ÖÖÇé¿ö°É¡£¡¡¡¡¡¡2¡¢¡¡Scalability¡£·þÎñÆ÷Èí¼þ×î³£¿¼ÂǵÄÎÊÌ⣬ÔÚ³ÌÐòÖвúÉú¶à¸öỊ̈߳¬Ã¿¸öÏß³Ì×öÒ»·ÝСµÄ¹¤×÷£¬Ê¹Ã¿¸öCPU¶¼Ã¦Âµ£¬Ê¹CPU£¨Ò»°ãÊǶà¸ö£©ÓÐ×î¼ÑµÄʹÓÃÂÊ£¬´ïµ½¸ºÔصľùºâ£¬Õâ±È½Ï¸´ÔÓ£¬ÎÒÏëÒÔºóÔÙÌÖÂÛÕâ¸öÎÊÌâ¡£¡¡¡¡¡¡3¡¢¡¡Fair¡­share¡¡resource¡¡allocation¡£µ±ÄãÏòÒ»¸ö¸ººÉ³ÁÖصķþÎñÆ÷·¢³öÇëÇ󣬶àÉÙʱ¼ä²ÅÄÜ»ñµÃ·þÎñ¡£Ò»¸ö·þÎñÆ÷²»ÄÜͬʱΪ̫¶àµÄÇëÇó·þÎñ£¬±ØÐëÓÐÒ»¸öÇëÇóµÄ×î´ó¸öÊý£¬¶øÇÒÓÐʱºò¶ÔijЩÇëÇóÒªÓÅÏÈ´¦Àí£¬ÕâÊÇÏß³ÌÓÅÏȼ¶¸ÉµÄ»îÁË¡£¡¡¡¡¡¡4¡¢¡¡Simulations¡£Ïß³ÌÓÃÓÚ·ÂÕæ²âÊÔ¡£
£§±à¼­±¾¶Î£§Ïß³ÌÖ®¼äµÄͨѶ
¡¡¡¡Ï̳߳£³£Òª½«Êý¾Ý´«µÝ¸øÁíÍâÒ»¸öÏ̡߳£WorkerÏ߳̿ÉÄÜÐèÒª¸æËß±ðÈË˵ËüµÄ¹¤×÷Íê³ÉÁË£¬GUIÏß³ÌÔò¿ÉÄÜÐèÒª½»¸øWorkerÏß³ÌÒ»¼þÐµĹ¤×÷¡£¡¡¡¡¡¡Í¨¹ýPostThreadMessage£¨£©£¬¿ÉÒÔ½«ÏûÏ¢´«µÝ¸øÄ¿±êỊ̈߳¬µ±È»Ä¿±êÏ̱߳ØÐëÓÐÏûÏ¢¶ÓÁС£ÒÔÏûÏ¢µ±×÷ͨѶ·½Ê½£¬±ÈÆð±ê×¼¼¼ÊõÈçʹÓÃÈ«¾Ö±äÁ¿µÈ£¬ÓкܴóµÄºÃ´¦¡£Èç¹û¶ÔÏóÊÇͬһ½ø³ÌÖеÄỊ̈߳¬¿ÉÒÔ·¢ËÍ×Ô¶¨ÒåÏûÏ¢£¬´«µÝÊý¾Ý¸øÄ¿±êỊ̈߳¬Èç¹ûÊÇÏß³ÌÔÚ²»Í¬µÄ½ø³ÌÖУ¬¾ÍÉæ¼°½ø³ÌÖ®¼äµÄͨѶÁË¡£ÏÂÃ潫»á½²µ½¡£¡¡¡¡¡¡½ø³ÌÖ®¼äµÄͨѶ£º¡¡¡¡¡¡µ±Ï̷߳ÖÊôÓÚ²»Í¬½ø³Ì£¬Ò²¾ÍÊÇ·ÖפÔÚ²»Í¬µÄµØÖ·¿Õ¼äʱ£¬ËüÃÇÖ®¼äµÄͨѶÐèÒª¿çÔ½µØÖ·¿Õ¼äµÄ±ß½ç£¬±ãµÃ²ÉȡһЩÓëͬһ½ø³ÌÖв»Í¬Ï̼߳äͨѶ²»Í¬µÄ·½·¨¡£¡¡¡¡¡¡1¡¢¡¡WindowsרÃŶ¨ÒåÁËÒ»¸öÏûÏ¢£ºWM_COPYDATA£»ÓÃÀ´ÔÚÏß³ÌÖ®¼ä°áÒÆÊý¾Ý£¬¨D¨D²»¹ÜÁ½¸öÏß³ÌÊÇ·ñͬÊôÓÚÒ»¸ö½ø³Ì¡£Í¬Ê±½ÓÊÜÕâ¸öÏûÏ¢µÄÏ̱߳ØÐëÓÐÒ»¸ö´°¿Ú£¬¼´±ØÐëÊÇUIÏ̡߳£WM_COPYDATA±ØÐëÓÉSendMessage£¨£©À´·¢ËÍ£¬²»ÄÜÓÉPostMessage£¨£©µÈÀ´·¢ËÍ£¬ÕâÊÇÓÉ´ý·¢ËÍÊý¾Ý»º³åÇøµÄÉúÃüÆÚ¾ö¶¨µÄ£¬³öÓÚ°²È«µÄÐèÒª¡£¡¡¡¡¡¡2¡¢¡¡WM_COPYDATAЧÂÊÉÏÃæ²»ÊÇÌ«¸ß£¬Èç¹ûÒªÇó¸ßЧÂÊ£¬¿ÉÒÔ¿¼ÂÇʹÓù²ÏíÄڴ棨Shared¡¡Memory£©¡£Ê¹Óù²ÏíÄÚ´æÒª×öµÄÊÇ£ºÉ趨һ¿éÄÚ´æ¹²ÏíÇøÓò£»Ê¹Óù²ÏíÄڴ棻ͬ²½´¦Àí¹²ÏíÄÚ´æ¡£¡¡¡¡¡¡µÚÒ»²½£ºÉ趨һ¿éÄÚ´æ¹²ÏíÇøÓò¡£Ê×ÏÈ£¬CreateFileMapping£¨£©²úÉúÒ»¸öfile¡­mappingºËÐĶÔÏ󣬲¢Ö¸¶¨¹²ÏíÇøÓòµÄ´óС¡£MapViewOfFile£¨£©»ñµÃÒ»¸öÖ¸ÕëÖ¸Ïò¿ÉÓõÄÄÚ´æ¡£Èç¹ûÊÇC/Sģʽ£¬ÓÉServer¶ËÀ´²úÉúfile¡­mapping£¬ÄÇôClient¶ËʹÓÃOpenFileMapping£¨£©£¬È»ºóµ÷ÓÃMapViewOfFile£¨£©¡£¡¡¡¡¡¡µÚ¶þ²½£ºÊ¹Óù²ÏíÄÚ´æ¡£¹²ÏíÄÚ´æÖ¸ÕëµÄʹÓÃÊÇÒ»¼þ±È½ÏÂé·³µÄÊ£¬ÎÒÃÇÐèÒª½èÖú_basedÊôÐÔ£¬ÔÊÐíÖ¸Õë±»¶¨ÒåΪ´Óijһµã¿ªÊ¼ÆðËãµÄ32λƫÒÆÖµ¡£¡¡¡¡¡¡µÚÈý²½£ºÇåÀí¡£UnmapViewOfFile£¨£©½»³öÓÉMapViewOfFile£¨£©»ñµÃµÄÖ¸Õ룬CloseHandle£¨£©½»³öfile¡­mappingºËÐĶÔÏóµÄhandle¡£¡¡¡¡¡¡µÚËIJ½£ºÍ¬²½´¦Àí¡£¿ÉÒÔ½èÖúMutexÀ´½øÐÐͬ²½´¦Àí¡£¡¡¡¡¡¡3¡¢¡¡IPC¡¡¡¡¡¡1£©Anonymous¡¡Pipes¡£Anonymous¡¡PipesÖ»±»Ê¹ÓÃÓÚµã¶ÔµãͨѶ¡£µ±Ò»¸ö½ø³Ì²úÉúÁíÒ»¸ö½ø³Ìʱ£¬ÕâÊÇ×îÓÐÓõÄÒ»ÖÖͨѶ·½Ê½¡£¡¡¡¡¡¡2£©Named¡¡Pipes¡£Named¡¡Pipes¿ÉÒÔÊǵ¥Ïò£¬Ò²¿ÉÒÔÊÇË«Ïò£¬²¢ÇÒ¿ÉÒÔ¿çÔ½ÍøÂ磬²½¾ÖÏÞÓÚµ¥»ú¡£¡¡¡¡¡¡3£©Mailslots¡£MailslotsΪ¹ã²¥Ê½Í¨Ñ¶¡£Server½ø³Ì¿ÉÒÔ²úÉúMailslots£»ÈκÎClient½ø³Ì¿ÉÒÔдÊý¾Ý½øÈ¥£¬µ«ÊÇÖ»ÓÐServer½ø³Ì¿ÉÒÔÈ¡Êý¾Ý¡£¡¡¡¡¡¡4£©OLE¡¡Automation¡£OLE¡¡AutomationºÍUDP¶¼ÊǸü¸ß½×µÄ»úÖÆ£¬ÔÊÐíͨѶ·¢ÉúÓÚ²»Í¬½ø³Ì¼ä£¬ÉõÖÁ²»Í¬»úÆ÷¼ä¡£¡¡¡¡¡¡5£©DDE¡£DDE¶¯Ì¬Êý¾Ý½»»»£¬Ê¹ÓÃÓÚ16λWindows£¬Ä¿Ç°ÕâÒ»·½Ê½Ó¦¾¡Á¿±ÜÃâʹÓᣣ§4£§
£§±à¼­±¾¶Î£§Í¬²½¶àÏ̵߳Ť×÷·½Ê½
¡¡¡¡Í¼ÖÐÊ×ÏÈÏÔʾÁ˵¥Ï̷߳½Ê½£¬ÆäÖÐËùÓÐÎïÀí×ÊÔ´¶¼Í¨¹ýµ¥¸öÏ̡߳£POWER£¿¡¡ÏµÍ³Ö§³Öµ¥Ï̺߳Íͬ²½¶àÏ̵߳Ť×÷·½Ê½Í¬²½¶àÏ̡߳£¡¡¡¡¡¡Ëæºó£¬Í¼ÖÐÏÔʾÁË´ÖÁ£¶È¶àÏ̷߳½Ê½£¬ÆäÖÐÿ´ÎÖ»ÓÐÒ»¸öÏß³ÌÔËÐС£µ±Ïß³ÌÓöµ½³¤µÈ´ýʱ¼äʼþ£¨Èç¸ßËÙ»º´æ²»ÃüÖУ©Ê±£¬Ó²¼þÇл»µ½µÚ¶þ¸öÏß³ÌÒÔʹÓô¦Àí×ÊÔ´£¬¶ø²»ÊÇÈ÷þÎñÆ÷±£³Ö¿ÕÏÐ״̬¡£´ËÉè¼ÆÔÊÐíÆäËûÈÎÎñʹÓÃÔ­±¾½«¿ÕÏеĴ¦ÀíÆ÷ÖÜÆÚ£¬´Ó¶øÌá¸ßÁË×ÜϵͳÍÌÍÂÁ¿¡£ÎªÁ˽ÚÔ¼×ÊÔ´£¬Á½¸öÏ̹߳²ÏíÐí¶àϵͳ×ÊÔ´£¬Èç½á¹¹¼Ä´æÆ÷¡£Òò´Ë£¬½«³ÌÐò¿ØÖÆ´ÓÒ»¸öÏß³ÌÇл»µ½ÁíÒ»¸öÏß³ÌÐèÒªÊý¸öÖÜÆÚ¡£¡¡¡¡¡¡×îºó£¬Í¼ÖÐÏÔʾÁËͬ²½¶àÏ̷߳½Ê½£¬ÆäÖд¦ÀíÆ÷ͬʱ´Ó¶à¸öÓ²¼þÏ̼߳ìË÷Ö¸Áî¡£´¦ÀíÆ÷½«¶à¸öÓ²¼þÏß³ÌÖеÄÖ¸Áîµ÷¶ÈΪͬʱִÐС£½èÖúͬ²½¶àỊ̈߳¬ÏµÍ³½«¸ù¾Ý»·¾³½øÐж¯Ì¬µ÷½Ú£¬´Ó¶øÔÊÐíÔÚ¿ÉÄܵÄÇé¿öÏÂÖ´ÐÐÿ¸öÓ²¼þÏß³ÌÖеÄÖ¸Áµ±Ò»¸öÓ²¼þÏß³ÌÓöµ½³¤µÈ´ýʱ¼äʼþʱ£¬Ëü»¹ÔÊÐíÁíÒ»¸öÓ²¼þÏß³ÌÖеÄÖ¸ÁîʹÓÃËùÓÐÖ´Ðе¥Ôª¡£¡¡¡¡¡¡Í¬²½¶àÏß³ÌÖ÷ÒªÔÚÒÔÏÂÉÏÏÂÎÄÖÐÓÐÓ㺡¡¡¡¡¡ÔÚµ¥¸öÊÂÎñËٶȲ»ÈçËùÖ´ÐÐÊÂÎñµÄ×ÜÊýÖØÒªµÄÉÌÓû·¾³ÖС£Í¬²½¶àÏ߳̽«Í¨¹ý´óÐÍ»ò¾­³£±ä»¯µÄ¹¤×÷¼¯£¨ÈçÊý¾Ý¿â·þÎñÆ÷ºÍ¡¡Web¡¡·þÎñÆ÷£©Ôö¼Ó¹¤×÷¸ºÔصÄÍÌÍÂÁ¿¡£¡¡¡¡¡¡¾ßÓиߡ¡CPI¡¡¼ÆÊýµÄ¹¤×÷¸ºÔØ¡£ÕâЩ¹¤×÷¸ºÔØÍùÍùºÜÉÙʹÓô¦ÀíÆ÷ºÍÄÚ´æ×ÊÔ´¡£¸ß¡¡CPI¡¡¼ÆÊýͨ³£ÓÉ´óÐ͹¤×÷»úµÄ¸ßËÙ»º´æ²»ÃüÖÐÂʽϸ߶øµ¼Ö¡£½Ï´óµÄÉÌÓù¤×÷¸ºÔØÔÚijЩ³Ì¶ÈÉÏÈ¡¾öÓÚÁ½¸öÓ²¼þÏß³ÌÊÇ·ñ¹²ÏíÖ¸Áî»òÊý¾Ý£¬»òÈ¡¾öÓÚÁ½¸öÓ²¼þÏß³ÌÊÇ·ñÍêÈ«²»Í¬¡£¹²ÏíÖ¸Áî»òÊý¾ÝµÄ¹¤×÷¸ºÔØ¿ÉÄÜ´Óͬ²½¶àÏß³ÌÖлñµÃ½Ï´óµÄºÃ´¦£¬ÕâЩָÁî»òÊý¾Ý¿É°üÀ¨ÔÚ²Ù×÷ϵͳÖлòµ¥¸öÓ¦ÓóÌÐòÖй㷺ÔËÐеÄÖ¸Áî»òÊý¾Ý¡££§3£§
£§±à¼­±¾¶Î£§IBM¡¡Power5¡¡ÖеÄͬ²½¶àÏ̼߳¼Êõ£¨SMT£©
¡¡¡¡ÄÚÈÝÌáÒªPower5¡¡Ð¾Æ¬ÊÇIBM¡¡Power¡¡Ð¾Æ¬¼Ò×åÖеÄÐÂÒ»´ú¸ß¶ËCPU¡¡²úÆ·£¬ËüÓëPower4¡¡ÔÚ¶þ½øÖÆÉϼæÈÝ£¬µ«ÔÚÐÔÄܺ͹¦ÄÜÉϱÈPower4¡¡ÓкܴóµÄÔöÇ¿¡£±¾ÎĽ«½éÉÜPower5¡¡ËùÖ§³ÖµÄͬ²½¶àÏ̼߳¼ÊõSimultaneous¡¡MultiThreading¡¡¡£
Ó¦ÓÃ
¡¡¡¡ÔÚµ¥¸öÊÂÎñËٶȲ»ÈçËùÖ´ÐÐÊÂÎñµÄ×ÜÊýÖØÒªµÄÉÌÓû·¾³ÖС£Í¬²½¶àÏ߳̽«Í¨¹ý´óÐÍ»ò¾­³£±ä»¯µÄ¹¤×÷¼¯£¨ÈçÊý¾Ý¿â·þÎñÆ÷ºÍ¡¡Web¡¡·þÎñÆ÷£©Ôö¼Ó¹¤×÷¸ºÔصÄÍÌÍÂÁ¿¡£¡¡¾ßÓиߡ¡CPI¡¡¼ÆÊýµÄ¹¤×÷¸ºÔØ¡£ÕâЩ¹¤×÷¸ºÔØÍùÍùºÜÉÙʹÓô¦ÀíÆ÷ºÍÄÚ´æ×ÊÔ´¡£¸ß¡¡CPI¡¡¼ÆÊýͨ³£ÓÉ´óÐ͹¤×÷»úµÄ¸ßËÙ»º´æ²»ÃüÖÐÂʽϸ߶øµ¼Ö¡£½Ï´óµÄÉÌÓù¤×÷¸ºÔØÔÚijЩ³Ì¶ÈÉÏÈ¡¾öÓÚÁ½¸öÓ²¼þÏß³ÌÊÇ·ñ¹²ÏíÖ¸Áî»òÊý¾Ý£¬»òÈ¡¾öÓÚÁ½¸öÓ²¼þÏß³ÌÊÇ·ñÍêÈ«²»Í¬¡£¹²ÏíÖ¸Áî»òÊý¾ÝµÄ¹¤×÷¸ºÔØ¿ÉÄÜ´Óͬ²½¶àÏß³ÌÖлñµÃ½Ï´óµÄºÃ´¦£¬ÕâЩָÁî»òÊý¾Ý¿É°üÀ¨ÔÚ²Ù×÷ϵͳÖлòµ¥¸öÓ¦ÓóÌÐòÖй㷺ÔËÐеÄÖ¸Áî»òÊý¾Ý¡£
˵¡¡Ã÷
¡¡¡¡Í¬²½¶àÏß³ÌʾÒâͼ´«Í³µÄCPU¡¡ÔÚijһʱ¼äÖ»ÄÜ´¦ÀíÒ»¸öÖ¸ÁîÐòÁУ¬Í¨³£ÎÒÃÇ°ÑËü³ÆΪһ¸öÏ̡߳£ÔÚÏ̴߳¦ÀíµÄ¹ý³ÌÖÐCPU¡¡µÄ´¦Àíµ¥ÔªÐèÒª²»¶Ïµ÷ÈëÖ¸ÁîÓëÊý¾Ý½øÐд¦Àí¡£Ëæ×ÅCPU¡¡¼¼ÊõµÄ·¢Õ¹£¬CPU¡¡µÄÖ÷ƵÓëÐÔÄܲ»¶ÏÌá¸ß£¬ÐèÒªµ÷ÈëÖ¸ÁîºÍÊý¾ÝµÄËٶȲ»¶ÏÌá¸ß¡£µ«²»ÐÒµÄÊÇÄÚ´æ¼¼ÊõµÄ·¢Õ¹²¢Ã»ÓиúÉÏCPU¡¡·¢Õ¹µÄËٶȣ¬ÄÚ´æͨ³£ÎÞ·¨Ìṩ×ã¹»µÄÖ¸ÁîºÍÊý¾Ý¸øCPU¡¡½øÐд¦Àí¡£¡¡¡¡¡¡ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬ҵ½çͨ³£²ÉÓö༶»º´æµÄ·½Ê½¡£CPU¡¡´¦Àíµ¥ÔªÖеļĴæÆ÷ÊÇ×î¿ìµÄ£¬Í¨³£Ò»¸öCPU¡¡ÖÐÓÐÒ»¡¢Á½°Ù¸ö¼Ä´æÆ÷£¬Ëü¿ÉÒÔÔÚÒ»¸öʱÖÓÖÜÆÚÄÚÌṩָÁîºÍÊý¾Ý¡£Æä´ÎÊÇÒ»¼¶»º´æ£¬ËûµÄ´óСͨ³£Îª¼¸Ê®KB¡¡£¬ËüÐèÒª¼¸¸öʱÖÓÖÜÆڵķÃÎÊʱ¼ä¡£ÔÙÏÂÃæÊǶþ¼¶»º´æ£¬ËûµÄ´óСͨ³£Îª¼¸MB¡¡£¬ËüÐèҪʮ¼¸¸öʱÖÓÖÜÆڵķÃÎÊʱ¼ä¡£È»ºóÊÇÄڴ棬´ÓÄÚ´æÖÐÈ¡µÃÊý¾ÝÐèÒª¼¸Ê®¸ö¸öʱÖÓÖÜÆÚ¡£¶ø×îÂýµÄÊÇÓ²ÅÌ£¬Í¨³£ÐèÒª¼¸Ç§ÉõÖÁ¼¸Íò¸öʱÖÓÖÜÆڵķÃÎÊʱ¼ä¡£¡¡¡¡¡¡µ±CPU¡¡ÐèÒª´¦ÀíÏÂÒ»ÌõÖ¸Áîʱ£¬Ëûͨ³£°´ÕռĴæÆ÷¡¢Ò»¼¶»º´æ¡¢¶þ¼¶»º´æ¡¢ÄÚ´æ¡¢Ó²ÅÌÕâһ˳ÐòÈ¥²éÕÒ¡£µ«Èç¹ûÔÚÄÚ´æÖÐÈÔÈ»ÕÒ²»µ½ÐèÒªµÄÖ¸Áî»òÊý¾Ýʱ¡£ÏµÍ³»á½øÐÐContext¡¡Switch¡¡£¬ÖÕÖ¹´ËÏß³ÌÔÚCPU¡¡ÉϵÄÔËÐУ¬Ê¹Æä´¦Óڵȴý״̬£¬¶øÈÃÆäËûµÄÏß³ÌÔËÐУ¬µ±´ËÏß³ÌÐèÒªµÄÊý¾Ý±»µ÷ÈëÄÚ´æºó£¬´ËÏ̴߳¦ÓÚ¾ÍÐ÷״̬£¬¿ÉÒÔ±»µ÷¶Èµ½CPU¡¡ÉÏÔËÐС£Ï̼߳äµÄContext¡¡Switch¡¡ÐèÒª¼¸Ê®¸öʱÖÓÖÜÆÚ¡£¡¡¡¡¡¡Óɴ˿ɼûµ±CPU¡¡ÐèÒª´ÓÄÚ´æÖÐÈ¡Êý¾Ýʱ£¬´¦Àíµ¥ÔªÐèÒª¿Õת¼¸Ê®¸öʱÖÓÖÜÆÚ£¬ÓйØͳ¼ÆÏÔʾµ±Ç°CPU¡¡´¦Àíµ¥ÔªµÄƽ¾ùÀûÓÃÂʲ»×ã25£¥¡¡¡£ÎªÁËÌá¸ßCPU¡¡´¦Àíµ¥ÔªµÄÀûÓÃÂÊ£¬Éè¼ÆÕß²ÉÓÃÁËÏ̼߳¶µÄ²¢Ðм¼Êõ£¬¼´ÔÚCPU¡¡µÄºËÐÄÖÐÖ´ÐÐÒ»¸öÒÔÉϵÄÖ¸ÁîÐòÁС£¶ÔÓÚ²Ù×÷ϵͳÀ´Ëµ£¬Ò»¸öÎïÀíµÄ´¦ÀíÆ÷Ï൱ÓÚÁ½¸öÂß¼­µÄ´¦ÀíÆ÷£¬µ±Ç°ÓÐÈýÖÖ²»Í¬µÄ·½Ê½£¬ÊµÏÖ¶àÏ̼߳¼Êõ¡£¡¡¡¡¡¡´ÖÁ£¶ÈµÄ¶àỊ̈߳¬ÔÚÈÎһʱ¿ÌÖ»ÓÐÒ»¸öÏß³ÌÖ´ÐУ¬µ±Ïß³ÌÓöµ½Ò»¸ö³¤ÑÓ³Ùʼþʱ£¬Èç¶þ¼¶»º´æ²»ÃüÖУ¬Ôòϵͳµ÷¶ÈÁíÒ»¸öÏß³ÌÖ´ÐУ¬¶ø²»ÊÇÈÃϵͳ×ÊÔ´¿ÕתµÈ´ý´ËÏ̡߳£ÕâÒ»»úÖÆ¿ÉÒÔÌá¸ßÕû¸öϵͳµÄÀûÓÃÂÊ¡£ÕâÁ½¸öÏ̹߳²ÏíÐí¶àϵͳ×ÊÔ´£¬ÈçCPU¡¡µÄ¼Ä´æÆ÷ºÍ»º´æµÈ£¬Òò´ËÕâÁ½¸öÏ̵߳ÄÇл»±ÈContext¡¡Switch¡¡Òª¿ìµÃ¶à£¬Ö»ÐèÒª¼¸¸öʱÖÓÖÜÆÚ¡£IBM¡¡ÔÚʹÓÃPowerPC¡¡RS64¡¡IV¡¡´¦ÀíÆ÷µÄpSeries¡¡680¡¡ºÍpSeries¡¡660¡­6M1¡¡ÉÏʹÓùýÕâÖÖ´ÖÁ£¶ÈµÄ¶àÏ̼߳¼Êõ¡£¡¡¡¡¡¡ÁíÒ»ÖÖÓë´ÖÁ£¶ÈµÄ¶àÏ̼߳¼ÊõÏà¶ÔµÄÊÇϸÁ£¶È¶àÏ̼߳¼Êõ£¬²ÉÓÃÕâÖÖ¶àÏ̵߳Äϵͳѭ»·µÄÖ´ÐÐÁ½¸öÏ̵߳ÄÖ¸ÁÕâ¾ÍÐèÒªÔÚ´¦ÀíÆ÷µÄÉè¼ÆÉÏÔö¼ÓÐí¶àÈßÓàµÄ²¿¼þ¡£Èç¹ûÒ»¸öÏß³ÌÓöµ½¸ö³¤ÑÓ³Ùʼþʱ£¬¶ÔÓ¦ÕâÒ»Ïß³ÌÖ´ÐеÄʱÖÓÖÜÆÚÈÔȻûÓб»ÀûÓᣡ¡¡¡¡¡µÚÈýÖÖ¶àÏ̼߳¼ÊõÊÇͬ²½¶àÏ̼߳¼Êõ£¨SMT£©¡¡£¬ÓëÆäËûµÄ¶àÏ̼߳¼ÊõÒ»Ñù£¬Í¬²½¶àÏß³ÌÄܹ»´Ó¶à¸öÏß³ÌÖÐÈ¡³öÖ¸ÁîÀ´ÔËÐУ¬ËüÄܹ»Í¬Ê±Ö´Ðв»Í¬Ï̵߳ÄÖ¸Áͨ¹ýͬ²½¶àÏ̼߳¼Êõ£¬ÏµÍ³Äܹ»¶¯Ì¬µ÷Õûϵͳ»·¾³£¬ÈçÓпÉÄÜͬʱִÐв»Í¬Ï̵߳ÄÖ¸Áî¡£µ±Ò»¸öÏß³ÌÓöµ½³¤ÑÓ³Ùʼþʱ£¬ÔÊÐíÁíÒ»¸öÏß³ÌʹÓÃËùÓõĴ¦Àíµ¥Ôª¡£¡¡¡¡¡¡Power5¡¡´¦ÀíÆ÷µÄÉè¼Æ²ÉÓÃÁ½Â·µÄͬ²½¶àÏß³ÌÉè¼Æ£¬ËäÈ»¸ü¶à·µÄͬ²½¶àÏß³ÌÒ²ÊÇ¿ÉÄܵģ¬µ«Ä£ÄâÏÖʵ£¬ÆäËùÔö¼ÓµÄϵͳµÄ¸´ÔÓÐÔÊDz»¾­¼ÃµÄ¡£ÁíÍâÒ»¸öÐèҪעÒâµÄÎÊÌâÊÇ£¬Í¬²½¶àÏ̼߳¼Êõ¿ÉÄÜ»áÓÉÓÚ»º´æÕùÓöø½µµÍÕû¸öϵͳµÄÐÔÄÜ¡£
£§±à¼­±¾¶Î£§Intel³¬Ï̼߳¼ÊõÓжàÉÙÖÖ£¿
¡¡¡¡»ùÓÚNetBurst¼Ü¹¹µÄ³¬Ị̈߳ºOOOE¡¡£«¡¡SMT¡¡¡¡¡¡»ùÓÚItanium¼Ü¹¹µÄ³¬Ị̈߳ºIOE¡¡£«¡¡CMT¡¡¡¡¡¡»ùÓÚAtom¼Ü¹¹µÄ³¬Ị̈߳ºIOE¡¡£«¡¡SMT¡¡¡¡¡¡»ùÓÚNehalem¼Ü¹¹µÄ³¬Ị̈߳ºOOOE¡¡£«¡¡SMT¡¡¡¡¡¡SMT£¨Simultaneous¡¡Multi¡­Threading£¬Í¬²½¶àỊ̈߳©ÊµÄËÊÇÒ»¸öרÓÐÃû´Ê£¬ÊÇÒ»ÖÖÀ༼ÊõµÄÃû³Æ£¬²»½ö½öNehalemÓвÉÓã¬Pentium¡¡4Ò²ÓвÉÓ㬻¹ÓкܶàÆäËûÉÌÓô¦ÀíÆ÷Ò²ÓвÉÓá£ÕýÈ·µÄÇé¿öÓ¦¸ÃÊÇ£¬NehalemµÄHT¼¼ÊõºÍPentium¡¡4µÄHT¼¼ÊõÒ»Ñù£¬¶¼ÊÇÊôÓÚSMT¼¼Êõ¡£¡¡¡¡¡¡Êµ¼ÊÉÏ£¬³¬Ï̼߳¼ÊõÔÚIntelµÄºÜ¶à´¦ÀíÆ÷ÀïÃ涼ÓÐʹÓ㬳ýÁËPentium¡¡4£¨NetBurst¼Ü¹¹£©¡¢Core¡¡i7£¨Nehalem¼Ü¹¹£©Ö®Í⣬Itanium¡¡2£¨Mondecito£©ºÍAtom£¨Silverthorne£©´¦ÀíÆ÷ÀïÃ涼ÓУ¬È»¶øËüÃÇЯ´øµÄHT¼¼ÊõÈ´²»ÊôÓÚSMT£¡¡¡¡¡¡¡ÔÚÕûÀíIntelµÄ¶àÖÖHT³¬Ï̼߳¼Êõ֮ǰ£¬ÎÒÃÇÏÈÀ´»Ø¹ËÒ»ÏÂMultiThreading¶àÏ̼߳¼ÊõµÄ·ÖÀ࣬MultiThreading¶àÏ߳̾ÍÊÇÔÚÒ»¸öµ¥¸öµÄ´¦ÀíºËÐÄÄÚͬʱÔËÐжà¸ö¹¤×÷Ï̵߳ļ¼Êõ£¬ºÍCMP£¨Chip¡¡MultiProcessing£¬Ð¾Æ¬¶à´¦Àí£©²»Í¬£¬ºóÕßÊÇͨ¹ý¼¯³É¶à¸ö´¦ÀíÄں˵ķ½Ê½À´ÈÃϵͳµÄ´¦ÀíÄÜÁ¦ÌáÉý¡ª¡ªÒ²¾ÍÊÇÏÖÔÚ³£¼ûµÄ¶àºË¼¼Êõ¡£ÏÖÔÚÖ÷Á÷µÄ´¦ÀíÆ÷¶¼Ê¹ÓÃÁËCMP¼¼Êõ¡£¡¡¡¡¡¡È»¶øCMP¼¼Êõ´ó¹æÄ£Ôö¼ÓÁËÏàÓ¦µÄµç·£¬´Ó¶øÔö¼ÓÁ˳ɱ¾£¬MT£¨MultiThreading£©¼¼ÊõÈ´²»ÊǶàÏ̼ܹ߳¹ÒìͬÕâÑù£¬ËüÖ»ÐèÒªÔö¼Ó¹æÄ£ºÜÉٵIJ¿·ÖÏß·£¨Í¨³££¬Ô¼2£¥£©¾Í¿ÉÒÔÌáÉý´¦ÀíÆ÷µÄ×ÜÌå´¦ÀíÆ÷ÄÜÁ¦£¬´Ó¶ø¿ÉÒԺܼòµ¥µØÌáÉýÏà¹ØÓ¦ÓõÄÐÔÄÜ¡£¡¡¡¡¡¡MultiThreading£¨»ò×÷Multi¡­Threading£©À´Ô´ÓÚ¿ÉÒÔ×·Ëݵ½ÉϸöÊÀ¼Í90Äê´ú¿ªÊ¼µÄÒ»¸ö½Ð×öILP£¨Instruction¡¡Level¡¡Parallelism£¬Ö¸Á²¢Ðл¯£©µÄ˼Ï룬Õâ¸ö˼Ïë²úÉúÁËÒ»¸ö½Ð×öThroughput¡¡puting£¨ÍÌÍÂÁ¿¼ÆË㣩µÄÃû´Ê£¬ÓÃÀ´ÌáÉýÈçÔÚÏß½»Ò×ÕâÑùµÄ²¢ÐмÆËãµÄÐÔÄÜ¡£Throughput¡¡putingµÄÁ½ÖÖÖ÷Òª·½Ê½¾ÍÊÇMultiProcessingºÍMultiThreading¡£¡¡¡¡¡¡Ò»¿ªÊ¼£¬ÎªÁË¿ª·¢ILP£¬ÔÚ¹ýÈ¥µÄ¼¸Ê®ÄêÖÐÀûÓÃÁ˳¬±êÁ¿£¨Superscalar£¬Í¬Ê±¾ß±¸¶à¸öÖ´ÐÐÆ÷£©¡¢ÂÒÐòÖ´ÐУ¨Out¡­Of¡­Order¡¡Execute£¬ÔÊÐíÎÞÊý¾Ý¹ØÁªÐÔµÄÖ¸ÁîͬʱÔËÐУ©¡¢¶¯Ì¬·ÖÖ§Ô¤²â¡¢VLIW£¨Very¡¡Long¡¡Instruction¡¡Word£¬³¬³¤Ö¸Á¡¡£©¡¡µÈ¼¼Êõ£¨Ç°ÈýÖÖ¿ÉÔÚ¾­µäµÄPentium¡¡Pro¼Ü¹¹ÉÏ¿´µ½£¬×îºóÒ»¸ö¾ÍÊÇItaniumµÄÌØÉ«¼¼Êõ£©¡£È»¶ø£¬³¬±êÁ¿Ê¹Éè¼ÆµÄ¸´ÔÓÐÔ¼±¾çÔö¼Ó£¬Í¬Ê±£¬Ö¸ÁîÖ®¼äµÄÊý¾ÝºÍ¿ØÖÆÏà¹Ø£¬¿ÉÒÔ¿ª·¢µÄILP¡¡Ò²ÓÐÏÞ£¬ÒÔ¼°Ò»Ð©ÆäËüÒòËØ£¬Ê¹µÃ¾­µäµÄ³¬±êÁ¿½á¹¹´¦ÀíÆ÷ÄÑÒÔ½øÒ»²½Ìá¸ß´¦ÀíÆ÷ÐÔÄÜ¡£¡¡¡¡¡¡¶øÇÒ´ÓÓ¦ÓõĽǶȿ´£¬ÈçÔÚÏßÊÂÎñ´¦ÀíOLTP¡¢¾ö²ßÖ§³ÖϵͳDSS¡¢Web·þÎñµÈÕâÑùµÄÓ¦ÓõÄÌصãÊǾßÓзḻµÄÏ̼߳¶²¢ÐÐÐÔ£¨Thread¡¡Level¡¡Parallelism£©¶øȱ·¦ILP£¬Òò´ËÒ²¾Í´ÙʹÁËMultiProcessingºÍMultiThreadingµÄ³öÏÖ¡£¡¡¡¡¡¡MultiThreading¶àÏ̼߳¼ÊõµÄ˼ÏëÓÐЩÀàËÆÓÚÔçÆڵķÖʱ¹²Ïí¼ÆËãϵͳ£¬Ö´Ðжà¸öÏ̵߳Ĵ¦ÀíÆ÷ÔÚÓöµ½Ä³¸öÏß³ÌÓÉÓÚCache¡¡Miss»òÕß·ÖÖ§Ô¤²âʧ°Ü¶øÍ£¶ÙµÄʱºò£¬¿ÉÒÔÇл»µ½ÁíÒ»¸öÏß³ÌÀ´Ö´ÐС£Ä¿Ç°Ö÷Á÷µÄMultiThreading¾ßÓÐ×ÅÈýÖÖÐÎʽ£¬²î±ðÔÚÓÚÏ̼߳乲ÏíµÄ×ÊÔ´ÒÔ¼°Ïß³ÌÇл»µÄ»úÖÆ£º¡¡¡¡¡¡ÆäÖÐCMTºÍFMT¶¼ÊÇÔÚµ¥¸öÖ´Ðе¥ÔªÏµļ¼Êõ£¬²»Í¬µÄÏß³ÌÔÚÖ¸Á±ðÉϲ¢²»ÊÇÕæÕýµÄ¡°²¢ÐС±£¬¶øSMTÔò¾ßÓжà¸öÖ´Ðе¥Ôª£¬Í¬Ò»Ê
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡