LinuxÖеÄ"Á㿽±´"ÆÊÎö
http://blog.chinaunix.net/u/9861/showart_1890675.html
LinuxÖеÄ"Á㿽±´"ÆÊÎö
Zero Copy I: User-Mode Perspective
Author By Dragan Stancevic
Translated By Love. Katherine
(½âÊÍLinuxÖеÄ"Á㿽±´"ÌØÐÔ£¬ÎªÊ²Ã´ÓÐÓÃÒÔ¼°ºÎ´¦ÐèÒª¸Ä½øÖ®´¦)
Èç½ñ¼¸ºõÿ¸öÈ˶¼Ìý˵¹ýLinuxÖÐËùνµÄ"Á㿽±´"ÌØÐÔ£¬È»¶øÎÒ¾³£Åöµ½Ã»Óгä·ÖÀí½âÕâ¸ö
ÎÊÌâµÄÈËÃÇ¡£Òò´Ë£¬ÎÒ¾ö¶¨Ð´Ò»Ð©ÎÄÕÂÂÔ΢ÉîÈëµÄ½²ÊöÕâ¸öÎÊÌ⣬ϣÍûÄܽ«Õâ¸öÓÐÓõÄÌØ
ÐÔ½âÊÍÇå³þ¡£ÔÚ±¾ÎÄÖУ¬½«´ÓÓû§¿Õ¼äÓ¦ÓóÌÐòµÄ½Ç¶ÈÀ´²ûÊöÕâ¸öÎÊÌ⣬Òò´ËÓÐÒâºöÂÔÁË
¸´ÔÓµÄÄÚºËʵÏÖ¡£
ʲôÊÇ”Á㿽±´”
ΪÁ˸üºÃµÄÀí½âÎÊÌâµÄ½â¾ö·¨£¬ÎÒÃÇÊ×ÏÈÐèÒªÀí½âÎÊÌâ±¾Éí¡£Ê×ÏÈÎÒÃÇÒÔÒ»¸öÍøÂç·þÎñÊØ
»¤½ø³ÌΪÀý£¬¿¼ÂÇËüÔÚ½«´æ´¢ÔÚÎļþÖеÄÐÅϢͨ¹ýÍøÂç´«Ë͸ø¿Í»§ÕâÑùµÄ¼òµ¥¹ý³ÌÖУ¬Ëù
Éæ¼°µÄ²Ù×÷¡£ÏÂÃæÊÇÆäÖеIJ¿·Ö¼òµ¥´ú°¢£º
read(file, tmp_buf, len);
write(socket, tmp_buf, len);
¿´ÆðÀ´²»Äܸü¼òµ¥ÁË¡£ÄãÒ²ÐíÈÏΪִÐÐÕâÁ½¸öϵͳµ÷Óò¢Î´²úÉú¶àÉÙ¿ªÏú¡£Êµ¼ÊÉÏ£¬Õâ¼ò
Ö±´íµÄÒ»ËúºýÍ¿¡£ÔÚÖ´ÐÐÕâÁ½¸öϵͳµ÷ÓõĹý³ÌÖУ¬Ä¿±êÊý¾ÝÖÁÉÙ±»¸´ÖÆÁË4´Î£¬Í¬Ê±·¢Éú
ÁËͬÑù¶à´ÎÊýµÄÓû§/Äں˿ռäµÄÇл»(ʵ¼ÊÉϸùý³ÌÔ¶±È´Ë´¦ÃèÊöµÄÒª¸´ÔÓ£¬µ«ÊÇÎÒÏ£Íû
ÒÔ¼òµ¥µÄ·½Ê½ÃèÊöÖ®£¬ÒÔ¸üºÃµÄÀí½â±¾ÎĵÄÖ÷Ìâ)¡£
ΪÁ˸üºÃµÄÀí½âÕâÁ½¾ä´úÂëËùÉæ¼°µÄ²Ù×÷£¬Ç뿴ͼ1¡£Í¼µÄÉϰ벿չʾÁËÉÏÏÂÎÄÇл»£¬¶øÏÂ
°ë²¿Õ¹Ê¾Á˸´ÖƲÙ×÷¡£
Figure 1. Copying in Two Sample System Calls
²½ÖèÒ»£ºÏµÍ³µ÷ÓÃreadµ¼ÖÂÁË´ÓÓû§¿Õ¼äµ½Äں˿ռäµÄÉÏÏÂÎÄÇл»¡£DMAÄ£¿é´Ó´ÅÅÌÖжÁÈ¡
ÎļþÄÚÈÝ£¬²¢½«Æä´æ´¢ÔÚÄں˿ռäµÄ»º³åÇøÄÚ£¬Íê³ÉÁ˵Ú1´Î¸´ÖÆ¡£
²½Öè¶þ£ºÊý¾Ý´ÓÄں˿ռ仺³åÇø¸´ÖƵ½Óû§¿Õ¼ä»º³åÇø£¬Ö®ºóϵͳµ÷ÓÃread·µ»Ø£¬Õâµ¼ÖÂ
ÁË´ÓÄں˿ռäÏòÓû§¿Õ¼äµÄÉÏÏÂÎÄÇл»¡£´Ëʱ£¬ÐèÒªµÄÊý¾ÝÒÑ´æ·ÅÔÚÖ¸¶¨µÄÓû§¿Õ¼ä»º³å
ÇøÄÚ(²ÎÊýtmp_buf)£¬³ÌÐò¿ÉÒÔ¼ÌÐøÏÂÃæµÄ²Ù×÷¡£
²½ÖèÈý£ºÏµÍ³µ÷ÓÃwriteµ¼Ö´ÓÓû§¿Õ¼äµ½Äں˿ռäµÄÉÏÏÂÎÄÇл»¡£Êý¾Ý´ÓÓû§¿Õ¼ä»º³åÇø
±»Ôٴθ´ÖƵ½Äں˿ռ仺³åÇø£¬Íê³ÉÁ˵Ú3´Î¸´ÖÆ¡£²»¹ý£¬Õâ´ÎÊý¾Ý´æ·ÅÔÚÄں˿ռäÖÐÓëʹ
ÓõÄsocketÏà¹ØµÄÌØ¶¨»º³åÇøÖУ¬¶ø²»ÊDz½ÖèÒ»ÖеĻº³åÇø¡£
²½ÖèËÄ£ºÏµÍ³µ÷Ó÷µ»Ø£¬µ¼ÖÂÁ˵Ú4´ÎÉÏÏÂÎÄÇл»¡£µÚ4´Î¸´ÖÆÔÚDMAÄ£¿é½«Êý¾Ý´ÓÄں˿ռä
»º³åÇø´«µÝÖÁÐÒéÒýÇæµÄÊ
Ïà¹ØÎĵµ£º
¿ÉÒÔ½«Õâ¸ö½Å±¾·Å½øcrontab£¬ËûµÄÅäÖÆÎļþÔÚ /etc/crontabÖÐÿÌìÁ賿ִÐÐÒ»´Î£¬×Ô¶¯±¸·Ý Õâ¸ö½Å±¾Ã¿Ìì×î¶àÖ»Ö´ÐÐÒ»´Î£¬¶øÇÒÖ»±£Áô×î½üÎåÌìµÄ±¸·ÝÔÚ·þÎñÆ÷ÉÏ¡£
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz
#2004-09
#Setting
#ÉèÖÃÊý¾Ý¿âÃû£¬Êý¾Ý¿âµÇ¼Ãû£¬ÃÜÂ룬±¸·Ý·¾¶£¬ÈÕ־ ......
¶ÔÓÚÊó±êÇý¶¯ºÍÇ°Ãæ·ÖÎö¹ýµÄ¼üÅÌÇý¶¯¶¼Êǹ²ÓÃinputÄ£ÐÍ,ËùÒÔ,¶ÔÓÚʼþÉϱ¨ºÍ´¦ÀíµÄ·½Ê½¶¼Ã»ÓÐÇø±ð,Ö»ÊÇmouseÊó±êÇý¶¯µ±Éϱ¨Íêdx,dy,left,middle,rightÖ®ºó,ÐèÒªµ÷ÓÃinput_sync(),½«Ç°ÃæÉϱ¨µÄ½ö½öÌî³äÔÚ»º³åÇøÖеÄÊý¾Ý,ͨ¹ýmousedev_notify_readers()·¢Ë͸øopenÁ˵ĹҽÓÔÚmousedev->client_listÁ´±íÉϵȴý»ñÈ¡Êó±êÐÅÏ¢µÄ ......
¿ÉÒÔÓÃÏÂÃæµÄÃüÁî²éÕÒµ½ÏµÍ³ÖÐÄÄÒ»¸öÎļþ¼ÐÓÐÎÊÌâÈ»ºóÖð²ã²é¿´¾Í¿ÉÒÔÕÒµ½ÊÇÄÄÒ»¸öÎļþÁË
ÃüÁîÊÇ
Ê×ÏÈÇл»µ½¸ùĿ¼
cd /
du -sh ./*
du -sh ./* | sort
È»ºóÕÒµ½×î´óµÄÎļþ¼Ð
Öð²ã¾Í¿ÉÒÔÕÒµ½ÊÇÄÄÒ»¸öÎļþ¼Ð×î´óÊÇ·ñÊÇÓÐÎÊÌâµÄ
Ò»°ãÕâÑù¾Í¿ÉÒÔÈ·¶¨Ä¿±êÎļþÊÇÄÄÒ»¸öÁË ......
ÕâÀïÖ»Áоټ¸¸ö±È½ÏÂé·³µÄÊý¾Ý½á¹¹
struct list_head {
struct list_head *next, *prev;
} //linuxͨÓõÄË«ÏòÁ´¶ÓÁУ¬ÏÂÃæ¶à´¦Óõ½£¬ÕâÀïÁгöÔ´´úÂë
linux¶ÔÄÚ´æÔÙÓÃҳʽ¹ÜÀí£¬¶ÔÓÚÒ³£¬¾ÍÓиöÊý¾Ý½á¹¹page¼ÓÒÔÃèÊö¡£ÔÚÄÚºËÖÐÓиöÈ«¾ÖÁ¿mem-mapÖ¸ÏòµÄÊÇÒ»¸öpageµÄÊý×飬Õû¸öÊý×éÃèÊöÁËÕû¸öÎïÀíÄڴ棬 ......
³£ÓõÄLinuxÍøÂ簲ȫ¹¤¾ß¼ò½é
×÷Õß: ØýÃû, ¡¡³ö´¦:ITר¼ÒÍøÂÛ̳,¡¡ÔðÈαà¼: °×Ö¾·É,
2009-10-16 07:08
¡¡¡¡¾¡¹Ü¸÷ÖÖ°æ±¾µÄLinux distribution ¸½´øÁ˺ܶ࿪·ÅÔ´´úÂëµÄ×ÔÓÉÈí¼þ£¬µ«ÊÇÈÔÈ»ÓдóÁ¿µÄÓÐÓõŤ¾ßûÓб»Ä¬ÈϰüÀ¨ÔÚËüÃǵݲװ¹âÅÌÄÚ£¬ÌرðÊÇÓÐһЩ¿ÉÒÔÔöÇ¿LinuxÍøÂ簲ȫµÄ¹¤¾ß°ü£¬ËüÃÇ´ó¶àÒ²ÊÇ¿ª·ÅÔ´µÄ×ÔÓÉÈí¼þ ......