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

COW copy on write linux ¿ª²©À²¡£¹þ¹þ


½ñÌì¿´LinuxµÄÄÚÈÝʱÕÒµ½µÄ¡£ µ«ÔËÐÐʱ·¢ÏÖcopyʱµØÖ·ÒѾ­²»ÖµÏòͬһ¿éÄÚ´æÁË¡£ÎªÊ²Ã´ÄØ£¿£¿
STL±ê׼ģ°å¿âÖеÄstringÀ࣬ҲÊÇÒ»¸ö¾ßÓÐдʱ²Å¿½±´¼¼ÊõµÄÀà¡£C++ÔøÔÚÐÔÄÜÎÊÌâÉϱ»¹ã·ºµØÖÊÒɺÍÖ¸Ôð¹ý£¬ÎªÁËÌá¸ßÐÔÄÜ£¬STLÖеÄÐí¶àÀ඼²ÉÓÃÁËCopy-On-Write¼¼Êõ¡£Í¨³££¬stringÀàÖбØÓÐÒ»¸ö˽ÓгÉÔ±£¬ÆäÊÇÒ»¸öchar*£¬Óû§¼Ç¼´Ó¶ÑÉÏ·ÖÅäÄÚ´æµÄµØÖ·£¬ÆäÔÚ¹¹Ôìʱ·ÖÅäÄڴ棬ÔÚÎö¹¹Ê±ÊÍ·ÅÄÚ´æ¡£ÒòΪÊÇ´Ó¶ÑÉÏ·ÖÅäÄڴ棬ËùÒÔstringÀàÔÚά»¤Õâ¿éÄÚ´æÉÏÊǸñÍâСÐĵģ¬stringÀàÔÚ·µ»ØÕâ¿éÄÚ´æµØַʱ£¬Ö»·µ»Øconst char*£¬Ò²¾ÍÊÇÖ»¶ÁµÄ£¬Èç¹ûÄãҪд£¬ÄãÖ»ÄÜͨ¹ýstringÌṩµÄ·½·¨½øÐÐÊý¾ÝµÄ¸Äд¡£
main()
{
string str1 = "hello world";// string str1 ("hello world"); µ÷ÓõÄÊǹ¹Ô캯Êý
    string str2 = str1; // string str2 (str1); µ÷ÓõÄÊÇ¿½±´¹¹Ô캯Êý
//´Ëʱstr1,str2¹²ÏíÄÚ´æ
    printf ("Sharing the memory:\n");
    printf ("\tstr1's address: %x\n", str1.c_str() );
    printf ("\tstr2's address: %x\n", str2.c_str() );
    str1[1]='q';
    str2[1]='w';
/*µ±È»ÊÇÔÚ¹²Ïíͬһ¿éÄÚ´æµÄÀà·¢ÉúÄÚÈݸıäʱ£¬²Å»á·¢ÉúCopy-On-Write¡£±ÈÈçstringÀàµÄ[]¡¢=¡¢+=¡¢+¡¢²Ù×÷·û¸³Öµ£¬»¹ÓÐһЩstringÀàÖÐÖîÈçinsert¡¢replace¡¢appendµÈ³ÉÔ±º¯Êý¡£*/
    printf ("After Copy-On-Write:\n");
    printf ("\tstr1's address: %x\n", str1.c_str() );
    printf ("\tstr2's address: %x\n", str2.c_str() );
    return 0;
}
½á¹û£º
Sharing the memory:
        str1's address: 12ff3c //·Ç343be9£¿£¿£¿
        str2's address: 12ff14 //·Ç343be9
After Copy-On-Write:
        str1's address: 3407a9
        str2's address: 343be9
str1ºÍstr2´æ·ÅÊý¾ÝµÄµØÖ·ÊÇÒ»ÑùµÄ£¬¶øÔÚÐÞ¸ÄÄÚÈݺó£¬str1µÄµØÖ··¢ÉúÁ˱仯£¬¶østr2µÄµØÖ·»¹ÊÇÔ­À´µÄ¡£´ÓÕâ¸öÀý×Ó£¬ÎÒÃÇ¿ÉÒÔ¿´µ½stringÀàµÄCopy-On-Write¼¼Êõ¡£
ÒýÓüÆÊý¾ÍÊÇstringÀàÖÐдʱ²Å¿½±´µÄÔ­Àí£¬RefCnt±íʾʹÓù²ÏíÄÚ´æ¸ö¶ÔÏó¸öÊý¡£µ±¹²ÏíÄÚ´æ±»Ð޸ĵÄʱºò£¬²ÉÓÃÏÂÃ


Ïà¹ØÎĵµ£º

linux Ë«Íø¿¨·þÎñÆ÷NAT·þÎñ

debian lenny , my favorite
a. vim  /etc/sysctl.conf:
    modify net.ipv4.ip_forward = 1
b. flush route table:
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
c. open NAT services:
 &nb ......

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

Ò»¡¢TCPÁ¬½Ó¹Ø±ÕµÄ¼¸ÖÖ·½Ê½£º
1¡¢“Õý³£”¹Ø±Õ£ºµ÷ÓÃclose()¹Ø±Õsocket¡¢Ã»closeµ«½ø³ÌÕý³£½áÊø(µ±È»ÕâÊDz»Ó¦¸ÃµÄ×ö·¨)¡¢½ø³Ìcoreµô¡¢ÔÚshellÃüÁîÐÐÖÐkillµô½ø³Ì£¬¶¼¿É³éÏó³É“Õý³£”¹Ø±Õ¡£ÒòΪ¼´Ê¹coreµô£¬ÄÚºËÒ²»áÂíÉÏ°ïÓ¦ÓóÌÐò»ØÊÕ(close)socketÎļþÃèÊö·û¡£
     “Õý ......

Linux Ðźż¯ dzÎö

  LinuxÐźÅÓжàÖÖ˵·¨¡£Ò»¸ö½ø³Ì´´½¨Ò»¸öÐźÅÓÃÓÚ·¢Ë͸øÁíÍâÒ»¸ö½ø³Ì½Ð×ö·¢ËÍÒ»¸öÐźţ¬Äں˴´½¨Ò»¸öÐźŽÐ×öÉú³ÉÒ»¸öÐźţ¬½ø³Ì×Ô¼ºÏò×Ô¼º·¢ËÍÐźŽÐ×ö»½ÆðÒ»¸öÐźš£²»¹ýÎÒ¿´Ò²Ã»±ØÒªÕâôѧ¾¿Æø¡£
  Ðźż¯--signel set,Æäʵ¾ÍÊǽ«¶à¸öÐźŷÅÔÚ¼¯ºÏÖнøÐм¯ÖеĴ¦Àí¡£POSIX.1¶¨ÒåÁËsigset_tÒÔ°üº­Ò»¸öÐźż¯£ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ