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

googleÔõÑùʹÓÃlinux£¨Äںˣ©


googleÔõÑùʹÓÃlinux£¨Äںˣ©
½ñÄêµÄlinuxÄں˿ª·¢´ó»áÉÏ£¬googleµÄ¿ª·¢ÈËÔ±Ò²ÉĮ̈×öÁËÃûΪ“how google use linux"µÄÑݽ²¡£ÎÒ¶·µ¨·­Òë×¢½âÒ»·¬——À¨ºÅÄÚΪע½â£¬»¶Ó­¶ÁÕ߸«Õý¡£
£¨Ç°Ã漸¶Î½²google¶Ôlinux kernel´úÂëµÄ¹ÜÀí¼°¸ú½ø£¬Æ«Ï¸Ë飬²»·­ÒëÁË£©
ÔÚgoogleΪlinux¼ÓÈëµÄ´úÂëÖУ¬3/4ÊǶÔÄں˺ËÐĵĸĶ¯£¬É豸Çý¶¯´úÂëÖ»ÊÇÆäÖÐÏà¶Ô½ÏСµÄÒ»²¿·Ö¡£
£¨linux·¢Õ¹µ½ÏÖÔÚÕâ¸ö½×¶Î£¬ÐèÒª¼ÓÈëµÄеÄÉ豸Çý¶¯ÒѾ­Ô½À´Ô½ÉÙÁË£©
Èç¹ûgoogleÒªÓëlinuxÉçÇøµÄºÏ×÷¿ª·¢£¬Äǽ«ÃæÁÙһϵÁÐÎÊÌâ¡£¸úÉÏlinux´úÂëµÄÖ÷¸ÉÌ«ÄÑ——ËüµÄ´úÂë¸üеÄÌ«¿ìÁË¡£ÔÚÒ»¸ö´óÐÍÏîÄ¿ À¿ª·¢Õ߶Բ¹¶¡µÄÌá½»¡¢ÖظÄȷʵÊǸöÎÊÌâ¡£Alan Cox¶Ô´ËµÄ»Ø´ðÊ®·Ö¼òµ¥£ºÈË×ÜÊÇÌ°µÃÎÞÑáµÄ£¬µ«ÓÐʱºò¾ÍÓ¦¸Ã¼òµ¥µÄ¶ÔËûÃÇ˵”²»“¡£
£¨Alan CoxÊÇlinux kernelµÄ¶þºÅ¹¦³¼£¬ÏÖÒѼÓÈëIntel¹«Ë¾¡£ÎÒ¾õµÃIntelÕâÑùµÄCPU¹«Ë¾ºÜÊʺÏÄں˿ª·¢Õߣ©
ÔÚCPUµ÷¶ÈÉÏ£¬google·¢ÏÖÏë¸ÄÓÃеÄcfs£¨“ÍêÈ«¹«Æ½µ÷¶È”£¬ÓÉCon KolivasyÔÚ2.6.23ÖмÓÈëÄںˣ©·Ç³£Âé·³¡£ÓÉÓÚÌ«Âé·³£¬google²»µÃ²»µ¹»ØÈ¥°ÑO(1) sheduler£¨2.6.23Ç°ÄÚºËʹÓõĵ÷¶ÈËã·¨£¬ÏëÖªµÀÕâ¶Î¾ßÌåµÄÀúÊ·£¬¿ÉÒԲο¼ÁíһƪcfsÎÄÕ£©ÒÆÖ²µ½2.6.26ÉÏ£¬Ò»ÇвÅÄÜÔËתÆðÀ´¡£Äں˶Ôsched_yield()ÓïÒåµÄ¸ü¸ÄÒ²Ôì³ÉÁËÂé ·³£¬ÓÈÆäµ±googleʹÓÃÓû§Ì¬Ëøʱ¡£¸ßÓÅÏȼ¶µÄÏ̻߳á¶Ô·þÎñÆ÷µÄ¸ºÔؾùºâ£¨ÕâÀïµÄ¸ºÔؾùºâÖ¸µÄÊÇһ̨·þÎñÆ÷É϶à¸öCPU¶Ô¶àÈÎÎñµÄ·ÖÅä´¦Àí£¬²»ÊÇÖ¸·Ö²¼Ê½£©Ôì³ÉÓ°Ï죬ÄÄÅÂÕâЩÏß³ÌÖ»ÊÇÔËÐк̵ܶÄʱ¼ä¡£¶ø¸ºÔؾùºâºÜÖØÒª£ºgoogleͨ³£ÔÚ16-32ºËµÄ·þÎñÆ÷ÉÏÅÜ5000¸öỊ̈߳¨ºÃ¹îÚܵÄÓ÷¨£¡£©¡£
ÔÚÄÚ´æ¹ÜÀíÉÏ£¬ÐµÄlinuxÄں˸ıäÁ˶ÔÔàÊý¾ÝµÄ¹ÜÀí£¬µ¼Ö³öÏÖÁË´óÁ¿Ö÷¶¯µÄд»Ø²Ù×÷£¨ÔàÊý¾ÝҪд»ØÓ²ÅÌ£©¡£ÏµÍ³ºÜÈÝÒ׳öÏÖÕâÖÖ¾Ö Ã棺kswaped£¨swap½ø³Ì£©»á²úÉú´óÁ¿Ð¡µÄI/O²Ù×÷£¬ÈûÂú¿éÉ豸µÄÇëÇó¶ÓÁУ¬½á¹ûÔì³É±ðµÄд»ØÎÞ·¨Íê³É£¨Ð´»Ø“¼¢¶ö”£©£»Õâ¸öÎÊÌâÒѾ­Í¨¹ý “per-DBIд»Ø»úÖÆ”²¹¶¡ÔÚ2.6.32ÄÚºËÖнâ¾öÁË¡£
£¨per-DBIµÄÖ÷ÒªÔ­ÀíÊÇ¿éÉ豸²»ÔÙÖ»ÓÐÒ»¸öµÈ´ý¶ÓÁУ¬¶øÊǶà¸ö£¬Ã¿¸ö“Ó²ÅÌÖá”Ò»¸ö¶ÓÁУ¬ÒòΪӲÅÌÖáÊÇÒ»¸öÓ²¼þÉϵÄÕæÕýµÄ¹¤×÷µ¥Î»¡£ÕâÑù£¬¶Ô×°Åä¶à¸öÓ²Å̵ķþÎñÆ÷»áÓкܺõÄI/OÐÔÄÜ¡£²»¹ýÎÒ¸öÈ˲²⣬Èç¹ûÄÜ°ÑkswapedµÄСÇëÇóºÏ²¢£¬ÊÇ·ñÒ²ÄÜÌá¸ßÐÔÄÜÄØ£¿£©
ÈçÉÏËùÊö£¬googleÔÚϵͳÖÐÆô¶¯ºÜ¶àÏ̗߳—²»Ñ°³£µÄÓ÷¨¡£ËûÃÇ·¢ÏÖÈç¹ûÏòÒ»¸ö´óµÄÏß³Ì


Ïà¹ØÎĵµ£º

linux¶¨Ê±Æ÷ÉèÖÃ

10.5.2 ¾«Í¨¶¨Ê±Æ÷ÉèÖÃ
º¯ÊýalarmÉèÖõĶ¨Ê±Æ÷Ö»Äܾ«È·µ½Ã룬¶øÒÔϺ¯ÊýÀíÂÛÉÏ¿ÉÒÔ¾«È·µ½Î¢Ã
#include  <sys/select.h>
#include  <sys/itimer.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval
*value, struct itimerval *ovalue ......

Linux GCC makeÎļþµÄд·¨4 ÇåÎú°æ

°üº¬3¸öÎļþ¼Ð£¬ºÍÒ»¸öÎļþMakefile
Ŀ¼×éÖ¯½á¹¹ÈçÏ£º
Makefile
inc/hello.h
main/main.c
src/hello.c
MakefileÎļþÔÚÍâÃ棬ÕâÑùÉú³ÉµÄ.oºÍ¿ÉÖ´ÐÐÎļþ¶¼ÔÚÍâÃ棬cleanÖ®ºó»áºÜ¸É¾»£¬½á¹¹ÇåÎú
ÎļþÄÚÈÝÈçÏ£º
Makefile(Ö®ËùÒÔÓôóд£¬ÒòΪmake¿ÉÒÔʶ±ðMakefileºÍmakefile£¬Óôóд¿ÉÒÔÏÊÃ÷һЩ)::
# String declar ......

LINUX FREEBSD Îļþϵͳ½á¹¹


Linux
/ LinuxÎļþϵͳµÄÈë¿Ú£¬Ò²ÊÇ´¦ÓÚ×î¸ßÒ»¼¶µÄĿ¼£»
/bin »ù´¡ÏµÍ³ËùÐèÒªµÄÄÇЩÃüÁîλÓÚ´ËĿ¼£¬Ò²ÊÇ×îСϵͳËùÐèÒªµÄÃüÁ±ÈÈç ls¡¢cp¡¢mkdirµÈÃüÁ¹¦ÄܺÍ/usr/binÀàËÆ£¬Õâ¸öĿ¼ÖеÄÎļþ¶¼ÊÇ¿ÉÖ´Ðеģ¬ÆÕͨÓû§¶¼¿ÉÒÔʹÓõÄÃüÁî¡£×öΪ»ù´¡ÏµÍ³ËùÐèÒªµÄ×î»ù´¡µÄÃüÁî¾ÍÊÇ·ÅÔÚÕâÀï¡£
/boot LinuxµÄÄں˼°Òýµ¼Ïµ ......

linux ×Ô¶¯¹ÒÔØÓ²ÅÌ

Ò».²é¿´ËùÓÐÓ²Å̵Äuuid
ls -all /dev/disk/by-uuid
longseakerµÄʵÀý
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 05434a61-8a78-4ee5- a5db-6a49079b9e3d -> ../../sda5
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 07D8-0104 -> ../../sda1
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 18201249-998a-4bb1 ......

LinuxÄں˵Äͬ²½»úÖÆ

ÔÚ½øÈëÕýÎÄÇ°ÏÈ¿´Ò»ÏÂÎÒÔÚÍøÉÏ¿´µ½µÄÌû×Ó£º
ÎÊ£ºatomic_set(v,i)µÄ¶¨ÒåÊÇÕâÑùµÄ:
#define atomic_set(v,i) v->counter=i
µ«ÊÇ£¬ÔÚi386Ìåϵ½á¹¹ÖУ¬²»ÄÜÖ±½Ó°ÑÒ»¸öÄÚ´æ²Ù×÷Êýͨ¹ýÒ»ÌõmovÖ¸Áî´æµ½ÁíÒ»¸öÄÚ´æ²Ù×÷ÊýÖУ¬
±ÈÈçÒª°Ñint32ÀàÐ͵ıäÁ¿ i ÉèÖÃ³É j£¬±ØÐë¾­¹ýÁ½ÌõÖ¸Áî:
mov eax,j
mov i,eax
Èç¹ûÕâÑùÀ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ