linux¶ÁдÎļþËٶȲâÊÔ
Ò». ÎļþÒ»´Î¶ÁÈëËÙ¶È
linux϶ÁÎļþÕâ¶«Î÷×îºó¶¼ÊÇҪͨ¹ýϵͳµ÷ÓÃsys_read(fd,buf,count)À´ÊµÏֵģ¬ËùÒÔÈç¹ûÒªÌá¸ßËÙ¶È£¬¾ÍÊÇ×î¼òµ¥µØµ÷ÓÃsys_readµÄ·â×°£¬±ÈÈçÖ±½ÓÓÃread()»òfread()¡£ÏÂÃæÊÇÎÒÔÚlinuxÏµļ¸¸ö²âÊÔ¡£
Ê×ÏÈ´´½¨Ò»¸ö130MÊý¾ÝÎļþ dd if=/dev/zero of=data bs=1024k count=130
[dd if=/dev/zero of=data bs=1024k count=130 ת»»ºÍ¿½±´Îļþ£¬´ÓÊäÈëifµÄÔ´ÍùofµÄÄ¿µÄµØÖ·¿½±´£¬Ã¿¸öblock1024k£¬Ò»¹²¿½±´130¸ö¡£]
·Ö±ðÓÃfread,readºÍfgetsÒ»´Î¶ÁÈëÈ«²¿´óСÎļþËùÏûºÄʱ¼ä¶Ô±È,ÆäÖÐ
size=130*1024*1024
char *buf=new char[size];
ÏÂÃæÊDzâÊÔ½á¹û(»úÆ÷Intel(R) Pentium(R) 4 CPU 3.20GHz, Mem 1G):
1.fread(buf,size,1,fp)Ò»´Î¶ÁÈë
real 0m0.187s
user 0m0.000s
sys 0m0.180s
2.read(fdin,(void *)buf,size)Ò»´Î¶ÁÈë
real 0m0.187s
user 0m0.000s
sys 0m0.184s
3.¶à´Îfgets(buf,size,fp),ÿ´Î1k
real 0m0.356s
user 0m0.136s
sys 0m0.220s
4.fgets(buf,size,fp)Ò»´Î¶ÁÈë
real 0m0.305s
user 0m0.072s
sys 0m0.232s
ÉÏÃæ¿´µ½Ô½¼òµ¥µÄº¯Êý(read()ºÍfread())£¬ËÙ¶ÈÔ½¿ì£¬ÆäËûµÄÊäÈë·â×°º¯ÊýÖ»²»¹ýÊÇΪÁË·½±ãÂú×ãÌØÊâÐèÒª£¬²¢²»¼ûµÃ¶ÁµÄËÙ¶È»áºÜ¿ì¡£¶ÔÓÚ3ºÍ 4,ÒòΪÔÚsys_read()ÄÚ²¿ÓжԶÁÈë´óСµÄÅжϺÍwhileÑ»·£¬ËùÒÔ´óÎļþ¶ÁȡҲû±ØÒªÏñ3ÄÇÑù·Ö¶à´Îµ÷ÓÃfgets()À´¶ÁÎļþ.
ÁíÍâÓÃmmap()ÄÚ´æÓ³ÉäÀ´¶ÁÈëÎļþµÄʱ¼äÈçÏÂ:
real 0m0.231s
user 0m0.068s
sys 0m0.164s
Ò²²¢Ã»ÓбÈÖ±½Óread()¿ì£¬ÍøÉÏÕÒµ½Ò»ÖÖ½âÊÍÊǶÔÓÚÐèҪƵ·±¶Áд²Ù×÷µÄ£¬mmapЧÂʲŻáÏÔÖøÌá¸ß¡£ÏÂÃæÀ´Ä£ÄâÆµ·±¶Áд²Ù×÷¡£
¶þ. ÎļþƵ·±¶ÁдËٶȲâÊÔ
1. ÕâÒ»¸ö²âÊÔÄ£ÄâÆµ·±Îļþ¶Áд²Ù×÷£¬500M´óСµÄÊý¾ÝÎļþdata.in£¬Ã¿´Î´ÓÖжÁÈë1k¸ö×Ö½Ú¶Ôÿ¸ö×Ö½Ú×ö¼Ó1¼òµ¥¼ÆË㣬ÔÙдµ½ÁíÒ»¸öÎļþdata.outÖС£
//mmapx1.c
#define size 1024*1024*500
#define LEN 1024
#include <stdio.h>
int main()
{
FILE *fp1,*fp2;
char *buf=new char[LEN];
int i,j;
&nb
Ïà¹ØÎĵµ£º
Éî¿ÌÀí½âLinux½ø³Ì¼äͨÐÅ£¨IPC£©
ÎĵµÑ¡Ïî
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16&q ......
1. Òý×Ó
int a;
int size = 8;
Èç¹ûÈÃaΪ(size =8)µÄÕûÊý±¶±íʾ³É¶þ½øÖÆÓ¦ÊÇʲôÑù×ÓÄØ£¿ÄǾÍÊÇÈÃÕâ¸öÊý±íʾ³É¶þ½øÖÆÊ±µÄ×îºóÈýλΪ0.
¶øÒª´ïµ½ÕâһĿ±ê£¬Ö»ÒªÏÂÃæÕâ¸öÊýÓëËü½øÐÐÓëÔËËã¾Í¿ÉÒÔÁË:
11111111 11111111 11111111 11111000
¶øÉÏÃæÕâ¸öÊýʵ¼ÊϾÍÊ ......
¡¡¡¡ÊµÏÖ¹¦ÄÜ£ºµ±Óû§ÔÚ±¾µØ¿Í»§¶ËijĿ¼ÄÚ½¨Á¢¡¢Ð޸ġ¢É¾³ýĿ¼»òÎļþ¡¢ÐÞ¸ÄĿ¼»òÎļþµÄÊôÐÔ£¬Ö»ÒªÖ´ÐÐÏàͬµÄshell½Å±¾£¬rsync¾Í»á×Ô¶¯ÕÒ³öÓи͝»òɾ³ýµÄÊý¾Ý£¬½«Æä´«Ë͵½·þÎñÆ÷ÉÏ£¬Ê¹·þÎñÆ÷¶ËijĿ¼ÄÚµÄÊý¾Ý¸ú±¾µØ¿Í»§¶ËijĿ¼ÄÚµÄÊý¾Ý±£³ÖÒ»Ö¡£
¡¡¡¡¡ï·½Ê½Ò»£º
¡¡¡¡Ò»¡¢·þÎñÆ÷¶Ë£¨Àý£º10.0.0.1*£©£º
¡¡¡¡1¡¢´´½¨Óà ......
Linux Òýµ¼¹ý³ÌÄÚÄ»
Òýµ¼ Linux® ϵͳµÄ¹ý³Ì°üÀ¨ºÜ¶à½×¶Î¡£²»¹ÜÄúÊÇÒýµ¼Ò»¸ö±ê×¼µÄ x86 ×ÀÃæÏµÍ³£¬»¹ÊÇÒýµ¼Ò»Ì¨Ç¶ÈëʽµÄ PowerPC® »úÆ÷£¬ºÜ¶àÁ÷³Ì¶¼¾ªÈ˵ØÏàËÆ¡£±¾ÎĽ«Ì½Ë÷ Linux µÄÒýµ¼¹ý³Ì£¬´Ó×î³õµÄÒýµ¼µ½Æô¶¯µÚÒ»¸öÓû§¿Õ¼äÓ¦ÓóÌÐò¡£ÔÚ±¾ÎĽéÉܵĹý³ÌÖУ¬Äú½«Ñ§Ï°µ½¸÷ÖÖÓëÒýµ¼ÓйصÄÖ÷Ì⣬ ......
ÔÎÄÍøÖ·£ºhttp://group.ednchina.com/1036/21283.aspx
RCU»úÖÆÊÇLinux2.6Ö®ºóÌṩµÄÒ»ÖÖÊý¾ÝÒ»ÖÂÐÔ·ÃÎʵĻúÖÆ£¬´ÓRCU£¨read-copy-update£©µÄÃû³ÆÉÏ¿´£¬ÎÒÃǾÍÄܶÔËûµÄʵÏÖ»úÖÆÓÐÒ»¸ö´ó¸ÅµÄÁ˽⣬ÔÚÐÞ¸ÄÊý¾ÝµÄʱºò£¬Ê×ÏÈÐèÒª¶ÁÈ¡Êý¾Ý£¬È»ºóÉú³ÉÒ»¸ö¸±±¾£¬¶Ô¸±±¾½øÐÐÐ޸ģ¬ÐÞ¸ÄÍê³ÉÖ®ºóÔÙ½«ÀÏÊý¾Ýupdate³ÉеÄÊý¾Ý£¬´ ......