-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
3/26 ·s®Ñ¨ì¡I 3/19 ·s®Ñ¨ì¡I 3/14 ·s®Ñ¨ì¡I 12/12 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

²`¤J²z¸Ñ¦}¦æ½sµ{

( ²Åé ¦r)
§@ªÌ¡GÁÂÄ_¤Í,¾|¶§Ãþ§O¡G1. -> µ{¦¡³]­p -> ºî¦X
ĶªÌ¡G
¥Xª©ªÀ¡G¹q¤l¤u·~¥Xª©ªÀ²`¤J²z¸Ñ¦}¦æ½sµ{ 3dWoo®Ñ¸¹¡G 47141
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¯Ê®Ñ¡j
NT°â»ù¡G 645 ¤¸

¥Xª©¤é¡G7/1/2017
­¶¼Æ¡G524
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787121315084
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

§@ªÌ§Ç

§Ú§Æ±æ¯à°÷»¡¥»®Ñªº½Ï¥Í·½¤_²¢»e©M¥ú©ú¡A¦ý³oµLºÃ¬O­ÓÁÀ¨¥¡C©M³\¦h»Ý­nªø¦~°í«ù§V¤Oªº¨Æ±¡¤@¼Ë¡A¥»®Ñ¸g¹L¤F¤j¶q®À§é¤~±o¥H½Ï¥Í¡C
§A¬Ý¡A¤j¬ù10¦~«e¡A¦b¦}µo»â°ìªº¤@­Ó¦æ·~±M®a¤p²Õ¬ã°Q·|¤W¡A§Ú«Üºa©¯±o¥H´£°Ý³Ì¦Z¤@­Ó°ÝÃD¡C¤@¨Ç°Ñ·|ªº±M®aªø½g¤j½×¦a°Q½×¤F¦}¦æ½sµ{ªº°ªÃø«×¡A©Ò¥H§Ú°Ý¬°¤°¤\¦}¦æ½sµ{¤£·|¦b10©Î20¦~¤º¦¨¬°¥qªÅ¨£ºDªº¨Æ±¡¡C¤j¦h¼Æ¤p²Õ¦¨­û¤@ÂI³£¤£³ßÅw³o­Ó°ÝÃD¡C¨Æ¹ê¤W¡A²Ä¤@­Ó¤p²Õ¦¨­û¸Õ¹Ï¥Î¤@­Ó²µuªº¦^µª¼Å­l¤F¨Æ¡A¦ý§Ú«Ü®e©ö¦a°µ¤F²µuªº¤Ï»é¡CµL©`¡A¥L¹Á¸Õµ¹¥X¤F²Ä¤G­Ó²µu¦^µª¡A§Ú¤]Ä~Äò¤Ï»é¡C´X½ü¤§¦Z¡A¥L¤jÁn³Û¥s¡G¡§¹³§A³o¼Ëªº¤HÀ³¸Ó¥ÎÁè¤lºVºVÀY¡I¡¨§Ú¤£¥Ì¥Ü®z¦a¦^µª¹D¡G¡§¨º§A¥i­n±Æ¶¤¤~¯àºV±o¨ì¡C¡¨
§Ú¤£»{¬°³oºØ¥æ¬y¬O¯S§O¦³±Òµo©Êªº¡A¬Û¤Ï³o®i¥Ü¤F¤@­Ó²@µLºÃ°Ýªº¨Æ¹ê¡G³o¦ì¡§·~¤º¡¨±M®a¹ï¤_¦}¦æ½sµ{¤@µL©Òª¾¡C¤£¹L¦b³õªº¨ä¥LÅ¥²³«o»{¬°³o³õ¹ï¸Ü«D±`¦³±Òµo©Ê¡A¤×¨ä¬O¨º¤@¦ì·PÁ§ڴ£¥X³o­Ó°ÝÃDªºÅ¥²³¡A¥Lªº²´¨½¬Æ¦Ü§tµÛ²\¤ô¡C¥L¹³¾Ç®{¤@¼Ë¦bSequent ­pºâ¾÷¨t²Î¤½¥q¾Ç¨ì¤F¦}¦æ½sµ{ªº³Z¬¡A¥¿¦p§Ú´¿¸g©Ò°µªº¨º¼Ë¡C¦Z¨Ó¥L¸õ¼Ñ¥h¤F¥t¤@®a¤½¥q¡A¥Lªº·s¶±¥D¶}©l¯A¨¬¦}¦æ½sµ{¡C¥X¥G¥L·N®Æ¤§¥~¡A¨Æ±¡µo®i±o¦}«D¤@¦|­·¶¶¡C¥¿¦p¥L©Ò»¡¡A¡§§Ú¤w¸g¨¬¨¬¸ò¥L­Ì»¡¤F¨â¦~¡A¥u­n§A¥Î¥¿½Tªº¿ìªk¡A³o¦}¤£¬O«ÜÃø¡A¦ý¥L­Ì§¹¥þ¤£Å¥§Úªº¸Ü¡I¡¨
²{¦b¡A§Ú­Ì«Ü®e©ö±N³o­Ó´d¶Ë¬G¨Æ¨½­±ªº¹Î¶¤§@¬°¤Ï­±±Ð§÷¡C¦ý¬O¦b¥L­Ìªº¬Ýªk¤¤¡A¦}¦æ½sµ{µ¥¤_¥Î§A¦Û¤vªº´¼¤O¶Ë®`¦Û¤v¡C°£«D§A¤F¸Ñ¹ê²{¦}¦æ©Êªº¥¿½T¤èªk¡A§_«h¦b·NÃѨì¹J¨ì³Â·Ð¤§«e¡A§A¶VÁo©ú¡A«õªº§|´N¶V²`¡C¦]¦¹¡A§A¶VÁo©ú¡A¦}¦æ½sµ{¬Ý°_¨Ó´N¶VÃø¡C¤£¶È¦p¦¹¡A¦b³o¥ó¨Æµo¥Í®É¡A·¥¤Ö¦³¤Hª¾¹D¦p¦ó¶i¦æ¦}¦æ½sµ{¡A³o·N¨ýµÛ¤j¦h¼Æ¤H­è­è¶}©l¤F¸Ñ¨ì¥L­Ì¬°¦Û¤v«õªº¦}¦æ½sµ{§|ªº²`«×¡C
§Y¨Ï¦p¦¹¡A·í³o­Ó¤H¥Î®C«|ªºÁn­µÁ¿­z¥Lªº¬G¨Æ¡A²´²\·Æ¹L¥LªºÁyÃe®É¡A§Ú·NÃѨì§Ú¤£±o¤£°µ¤@¨Ç¨Æ¡C¨º´N¬O¼g²´«e³o¥»®Ñ¡A³o¨½­±¤£¶È¶È¿@ÁY§Ú¦Û¤v¥|¤À¤§¤@­Ó¥@¬öªº¸g¾ú¡AÁÙ¦³¨ä¥L¤H¥[°_¨Ó¼Æ¤£²M´X­Ó¥@¬öªº¸g¾ú¡C
§Úªº¥À»y¬O­^»y¡A­^»y¬O§Ú°ß¤@¥i¥HÁnºÙ´x´¤¤Fªº»y¨¥¡C¦ý©¯¹Bªº¬O¡A·PÁ¾|¶§©MÁÂÄ_¤Í©Ò¥I¥Xªº¥¨¤j§V¤O¡A²{¦b¤¤¤åª©Â½Ä¶§Y±N­±¥@¡C§Ú§Æ±æ³o¥»®Ñ¤£¶È¥i¥HÀ°§U§A¾Ç²ß§Ú©Òª¾¹Dªºª¾ÃÑ¡A±q¦Ó¤£¦A»Ý­n¾á¤ß¦}¦æ½sµ{¡AÁÙ¯à¨Ï§A¯à°÷³Ð«ØÄݤ_¦Û¤vªº¦}¦æ½sµ{·sµo²{¡I

Paul E. McKenney
±ÀÂ˧Ç

ŪµÛ¡m²`¤J²z¸Ñ¦}¦æ½sµ{¡nªº¼Ë³¹¡A§Úªº¸£®ü¨½¤£Â_¦a¯B²{¥X9¦~«eªº¤@¹õ¹õ¡C§Ú¦bºô¤W´M§ä¾Þ§@¨t²Îªº§Ó¦P¹D¦XªÌ¡A¬Ý¨ì¤@­Óµ|¦¬±M·~¤¤±M²¦·~ªÌªº¦ÛÂË«H¡A¨ä®É¥L¤w¨ã¦³10¦~ªºIT¦æ·~¤u§@¸gÅç¡A±q¨Æ¹L¤j¶q¤â¾÷¡B³q«H¦æ·~³n¥ó¬ãµo¤u§@¡A¾á¥ô¹L¶µ¥ØÁ`ºÊ¬ãµoºÞ²z¤u§@¡A¦b¹q«HÀ³¥Î¶}µo¤è­±¤w¸g°µ±o¤ñ¸û¦¨¥\¡C¦ý¥L¹ï¾Þ§@¨t²Î¦³¿@«pªº¿³½ì¡B°õµÛªº°l¨D¡A©ñ±ó¤F¦b°ª¼hÀ³¥Î³n¥ó¤è­±ªº¬J¦³Àu¶Õ¡A±Mª`¤_¾Þ§@¨t²Îªº¬ã¨s¡CÂ÷¾¦b®a¡A§Q¥Î¥b¦~®É¶¡¶}µo¥X¤@­Ó´O¤J¦¡¾Þ§@¨t²Î¼Ò«¬¡A­p¹º¨â¦~¤º¬ãµo¤@´Ú¦Û¬ã¾Þ§@¨t²Î¡C¦³·P¤_¥Lªº°õµÛ©M¼ö·R¡A§Ú¦V¤½¥qª§¨ú¯}®æ¿ý¨ú¥L¡C§Ú»{¬°°µ¤@­Ó¾Þ§@¨t²Î¤£Ãø¡A¦ý°µ¥ÍºAÃø¡A°µ°Ó·~¦¨¥\Ãø¡A«Øij¥L²`¤J¾Ç²ß¶}·½Linuxªº§Þ³N¡A¯¸¨ì¥¨¤HªÓ»H¤W¡A¦Aµ²¦X¾Þ§@¨t²Î¹Î¶¤ªº°Ó·~¼Ò¦¡±´¯Á¡Aª§¨ú§â¾Þ§@¨t²Î°µ¦¨¥\¡C¤_¬O¡A¥L¦pè¦p¾K¦a¬ã¨sLinux¤º®Ö¡A¦b¤@¦~®É¶¡¨½¡A¨C¤Ñ±ß¤W°í«ùªá¤T­Ó¤p®É¥H¤Wªº®É¶¡à¹¬ã¡m²`¤J²z¸ÑLinux¤º®Ö¡n³o¥»®Ñ¡AÁÙ±N¦Û¤vªºÅª®Ñ¤ß±oµ§°O¦@¨É¨ì¹Î¶¤½×¾Â¤W¡A¦}¹ï¶}·½¤º®Ö¶i¦æª`¸Ñ¡A¤À¨É¨ì¶}·½½×¾Â¤W¡C
2008¦~¥¿¬O¦h®Ö¬[ºc§Ö³tµo®i¤§®É¡A¾Þ§@¨t²Îªº¤ä«ù°Ñ®t¤£»ô¡AÅX°Ê¡BÀ³¥Î¶}µo¼Ò¦¡¤£¦¨¼ô¡A¬J¦³³æºA³æ®Ö³æ¶iµ{ªº·~°ÈÀ³¥Î¦p¦ó¶i¦æ­«ºc©Mºt¶i¡A¤è®×³]­p¡B¶}µoÁp½Õ¡B¬G»Ù±Æ¬d¡B¨t²Î½ÕÀu¤S·|¹J¨ì«Ü¦h´_Âø©M´Æ¤âªº°ÝÃD¡A¤¤¿³³q°T¾Þ§@¨t²Î¹Î¶¤»Ý­n¤ä¼µ¤½¥q©Ò¦³²£«~¡B¦UºØCPU¬[ºc¡B¦UºØ´_Âø·~°È³õ´º¡A¹Î¶¤­±Á{µÛ«e©Ò¥¼¦³ªº§Þ³N©M¶i«×À£¤O¡C¹Î¶¤¦¨­û°£¤F¦b¬ãµo¤@½u³q¹L¤£Â_¹ê½î¶i¦æ³Q°Ê¿n²Ö©M´£¤É¥~¡A¤]¥[±j¤F¥D°Êªº²z½×ª¾ÃÑ´£¤É¡A¾\Ū¡m²`¤J²z¸Ñ¦}¦æ½sµ{¡n´N¬O¨ä¤¤¤§¤@¡C¥O§Ú¦L¶H«D±`²`¨èªº¬O¡A¦h®Ö¬G»Ù©¹©¹¤ñ¸ûÀH¾÷©M´_Âø¡AÃø¥H´_²{©M²z¸Ñ¡A¦ý¥HÁÂÄ_¤Í¬°¥Nªíªº¹Î¶¤¦¨­û©¹©¹¥i¥H³q¹L¾\Ū·~°È¡BÅX°Ê¡B¤º®Ö¥N½X´N©w¦ì¨ì¬G»Ù®Ú·½¡A¾ã²z¥X¬G»ÙÅÞ¿è¡A§Ú»{¬°³o»P¥L­Ìªº¨t²Î²z½×¤ô¥­´£¤É¬O¤À¤£¶}ªº¡C«D±`ªY¼¢ªº¬O¡A§Ú­Ì¦¨¥\¦a¸Ñ¨M¤F³o­Ó¹L´ç®É´Á¯F²{ªº½Ñ¦p¦h®Ö¤º¦s§Ç¬ÛÃö¬G»Ù¡A§Q¥ÎµLÂê¦}¦æ½sµ{Àu¤Æ¤F¨t²Î©Ê¯à¡C®É¦Ü¤µ¤é¡A§Ú­Ì¹Î¶¤¤w¸g±q30¤Hµo®i¨ì¼Æ¦Ê¤H¡A´O¤J¦¡¾Þ§@¨t²Î¤w¥þ­±À³¥Î¤_¤½¥q©Ò¦³²£«~¡A¦b¥þ²yí©w°Ó¥Î¡A¦}¥BÂX®iÀ³¥Î¨ì¹q¤O¡BÅK¸ô¡B¨T¨®µ¥»â°ì¡A2016¦~Àò±o¤F²Ä¥|©¡¤¤°ê¤u·~¤j¼ú¡C
¥t¤@¤è­±¡A¯¸¦b§Þ³Nªº¨¤«×¨Ó¬Ý¡A¦b­pºâ¾÷»â°ì¡A¦}¦æ½sµ{ªº§xÃø¬O²³©Ò©Pª¾ªº¡C
¦³4¡B5¦~½sµ{¸gÅ窺ŪªÌ¡A¥i¯à©Î¦h©Î¤Ö¹J¨ì¹L¦}¦æ½sµ{ªº°ÝÃD¡A³ÌµÛ¦Wªº°ÝÃD¥i¯à´N¬O¦ºÂê¡CŪªÌ»Ý­n´x´¤½Õ¸Õ¦ºÂê°ÝÃDªº§Þ¥©¡A¥H¤ÎÁקK¦ºÂê°ÝÃDªº½sµ{§Þ³N¡C
³ßÅw²`¤J«ä¦ÒªºÅªªÌ¡A¦b²z¸Ñ¦}¸Ñ¨M¦ºÂê°ÝÃD¤§¦Z¡A¥i¯àÁÙ·|¾\Ū¦}¦æ½sµ{¤è­±ªº®ÑÄy¡A¶i¤@¨B±µÄ²¨ì¬¡Âê¡BÄȾjµ¥§ó¦³½ìªº¦}¦æ½sµ{°ÝÃD¡C¤¤¿³³q°T¾Þ§@¨t²Î¹Î¶¤ªº¦P¨Æ¡A´N´¿¸g¦b¶}·½µêÀÀ¤Æ³n¥ó¤¤¹J¨ì¹LÃþ¦üªº°ÝÃD¡GµêÀÀ¾÷®e¾¹¦b¤¬¥¸Âꪺ«OÅ@¤U¡A½ü¸ß¨t²Îª¬ºA¦}µ¥«Ýª¬ºAÅܤơC³o¼Ëªº½ü¸ß¾Þ§@³y¦¨¤F¶iµ{½Õ«×¤£¤Î®É¡A¨t²Îª¬ºA¿ð¿ð¤£¯àÅܤơC³o¬O¤@­Ó¨å«¬ªº¬¡Âê°ÝÃD¡C¦b¦h®Ö¨t²Î¶V¨Ó¶V´¶¤Îªº¤µ¤Ñ¡AÃþ¦üªº¬¡Âê°ÝÃD§ó®e©ö¥X²{¡C¸Ñ¨M³oÃþ°ÝÃD¡A»Ý­n¸gÅçÂ×´Iªº¤uµ{®v¡A­É§U¦hºØ½Õ¸Õ¤u¨ã¡Aªá¶O¤£¤Öªº®É¶¡¡C
¦ý¬O¡A¦}¦æ½sµ{¶È¶È»PÂê¬ÛÃö¶Ü¡H
¦b¼¯º¸©w«ß©|¥¼¥¢®Ä®É¡A¦}¦æ½sµ{½T¹ê¥D­n»PÂêºò±K¬ÛÃö¡C¦ý¬O¡A§Ú­Ì¬Ý¬ÝÀNª÷¦VIT¤uµ{®v©Ò´£¥Xªº¨â­ÓÃøÃD¡G
1¡D¦³­­ªº¥ú³t¡F
2¡Dª«½èªº­ì¤l¯S©Ê¡C
³o¨â­ÓÃøÃD³Ì²×·|±NCPUÀW²vªº²z½×¤W­­­­¨î¦b10GHz¥H¤º¡A¤£¥iÁקK¦a¨Ï¼¯º¸©w«ß¥¢®Ä¡C­nÄ~Äò´£¤Éµw¥ó©Ê¯à¡A»Ý­n­É§U¤_¦h®ÖÂX®i¡C
­n¥R¤Àµo´§¦h®Ö¨t²Îªº©Ê¯à¡A¥²¶·´£¤É¦}¦æ³n¥óªºÂX®i©Ê¡C¤]´N¬O»¡¡A¦}¦æ³n¥ó»Ý­nºÉ¶q´î¤ÖÂê¨R¬ð¡AÁקK¥Ñ¤_ÂêÄvª§¦Ó¤Þ°_©Ê¯à«æ¼@¤U­°¡C³o¤£¬O¤@¥ó²³æªº¨Æ±¡¡I§Ú­Ìª¾¹D¡ALinux¾Þ§@¨t²Î¦b±µªñ20¦~ªº®É­Ô¤º¡A¤@ª½¨ü¨ì¤j¤º®ÖÂꪺ§xÂZ¡C¬°¤F¹ý©³©ß±ó¤j¤º®ÖÂê¡A¶}·½ªÀ°Ïªñ´X¦~¤º°µ¥X¤FÁ}¨¯ªº§V¤O¡A¤~¹ê²{¤F³o­Ó¥Ø¼Ð¡C§Y¨Ï¦p¦¹¡ALinux¤º®Ö¤´µM¤j¶q¨Ï¥Î¤£¦PºØÃþªºÂê¡A¦}¥B¤£¥i¯à§¹¥þ©ñ±óÂꪺ¨Ï¥Î¡C
¤]³\§A·|»¡¡A¦b¦h®Ö¨t²Î¤¤¡A¦³¤@ºØ²³æªºÁקKÂꪺ¤èªk¡A´N¬O­ì¤lÅܶq¡C¦b¬Y¨Ç¬[ºc¤¤¡A­ì¤lÅܶq¬O¥Ñ³æ±ø«ü¥O¹ê²{ªº¡A©Ê¯à¡§·Q¥²¡¨¤£®t¡A¨Ï¥Î¤èªk¤]²³æ¡C´¿¸g¦³¤@¦ì¨ã¦³¤Q¦h¦~½sµ{¸gÅ窺¤uµ{®v¤]ªí¹F¹LÃþ¦üªºÆ[ÂI¡C¦b¦¹¡A¦³¨â­Ó°ÝÃD»Ý­n¦^µª¡C
1¡D³o¼Ëªº­ì¤l¾Þ§@«ü¥O¡A¨ä©Ê¯à¯uªº¤£®t¡H¥¦ªº°õ¦æ©P´Á¬O§_¥i¯à¹F¨ì¤W¤d­Ó®ÉÄÁ©P´Á¡H
2¡D¹ï¤_¦h­Ó¬Û¤¬¤§¶¡¦³ÅÞ¿èÃöÁpªºÅܶq¡A­ì¤l¾Þ§@¬O§_º¡¨¬­n¨D¡H
¹ê»Ú¤W¡A¦h®Ö¨t²Î¤¤ªº¦}¦æ³n¥ó¡A°£¤F±`¨£ªºÂꤧ¥~¡AÁٻݭn¨Ï¥Î«_ÀI«ü°w¡BRCU¡B¤º¦s«Ì»Ù³o¼Ëªº­«¶q¯Å¦}¦æ½sµ{¤u¨ã¡C³o¨Ç½sµ{¤u¨ã³£Äݤ_¡§µLÂê½sµ{¡¨ªº­SÃ¥¡C
§Y¨Ï¦bLinux¤º®Ö¶}·½ªÀ°Ï¤u§@10¦~¥H¤Wªº¸ê²`¤uµ{®v¡A¤]¤£¤@©w¯à¯u¥¿ÆF¬¡¦Û¦p¦a¨Ï¥ÎRCU¡B¤º¦s«Ì»Ù¨Ó¶i¦æ¦}¦æ½sµ{¡C¦]¦¹¡A¯u¥¿¤F¸Ñ¦}¦æ½sµ{ªºÅªªÌ¡AÃø§K¦b­±¹ï¦}¦æ½sµ{ÃøÃD®É¡A¦³¤@ºØ¡§¼¾Ã̪ø¹Ä®§¡¨ªº·Pı¡C
µM¦Ó¡A§Ú­Ìª¾¹D¡A¦³«Ü¦h­«­nªºÀ³¥Î¨Ì¿à¤_¦}¦æ¡X¡X¹Ï§Î´è¬V¡B±K½X¯}¸Ñ¡B¹Ï¹³±½´y¡Bª«²z»P¥Íª«¹Lµ{¼ÒÀÀµ¥¡C¦³¤@­Ó·¥ºÝªº¨Ò¤l¡A¦bÃÒ¨é¥æ©ö©Ò¡A¬°¤FÁקKªø¶ZÂ÷¶Ç¿é¤Þ°_ªº³q«H©µ¿ð¡]²z½×¤W¡A¥ú§ô¶¦a²y¤@©P»Ý­n¤j·§130ms¡^¡A»Ý­n±N¤ÀªRÃÒ¨é¥æ©öªº­pºâ¾÷©ñ¨ì§ó±µªñÃÒ¨é¥æ©öªº¦a¤è¡A¦}¥BÀ£º^¥X­pºâ¾÷ªº©Ò¦³©Ê¯à¡C³o¼Ë¡A¤~¯à«OÃÒ¹F¦¨¦³§QªºÃÒ¨é¥æ©ö¡C¥i¥H²@¤£¦j±i¦a»¡¡A¹ï³n¥ó©Ê¯à¦³­V¨è»Ý¨Dªº³n¥ó¤uµ{®v©M¤j«¬³n¥ó¶}µo¥ø·~¡A³£»Ý­n¯u¥¿´x´¤¦}¦æ½sµ{ªºÃÀ³N¡A¯S§O¬O¡§µLÂê½sµ{¡¨ªºÃÀ³N¡C¤@¥¹¯u¥¿´x´¤¤F¡A¥¦´N·|¬°§A±a¨Ó·N·Q¤£¨ìªº©Ê¯à´£¤É¡C´¿¸g¦³¤@¦ìµÛ¦W¥ø·~ªº°ª¯Å±M®a¡A¦bÀ³¥Î¤F¥»®Ñ©Ò­zªºRCU¦Z¡A³n¥ó©Ê¯à´£¤É¤F¤j¬ù10­¿¡C
¥»®Ñ¥¿¬O³o¼Ë¤@¥»²`¤JÁ¿¸Ñ¦h®Ö¦}¦æ½sµ{¡A¯S§O¬OµLÂê½sµ{ªº¦n®Ñ¡C
­º¥ý¡A¥»®Ñ§@ªÌPaul¨ã¦³40¦~³n¥ó½sµ{¾·~¥Í²P¡A¥L¤j³¡¤Àªº¤u§@³£»P¦}¦æ½sµ{¬ÛÃö¡C§Y¨Ï¦b»â¾ÉIBM Linux¤¤¤ß®É¡A¥L¤´µM°í«ù¨C¤Ñ½sµ{¡A¬O¤@¦W¯u¥¿ªº¡§¤u¦K¡¨¡C¦P®É¡A§@ªÌ¤]¬OLinux¶}·½ªÀ°ÏRCU¼Ò¶ôªº»â¾ÉªÌ©MºûÅ@ªÌ¡C»{¯u¾\Ū¥»®Ñ¦Z¡A¤£±o¤£´Ü¨Ø¤_§@ªÌ¦b¦}¦æ½sµ{¤è­±ªº¯uª¾¨`¨£©M¹ê½î¯à¤O¡C¨Ò¦p§@ªÌ¿Ë¦Û½s¼g¤F¤@­Ó³n¥ó¥Î¨Ò¡A¨Ó¦Ò¹îCPU®Ö¤§¶¡­ì¤l¾Þ§@©MÂꪺ©Ê¯à¡A±o¥X¤@­Óµ²½×¡A­ì¤l¾Þ§@©MÂê¥i¯à®ø¯Ó¶W¹L1000­ÓCPU®ÉÄÁ©P´Á¡F§@ªÌ¤]½s¼g¹L¥t¥~¤@­ÓÃö¤_¥þ§½Åܶqªº¥Î¨Ò¡A¨ä¤¤¤@­ÓCPU®Ö»¼¼W¾Þ§@¤@­Ó¥þ§½Åܶq¡A¦P®É¦b¤£¦PªºCPU®Ö¤WÆ[¹î©ÒŪ¨ìªº¥þ§½Åܶq­È¡C³o­Ó¥Î¨Ò¦VŪªÌ®i¥Ü¤F¦h®Ö¨t²Î¥O¤HÅå©_ªº¡B¤Ïª½Ä±ªº®ÄªG¡F§@ªÌ¹ï¤º¦s«Ì»ÙªºÁ¿¸Ñ¡A¯S§O¬O¤º¦s«Ì»Ù¶Ç»¼©ÊªºÁ¿¸Ñ¡A¤Q¤À²`¤J¡C³o¨Ç²`¤Jªº¤º®e¡AÃø±o¤@¨£¡A«D¤j®v¤£¯à¬°¡C
¨ä¦¸¡A³o¥»®Ñ¤]±o¨ìLinux¤º®ÖªÀ°Ï©MÀ³¥Î³n¥ó±M®aªº¤@­P±ÀÂË¡C³o¨Ç±ÀÂ˪̬J¥]¬ALinuxªÀ°Ï¤j¦W¹©¹©ªºIngo Molnar¡BRusty Russel¡BGreg Kroah-Hartman¡BMaged M.Micheal¡A¤]¥]¬A°ê¤º¬¡ÅD¤_ªÀ°ÏªºÃe°V½U¡BShawn Guoµ¥¶}·½°^ÄmªÌ¡AÁÙ¥]¬ALinaro¶}·½²Õ´ªº»â¾É©M¸ê²`¤uµ{®v¡A¥H¤Î¦bBAT¤u§@¦h¦~ªº°ª¯ÅÀ³¥Î³n¥ó±M®a¡C
²Ä¤T¡A³o¥»®Ñªº¤º®e¤ñ¸û¥þ­±¡C°£¤F¤¶²Ð±`¨£ªºÂê¥H¥~¡AÁÙ­«ÂI¤¶²Ð¤FRCUªº¨Ï¥Î¤Î¨ä­ì²z¡A¥H¤Î¹ê²{RCUªº°ò¦¡G¤º¦s«Ì»Ù¡C¥»®Ñ³Ì¦ZÁÙ¤¶²Ð¤F¦}¦æ³n¥óªºÅçÃÒ¡A¥H¤Î¦}¦æ¹ê®É­pºâµ¥¤º®e¡C¹ê»Ú¤W¡A¨ä¤¤¨C¤@³¡¤À³£¬O¦}¦æ½sµ{ªºÄ_ÂáC¥Ñ¤_½g´T©MÃø«×ªº­ì¦]¡A§@ªÌ¦b·í«eª©¥»¤¤¡A±NRCU³¡¤À§@¤F¤j´TÀ£ÁY¡C¹ïRCU·P¿³½ìªºÅªªÌ¥i¥H¾\Ū¦­´Á­ìª©µÛ§@¡C§Y¨Ï¦p¦¹¡A¥»®Ñ¹ïRCUªºÁ¿¸Ñ¤]«D±`²`¤J¡C¹ï¤_¦}¦æ³n¥óªºÅçÃÒ¡A§@ªÌ´£¥X¤F¤£¤Ö¿W¯SªºÆ[ÂI¡A³o¨ÇÆ[ÂI©M§@ªÌ¦h¦~ªº½sµ{¸gÅ箧®§¬ÛÃö¡A»P±`¨£ªº²z½×µÛ§@¬Û¤ñ¡A¦³¤@©wªº·s·N¡C§Î¦¡ÅçÃÒ³¡¤À¡A§@ªÌ¥H¹ê»Úªº¨Ò¤l¡A¤@¨B¤@¨BÁ¿­zÅçÃÒ¹Lµ{¡A«Ü©úÅã¡A§@ªÌ¿Ë¦Û°Ê¤â°µ¹L³oºØÅçÃÒ¡C¦}¦æ¹ê®É­pºâ³¡¤À¡A¬O§@ªÌ·s¼Wªº¤º®e¡A§O¨ã¤@®æ¡A­È±oŪªÌ²ÓŪ¡C¤º¦s«Ì»Ù³¡¤À¡A¬O¥»®Ñ¤@­ÓÃøÂI¡A­É§U¤_§@ªÌ¦b³o¤è­±ªº¥\¤O¡A»Ý­nŪªÌ¤Ï´_¾\Ū¡A¤~¯à¯u¥¿²z¸Ñ¡C
²Ä¥|¡A³o¥»®ÑÁ¿¸Ñ±o«Ü²`¤J¡C¦³¨Ç»y¥y¡A»Ý­nŪªÌ¤Ï´_µZ¿i¡B±ÀºV¡A¬Æ¦Ü»Ý­n¦h¦¸³qŪ¥»®Ñ¤~¯à»â·|§@ªÌªº·N«ä¡C¤]³\¡A¸g¨å®ÑÄyªº¾\Ū¤èªk§¡¬O¦p¦¹¡C­è­è¶}©l±µÄ²Linux¤º®ÖªºÅªªÌ¡A¤£¤Ó·|³ßÅw¾\Ū¡m²`¤J²z¸ÑLinux¤º®Ö¡n¤@®Ñ¡Aı±o³o¥»®Ñ¤£©ö²z¸Ñ¡C¦ý¬O¡A¦pªG§Aº@·Nªá¤@¦~®É¶¡¡A±N³o¥»®Ñ¤Ï´_¾\Ū¤T¹M¡A«h·|¦³¤@ºØ§O¼Ëªº¤ß±¡¡C¥»®Ñ¤]¬O¦p¦¹¡A«ØijŪªÌ¦bªì¦¸¾\Ū®É¡A¤£­n»´©ö©ñ±ó¡C¥»®Ñ¹ê¬°¦}¦æ½sµ{¤è­±¤£¥i¦h±oªº¦n®Ñ¡CÁ|¨â­Ó¨Ò¤l¡G²Ä¤@¡A5.2.2¸`¤¤¦³¤@¥y­ì¤å¬O¡§One way to provide per-thread variables is to allocate an array with one element perthread (presumably cache aligned and padded to avoid false sharing).¡¨¡CĶªÌ±N¨ä½Ķ¬°¡§¤@ºØ¹ê²{¨C½uµ{Åܶqªº¤èªk¬O¤À°t¤@­Ó¼Æ²Õ¡A¼Æ²Õ¨C­Ó¤¸¯À¹ïÀ³¤@­Ó½uµ{¡]°²³]¤w¸g¹ï»ô¦}¥B¶ñ¥R¹L¤F¡A³o¼Ë¥i¥H¨¾¤î¦@¨É¥X²{¡§°²¦@¨É¡¨¡^¡¨¡C²Ä¤@¦¸¾\Ū¥»®Ñ¡A¥i¯à·|¤£²z¸Ñ¬A¸¹¤¤¨º¥y¸Ü¡A¦³¤@ºØ¤ª¨½Ãú¨½ªº·Pı¡C­n¯u¥¿²z¸Ñ³o¥y¸Ü¡A»Ý­nŪªÌ¥J²Ó¾\Ū¥»®Ñ¦Z­±Ãö¤_MESI®ø®§¨óij³¡¤À¡A°Ñ¾\§ó¦h°Ñ¦Ò¸ê®Æ¡C­n²z¸Ñ¥»¥y¤¤¡§¹ï»ô¡¨©M¡§¶ñ¥R¡¨¨â­Óµü¡A¤]»Ý­n²`«pªº¤º®Ö¥\©³¡C²Ä¤G¡A14.2.10.2¸`¡A¡§¤@­ÓLOCK¾Þ§@¥R·í¤F¤@­Ó³æ¤è­±«Ì»Ùªº¨¤¦â¡C¥¦½T«O¡G¹ï¤_¨t²Î¤¤¨ä¥L²Õ¥óªº¨¤«×¨Ó»¡¡A©Ò¦³Âê¾Þ§@¦Z­±ªº¤º¦s¾Þ§@¬Ý°_¨Óµo¥Í¦bÂê¾Þ§@¤§¦Z¡CLOCK¾Þ§@¤§«eªº¤º¦s¾Þ§@¥i¯àµo¥Í¦b¥¦§¹¦¨¤§¦Z¡C¡¨³o¥y¸ÜŪ°_¨Ó¤]¤ñ¸û¶¡AÃø¤_²z¸Ñ¡A¦ü¥G¤]¬Û¤¬¥Ù¬Þ¡C¹ê»Ú¤W¡AŪªÌ»Ý­nµZ¿i¡§¬Ý°_¨Ó¡¨³o­Óµü¡A¥¦ªí¥Ü¨ä¥L®Ö¬Ý¨ì¤º¦s¾Þ§@ªº¶¶§Ç¡A¦}¤£¥Nªí¤º¦s¾Þ§@ªº§¹¦¨®É¾÷¡C
Á`¤§¡A¦pªG§A¹ï¦}¦æ½sµ{©ÎªÌ¾Þ§@¨t²Î¤º®Ö¦³¿³½ì¡A©ÎªÌ»Ý­n¹ï¶µ¥Ø¶i¦æ²`«×©Ê¯àÀu¤Æ¡A§Ú±j¯P±ÀÂ˳o¥»¦}¦æ½sµ{ªº¸g¨å¦n®Ñ¡I

¤¤¿³³q°T¾Þ§@¨t²Î²£«~³¡ ÄÁ½ÃªF

ĶªÌ§Ç1

§Æ±æ³o¥»µÛ§@¯à°÷¦¨¬°¸g¨å¡I
20¦~«e¡A·í§Ú¥¿¦¡¦¨¬°¤@¦W³n¥ó¤uµ{®vªº®É­Ô¡A´N¦³¤@­Ó¹Ú·Q¡G¶}µo¤@´Ú¾Þ§@¨t²Î¡C¨º®É­Ô¡AÁöµMª¾¹DLinuxªº¦s¦b¡A¦ý¬O¹ê¦b§ä¤£¨ì¤@»O¥i¥H¥¿±`¦w¸Ë¨Ï¥ÎLinuxªºPC¡C¦]¦¹¥u¯à¾\Ū¬ÛÃöªº·½½X¤ÀªR®ÑÄy¦Ó¤£¯à°Ê¤â¹ê½î¡C
§Ú¦Ü¤µ¤´µM²M·¡°O±o¡G¤j¬ù10¦~«e¡A¤¤¿³³q°T¾Þ§@¨t²Î¹Î¶¤ªºÄÁ½ÃªF³¡ªø¡A¥i¯à³Q§Ú¹ï¾Þ§@¨t²Îªº¼ö±¡©Ò·P°Ê¡A¤£ÅU§Ú¨S¦³¤W¹L¤j¾Çªº¨Æ¹ê¡A«_µÛ­·ÀI±N§Ú©Û¸u¨ì¤¤¿³³q°T¦¨³£¬ã¨s©Ò¡C­±¹ï100¦hºØ«¬¸¹ªº³æªO¡A§Ú¬J¿³¾Ä¤S´q®£¡C³o¨Ç³æªO¯A¤ÎARM¡BX86¡BPowerPC¡BMIPS¡BSH¡BSparcµ¥¤£¦PªºCPU¬[ºc¡C±q¦¹¡A§Ú¶}©l¤F¿E°Ê¤H¤ß¦Ó¦³½ìªº¤º®Ö¤§®È¡C
¦b¤§¦Zªº6¦~¤¤¡A§Ú¹ï·ÓLinux¤º®Ö·½½X¡A®Ú¾Ú¡m²`¤J²z¸ÑLinux¤º®Ö¡n¡B¡m²`¤J²z¸ÑLinuxºôµ¸¤º¹õ¡n¡B¡m²`¤J²z¸ÑLinuxµêÀÀ¤º¦sºÞ²z¡n¡A¥H¤Î¨ä¥L¤@¨ÇLinux¤º®Ö¤å¥ó¨t²Î¡Bºôµ¸¨óij´Ì¤è­±ªº®ÑÄy¡A°µ¤F2200­¶¡B87¸U¦rªº¤º®Ö¾Ç²ßµ§°O¡A¦P®É±N¬ÛÀ³ªº·½½Xª`ÄÀ¤½¥¬¨ìºôµ¸¤¤¨Ñ¦Û¥Ñ¤U¸ü¡C
µM¦Ó¡A³o6¦~¦b¬ÝLinux¤º®Ö¥N½Xªº¹Lµ{¤¤¡A¥H¤Î¦b¤uµ{¹ê½î¤¤¡AÁ`¦³¤@­Ó«ÕÆF¯ëªº³±¼v¥X²{¦b§Úªº¸£®ü¤¤¡G¤°¤\¬O¤º¦s«Ì»Ù¡H2011¦~¡A§Ú¬Ý¹L¤º®Ö·½½X¥Ø¿ý¤¤ªº¤åÀÉ¥H¦Z¡A²×¤_¸Ñ¨M¤F¼Ð·Ç¤º®Ö©M¤u¨ãÃì¤@­ÓÃö¤_¤º¦s«Ì»Ùªº¬G»Ù¡C­n´_²{³o­Ó¬G»Ù¡A¶µ¥Ø¦P¨Æ»Ý­n¦b¾ã¾ã¤@­Ó©Ð¶¡¨½­±Â\º¡³æªO©MªA°È¾¹¡A¤~¯à·f«Ø¤@®M´_²{Àô¹Ò¡A¦}¥B»Ý­n¥Î¦h®M³o¼ËªºÀô¹Ò¡Aªá¶O2­Ó¤ë®É¶¡¤~¯à´_²{¤@¦¸¬ÛÃö¬G»Ù¡C§Y¨Ï¦b¸Ñ¨M¤F¬ÛÃö¬G»Ù¥H¦Z¡A§Ú¤´µMı±o¦Û¤v¹ï¤º¦s«Ì»Ù²z¸Ñ±o¤£²`¨è¡C¦]¬°¤º®Ö·½½X¥Ø¿ý¤Uªº¤åÀÉ¡A¹ï¤º¦s«Ì»Ù´y­z±o¤´µM»y²j¤£¸Ô¡C¨º­Ó«ÕÆF¤´µM¦b¸£®ü¤¤½L±Û¡G¨ì©³¤°¤\¤~¬O¤º¦s«Ì»Ù¡H
ª½¨ì¦³¤@¤Ñ¡A§Ú¦b¿ì¤½«Ç®Ì±yªº®É­Ô¡A¬ðµM¦b¾|¶§ªº¿ì¤½®à¤Wµo²{¤@¥»¯S§Oªº®Ñ¡X¡X¡mIs Parallel Programming Hard, And, If So, What Can You Do About It?¡n¡C»¡¥¦¯S§O¡A¬O¦]¬°¥¦¬O¥´¦L¥X¨Óªº¡C·í§Ú½¬Ý¤F¥Ø¿ý¬Ý¨ì¨½­±¥]§t¤º¦s«Ì»Ù©MRCUªº®É­Ô¡A¥ß§Y©ú¥Õ³o´N¬O§Ú´X¦~¨Ó­W­W°l´M¦Ó¥¼±oªº®Ñ¡I¦}¥B¡A³o¥»®Ñ¨½­±ªá¤F¿@­«ªºµ§¾¥¨ÓÁ¿­z³o¨â­Ó¥DÃD¡CÁÙ¦³¤ñ³o§ó¥O¤H°ª¿³ªº¨Æ±¡¶Ü¡H
Áo©úªºÅªªÌ¤@©wª¾¹D±µ¤U¨Óµo¥Í¤F¤°¤\¨Æ±¡¡C§A²q±o¨S¿ù¡A§Ú¹ª°Ê¾|¶§¤@°_½Ķ³o¥»®Ñ¡A·í®Éªº¥Øªº¯Âºé¬O¬°¤F¾Ç²ß¡A¦}¥B¤À¨É¨ìºôµ¸¤¤¡C¦b¦¹¡A§Ú¤£±o¤£¦V¾|¶§¹Dºp¡G¬°¤FÅý§A°í«ù¤U¥h¡A§Ú»¡¹L¤@¨Ç¤£¯d±¡­±ªº¸Ü¡C³o¨Ç¸Ü¤£¹L¬O¤ªªùÁI©v´Î³Ü¤§ªk¦Ó¤w¡C¦pªG§A¦­´N§Ñ°O³o¨Ç¸Ü¡A¨º´NÁ¤ÑÁ¦a¤F¡I
¬°¤F½Ķ¦n³o¥»®Ñ¡A§Ú¯S·N¥h¸É¤F¤@¤U­^»y¤è­±ªº½Ò¡C³Ì²×¡A³o¥»®Ñ¯à°÷»PŪªÌ¨£­±¡A¤j·§¦³¥H¤U´X­Ó­ì¦]¡C
1¡D¾|¶§©M§Ú³£¦³¤@ÂILinux¤º®Ö©M¦}¦æ½sµ{°ò¦¡C
2¡D§Ú­Ìªº¼ö±¡©M¦³ÂI¦Û¤jªº¦Û«H¡C
3¡D­^»y¤£ºâ¤ÓÃø¾Ç¡C
4¡D®a¤Hªº®e§Ô¡C¤]³\¬O§Ú±`±`©À¥o¡G½Ķ¦n³o¥»®Ñ¡A¤u¸ê¥i¯àº¦¤@¤jºI¡C
5¡D¦³¤@¨Ç­È±o·P®¦ªººô¤Í¡A¥L­Ì·þ«P§Ú­Ì°µ¦n½Ķ¤u§@¡C
¦b²×¤_§¹¾ã¦a½Ķ§¹¥»®Ñ¤§»Ú¡A§Ú¾ã²z¥X´X±ø²z¥Ñ¡A³o¨Ç²z¥Ñ¨Ï±o¥»®Ñ¦³¦¨¬°¸g¨åªº¼ç½è¡C
1¡D²`¨è¬O¥»®Ñªº¯SÂI¡C¥»®Ñ±qÀNª÷´£¥Xªº¨â­Ó²z½×ª«²z­­¨î¬°°_ÂI¡A¯¸¦bµw¥ó¦Ó¤£¬O³n¥óªº¨¤«×¡AÄÄ­z¦}¦æ½sµ{ªºÃøÃD¡CÅý¤H¦³¤@ºØ¡§ª¾¨äµM¦}¥Bª¾¨ä©Ò¥HµM¡¨ªº·Pı¡C®Ñ¤¤¤£¤ÖÆ[ÂI¡A¦p¤º¦s«Ì»Ùªº¶Ç»¼©Ê¡A¬O¸ê²`¤uµ{®v¤]¤£®e©ö²z¸Ñªº¡C¦ý¬O¡A¬Ý¹L¥»®Ñ¥H¦Z¡AŪªÌ·|¦³¤@ºØÁŵM¶}®Ôªº·Pı¡C
2¡D¦b¦}¦æ½sµ{¤è­±¡A¥»®Ñ¤ñ¸û¥þ­±¡A¦}¥B¥]§tÂ×´Iªº¥Ü¨Ò¡C¥]¬A¦ý¤£¶È¶È­­¤_µw¥ó°ò¦¡B½w¦s¡B¦}¦æ³]­p¡BÂê¡BRCU¡B¤º¦s«Ì»Ù¡BÅçÃҤΧΦ¡ÅçÃÒ¡B¹ê®É¦}¦æ­pºâ¡C
3¡D­ìµÛ§@ªÌPaul¬O¯u¥¿ªº¤j®v¡C¬Ý¹L§@ªÌ²¤¶¡A¦}¥B¯u¥¿ª¾¹DRCU¦bLinux¤º®Ö¤¤¥÷¶qªºªB¤Í¡A¤£ª¾¹D§A­Ì¬O§_·|¦b¤ß¨½¹¿©B¡G¦bLinux¶}·½ªÀ°Ï¡A¦³¨S¦³¤Hº@·N¸ÕµÛ¥h«õPaulªºùÙ¨¤¡A¥N´ÀPaul§âRCUºûÅ@°_¨Ó¡H
4¡DPaul ¦b40¦~ªºÂ¾·~¥Í²P¤¤¡A¤j³¡¤À®É¶¡³£¦b½s¼g¦}¦æ½sµ{ªº¥N½X¡C·í¥L¦ªµÛ»P©b¹£¨®»ù­È¬Û·íªºÂù®Ö­pºâ¾÷©¹¹êÅç«Ç¨«ªº®É­Ô¡A§Ú³o­Ó¦³20¦~½sµ{¸gÅ窺µ{§Ç­û¡AÁÙ¨S¦³¤W¤p¾Ç¡C
5¡D°ê¤º¹ï¦}¦æ­pºâ©MLinux¤º®Öªº¬ã¨s³v¨B²`¤J¡AŪªÌ´Á«Ý¤@¥»²`¤JÁ¿¸Ñ¦}¦æ½sµ{ªº®ÑÄy¡C¥»®Ñ¦³¦}¦æ½sµ{ªº¤Jªùª¾ÃÑ¡A§ó¦³­È±o²Ó²Ó¦^¨ý¡B¤Ï´_µZ¿iªºª÷¥É¨}¨¥¡C
6¡DĶªÌ¦h¦¸®Ö¹ï®Õ¥¿¡AºÉ¶q°µ¨ì²Å¦X­ìµÛ¥»·N¡A¨â¦ìĶªÌ¦³¦h¦~Linux¤º®Ö¸gÅç¡AºÉ¶q°µ¨ì¤£¿ùĶ¡C
·íµM¡A¥Ñ¤_ĶªÌ¤ô¥­ªº­ì¦]¡A®Ñ¤¤¿ùº|¤§³B¦b©ÒÃø§K¡A¼ö§ÕÅwªïŪªÌ´£¥X§åµû«Øij¡C
³Ì¦Z¡AĶªÌ¸Û¤ß·PÁ­ìµÛ§@ªÌPaulµ¹¤j®a©^Äm¤F¤@¥»¦n®Ñ¡F¤]·PÁ¹q¤l¤u·~¥Xª©ªÀ²Å¶©¬ü½s¿èªº¨¯¶Ô¤u§@¡F¥H¤Î¸ê²`¤¬Ápºô³n¥ó¤uµ{®v¼B®ü¥­¡A·PÁ§A¼ö¤ß¦a¦V¥Xª©ªÀ±ÀÂ˳o¥»®Ñ¡F³Ì¯u¤ßªº·PÁ¯dµ¹¦P®à¤Ò¤H§ÅºüµÓ¤Î§Ú­Ìªº¨à¤lÁ¤åÃü¡AÄ묹¤F¤j¶q³­¦ñ§A­Ìªº®É¶¡¡AÁÂÁ§A­Ìªº¼e®e¡I

ÁÂÄ_¤Í
2017¦~4¤ë20¤é
¤_²`¦`

ĶªÌ§Ç2

¤j·§¦b6¦~«e¡A¨º®É§Ú¦b¤¤¿³³q°Tªº¾Þ§@¨t²Î³¡ªù¤u§@¡C·í®É¤¤¿³³q°T§Æ±æ¥[¤JLinux°òª÷·|¡A¥Ñ¤_­^»yÁÙ¤£ºâ®t¡A¾Þ§@¨t²Î³¡ªºÄÁ½ÃªF³¡ªøÅý§Ú­t³d¤@¨Ç³¡ªù»P¶}·½ªÀ°Ïªº¦X§@±À¶i¤u§@¡A©Ò¥H°£¤F½sµ{¤u§@¥H¥~¡A§Ú®É±`±K¤ÁÃöª`Linux¶}·½ªÀ°Ïªº³Ì·s°ÊºA¡C¦³¤@¤Ñ§Ú¦bLWN.net¤WÂsÄý·s»D¡A¤@±ø®ø®§¬ðµM¸õ¤J¤F§Úªºµø½u¡GPaul McKenney¥X¤F¤@¥»Ãö¤_¦}¦æ½sµ{ªº®Ñ¡]­ì¤åÃì±µ¦b¦¹¡Ahttps://lwn.net/Articles/421425¡^¡C¨º®É­Ô§ÚÁÙ¤£ª¾¹DPaul¬O½Ö¡A¦ý¬O®Ñªº¤º®e«Ü§l¤Þ¤H¡A¤_¬O§Ú¶}©l§â®Ñ¤¶²Ðµ¹©P³òªº¦P¨Æ¡C¹L¤F¤@°}¤l¡AÁÂÄ_¤Í§ä¨ì§Ú¡A°Ý§Ú¦³¨S¦³¿³½ì¤@°_§â³o¥»®Ñ½Ķ¦¨¤¤¤å¡A§Ú­Ì­Ç¤@©ç§Y¦X¡A¶}©l§Q¥Î·~§E®É¶¡¦X¤O½Ķ³o¥»¤j³¡ÀY¡C
ÁöµM·í®É¥»®Ñªº¤º®e©|¥¼§¹¦¨¡A¦³¤@¨Ç³¹¸`¥u¦C¤F´£ºõ¡A¦ý¬OÃö¤_¦}¦æµ{§Çªº³]­p«ä·Q¡B¬ÛÃö°ò¦ª¾ÃÑ¡BRCU©M¤º¦s«Ì»Ù¤è­±ªº¤º®e¤w¸g«D±`Â×´I¡A¹ï¤_±q¨Æ¤º®Ö¶}µo¤u§@ªº§Ú­Ì¨Ó»¡¡A²ª½´N¬OÄ_®w¡A§Ú­Ì»{¬°§Y¨Ï¥u½Ķ³o¨Ç¤º®e¡A¹ï¨ä¥L¤¤°êŪªÌ¨Ó»¡¤]«Ü¦³À°§U¡C
½Ķªº¹Lµ{»·»·¤ñ³Ìªì·Q¶H±o§xÃø¡A­ìµÛ§@ªÌPaul¬O¤@¦ì¦³ªñ40¦~±q·~¸gÅ窺¸ê²`¤j¤û¡A¦b®Ñ¤¤¤j¶q¨Ï¥Î¤FLinux¤º®Öªº³N»y¡B¦}¦æ½sµ{ªº¬ã¨s¤åÄm¡A¥H¤Î¹ï´_Âøºâªk©M¥Ü¨Ò¥N½Xªº¸ÑÄÀ¡A¦b½Ķ¹Lµ{¤¤»Ý­n¦r·r¥y°u¡A¤O¨D·Ç½T¦a¶Ç¹F§@ªÌªº­ì·N¡A©Ò¥H¶i«×«ÜºC¡C¤£¹L·í®É§ÚÁÙ¥¼±B¡A©|ºâ¦Û¥Ñ¡A¤U¯Z¥H¦ZªºªÅ§E®É¶¡´X¥G¥þ³¡¥Î¨Ó°µ³o¥ó¨Æ¡A¤j·§ªá¤F4­Ó¤ëªº®É¶¡§¹¦¨¤F²Ä¤@­Ó¤¤¤åª©¥»¡C
§Ú­Ì§â¤¤¤åª©µo¥¬¨ì¤Fºô¤W¡A¤]¶}©l©MPaulÁp¨t¡A½Ð¥LÀ°§Ú­Ì«Å¶Ç¡A§Æ±æ¯àÅý§ó¦hªº¤¤°ê¶}µoªÌª¾¹D³o¥ó¨Æ¡C¦P¦~¦b«n¨ÊÁ|¦æªºCLK 2011¡]¤¤°êLinux¤º®Ö¶}µoªÌ¤j·|¡^¤W¡A§Ú©MÄ_¤Í¨£¨ì¤FPaul¥»¤H¡C³o¨½¦³¤@­Ó¦³½ìªº¤p´¡¦±¡A¥Ñ¤_·|¦Z§äPaul´£°Ý©M«t¸ßªº¤H¤Ó¦h¡APaul¤z¯Ü¦b·|³õ¥~®u¦a¦Ó§¤¡A³v¤@¨Ô¨Ô¦Ó½Í¡C¤£Â\¬[¤lªº¤j¤û¡A¬OPaulµ¹§Ú¯d¤Uªº³Ì²`¨è¦L¶H¡C
¦Z¨Ó¦]¬°®a®xªº­ì¦]¡A§Ú¥h¤F¬ü°ê¡C¥Í¬¡¥Rº¡¤F·sªº¬D¾Ô¡AÄ~Äò§ó·s¤º®eªº¨Æ±¡¦]¦¹ÀÁ¸m¡C´Á¶¡¡AÄ_¤ÍÄ~Äò½Ķ¤Fµª®×³¡¤Àªº¤º®e¡A¤]¦³¥Xª©ªÀÁp¨t¹L§Ú­Ì¡A·Q¥Xª©¥»®Ñªº¤¤¤åª©¡A¦ý¦]¬°ºØºØ­ì¦]¡A¦Z¨ÓµL¯e¦Ó²×¡Cª½¨ì¥h¦~®L¤Ñ¡A¹q¤l¤u·~¥Xª©ªÀ¥¿¦¡±q­ìµÛ§@ªÌ³BÀò±oª©Åv±ÂÅv¡AÁܽЧکMÄ_¤Í±N¥»®Ñ³Ì·sª©Â½Ä¶¦¨¤¤¤å¡C¤_¬O§Ú­Ì¦A«×¦X§@¡Aªá¤F¤j¥b¦~®É¶¡¡A­«·s¼f¾\½Ķ½Z¡A±N¤º®e§ó·s¨ì³Ì·sª©¥»¡A§¹¾ã¦a½Ķ¤F©Ò¦³ªþ¿ý©M¤p°ÝÃDµª®×¡A¦P®É­×­q¤F«Ü¦h¿ù»~¡C¬Û¸û¤§«eªºÂ½Ä¶½Z¡A§@ªÌ¹ï³o¤@ª©ªº¤º®e¦³¤j´T§ïÅÜ¡G
²Ä6³¹·s¼W¤F¹ï°g®c°ÝÃD¦}¦æ¤Æ¸Ñªkªº°Q½×¡A
§¹¥þ­«¼g¤F²Ä7³¹Âê©M²Ä8³¹¼Æ¾Ú©Ò¦³Åvªº¤º®e¡C
²Ä9³¹·s¼W¤FÃö¤_¦MÀI«ü°w©M¶¶§ÇÂê¡A§ó·s¤F¤@¨Ç¨Ò¤l¡C
·s¼W¤F²Ä10³¹¡A¦p¦ó±N«¢§Æªí¦}¦æ¤Æ¡C
·s¼W¤F²Ä11³¹¡A¦p¦óÅçÃÒ¦}¦æºâªkªº¥¿½T©Ê¡C
·s¼W¤F²Ä13³¹ºî¦XÀ³¥Î¡C
·s¼W¤F²Ä15³¹¦}¦æ¹ê®É­pºâ¡C
±q³o­Ó¦Cªí¥i¥H¬Ý¥X¡A­ìµÛ§@ªÌPaul¹ï¦}¦æ½sµ{§Þ³Nªº«ä¦Ò¤@ª½¨S¦³°±¤î¡AÁÙ¦b¤£°±¦a±N³o­Ó¸g¨å»â°ìªº·s°ÝÃD©M·s¶i®i¥[¤J¨ì¥»®Ñ¤¤¡C¤ñ¦p¤@¨Ç¾ÇªÌ¹ï±`¨£¼Æ¾Úµ²ºc«¢§Æªíªº³Ì·s¬ã¨s¡A¨Ï±o¥»®Ñ¤£¶È¦¨¬°¤@³¡®×ÀY¥²³Æªº¤u¨ã®Ñ¡AÁÙ¬O¤@­Ó¶}©Ý·sª¾ÃѪº¥XµoÂI¡C
§@ªÌ¦b®Ñ¤¤¼Æ¦¸±j½Õ³]­pªº­«­n©Ê¡C¤u§@¥H¨Ó¡A§Ú´¿°Ñ»Pªº¶µ¥Ø¦³¾Þ§@¨t²Î¤º®Ö¡BÂsÄý¾¹¤º®Ö¡A¥Ø«e¶}µoªº¬O¤º¦s¼Æ¾Ú®w¡A³£Äݤ_¨t²Î³n¥óªº­SÃ¥¡C³o¨Ç¶µ¥Ø³£¤j¶q¨Ï¥Î¤F¦h½uµ{¨Ó¥R¤À§Q¥Îµw¥ó¡C¦b³o¨Ç¹ê½î¤¤¡A§Ú¦³¤@ÂIÅé·|¡AÃö¤_¤À³Î¼Æ¾Ú¡B¤À³Î®É¶¡¡B´î¤Ö¸ó½uµ{³X°Ý¡B¦}¦æ§Ö³t¸ô®|¡BÂꪺ¨Ï¥Î¬ö«ß³o¨Ç³]­p«ä·Q¡A¤@¥¹À³¥Î¨ì¶µ¥Ø¤¤¡A¥N½X´NÅܱo²M´·©öÀ´¡A«Ü¤Ö¦³BUG¡C¤@¥¹¹H¤Ï¡A´N±a¨ÓÃø¥HºûÅ@ªº¥N½X¡AÀH¤§¦Ó¨Óªº¬O¼h¥X¤£½aªºBUG¡C
®Ñ¤¤ÁÙ´²¸¨µÛ³\¦hÄ_¶Qªº¸gÅçªk«h¡A¤ñ¦p10.6.3¸`¤¤¦p¦ó³q¹L­«·s±Æ¦C¼Æ¾Úµ²ºc¶¶§Ç¨ÓÁקK½w¦s¦æ¡§ÄA𡨡C³o¨Ç«e½úºN¯Á¥X¨Óªº¸gÅç¯àÅý·s¤@¥Nªº¶}µoªÌ¤Ö¨««Ü¦hÅs¸ô¡C
§@ªÌªº¦æ¤å¤Q¤À«ÕÀq¡A§Ú¦b½Ķ¹Lµ{¤¤¡A¸g±`§Ô«T¤£¸T¡C§Æ±æ¯à¦b¤¤¤åª©¤¤¡AºÉ¶q±N§@ªÌªº«ÕÀq·P«O¯d¤U¨Ó¡C
¥h¦~§Úªº¨à¤l¤p³½¨à­°¥Í¡A§@¬°¤@­Ó·sª¨ª¨¡A¥Õ¤Ñ¤u§@¡A±ß¤W¦b·ÓÅU«Ä¤l¤§§EÁÙ­n¥[¯Z½Ķ¤å½Z¡A¯u¬O¤À¬í¥²ª§¡C³Ì¦Z­É³o­Ó¾÷·|¡A±N³Ì¯u¤ßªº·PÁ¯dµ¹§Úªº¤Ò¤H¿cÀR¡A·PÁ§A¹ï®a®xªº¥I¥X¡A¨S¦³§AªºÀ°§U©M²z¸Ñ¡A´N¨S¦³¥»®Ñ¤¤¤åª©ªº­±¥@¡C

¾|¶§
2017¦~6¤ë16¤é¤_Woburn¡AMassachusetts
¤º®e²¤¶¡G

¥»®Ñ­º¥ý¥HÀNª÷´£¥Xªº¨â­Ó²z½×ª«²z­­¨î¬°¤Þ¤l¡A¸ÑÄÀ¤F¦h®Ö¦}¦æ­pºâ¿³°_ªº­ì¦]¡A¦}±qµw¥óªº¨¤«×ÄÄ­z¦}¦æ½sµ{ªºÃøÃD¡C±µµÛ¡A¥»®Ñ¥H±`¨£ªº­p¼Æ¾¹¬°¨Ò¡A±´°Q¨ä¤£¦Pªº¹ê²{¤èªk¤Î¾A¥Î³õ´º¡C¦b³o¨Ç¹ê²{¤èªk¤¤¡A°£¤F¤¶²Ð±`¨£ªºÂê¥H¥~¡A¥»®ÑÁÙ­«ÂI¤¶²Ð¤FRCUªº¨Ï¥Î¤Î¨ä­ì²z¡A¥H¤Î¹ê²{RCUªº°ò¦¡G¤º¦s«Ì»Ù¡C³Ì¦Z¡A¥»®ÑÁÙ¤¶²Ð¤F¦}¦æ³n¥óªºÅçÃÒ¡A¥H¤Î¦}¦æ¹ê®É­pºâµ¥¤º®e¡C¥»®Ñ¾A¦X¤_¹ï¦}¦æ½sµ{¦³¿³½ìªº¤j¾Ç¥Í¡B¬ã¨s¥Í¡A¥H¤Î»Ý­n¹ï¶µ¥Ø¶i¦æ²`«×©Ê¯àÀu¤Æªº³nµw¥ó¤uµ{®v¡A¯S§O­È±o¤@´£ªº¬O¡A¥»®Ñ¹ï¾Þ§@¨t²Î¤º®Ö¤uµ{®v¤]«Ü¦³»ù­È¡C

¥Ø¿ý¡G

²Ä1³¹ ¦p¦ó¨Ï¥Î¥»®Ñ 1
1.1 ¸ô½u¹Ï 1
1.2 ¤p°ÝÃD 2
1.3¡@°£¥»®Ñ¤§¥~ªº¿ï¾Ü 3
1.4 ¥Ü¨Ò·½¥N½X 4
1.5 ³o¥»®ÑÄݤ_½Ö 4
²Ä2³¹ ²¤¶ 6
2.1 ¾É­P¦}¦æ½sµ{§xÃøªº¾ú¥v­ì¦] 6
2.2 ¦}¦æ½sµ{ªº¥Ø¼Ð 7
2.2.1 ©Ê¯à 8
2.2.2 ¥Í²£²v 9
2.2.3 ³q¥Î©Ê 9
2.3 ¦}¦æ½sµ{ªº´À¥N¤è®× 11
2.3.1 ¦ê¦æÀ³¥Îªº¦h­Ó¹ê¨Ò 11
2.3.2 ¨Ï¥Î²{¦³ªº¦}¦æ³n¥ó 11
2.3.3 ©Ê¯àÀu¤Æ 12
2.4 ¬O¤°¤\¨Ï¦}¦æ½sµ{Åܱo´_Âø 12
2.4.1 ¤À³Î¥ô°È 13
2.4.2 ¦}¦æ³X°Ý±±¨î 13
2.4.3 ¸ê·½¤À³Î©M´_¨î 14
2.4.4 »Pµw¥óªº¥æ¤¬ 14
2.4.5 ²Õ¦X¨Ï¥Î 14
2.4.6 »y¨¥©MÀô¹Ò¦p¦ó¤ä«ù³o¨Ç¥ô°È 14
2.5 ¥»³¹ªº°Q½× 15
²Ä3³¹ µw¥ó©M¥¦ªº²ßºD 16
3.1 ·§­z 16
3.1.1 ¬y¤ô½uCPU 16
3.1.2 ¤º¦s¤Þ¥Î 17
3.1.3 ­ì¤l¾Þ§@ 18
3.1.4 ¤º¦s«Ì»Ù 19
3.1.5 °ª³t½w¦s¥¼©R¤¤ 19
3.1.6 I/O¾Þ§@ 19
3.2 ¶}¾P 20
3.2.1 µw¥óÅé¨tµ²ºc 20
3.2.2 ¾Þ§@ªº¶}¾P 21
3.3 µw¥óªº§K¶O¤ÈÀ\ 23
3.3.1 3D¶°¦¨ 23
3.3.2 ·s§÷®Æ©M·s¤uÃÀ 24
3.3.3 ¬O¥ú¡A¤£¬O¹q¤l 24
3.3.4 ±M¥Î¥[³t¾¹ 24
3.3.5 ²{¦³ªº¦}¦æ³n¥ó 25
3.4 ¹ï³n¥ó³]­pªº±Ò¥Ü 25
²Ä4³¹ ¿ì¨Æªº®a¥ë 27
4.1 ¸}¥»»y¨¥ 27
4.2 POSIX¦h¶iµ{ 28
4.2.1 POSIX¶iµ{³Ð«Ø©M¾P·´ 28
4.2.2 POSIX½uµ{³Ð«Ø©M¾P·´ 30
4.2.3 POSIXÂê 31
4.2.4 POSIXŪ/¼gÂê 34
4.3 ­ì¤l¾Þ§@ 37
4.4 Linux¤º®Ö¤¤Ãþ¦üPOSIXªº¾Þ§@ 38
4.5 ¦p¦ó¿ï¾Ü¶X¤âªº¤u¨ã 39
²Ä5³¹ ­p¼Æ 40
5.1 ¬°¤°¤\¦}µo­p¼Æ¤£¥i¤p¬Ý 41
5.2 ²Î­p­p¼Æ¾¹ 42
5.2.1 ³]­p 43
5.2.2 °ò¤_¼Æ²Õªº¹ê²{ 43
5.2.3 ³Ì²×µ²ªG¤@­Pªº¹ê²{ 44
5.2.4 °ò¤_¨C½uµ{Åܶqªº¹ê²{ 46
5.2.5 ¥»¸`°Q½× 48
5.3 ªñ¦ü¤W­­­p¼Æ¾¹ 48
5.3.1 ³]­p 48
5.3.2 ²³æªº¤W­­­p¼Æ¹ê²{ 50
5.3.3 Ãö¤_²³æ¤W­­­p¼Æªº°Q½× 55
5.3.4 ªñ¦ü¤W­­­p¼Æ¾¹ªº¹ê²{ 55
5.3.5 Ãö¤_ªñ¦ü¤W­­­p¼Æ¾¹ªº°Q½× 55
5.4 ºë½T¤W­­­p¼Æ 56
5.4.1 ­ì¤l¤W­­­p¼Æªº¹ê²{ 56
5.4.2 Ãö¤_­ì¤l¤W­­­p¼Æªº°Q½× 62
5.4.3 Signal-Theft¤W­­­p¼Æªº³]­p 62
5.4.4 Signal-Theft¤W­­­p¼Æªº¹ê²{ 63
5.4.5 Ãö¤_Signal-Theft¤W­­­p¼Æªº°Q½× 68
5.5 ¯S®í³õ¦Xªº¦}¦æ­p¼Æ 68
5.6 Ãö¤_¦}¦æ­p¼Æªº°Q½× 69
5.6.1 ¦}¦æ­p¼Æªº©Ê¯à 70
5.6.2 ¦}¦æ­p¼Æªº±Mªù¤Æ 71
5.6.3 ±q¦}¦æ­p¼Æ¤¤¾Ç¨ì¤°¤\ 71
²Ä6³¹ ¹ï¤À³Î©M¦P¨Bªº³]­p 73
6.1 ¤À³Î½m²ß 73
6.1.1 ­õ¾Ç®a´NÀ\°ÝÃD 73
6.1.2 ÂùºÝ¶¤¦C 75
6.1.3 Ãö¤_¤À³Î°ÝÃD¥Ü¨Òªº°Q½× 81
6.2 ³]­p·Ç«h 82
6.3 ¦P¨B²É«× 83
6.3.1 ¦ê¦æµ{§Ç 84
6.3.2 ¥N½XÂê 85
6.3.3 ¼Æ¾ÚÂê 86
6.3.4 ¼Æ¾Ú©Ò¦³Åv 88
6.3.5 Âê²É«×»P©Ê¯à 88
6.4 ¦}¦æ§Ö³t¸ô®| 90
6.4.1 Ū/¼gÂê 91
6.4.2 ¼h¦¸Âê 91
6.4.3 ¸ê·½¤À°t¾¹½w¦s 92
6.5 ¤À³Î¤§¥~ 97
6.5.1 ¨Ï¥Î¤u§@¶¤¦Cªº°g®c°ÝÃD¦}¦æ¸Ñªk 97
6.5.2 ¥t¤@ºØ°g®c°ÝÃDªº¦}¦æ¸Ñªk 100
6.5.3 ©Ê¯à¤ñ¸ûI 102
6.5.4 ¥t¤@ºØ°g®c°ÝÃDªº¦ê¦æ¸Ñªk 104
6.5.5 ©Ê¯à¤ñ¸ûII 104
6.5.6 ¥¼¨Ó®i±æ»P¥»¸`Á`µ² 105
6.6 ¤À³Î¡B¦}¦æ¤Æ»PÀu¤Æ 106
²Ä7³¹ Âê 107
7.1 §V¤O¬¡µÛ 108
7.1.1 ¦ºÂê 108
7.1.2 ¬¡Âê»PÄȾj 114
7.1.3 ¤£¤½¥­ªºÂê 116
7.1.4 §C®Ä²vªºÂê 117
7.2 ÂꪺÃþ«¬ 117
7.2.1 ¤¬¥¸Âê 117
7.2.2 Ū/¼gÂê 118
7.2.3 Ū/¼gÂꤧ¥~ 118
7.2.4 ­S³òÂê 119
7.3 Âê¦b¹ê²{¤¤ªº°ÝÃD 121
7.3.1 °ò¤_­ì¤l¥æ´«ªº¤¬¥¸Âê¹ê²{¥Ü¨Ò 121
7.3.2 ¤¬¥¸Âꪺ¨ä¥L¹ê²{ 122
7.4 °ò¤_Âꪺ¦s¦b«OÃÒ 124
7.5 Âê¡G¬O­^¶¯ÁÙ¬O´c´Ò 125
7.5.1 À³¥Îµ{§Ç¤¤ªºÂê¡G­^¶¯ 125
7.5.2 ¦}¦æ®w¤¤ªºÂê¡G¥u¬O¤@­Ó¤u¨ã 126
7.5.3 ¦}¦æ¤Æ¦ê¦æ®w®ÉªºÂê¡G´c´Ò 128
7.6 Á`µ² 130
²Ä8³¹ ¼Æ¾Ú©Ò¦³Åv 131
8.1 ¦h¶iµ{ 131
8.2 ³¡¤À¼Æ¾Ú©Ò¦³Åv©Mpthread½uµ{®w 132
8.3 ¨ç¼Æ¿é°e 132
8.4 «ü¬£½uµ{ 132
8.5 ¨p¦³¤Æ 133
8.6 ¼Æ¾Ú©Ò¦³Åvªº¨ä¥L¥Î³~ 133
²Ä9³¹ ©µ¦Z³B²z 134
9.1 ¤Þ¥Î­p¼Æ 134
9.1.1 ¦UºØ¤Þ¥Î­p¼Æªº¹ê²{ 135
9.1.2 ¦MÀI«ü°w 140
9.1.3 ¤ä«ù¤Þ¥Î­p¼ÆªºLinux­ì»y 141
9.1.4 ­p¼ÆÀu¤Æ 142
9.2 ¶¶§ÇÂê 142
9.3 Ū-´_¨î-­×§ï¡]RCU¡^ 145
9.3.1 RCU¤¶²Ð 145
9.3.2 RCU°ò¦ 147
9.3.3 RCU¥Îªk 155
9.3.4 Linux¤º®Ö¤¤ªºRCU API 166
9.3.5 ¡§ª±¨ã¦¡¡¨ªºRCU¹ê²{ 171
9.3.6 RCU½m²ß 188
9.4 ¦p¦ó¿ï¾Ü 188
9.5 §ó·sºÝ«ç¤\¿ì 190
²Ä10³¹ ¼Æ¾Úµ²ºc 191
10.1 ±q¨Ò¤l¤J¤â 191
10.2 ¥i¤À³Îªº¼Æ¾Úµ²ºc 192
10.2.1 «¢§Æªíªº³]­p 192
10.2.2 «¢§Æªíªº¹ê²{ 192
10.2.3 «¢§Æªíªº©Ê¯à 195
10.3 Ū°¼­«ªº¼Æ¾Úµ²ºc 197
10.3.1 ¨üRCU«OÅ@ªº«¢§Æªíªº¹ê²{ 197
10.3.2 ¨üRCU«OÅ@ªº«¢§Æªíªº©Ê¯à 199
10.3.3 ¹ï¨üRCU«OÅ@ªº«¢§Æªíªº°Q½× 201
10.4 ¤£¥i¤À³Îªº¼Æ¾Úµ²ºc 201
10.4.1 ¥iÂX®i«¢§Æªíªº³]­p 202
10.4.2 ¥iÂX®i«¢§Æªíªº¹ê²{ 203
10.4.3 ¥iÂX®i«¢§Æªíªº°Q½× 210
10.4.4 ¨ä¥L¥iÂX®iªº«¢§Æªí 211
10.5 ¨ä¥L¼Æ¾Úµ²ºc 214
10.6 ·LÀu¤Æ 214
10.6.1 ¹ê¨Ò¤Æ 215
10.6.2 ¤ñ¯S»P¦r¸` 215
10.6.3 µw¥ó¼h­±ªº¦Ò¼{ 216
10.7 Á`µ² 217
²Ä11³¹ ÅçÃÒ 218
11.1 ²¤¶ 218
11.1.1 BUG¨Ó¦Û¤_¦ó³B 218
11.1.2 ©Ò»Ýªº¤ßºA 220
11.1.3 À³¸Ó¦ó®É¶}©lÅçÃÒ 221
11.1.4 ¶}·½¤§¸ô 221
11.2 ¸òÂÜ 222
11.3 Â_¨¥ 223
11.4 ÀRºA¤ÀªR 224
11.5 ¥N½X¨«¬d 224
11.5.1 ¼f¬d 224
11.5.2 ¨«¬d 225
11.5.3 ¦Û¬d 225
11.6 ´X²v¤Î®ü´Ë³ùBUG 227
11.6.1 Â÷´²´ú¸Õ²Î­p 228
11.6.2 ÀÝ¥ÎÂ÷´²´ú¸Õ²Î­p 229
11.6.3 «ùÄò´ú¸Õ²Î­p 229
11.6.4 ©w¦ì®ü´Ë³ùBUG 232
11.7 ©Ê¯àµû¦ô 235
11.7.1 ©Ê¯à°ò·Ç 236
11.7.2 ­åªR 236
11.7.3 ®t¤À¤ÀªR 237
11.7.4 ·L°ò·Ç 237
11.7.5 ¹jÂ÷ 237
11.7.6 ÀË´ú¤zÂZ 238
11.8 Á`µ² 242
²Ä12³¹ §Î¦¡ÅçÃÒ 244
12.1 ³q¥Î¥Øªºªºª¬ºAªÅ¶¡·j¯Á 244
12.1.1 Promela©MSpin 244
12.1.2 ¦p¦ó¨Ï¥Î Promela 249
12.1.3 Promela ¥Ü¨Ò: Âê 251
12.1.4 Promela ¥Ü¨Ò: QRCU 254
12.1.5 Promelaªì¸Õ¤û¤M¡Gdynticks©M¥i·m¥eRCU 260
12.1.6 ÅçÃÒ¥i·m¥eRCU©Mdynticks 264
12.2 ¯S©w¥Øªºªºª¬ºAªÅ¶¡·j¯Á 288
12.2.1 ¸ÑªRLitmus´ú¸Õ 289
12.2.2 Litmus´ú¸Õ·N¨ýµÛ¤°¤\ 290
12.2.3 ¹B¦æLitmus´ú¸Õ 291
12.2.4 PPCMEM°Q½× 292
12.3 ¤½²z¤èªk 293
12.4 SAT¨D¸Ñ¾¹ 294
12.5 Á`µ² 295
²Ä13³¹ ºî¦XÀ³¥Î 296
13.1 ­p¼ÆÃøÃD 296
13.1.1 ¹ï§ó·s¶i¦æ­p¼Æ 296
13.1.2 ¹ï¬d§ä¶i¦æ­p¼Æ 296
13.2 ¨Ï¥ÎRCU¬@±Ï¦}¦æ³n¥ó©Ê¯à 297
13.2.1 RCU©M°ò¤_¨CCPUÅܶqªº²Î­p­p¼Æ 297
13.2.2 RCU¤Î¥i´¡©ÞI/O³]³Æªº­p¼Æ¾¹ 300
13.2.3 ¼Æ²Õ¤Îªø«× 300
13.2.4 ¬ÛÃöÁpªº¦r¬q 301
13.3 ´²¦CÃøÃD 302
13.3.1 ¬ÛÃöÁpªº¼Æ¾Ú¤¸¯À 302
13.3.2 §ó·s¤Í¦nªº«¢§Æªí¹M¾ú 303
²Ä14³¹ °ª¯Å¦P¨B 304
14.1 ÁקKÂê 304
14.2 ¤º¦s«Ì»Ù 304
14.2.1 ¤º¦s§Ç¤Î¤º¦s«Ì»Ù 305
14.2.2 ¦pªGB¦bA¦Z­±¡A¦}¥BC¦bB¦Z­±¡A¬°¤°¤\C¤£¦bA¦Z­± 306
14.2.3 Åܶq¥i¥H¾Ö¦³¦h­Ó­È 307
14.2.4 ¯à«H¥ô¤°¤\ªF¦è 308
14.2.5 Âê¹ê²{¦^ÅU 312
14.2.6 ¤@¨Ç²³æªº³W«h 313
14.2.7 ©â¶H¤º¦s³X°Ý¼Ò«¬ 314
14.2.8 ³]³Æ¾Þ§@ 315
14.2.9 «OÃÒ 315
14.2.10 ¤°¤\¬O¤º¦s«Ì»Ù 316
14.2.11 Âê¬ù§ô 325
14.2.12 ¤º¦s«Ì»Ù¥Ü¨Ò 326
14.2.13 CPU½w¦sªº¼vÅT 328
14.2.14 ­þ¨½»Ý­n¤º¦s«Ì»Ù 329
14.3 «Dªý¶ë¦P¨B 329
14.3.1 ²³æNBS 330
14.3.2 NBS°Q½× 331
²Ä15³¹ ¦}¦æ¹ê®É­pºâ 332
15.1 ¤°¤\¬O¹ê®É­pºâ 332
15.1.1 ³n¹ê®É 332
15.1.2 µw¹ê®É 333
15.1.3 ²{¹ê¥@¬Éªº¹ê®É 334
15.2 ½Ö»Ý­n¹ê®É­pºâ 336
15.3 ½Ö»Ý­n¦}¦æ¹ê®É­pºâ 337
15.4 ¹ê²{¦}¦æ¹ê®É¨t²Î 337
15.4.1 ¹ê²{¦}¦æ¹ê®É¾Þ§@¨t²Î 339
15.4.2 ¹ê²{¦}¦æ¹ê®ÉÀ³¥Î 349
15.5 ¹ê®ÉVS.§Ö³t¡G¦p¦ó¿ï¾Ü 351
²Ä16³¹ ©ö¤_¨Ï¥Î 353
16.1 ²³æ¬O¤°¤\ 353
16.2 API³]­pªºRusty·Ç«h 353
16.3 ­×¾ãMandelbrot¶°¦X 354
²Ä17³¹ ¥¼¨Óªº¨R¬ð 357
17.1 ´¿¸gªºCPU§Þ³N¤£¥Nªí¥¼¨Ó 357
17.1.1 ³æ³B²z¾¹Uber Alles 358
17.1.2 ¦h½uµ{Mania 359
17.1.3 §ó¦hÃþ¦üªº³õ´º 359
17.1.4 ¼²¤W¤º¦sùÙ 359
17.2 ¨Æ°È¤º¦s 360
17.2.1 ¥~³¡¥@¬É 361
17.2.2 ¶iµ{­×§ï 364
17.2.3 ¦P¨B 367
17.2.4 °Q½× 370
17.3 µw¥ó¨Æ°È¤º¦s 371
17.3.1 HTM»PÂê¬Û¤ñªºÀu¶Õ 372
17.3.2 HTM»PÂê¬Û¤ñªº¦H¶Õ 373
17.3.3 HTM»P¼W±j¦ZªºÂê¾÷¨î¬Û¤ñªº¦H¶Õ 379
17.3.4 HTM³Ì¾A¦Xªº³õ¦X 380
17.3.5 ¼ç¦bªºÅͧ½ªÌ 380
17.3.6 µ²½× 382
17.4 ¦}¦æ¨ç¼Æ¦¡½sµ{ 383
ªþ¿ýA ­«­n°ÝÃD 385
A.1 ¡§After¡¨ªº§t¸q¬O¤°¤\ 385
A.2 ¡§¦}µo¡¨©M¡§¦}¦æ¡¨¤§¶¡ªº®t²§¬O¤°¤\ 388
A.3 ²{¦b¬O¤°¤\®É¶¡ 389
ªþ¿ýB ¦P¨B­ì»y 391
B.1 ²Õ´©Mªì©l¤Æ 391
B.1.1 smp_init() 391
B.2 ½uµ{³Ð«Ø¡B¾P·´¤Î±±¨î 392
B.2.1 create_thread() 392
B.2.2 smp_thread_id() 392
B.2.3 for_each_thread() 392
B.2.4 for_each_running_thread() 392
B.2.5 wait_thread() 393
B.2.6 wait_all_threads() 393
B.2.7 ¥Îªk¥Ü¨Ò 393
B.3 Âê 394
B.3.1 spin_lock_init() 394
B.3.2 spin_lock() 394
B.3.3 spin_trylock() 394
B.3.4 spin_unlock() 394
B.3.5 ¥Îªk¥Ü¨Ò 395
B.4 ¨C½uµ{Åܶq 395
B.4.1 DEFINE_PER_THREAD() 395
B.4.2 DECLARE_PER_THREAD() 395
B.4.3 per_thread() 395
B.4.4 __get_thread_var() 396
B.4.5 init_per_thread() 396
B.4.6 ¥Îªk¥Ü¨Ò 396
B.5 ©Ê¯à 396
ªþ¿ýC ¬°¤°¤\»Ý­n¤º¦s«Ì»Ù 397
C.1 ½w¦sµ²ºc 397
C.2 ½w¦s¤@­P©Ê¨óij 399
C.2.1 MESIª¬ºA 399
C.2.2 MESI¨óij®ø®§ 400
C.2.3 MESIª¬ºA¹Ï 400
C.2.4 MESI¨óij¥Ü¨Ò 401
C.3 ¦sÀx¾É­P¤£¥²­nªº°±¹y 402
C.3.1 ¦sÀx½w¨R 403
C.3.2 ¦sÀxÂàµo 403
C.3.3 ¦sÀx½w¨R°Ï¤Î¤º¦s«Ì»Ù 404
C.4 ¦sÀx§Ç¦C¾É­P¤£¥²­nªº°±¹y 406
C.4.1 ¨ÏµL®Ä¶¤¦C 406
C.4.2 ¨ÏµL®Ä¶¤¦C¤Î¨ÏµL®ÄÀ³µª 407
C.4.3 ¨ÏµL®Ä¶¤¦C¤Î¤º¦s«Ì»Ù 407
C.5 Ū©M¼g¤º¦s«Ì»Ù 409
C.6 ¤º¦s«Ì»Ù¥Ü¨Ò 410
C.6.1 ¶Ã§ÇÅé¨tµ²ºc 410
C.6.2 ¥Ü¨Ò1 411
C.6.3 ¥Ü¨Ò2 412
C.6.4 ¥Ü¨Ò3 412
C.7 ¯S©wªº¤º¦s«Ì»Ù«ü¥O 413
C.7.1 Alpha 414
C.7.2 AMD64 417
C.7.3 ARMv7-A/R 417
C.7.4 IA64 418
C.7.5 PA-RISC 418
C.7.6 POWER / Power PC 418
C.7.7 SPARC RMO¡BPSO¤ÎTSO 419
C.7.8 x86 420
C.7.9 zSeries 421
C.8 ¤º¦s«Ì»Ù¬O¥ÃùÚªº¶Ü 421
C.9 ¹ïµw¥ó³]­pªÌªº«Øij 422

ªþ¿ýD ¤p°ÝÃDµª®× 423
D.1 ¦p¦ó¨Ï¥Î¥»®Ñ 423
D.2 ²¤¶ 424
D.3 µw¥ó©M¥¦ªº²ßºD 427
D.4 ¿ì¨Æªº®a¥ë 429
D.5 ­p¼Æ 433
D.6 ¹ï¤À³Î©M¦P¨Bªº³]­p 445
D.7 Âê 449
D.8 ¼Æ¾Ú©Ò¦³Åv 455
D.9 ©µ¿ð³B²z 456
D.10 ¼Æ¾Úµ²ºc 471
D.11 ÅçÃÒ 473
D.12 §Î¦¡ÅçÃÒ 478
D.13 ºî¦XÀ³¥Î 481
D.14 °ª¯Å¦P¨B 483
D.15 ¦}¦æ¹ê®É­pºâ 486
D.16 ©ö¤_¨Ï¥Î 487
D.17 ¥¼¨Óªº¨R¬ð 487
D.18 ­«­n°ÝÃD 490
D.19 ¦P¨B­ì»y 491
D.20 ¬°¤°¤\»Ý­n¤º¦s«Ì»Ù 491
ªþ¿ýE ³N»y 495
ªþ¿ýF ·PÁÂ 502
F.1 µû¼fªÌ 502
F.2 µw¥ó´£¨ÑªÌ 502
F.3 ­ì©l¥X³B 503
F.4 ¹Ïªí§@ªÌ 503
F.5 ¨ä¥LÀ°§U 505
§Ç¡G