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

Linux ÏÂTCPÁ¬½Ó¹Ø±ÕÇé¿ö·ÖÎö

Ò»¡¢TCPÁ¬½Ó¹Ø±ÕµÄ¼¸ÖÖ·½Ê½£º
1¡¢“Õý³£”¹Ø±Õ£ºµ÷ÓÃclose()¹Ø±Õsocket¡¢Ã»closeµ«½ø³ÌÕý³£½áÊø(µ±È»ÕâÊDz»Ó¦¸ÃµÄ×ö·¨)¡¢½ø³Ìcoreµô¡¢ÔÚshellÃüÁîÐÐÖÐkillµô½ø³Ì£¬¶¼¿É³éÏó³É“Õý³£”¹Ø±Õ¡£ÒòΪ¼´Ê¹coreµô£¬ÄÚºËÒ²»áÂíÉϰïÓ¦ÓóÌÐò»ØÊÕ(close)socketÎļþÃèÊö·û¡£
     “Õý³£”¹Ø±Õ£¬Ä¬ÈÏÇé¿öÏÂ(·ÇĬÈϼ´ÉèÖÃLingerÏÂÃæ»á½éÉÜ)£¬¹Ø±Õ¶Ë¼´¿Í»§¶ËTCP²ã»á·¢FIN°ü£¬¶Ô¶Ë¼´·þÎñÆ÷TCP²ãÊÕµ½ºó£¬»ØACK£¬¿Í»§¶Ë½øÈëFIN_WAIT2״̬¡£´Ëʱ£¬TCPÖÕÖ¹Á¬½ÓµÄ4¸ö·Ö×éÖзþÎñÆ÷Ó¦¸Ã·¢µÄµÚ3¸ö·Ö×éFIN°ü£¬ÆäTCP²ãÊDz»»áÖ÷¶¯·¢µÄ£¬Ö»ÓзþÎñÆ÷¶Ësocket“Õý³£”¹Ø±Õ£¬²Å»á·¢³öÕâ¸öFIN°ü¡£ÖÁ´Ë£¬¿Í»§¶Ë½øÈëTIME_WAIT״̬¡£
2¡¢“·Ç”Õý³£¹Ø±Õ£º¿Í»§¶Ë±ÀÀ£ÁË£¬´Ëʱ¿Ï¶¨·¢²»³öFIN°üÁË(µ±È»À²£¬Äں˶¼Ã»»ú»á°ïÓ¦ÓóÌÐò»ØÊÕ×ÊÔ´ÁË)¡£ÕâÖÖÇé¿ö£¬·þÎñÆ÷¶ËÓÐÈçÏÂÁ½ÖÖÇé¿ö£º
    A¡¢·þÎñÆ÷sendÊý¾Ý£¬ÒòΪ¿Í»§¶ËÒѾ­±ÀÀ££¬·þÎñÆ÷ÊÕ²»µ½ACK×ÔÈ»»á²»Í£µÄÖØ´«¡£Ô´×Ô
        BerkeleyµÄÖØ´«»úÖÆ£¬ÖØ´«8´Î£¬Ïà¶ÔµÚÒ»´Î´«µÄ15·ÖÖÓºóÈÔûÊÕµ½ACK£¬Ôò·µ»Ø
        ETIMEDOUT»òEHOSTUNREAC´íÎó¡£Èç¹û·þÎñÆ÷²»Àí»áÕâ¸ö´íÎó£¬Ôٴε÷ÓÃsend£¬Ôò
        Á¢Âí·µ»ØBroken Pipe´íÎó¡£    
       ×¢£º15·ÖÖÓ³¬Ê±¿ÉÒÔÔÚ /proc/sys/net/ipv4/tcp_retries2 ÖÐÐÞ¸Ä
   B¡¢ ·þÎñÆ÷²»·¢ÈκÎÊý¾ÝÁË£¬ÄÇÖ»Óп¿Ó¦ÓòãÐÄÌø¼ì²â»úÖÆ»òKeepalive£¬À´·¢¾õTCP¶ÏÁ¬ÁË¡£
¶þ¡¢SO_LINGERÌ×½Ó¿ÚÑ¡Ïî
           A¡¢l_onoffÉèÖÃΪ0£¬ÕâÒ²ÊÇĬÈÏÇé¿ö£¬º¯Êýclose()ÊÇÁ¢¼´·µ»ØµÄ£¬È»ºóTCPÁ¬½ÓË«·½ÊÇͨ¹ý
                FIN¡¢ACK4·Ö×éÀ´ÖÕÖ¹TCPÁ¬½ÓµÄ¡£µ±È»,·¢ËÍ»º³åÇø»¹ÓÐÊý¾ÝµÄ»°£¬ÏµÍ³½«ÊÔ׎«ÕâЩÊý¾Ý
                ·¢Ë͵½¶Ô·½¡£
           B¡¢l_onoff·Ç0£¬l_lingerÉèÖÃ0£¬º¯Êýclose()Á¢¼´·µ»Ø£¬²¢·¢ËÍRSTÖÕÖ¹Á¬½Ó£¬·¢ËÍ»º³åÇøµÄÊý¾Ý¶ªÆú¡£
   &


Ïà¹ØÎĵµ£º

[תÌû]LinuxÇý¶¯¿ª·¢Ñ§Ï°µÄһЩ±ØÒª²½Öè

 1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......

LinuxϵͳµÄShell I/OÖØ¶¨ÏòÏê½â

I/OÖØ¶¨ÏòÏê½â¼°Ó¦ÓÃʵÀý
1¡¢ »ù±¾¸ÅÄÕâÊÇÀí½âºóÃæµÄ֪ʶµÄǰÌᣬÇëÎñ±ØÀí½â£©
a¡¢ I/OÖØ¶¨Ïòͨ³£Óë FDÓйأ¬shellµÄFDͨ³£Îª10¸ö£¬¼´ 0¡«9£»
b¡¢ ³£ÓÃFDÓÐ3¸ö£¬Îª0£¨stdin£¬±ê×¼ÊäÈ룩¡¢1£¨stdout£¬±ê×¼Êä³ö£©¡¢2£¨stderr£¬±ê×¼´íÎóÊä³ö£©£¬Ä¬ÈÏÓëkeyboard¡¢monitor¡¢monitorÓйأ»
c¡¢ Óà < À´¸Ä±ä¶Á½øµÄÊý ......

ºÜÊÜ»¶Ó­µÄLinux±Ê¼Ç

 
linuxĿ¼¼Ü¹¹
/   ¸ùĿ¼
/bin    ³£ÓõÄÃüÁî
binary file µÄÄ¿錄
/boot   ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ
(kernel) ÔÚÄÚ
     /boot/grub/menu.lst   GRUBÉèÖÃ
     /boot/vmlinuz   ÄÚºË
......

Linux Kernel Threads in Device Drivers

 Purpose
This examples shows how to create and stop a kernel thread.
The driver is implemented as a loadable module. In the init_module() routine five kernel threads are created. This kernel threads sleep one second, wake up, print a message and fall asleep again. On unload of the module (cle ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ