¡¾LinuxÓ¦ÓÃÓëÇý¶¯¿ª·¢¡¿LinuxÄں˵ÄÅŶÓ×ÔÐýËø
ÅŶÓ×ÔÐýËø(FIFO Ticket Spinlock)ÊÇ Linux ÄÚºË 2.6.25 °æ±¾ÖÐÒýÈëµÄÒ»ÖÖÐÂÐÍ×ÔÐýËø£¬Ëü½â¾öÁË´«Í³×ÔÐýËøÓÉÓÚÎÞÐò¾ºÕùµ¼Öµē¹«Æ½ÐÔ”ÎÊÌâ¡£±¾ÎÄÏêϸ½éÉÜÁËÅŶÓ×ÔÐýËøµÄÉè¼ÆÔÀíºÍ¾ßÌåʵÏÖ£¬²¢Óë ²Ù×÷ϵͳ²ÉÓõÄÀàËÆ¼¼Êõ½øÐбȽϡ£×îºóÌÖÂÛ¿ÉÄܵÄÀ©Õ¹ÅŶÓ×ÔÐýËøµÄһЩÏë·¨¡£
ÒýÑÔ
×ÔÐýËø(Spinlock)ÊÇÒ»ÖÖ Linux ÄÚºËÖй㷺ÔËÓõĵײãͬ²½»úÖÆ¡£×ÔÐýËøÊÇÒ»ÖÖ¹¤×÷ÓÚ¶à´¦ÀíÆ÷»·¾³µÄÌØÊâµÄËø£¬ÔÚµ¥´¦Àí»·¾³ÖÐ×ÔÐýËøµÄ²Ù×÷±»Ì滻Ϊ¿Õ²Ù×÷¡£µ±Ä³¸ö´¦ÀíÆ÷ÉϵÄÄÚºËÖ´ÐÐÏß³ÌÉêÇë×ÔÐýËøÊ±£¬Èç¹ûËø¿ÉÓã¬Ôò»ñµÃËø£¬È»ºóÖ´ÐÐÁÙ½çÇø²Ù×÷£¬×îºóÊÍ·ÅËø£»Èç¹ûËøÒѱ»Õ¼Óã¬Ï̲߳¢²»»áתÈë˯Ãß״̬£¬¶øÊÇæµÈ´ý¸ÃËø£¬Ò»µ©Ëø±»ÊÍ·Å£¬ÔòµÚÒ»¸ö¸ÐÖª´ËÐÅÏ¢µÄÏ߳̽«»ñµÃËø¡£
³¤ÆÚÒÔÀ´£¬ÈËÃÇ×ÜÊǹØ×¢ÓÚ×ÔÐýËøµÄºÍ¸ßЧ£¬¶øºöÊÓÁË×ÔÐýËøµÄ“¹«Æ½”ÐÔ¡£´«Í³µÄ×ÔÐýËø±¾ÖÊÉÏÓÃÒ»¸öÕûÊýÀ´±íʾ£¬ÖµÎª1´ú±íËøÎ´±»Õ¼Óá£ÕâÖÖÎÞÐò¾ºÕùµÄ±¾ÖÊÌØµãµ¼ÖÂÖ´ÐÐÏß³ÌÎÞ·¨±£Ö¤ºÎʱÄÜÈ¡µ½Ëø£¬Ä³Ð©Ï߳̿ÉÄÜÐèÒªµÈ´ýºÜ³¤Ê±¼ä¡£Ëæ×żÆËã»ú´¦ÀíÆ÷¸öÊýµÄ²»¶ÏÔö³¤£¬ÕâÖÖ“²»¹«Æ½”ÎÊÌ⽫»áÈÕÒæÑÏÖØ¡£
ÅŶÓ×ÔÐýËø(FIFO Ticket Spinlock)ÊÇ Linux ÄÚºË 2.6.25 °æ±¾ÒýÈëµÄÒ»ÖÖÐÂÐÍ×ÔÐýËø£¬Ëüͨ¹ý±£´æÖ´ÐÐÏß³ÌÉêÇëËøµÄ˳ÐòÐÅÏ¢½â¾öÁË´«Í³×ÔÐýËøµÄ“²»¹«Æ½”ÎÊÌâ¡£ÅŶÓ×ÔÐýËøµÄ´úÂëÓÉ Linux Äں˿ª·¢Õß Nick Piggin ʵÏÖ£¬Ä¿Ç°Ö»Õë¶Ô x86 Ìåϵ½á¹¹(°üÀ¨ IA32 ºÍ x86_64)£¬ÏàÐźܿì¾Í»á±»ÒÆÖ²µ½ÆäËüƽ̨¡£
´«Í³×ÔÐýËøµÄʵÏÖÓë²»×ã
Linux ÄÚºË×ÔÐýËøµÄµ×²ãÊý¾Ý½á¹¹ raw_spinlock_t ¶¨ÒåÈçÏ£º
typedef struct {
unsigned int slock;
} raw_spinlock_t;
slockËäÈ»±»¶¨ÒåΪÎÞ·ûºÅÕûÊý£¬µ«ÊÇʵ¼ÊÉϱ»µ±×÷ÓзûºÅÕûÊýʹÓá£slockֵΪ1´ú±íËøÎ´±»Õ¼Óã¬ÖµÎª0»ò¸ºÊý´ú±íËø±»Õ¼Óᣳõʼ»¯Ê±slock±»ÖÃΪ1¡£
Ïß³Ìͨ¹ýºê spin_lock ÉêÇë×ÔÐýËø¡£Èç¹û²»¿¼ÂÇÄÚºËÇÀÕ¼£¬Ôò spin_lock µ÷Óà __raw_spin_lock º¯Êý£¬´úÂëÈçÏÂËùʾ£º
static inline void __raw_spin_lock(raw_spinlock_t *lock)
{
asm volatile("\n1:\t"
LOCK_PREFIX " ; decb %0\n\t"
"jns 3f\n"
"2:\t"
"rep;nop\n\t"
"cmpb $0,%0\n\t"
"jle 2b\n\t"
"jmp 1b\n"
"3:\n\t"
: "+m" (lock->
Ïà¹ØÎĵµ£º
VIM+GDB linux c/c++ µÄ±à³ÌÀûÆ÷
http://blog.csdn.net/jackyvan/archive/2010/01/15/5193693.aspx
ÆäʵVIMÒ²ÄܰѱàÒë µ÷ÊÔ¼¯³ÉÔÚÒ»Æð£¬ÏñÊÇÒ»¸öIDEÒ»Ñù¡£
Ê×ÏÈÏÖÔÚVIMµÄÔ´Â룬ÒòΪҪ¼¯³Éµ÷ÊÔ»·¾³µÄ»°ÐèÒªÖØÐ±àÒëVIM²ÅÐУ¬ËùÒÔÎÒÃDz»ÈçÖØÐ°²×°Ò»¸ö¡£
VIMµÄÏÖÔÚµØÖ·£º
http://www.vim.org/sources.php
È»ºóÏ ......
LinuxÉ豸Çý¶¯
µÚÒ»Õ É豸Çý¶¯¼ò½é
Çý¶¯³ÌÐòµÄ½ÇÉ«ÊÇÌṩ»úÖÆ£¬¶ø²»ÊDzßÂÔ¡£
±àдÄں˴úÂëÀ´´æÈ¡Ó²¼þ£¬µ«ÊDz»ÄÜÇ¿¼ÓÌØ±ðµÄ²ßÂÔ¸øÓû§(Ö»ÐèÒª±íÏÖ³öÓ²¼þµÄ×î»ù±¾µÄ¹¦ÄÜ£¬ÈçºÎʹÓÃÕâЩ¹¦ÄÜÓÖÓû§×Ô¼ºÑ¡Ôñ)
¶Ô²ßÂÔ͸Ã÷µÄÇý¶¯ÌØÕ÷£ºÖ§³Öͬ²½ºÍÒì²½²Ù×÷¡¢¿ÉÒÔ¶à´Î´ò¿ª¡¢ÀûÓÃÓ²¼þÈ«²¿ÄÜÁ¦¡¢Ã»ÓÐÈí¼þ²ãÌṩ²ßÂÔÏà¹Ø ......
windows²Ù×÷ϵͳºÜ°ÔµÀ£¬ÎҵĻú×ÓÉÏÔÀ´Êǰ²×°µÄRedHatµÄ²Ù×÷ϵͳ£¬ºóÀ´ÓÉÓÚҪװw2003µÄ²Ù×÷ϵͳ£¬×°ÉÏÁË·¢ÏÖ£¬linuxµÄÆô¶¯Ê±µÄÒý
µ¼½çÃæ±»windows¸²¸ÇÁË£¬Ò²¾ÍÊÇÎÞ·¨ÓÃlinuxϵͳÁË£¬×îºóÔÚGoogleÉÏÕÒµ½Á˽â¾ö·½°¸£º
1.²åÈëlinuxϵͳµÄµÚÒ»ÕŰ²×°ÅÌ£¬°´F5½øÈë¼±¾Èģʽ¡£
2.ÊäÈ룺linux rescue
3.ÊäÈë ......
int Daemon(char* szExecName = NULL)
{
int res = 0;
pid_t pc;
pc = fork();
if(pc < 0)
{
fprintf(stderr,"ERROR_Deamon()_fork(): failed!");
return -1;
}
else if(pc == 0) //sub process
{
}
else if( ......
ÔÚLinuxÖа²×°Èí¼þ¾³£»á³öÏÖȱÉÙÎļþ£¬¾ßÌå±íÏÖÔÚ±àÒëʱ³öÏÖȱÉÙÍ·Îļþ£¬¶øÔÚÓÃRPM°üʱ³öÏÖÒÀÀµ¹ØÏµ£¬¸ø´ó¼Ò·ÖÏíÏÂÎÒÔÚʹÓÃÖг£³öÏÖµÄȱÉÙÎļþ½â¾ö·½°¸
¡¡¡¡1¡¢¹ØÓÚrpmbuild
¡¡¡¡ÔÚʹÓÃ***.src.rpmʱ£¬ÐèÒªÓÃrpmbuildÃüÁÆä±äΪ***.rpm¸ñʽ£¬¶ørpmbuildµÄʹÓÃÊÇÐèÒªÏȰ²×°rpm-build….rpmÕâ¸ö°üµÄ¡£
¡¡¡¡2¡¢±àÒ ......