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

LinuxÄÚºËNAPI»úÖÆ·ÖÎö

NAPI ÊÇ Linux ÉϲÉÓõÄÒ»ÖÖÌá¸ßÍøÂç´¦ÀíЧÂʵļ¼Êõ£¬ËüµÄºËÐĸÅÄî¾ÍÊDz»²ÉÓÃÖжϵķ½Ê½¶ÁÈ¡Êý¾Ý£¬¶ø´úÖ®ÒÔÊ×ÏȲÉÓÃÖжϻ½ÐÑÊý¾Ý½ÓÊյķþÎñ³ÌÐò£¬È»ºó POLL µÄ·½·¨À´ÂÖѯÊý¾Ý¡£Ëæ×ÅÍøÂçµÄ½ÓÊÕËٶȵÄÔö¼Ó£¬NIC ´¥·¢µÄÖжÏÄÜ×öµ½²»¶Ï¼õÉÙ£¬Ä¿Ç° NAPI ¼¼ÊõÒѾ­ÔÚÍø¿¨Çý¶¯²ãºÍÍøÂç²ãµÃµ½Á˹㷺µÄÓ¦Óã¬Çý¶¯²ã´ÎÉÏÒѾ­ÓÐ E1000 ϵÁÐÍø¿¨£¬RTL8139 ϵÁÐÍø¿¨£¬3c50X ϵÁеÈÖ÷Á÷µÄÍøÂçÊÊÅäÆ÷¶¼²ÉÓÃÁËÕâ¸ö¼¼Êõ£¬¶øÔÚÍøÂç²ã´ÎÉÏ£¬NAPI ¼¼ÊõÒѾ­ÍêÈ«±»Ó¦Óõ½ÁËÖøÃûµÄ netif_rx º¯ÊýÖм䣬²¢ÇÒÌṩÁËרÃÅµÄ POLL ·½·¨--process_backlog À´´¦ÀíÂÖѯµÄ·½·¨£»¸ù¾ÝʵÑéÊý¾Ý±íÃ÷²ÉÓÃNAPI¼¼Êõ¿ÉÒÔ´ó´ó¸ÄÉÆ¶Ì³¤¶ÈÊý¾Ý°ü½ÓÊÕµÄЧÂÊ£¬¼õÉÙÖжϴ¥·¢µÄʱ¼ä¡£
µ«ÊÇ NAPI ´æÔÚһЩ±È½ÏÑÏÖØµÄȱÏÝ£º
1£®              ¶ÔÓÚÉϲãµÄÓ¦ÓóÌÐò¶øÑÔ£¬ÏµÍ³²»ÄÜÔÚÿ¸öÊý¾Ý°ü½ÓÊÕµ½µÄʱºò¶¼¿ÉÒÔ¼°Ê±µØÈ¥´¦ÀíËü£¬¶øÇÒËæ×Å´«ÊäËÙ¶ÈÔö¼Ó£¬ÀۼƵÄÊý¾Ý°ü½«»áºÄ·Ñ´óÁ¿µÄÄڴ棬¾­¹ýʵÑé±íÃ÷ÔÚ Linux ƽ̨ÉÏÕâ¸öÎÊÌâ»á±ÈÔÚ FreeBSD ÉÏÒªÑÏÖØÒ»Ð©£»
2£®              ÁíÍâÒ»¸öÎÊÌâÊǶÔÓÚ´óµÄÊý¾Ý°ü´¦Àí±È½ÏÀ§ÄÑ£¬Ô­ÒòÊÇ´óµÄÊý¾Ý°ü´«Ë͵½ÍøÂç²ãÉϵÄʱºòºÄ·ÑµÄʱ¼ä±È¶ÌÊý¾Ý°ü³¤ºÜ¶à£¨¼´Ê¹ÊDzÉÓà DMA ·½Ê½£©£¬ËùÒÔÕýÈçÇ°ÃæËù˵µÄÄÇÑù£¬NAPI ¼¼ÊõÊÊÓÃÓÚ¶Ô¸ßËÙÂʵĶ̳¤¶ÈÊý¾Ý°üµÄ´¦Àí¡£
ʹÓà NAPI ÏȾöÌõ¼þ£º
Çý¶¯¿ÉÒÔ¼ÌÐøÊ¹ÓÃÀ쵀 2.4 Äں˵ÄÍøÂçÇý¶¯³ÌÐò½Ó¿Ú£¬NAPI µÄ¼ÓÈë²¢²»»áµ¼ÖÂÏòǰ¼æÈÝÐÔµÄɥʧ£¬µ«ÊÇ NAPI µÄʹÓÃÖÁÉÙÒªµÃµ½ÏÂÃæµÄ±£Ö¤£º
1.         ҪʹÓà DMA µÄ»·ÐÎÊäÈë¶ÓÁУ¨Ò²¾ÍÊÇ ring_dma£¬Õâ¸öÔÚ 2.4 Çý¶¯ÖйØÓÚ Ethernet µÄ²¿·ÖÓÐÏêϸµÄ½éÉÜ£©£¬»òÕßÊÇÓÐ×ã¹»µÄÄÚ´æ¿Õ¼ä»º´æÇý¶¯»ñµÃµÄ°ü¡£
2.         ÔÚ·¢ËÍ/½ÓÊÕÊý¾Ý°ü²úÉúÖжϵÄʱºòÓÐÄÜÁ¦¹Ø¶Ï NIC ÖжϵÄʼþ´¦Àí£¬²¢ÇÒÔÚ¹Ø¶Ï NIC ÒԺ󣬲¢²»Ó°ÏìÊý¾Ý°ü½ÓÊÕµ½ÍøÂçÉ豸µÄ»·Ðλº³åÇø£¨ÒÔϼò³Æ rx-ring£©´¦Àí¶ÓÁÐÖС£
NAPI ¶ÔÊý¾Ý°üµ½´ïµÄʼþµÄ´¦Àí²ÉÓÃÂÖѯ·½·¨£¬ÔÚÊý¾Ý°ü´ïµ½µÄʱºò£¬NAPI ¾Í»áÇ¿ÖÆÖ´ÐÐdev->poll ·½·¨¡£¶øºÍ²»ÏñÒÔǰµÄÇý¶¯ÄÇÑùΪÁ˼õÉÙ°üµ½´ïʱ¼äµÄ´¦ÀíÑÓ³Ù£¬Í¨³£²ÉÓÃÖжϵķ½·¨À´½øÐС£
E1000Íø¿¨Çý¶¯³ÌÐò¶ÔNAPIµÄÖ§³Ö£º
ÉÏÃæÒѾ­½éÉܹýÁË£¬Ê¹ÓÃNAPIÐèÒªÔÚ±àÒëÄں˵ÄʱºòÑ¡


Ïà¹ØÎĵµ£º

Èý¿î Linux ϵÄÃâ·Ñ×ÀÃæ¼¶É±¶¾Èí¼þ(ͼ)


ÓÉÓÚ Linux Á¼ºÃµÄÓû§È¨ÏÞ¹ÜÀíÌåϵ£¬²¡¶¾ÍùÍùÊÇ Linux ϵͳ¹ÜÀíÔ±×îºó²ÅÐèÒª¿¼ÂǵÄÎÊÌâ¡£ÒÔÍù£¬Linux ÉϵÄɱ¶¾Èí¼þÖ÷ÒªÊÇΪÆóÒµµÄÓʼþºÍÎļþ·þÎñÆ÷ËùÉè¼ÆµÄ¡£Èç½ñ£¬Ëæ×Å Linux ×ÀÃæÓû§ÊýÁ¿µÄÔö³¤£¬×ÀÃæÓû§ÔÚÊÜÒæÓÚ Linux ϵͳ¶Ô²¡¶¾½ÏÇ¿µÄÌìÈ»ÃâÒßÁ¦µÄͬʱ£¬Ò²ÐèҪɱ¶¾Èí¼þÇåÀí´ÓÍøÂç»òUÅÌ´øÀ´µÄWIndows²¡¶¾¡£¾¡¹ÜÄÇЩ ......

Linux AIO

LinuxµÄI/O»úÖÆ¾­ÀúÁËһϼ¸¸ö½×¶ÎµÄÑݽø£º
1. ͬ²½×èÈûI/O: Óû§½ø³Ì½øÐÐI/O²Ù×÷£¬Ò»Ö±×èÈûµ½I/O²Ù×÷Íê³ÉΪֹ¡£
2. ͬ²½·Ç×èÈûI/O: Óû§³ÌÐò¿ÉÒÔͨ¹ýÉèÖÃÎļþÃèÊö·ûµÄÊôÐÔO_NONBLOCK£¬I/O²Ù×÷¿ÉÒÔÁ¢¼´·µ»Ø£¬µ«ÊDz¢²»±£Ö¤I/O²Ù×÷³É¹¦¡£
3. Ò첽ʼþ×èÈûI/O: Óû§½ø³Ì¿ÉÒÔ¶ÔI/Oʼþ½øÐÐ×èÈû£¬µ«ÊÇI/O²Ù×÷²¢²»×èÈû¡£Í¨¹ýse ......

LinuxϱàÒ붯̬¿â£¬¾²Ì¬¿â£¬ÒÔ¼°µ÷ÓÃ

so_test.h£º
#include
#include
void test_a();
void test_b();
void test_c();
test_a.c£º
#include "so_test.h"
void test_a()
{
printf("this is in test_a...\n");
}
test_b.c£º
#include "so_test.h"
void test_b()
{
printf("this is in test_b...\n");
......

LinuxÇý¶¯µÄ±àÒëÓë¼ÓÔØ

±àÒëºÍ¼ÓÔØ
±¾Õ¿ªÍ·µÄ "hello world" Àý×Ó°üº¬ÁËÒ»¸ö¼ò¶ÌµÄ½¨Á¢²¢¼ÓÔØÄ£¿éµ½ÏµÍ³ÖÐÈ¥µÄÑÝʾ. µ±È», Õû¸ö¹ý³Ì±ÈÎÒÃÇĿǰ¿´µ½µÄ¶à. ±¾½ÚÌṩÁ˸ü¶àϸ½Ú¹ØÓÚÒ»¸öÄ£¿é×÷ÕßÈçºÎ½«Ô´Âëת»»³ÉÄÚºËÖеÄÔËÐеÄ×Óϵͳ.
2.4.1. ±àÒëÄ£¿é
µÚÒ»²½, ÎÒÃÇÐèÒª¿´Ò»ÏÂÄ£¿éÈçºÎ±ØÐë±»½¨Á¢. Ä£¿éµÄ½¨Á¢¹ý³ÌÓëÓû§¿Õ¼äµÄÓ¦ÓóÌÐòµÄ½ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ