Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

linuxÄÚºË lock free


//
ͬ²½ÎÊÌ⣺
¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐèҪͬ²½£¬»¥³â¡£
ÔÚÖжϣ¬ÇÀÕ¼£¬¶àCPU£¬¶àÏß³Ì »·¾³ÏÂÓÈÆäÖØÒª¡£
ͬ²½·ÖΪ: ×èÈûͬ²½£¬·Ç×èÈûͬ²½
×èÈûͬ²½ÓÐÐí¶àʵÏÖ·½Ê½ÁË£ºmutex, semaphore. ×èÈûͬ²½Ê¹Óò»µ±¾Í¿ÉÄÜÔì³ÉËÀËø£¬»îËø£¬ÓÅÏȼ¶·´×ª¡£
·Ç×èÈûͬ²½£º£¨ÏÖÔÚÁ÷ÐÐÈýÖÖ£©
wait free ºÜÄÑʵÏÖ£¬Ë¼ÏëÊDZ¾Ïß³ÌÓÐÏÞ²½¾ÍÍê³É£¬ÍêÈ«²»ÓÃÀíÆäÓàÏ̡߳£
lock free È·±£¶à¸öÏß³ÌÖУ¬×ÜÓÐÒ»¸öÏß³ÌÊÇÔËÐÐ×ŵġ£ÔÚÈ«¾ÖÉÏ¿´¾ÍÊÇÕâ¸öÄ£¿éÒ»Ö±ÔËÐÐÖС£
obstruction free Ï̳߳ÖÐøÔËÐУ¬µ±·¢ÏÖ¹²ÏíÊý¾Ý±»¸Ä£¬»Ø¹ö¡£
²»Äѵóö Obstruction-free ÊÇ Non-blocking synchronization ÖÐÐÔÄÜ×î²îµÄ£¬¶ø Wait-free ÐÔÄÜÊÇ×îºÃµÄ£¬µ«ÊµÏÖÄѶÈÒ²ÊÇ×î´óµÄ£¬Òò´Ë Lock-free Ëã·¨¿ªÊ¼±»ÖØÊÓ£¬²¢¹ã·ºÔËÓÃÓÚµ±½ñÕýÔÚÔËÐеijÌÐòÖУ¬±ÈÈç linux Äںˡ£
linuxÄÚºËÖоÍÖ÷ÒªÊÇʵÏÖÁËlock free
Ò»°ã²ÉÓÃÔ­×Ó¼¶µÄ read-modify-write Ô­ÓïÀ´ÊµÏÖ Lock-Free Ëã·¨£¬¸ù¾Ý´ËÀíÂÛ£¬Òµ½çÔÚÔ­×Ó²Ù×÷µÄ»ù´¡ÉÏÌá³öÁËÖøÃûµÄ CAS£¨Compare - And - Swap£©²Ù×÷À´ÊµÏÖ Lock-Free Ëã·¨£¬Intel ʵÏÖÁËÒ»ÌõÀàËÆ¸Ã²Ù×÷µÄÖ¸Ácmpxchg8¡£
//Ô­Óï
CAS Ô­Ó︺Ôð½«Ä³´¦ÄÚ´æµØÖ·µÄÖµ£¨1 ¸ö×Ö½Ú£©ÓëÒ»¸öÆÚÍûÖµ½øÐбȽϣ¬Èç¹ûÏàµÈ£¬Ôò½«¸ÃÄÚ´æµØÖ·´¦µÄÖµÌæ»»ÎªÐÂÖµ£¬CAS ²Ù×÷αÂëÃèÊöÈçÏ£º
Çåµ¥ 1. CAS αÂë

 Bool CAS(T* addr, T expected, T newValue) 
 { 
      if( *addr == expected ) 
     { 
          *addr =  newValue; 
           return true; 
     } 
     else 
           return false; 
 } 
ÔÚʵ¼Ê¿ª·¢¹ý³ÌÖУ¬ÀûÓà CAS ½øÐÐͬ²½£¬´úÂëÈçÏÂËùʾ£º
Çåµ¥ 2. CAS ʵ¼Ê²Ù×÷

 do{ 
        ±¸·Ý¾ÉÊý¾Ý£»
        »ùÓÚ¾ÉÊý¾Ý¹¹ÔìÐÂÊý¾Ý£»
 }while(!CAS( ÄÚ´æµØÖ·£¬±¸·ÝµÄ¾ÉÊý¾Ý£¬ÐÂÊý¾Ý )) 
¾ÍÊÇÖ¸µ±Á½Õß½øÐбȽÏʱ£¬Èç¹ûÏàµÈ£¬ÔòÖ¤Ã÷¹²ÏíÊý¾ÝûÓб»Ð޸ģ¬Ìæ»»³ÉÐÂÖµ£¬È»ºó¼ÌÐøÍùÏÂÔËÐУ»Èç¹û²»ÏàµÈ£¬ËµÃ÷¹²ÏíÊý¾ÝÒѾ­±»Ð޸쬷ůúÒѾ­Ëù×öµÄ²Ù×÷£¬È»ºóÖØÐÂÖ´ÐиղŵIJÙ×÷¡£ÈÝÒ׿´³ö CAS ²Ù×÷ÊÇ»ùÓÚ¹²ÏíÊý¾Ý²»»á±»Ð޸ĵļÙÉ裬²ÉÓÃÁ


Ïà¹ØÎĵµ£º

ÉîÈëÀí½â Linux ÄÚºË

³ÉΪһÃû¾«Í¨ Linux ³ÌÐòÉè¼ÆµÄ¸ß¼¶³ÌÐòÔ±Ò»Ö±ÊDz»ÉÙÅóÓÑ×Î×ÎÒÔÇóµÄÄ¿±ê¡£¸ù¾ÝÖлªÓ¢²ÅÍøÍ³¼ÆÊý¾Ý£¬±±¾©µØÇø Linux ³ÌÐòÔ±ÔÂнƽ¾ùΪ Windows ³ÌÐòÔ±µÄ 1.8 ±¶¡¢Java ³ÌÐòÔ±µÄ 2.6 ±¶£¬ Linux ³ÌÐòÔ±ÄêÖÕ½±½ðƽ¾ùΪ Windows ³ÌÐòÔ±µÄ 2.9 ±¶¡£Í¬Ê±Êý¾ÝÏÔʾ£¬Ëæ×ʤ×÷¾­ÑéµÄÔö³¤£¬ Linux ³ÌÐòÔ±Óë Windows ³ÌÐòÔ±µÄÊÕÈë²î¾à» ......

[Ô­´´]linuxϵͳ£¬ltib¹¤¾ß¿ª·¢powerpc

¹¤×÷Ä¿±ê£º¿ª·¢°åÉϵÄÎļþϵͳͨ¹ýnfsÍøÂç¹ÒÔØ£¬µ÷ÊÔpowerpc 8315»ò5121
PC»ú»·¾³£º(1)ubuntu 8.04 linux OS  »òÕß (2)ÐéÄâ»úVMware£¨ubuntu 8.04£© + Windows XP OS
¿ª·¢°å£ºFreescaleµÄpowerpc¿ª·¢°å8315»ò5121µÈµÈ
PC»úÐèÒªµÄ´®¿Úµ÷ÊÔ¹¤¾ß:
£¨1£©ubuntu linux OS : minicom
£¨2£©Windows XP OS: ¸½¼ ......

linuxÃüÁîµÄÈ«³Æ~~~·

×ªÔØ×Ô£ºhttp://www.91linux.com/html/article/go/20090205/15634.html
bin = BINaries £¨binary)
/dev = devices
/etc = ETCetera
etcetera¸½¼ÓµÄÈË, ¸½¼ÓÎï, ÒÔ¼°ÆäËü, µÈµÈ
/lib = LIBrary
/proc = PROCesses
/sbin
= Superuser BINaries
/tmp = TeMPorary
/usr = Unix Shared
Resources
/var = ......

Linux±³ºóµÄÈË

1. LinusºÍBill
    ËÆºõÔÚÒ»Ò¹Ö®¼ä£¬Õâ¸öÃû×ÖͻȻ±äµÃͬÏó±È¶û¡£¸Ç´ÄÒ»ÑùµÄ¶úÊìÄÜÏê¡£µ«ÊDZȶû¡£¸Ç´Ä£¬ÄÄÅÂÉí¼ÛÓÐÊý²»Çå±¶µÄ°ÙÍòÃÀ½ð£¬Ò²ÓÀÔ¶²»»á±ä³ÉLinux Torvalds¡£Õâλ29ËêµÄ·ÒÀ¼ÈË£¬¼òµ¥¶øÇ¿´óµÄLinux²Ù×÷ϵͳµÄ´´ÔìÕߣ¬³¬Ô½Á˸ǴĵÄÉñ»°¡£Ò²Óд«ÎÅ˵¸Ç´ÄÊÇÒ»¸ö׿ԽµÄ³ÌÐòÔ±£¬µ«LinusÊÇ»õÕæ¼ÛʵµÄ¸ßÊ ......

Unix/Linux»·¾³³£Óÿâ¼ò½é

Ò»¸ö³ÌÐòµÄ¿ª·¢Àë²»¿ªÐí¶à¿âº¯ÊýµÄÖ§³Ö£¬¿ÉÊÇ¿âÈç´ËÖ®¶à£¬ÓпªÔ´Ãâ·ÑµÄÒ²ÓÐÊշѵġ£ºÜÏ£ÍûÊìϤ±à³ÌµÄǰ±²°Ñ×Ô¼ºµÄ¾­ÑéÕûÀíÏ£¬³£ÓõĿⶼ°üº¬ÄÄЩ¹¦ÄÜ¡£ÏÂÎÄÊÇÔÚÍøÉÏÕÒµÄÒ»¸öÀàËÆµÄ×ÊÁÏ¡£ÆÚ´ý¸ü¶à¸üÈ«µÄÄÚÈÝ¡£
---------------------------------------------------------------------------------------------------
¿´µ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ