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»·¾³ÏÂÅжϷþÎñÆ÷ÊÇ·ñÕý³£¹Ø»ú
2009-05-17 À´×Ô£ºZDNet ÊÕ²Ø
ϵͳÆô¶¯µÄʱºòÉú³ÉÒ»¸öÎļþ£¬Õý³£¹Ø»úµÄʱºòÔòɾ³ýÕâ¸öÎļþ£¬Ôò¿ÉÒÔ¸ù¾Ýϵͳ¿ª»úʱÓÐûÓÐÄǸöÎļþÀ´ÅжÏÊDz»ÊÇ·ÇÕý³£¹Ø»ú¡£
ϵͳÆô¶¯µÄʱºòÉú³ÉÒ»¸öÎļþ£¬Õý³£¹Ø»úµÄʱºòÔòɾ³ýÕâ¸öÎļþ£¬Ôò¿ÉÒÔ¸ù¾Ýϵͳ¿ª»úʱÓÐûÓÐÄǸöÎļþÀ´ÅÐ ......
1¡¢classµÄ¶¨ÒåÒ»¶¨ÒªÔÚºóÃæ¼Ó“£»”
2¡¢ÓÃcoutʱҪÔÚmainº¯Êýǰ¼Ó using namespace std;
3¡¢³öÏÖ undefined reference to `std::ios_base::Init::Init() ÌáʾµÄ»°£¬ÎÊÌâÊÇgcc±àÒëÆ÷³öÏֵ쬽â¾öµÄ°ì·¨ÊÇ£ºÔÚlinuxϱàÒëc++ ³ÌÐòҪʹÓÃg++ ±àÒëÆ÷,Èç¹ûÄãÒªÊÇʹÓÃgcc±àÒëÆ÷¾Í»áÓÐÉÏÃæµÄ±¨´íÐÅÏ¢,Ö»ÒªÔÚÔÚgccºó¼Ó ......
1. Òý×Ó
int a;
int size = 8;
Èç¹ûÈÃaΪ(size =8)µÄÕûÊý±¶±íʾ³É¶þ½øÖÆÓ¦ÊÇʲôÑù×ÓÄØ£¿ÄǾÍÊÇÈÃÕâ¸öÊý±íʾ³É¶þ½øÖÆÊ±µÄ×îºóÈýλΪ0.
¶øÒª´ïµ½ÕâһĿ±ê£¬Ö»ÒªÏÂÃæÕâ¸öÊýÓëËü½øÐÐÓëÔËËã¾Í¿ÉÒÔÁË:
11111111 11111111 11111111 11111000
¶øÉÏÃæÕâ¸öÊýʵ¼ÊϾÍÊ ......
ÔÎÄÍøÖ·£ºhttp://group.ednchina.com/1036/21283.aspx
RCU»úÖÆÊÇLinux2.6Ö®ºóÌṩµÄÒ»ÖÖÊý¾ÝÒ»ÖÂÐÔ·ÃÎʵĻúÖÆ£¬´ÓRCU£¨read-copy-update£©µÄÃû³ÆÉÏ¿´£¬ÎÒÃǾÍÄܶÔËûµÄʵÏÖ»úÖÆÓÐÒ»¸ö´ó¸ÅµÄÁ˽⣬ÔÚÐÞ¸ÄÊý¾ÝµÄʱºò£¬Ê×ÏÈÐèÒª¶ÁÈ¡Êý¾Ý£¬È»ºóÉú³ÉÒ»¸ö¸±±¾£¬¶Ô¸±±¾½øÐÐÐ޸ģ¬ÐÞ¸ÄÍê³ÉÖ®ºóÔÙ½«ÀÏÊý¾Ýupdate³ÉеÄÊý¾Ý£¬´ ......