ÔÚlinuxÖеÄlikelyºÍunlikely
ÔÚlinuxÖеÄlikelyºÍunlikely
0
ÍÆ¼ö
ÔÚlinuxÖÐÅжÏÓï¾ä¾³£»á¿´µ½likelyºÍunlikely£¬ÀýÈ磺
if(likely(value)){
}
else{
}
¼òµ¥´Ó±íÃæÉÏ¿´if(likely(value)) == if(value)£¬if(unlikely(value)) == if(value)¡£
ÕâÁ½¸öºê¶Ô³ÌÐòÔËÐнá¹ûûÓÐÓ°Ï죬ֻÊÇÓÃÓÚÌá¸ß³ÌÐòЧÂÊ¡£ÆäʵÏÖºÍgcc±àÒëÆ÷ÃÜÇÐÏà¹Ø¡£
¾ßÌåµã˵£¬¾ÍÊÇÈç¹ûÄã¾õµÃ³ÌÐòÔËÐÐʱºòÒ»°ãsndcmd|=0µÄ¿ÉÄÜÐԱȽϴó£¬ÄÇô¾Í¼ÓÉÏlikelyµÄmacro£»·´Ö®Ôò¼Óunlikely¡£
Ò²¾ÍÊÇlikelyºÍunlikelyÊÇÒ»ÑùµÄ£¬µ«ÊÇʵ¼ÊÉÏÖ´ÐÐÊDz»Í¬µÄ£¬¼ÓlikelyµÄÒâʶÊÇvalueµÄÖµÎªÕæµÄ¿ÉÄÜ
ÐÔ¸ü´óһЩ£¬ÄÇôִÐÐifµÄ»ú»á´ó£¬¶øunlikely±íʾvalueµÄֵΪ¼ÙµÄ¿ÉÄÜÐÔ´óһЩ£¬Ö´ÐÐelse»ú»á´óһЩ¡£
¼ÓÉÏÕâÖÖÐÞÊΣ¬±àÒë³É¶þ½øÖÆ´úÂëʱlikelyʹµÃifºóÃæµÄÖ´ÐÐÓï¾ä½ô¸ú×ÅÇ°ÃæµÄ³ÌÐò£¬unlikelyʹµÃelseºó
ÃæµÄÓï¾ä½ô¸ú×ÅÇ°ÃæµÄ³ÌÐò£¬ÕâÑù¾Í»á±»cacheÔ¤¶ÁÈ¡£¬Ôö¼Ó³ÌÐòµÄÖ´ÐÐËÙ¶È£¬likelyºÍunlikelyµÄʵÏÖÔÚ
include/linux/compiler.hÖУº
9 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96
10 #define __builtin_expect(x, expected_value) (x)
11 #endif
12
13 #define likely(x) __builtin_expect((x),1)
14 #define unlikely(x) __builtin_expect((x),0)
__builtin_expectÊÇgccµÄÒ»¸öÔ¤´¦ÀíÃüÁÆä½âÊÍÈçÏ£º
long __builtin_expect (long exp, long c)
You may use __builtin_expect to provide the compiler with branch prediction
information. In general, you should prefer to use actual profile feedback for this
(‘-fprofile-arcs’), as programmers are notoriously bad at predicting how their
programs actually perform. However, there are applications in which this data is
hard to collect.
The return value is the value of exp, which should be an integral expression. The
value of c must be a compile-time constant. The semantics of the built-in are that it
is expected that exp == c. For example:
if (__builtin_expect (x, 0))
foo ();
would indicate that we do not expect to call foo, since we expect x to be zero. Since
you are limited to i
Ïà¹ØÎĵµ£º
³¤ÆÚ¶Ôןڰ׵ÄÖÕ¶Ë£¬¿ÉÄÜ»á¾õµÃ¿ÝÔï¡£ÆäʵBashÔÊÐí×Ô¶¨Òå²ÊÉ«µÄÃüÁîÌáʾ·û¡¢²ÊÉ«µÄgrepÏÔʾ¡¢²ÊÉ«µÄmanÏÔʾ¡¢²ÊÉ«µÄlsÏÔʾµÈµÈ¡£
ÎÒÃÇÖ»ÐèÒª±à¼¸öÈË»òÕßÈ«¾ÖµÄshellÅäÖÃÎļþ¾Í¿ÉÒÔ¹¹½¨×Ô¼ºµÄ¶ÀÌØµÄ¶à×˶à²ÊµÄshell¡£ÆäÖУ¬Óû§¸öÈËÅäÖÃÎļþÊÇ~/.bashrc£¬È«¾ÖÅäÖÃÎļþÊÇ/etc/bash.bashrc£¨ubuntu£©»òÕß/etc/bashrc£¨Fedor ......
±¾ÎÄÏêϸÃèÊöÁËÔÚLinux²Ù×÷ϵͳÉϰ²×°ºÍÅäÖÓ×ÔÊÊӦͨÐÅ»·¾³(ACE)”µÄ¹ý³ÌºÍ×¢ÒâÊÂÏî¡£zCkLinuxÁªÃË
ÎÄÖеÄÃèÊö»ùÓÚRedHat Linux 9²Ù×÷ϵͳºÍACE 5.4°æzCkLinuxÁªÃË
×¼±¸¹¤×÷£ºzCkLinuxÁªÃË
1.È·±£ÄãµÄLinux²Ù×÷ϵͳµÄ¿ª·¢»·¾³(gcc¡¢make……)ÊÇÍêÕûÇÒ¿ÉÓõġ£zCkLinuxÁªÃË
2.ÔÚ°²×°ACEµÄ¹ý³ÌÖÐ ......
1.°²×°JDK
Ê×ÏÈ£¬ÏÂÔØ×îа汾µÄLinux ƽ̨µÄJDK£¬½¨ÒéÏÂÔØRPM×Ô½âѹ¸ñʽµÄÀýÈç±¾ÎÄËùÓÃjdk-1_5_0_06-linux-i586-rpm.bin£¬ÏÈÏÂÔØÎļþµ½/tmp£¬´ò¿ªÖÕ¶Ë£¬ÊäÈë:
cd /tmp
su
ÊäÈërootÃÜÂë
Ö±½ÓÖ´ÐÐÎļþ£º
./jdk-1_5_0_06-linux-i586-rpm.bin
È»ºó»á³öÏÖsunµÄÐÒ飨Sun Microsystems, Inc. Binary Code License Agreeme ......
1¡¢Bios¡¡Security
Ò»¶¨Òª¸øBiosÉèÖÃÃÜÂ룬ÒÔ·Àͨ¹ýÔÚBiosÖиıäÆô¶¯Ë³Ðò£¬¶ø¿ÉÒÔ´ÓÈíÅÌÆô¶¯¡£ÕâÑù¿ÉÒÔ×èÖ¹±ðÈËÊÔͼÓÃÌØÊâµÄÆô¶¯ÅÌÆô¶¯ÄãµÄϵͳ£¬»¹¿ÉÒÔ×èÖ¹±ðÈ˽øÈëBios¸Ä¶¯ÆäÖеÄÉèÖ㨱ÈÈçÔÊÐíͨ¹ýÈíÅÌÆô¶¯µÈ£©¡£
2¡¢LILO¡¡Security
ÔÚ"/etc/lilo.conf"ÎļþÖмÓÈëÏÂÃæÈý¸ö²ÎÊý£ºtime-out,restricted,password¡£ÕâÈý¸ö ......
ÃæÊÔʱһÔٵر»Îʵ½½ø³Ì¼äͨÐŵÄÇé¿ö£¬¶øÎÒµÄÀí½âһֱͣÁôÔÚ¸ÅÄîÉϺÍÃû´ÊÉÏ£¬±ØÐëÒª×öµãʵÑé¼ÓÉîÀí½â¡£
IPC:Interprocess communication¡£ÓÐЩIPCµÄ·½·¨²»½ö¿ÉÒÔÓÃÓÚÏàͬÖ÷»ú£¬Ò²¿ÉÒÔÓÃÓÚ²»Í¬Ö÷»ú£¬ÈçsocketsºÍSTREAMS¡£
¾µäIPCÖ®Ò»£ºpipes(¹ÜµÀ)
,ʹÓÃ×î¹ã·º£¬¾ßÓÐÇ×Ôµ¹ØÏµ
µÄ½ø³Ì¼ä²ÅÄÜʹÓùܵÀ½øÐÐIPC¡£
ʹÓÃÁ˹ܵ ......