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

LinuxµÄÄÚºËÑÓ³Ùº¯Êý

µ±ÄÚºËÐèÒªµÈ´ýÒ»¸ö±È½Ï¶ÌµÄʱ¼ä¼ä¸ôʱ£¬±È·½Ëµ£ºÓÐʱºòÉ豸Çý¶¯Æ÷»áµÈ´ýÔ¤Ïȶ¨ÒåµÄÈô¸É¸ö΢ÃîµÄʱ¼äÖ±µ½Ó²¼þÍê³ÉijЩ²Ù×÷¡£ÓÉÓÚ¶¯Ì¬¶¨Ê±Æ÷ͨ³£ÓкܴóµÄÉèÖÿªÏúºÍÒ»¸öÏ൱´óµÄ×îСµÈ´ýʱ¼ä£¨1ms£©£¬ËùÒÔÉ豸Çý¶¯Æ÷ʹÓÃËü»áºÜ²»·½±ã¡£
ÔÚÕâЩÇé¿öÏ£¬ÄÚºËʹÓÃudelay£¨£©ºÍndelay£¨£©º¯Êý£ºÇ°Õß½ÓÊÕÒ»¸ö΢Ãî¼¶µÄʱ¼ä¼ä¸ô×÷ΪËüµÄ²ÎÊý£¬²¢ÔÚÖ¸¶¨µÄÑÓ³Ù½áÊøºó·µ»Ø£»¶øºóÕßËù½ÓÊÕµÄÖ¸¶¨ÑӳٵIJÎÊýÊÇÄÉÃë¼¶µÄ£¬Í¬ÑùÔÚÖ¸¶¨µÄÑÓ³Ù½áÊøºó·µ»Ø¡£
udelay£¨£©ºÍndelay£¨£©ÕâÁ½¸öº¯Êý¶¨ÒåÈçÏ£º
void udelay(unsigned long usecs)
{
    unsigned long loops;
    loops = (usecs*HZ*current_cpu_data.loops_per_jiffy)/1000000;
    cur_timer->delay(loops);
}
void ndelay(unsigned long nsecs)
{
    unsigned long loops;
    loops = (nsecs*HZ*current_cpu_data.loops_per_jiffy)/1000000000;
    cur_timer->delay(loops);
}
    ÕâÁ½¸öº¯Êý¶¼ÊÇÒÀÀµÓëcur_timer¶¨Ê±Æ÷¶ÔÏóµÄdelay·½·¨£¬Ëü½ÓÊÕ“loops”ÖеÄʱ¼ä¼ä¸ô×÷Ϊ²ÎÊý¡£Ã¿Ò»´Î“loop”¾«È·µÄ³ÖÐøÊ±¼äÈ¡¾öÓÚcur_timerÉæ¼°µÄ¶¨Ê±Æ÷¶ÔÏó¡£
¡¾Èç¹ûcur_timerÖ¸Ïòtime_hpet¡¢time_pmtmrºÍtimer_tsc¶ÔÏó£¬ÄÇôһ´Î“loop”ʱ¼ä¶ÔÓ¦Ò»¸öCPUÑ­»·——Ò²¾ÍÊÇÁ½¸öÁ¬ÐøCPUʱÖÓÐźżäµÄʱ¼ä¼ä¸ô¡£¡¿
¡¾Èç¹ûcur_timerÖ¸Ïòtimer_none»òtimer_pit¶ÔÏó£¬ÄÇôһ´Î“loop”ʱ¼ä¶ÔÓ¦Ò»Ìõ½ô´ÕÖ¸ÁîÑ­»·ÔÚÒ»´Îµ¥¶ÀµÄÑ­»·ÖÐËù»¨·ÑµÄʱ¼ä¡£¡¿
     ʼ»¯½×¶Î£¬select_timer()ÉèÖúÃcur_timerºó£¬ÄÚºËͨ¹ýÖ´ÐÐcalibrate_delay()º¯ÊýÀ´¾ö¶¨Ò»¸ö½ÚÅÄÀïÓжàÉٴΓloop”¡£Õâ¸öÖµ±»±£´æÔÚcurrent_cpu_data.loops_per_jiffy±äÁ¿ÖУ¬ÕâÑùudelay()ºÍndelay()¾ÍÄܸù¾ÝËüÀ´°Ñ΢ÃîºÍÄÉÃëת»»³É“loops”¡£


Ïà¹ØÎĵµ£º

Linux Kernel API (2.6)

#protect share data
spin_lock/spin_unlock: protect the data during process context(and only at process context), and make sure your code bewteen lock/unlock is fast enough.There may deadlock if the same spin_lock is called at interrupt context.
spin_lock_irq/spin_unlock_irq: call it during interru ......

Linux»·¾³½ø³Ì¼äͨÐÅ


Linux»·¾³½ø³Ì¼äͨÐÅ£¨Ò»£©
¹ÜµÀ¼°ÓÐÃû¹ÜµÀ
Ö£ÑåÐË (mlinux@163.com)¹ú·À¿Æ´ó¼ÆËã»úѧԺ
2002 Äê 12 ÔÂ 11 ÈÕ
ÔÚ±¾ÏµÁÐÐòÖÐ×÷Õ߸ÅÊöÁË linux ½ø³Ì¼äͨÐŵļ¸ÖÖÖ÷ÒªÊֶΡ£ÆäÖйܵÀºÍÓÐÃû¹ÜµÀÊÇ×îÔçµÄ½ø³Ì¼äͨÐÅ»úÖÆÖ®Ò»£¬¹ÜµÀ¿ÉÓÃÓÚ¾ßÓÐÇ×Ôµ¹ØÏµ½ø³Ì¼äµÄͨÐÅ£¬ÓÐÃû¹ÜµÀ¿Ë·þÁ˹ܵÀûÓÐÃû×ÖµÄÏÞÖÆ£¬Òò´Ë£¬³ý¾ßÓйܵ ......

LinuxÏÂnginxµÄ°²×°

nginx("engine x")ÊÇÒ»¸ö¸ßÐÔÄܵÄHTTPºÍ·´Ïò´úÀí·þÎñÆ÷£¬ÊÇÓɶíÂÞ˹ÈËIgor Sysoev½¨Á¢µÄÏîÄ¿£¬³¬ÇáÁ¿¼¶£¬³¬¿ì´¦ÀíÄÜÁ¦¡£
ĿǰʹÓõÄnginx°æ±¾ÊÇ0.7.61
nginxµÄ¹ÙÑÔÍøÕ¾Îª£ºhttp://nginx.net/
ÏÂÔØµØÖ·Îª£ºhttp://sysoev.ru/nginx/nginx-0.7.61.tar.gz
nginxÐèÒªpcreµÄÖ§³Ö£¬ËùÒÔÎÒÃÇÐèÒªÏÂÔØpcre
pcreÈ«ÃûΪPerl Compa ......

linux關ÓÚlikely與unlikely

Ô­À´likelyºÍunlikelyÊÇÓÃÀ´±àÒëÓÅ»¯µÄ£¬Æäʵ¶¼¿ÉÒÔûÓС£ÎÒÃÇÖªµÀºÜ¶àcpuÀïÃæÓиæËß»º´æ£¬ÇÒÓÐÔ¤¶Á»úÖÆ£¬likelyºÍunlikely¾ÍÊÇÔö¼ÓÖ´ÐÐÅжÏÓï¾äʱµÄÃüÖÐÂÊ¡£
Èç¹ûÊÇif(lilely(a))£¬ËµÃ÷aÌõ¼þ·¢ÉúµÄ¿ÉÄÜÐÔ´ó£¬ÄÇôaÎªÕæµÄÓï¾äÔÚ±àÒë³É¶þ½øÖƵÄʱºò¾ÍÓ¦¸Ã½ô¸úÔÚÇ°Ãæ³ÌÐòµÄºóÃæ£¬ÕâÑù¾Í»á±»cacheÔ¤¶ÁÈ¡½øÈ¥£¬Ôö¼Ó³ÌÐòÖ´ÐÐ ......

linux֪ʶ

ѧϰLinuxÖÕ¶ËÃüÁî
linuxĿ¼¼Ü¹¹
/   ¸ùĿ¼
/bin    ³£ÓõÄÃüÁî binary file µÄÄ¿錄
/boot   ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ (kernel) ÔÚÄÚ
     /boot/grub/menu.lst   GRUBÉèÖÃ
     /boot/vmlinuz & ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ