Linuxѧϰ ѰÕÒ³ÌÐòÈȵ㣨һ£©£ºgprof
gprof½éÉÜ
gprofÊÇGNU profiler¹¤¾ß£¬´æÔÚÓÚbinutils¹¤¾ß°ü¡£¿ÉÒÔÏÔʾ³ÌÐòÔËÐеēflat profile”£¬°üÀ¨Ã¿¸öº¯ÊýµÄµ÷ÓôÎÊý£¬Ã¿¸öº¯ÊýÏûºÄµÄ´¦ÀíÆ÷ʱ¼ä¡£Ò²¿ÉÒÔÏÔʾ“µ÷ÓÃͼ”£¬°üÀ¨º¯ÊýµÄµ÷ÓùØÏµ£¬Ã¿¸öº¯Êýµ÷Óû¨·ÑÁ˶àÉÙʱ¼ä¡£»¹¿ÉÒÔÏÔʾ“×¢Ê͵ÄÔ´´úÂ딣¬ÊdzÌÐòÔ´´úÂëµÄÒ»¸ö¸´±¾£¬±ê¼ÇÓгÌÐòÖÐÿÐдúÂëµÄÖ´ÐдÎÊý¡£
gprof ʵÏÖÔÀí£º
gprof²¢²»ÉñÆæ£¬ÔÚ±àÒëºÍÁ´½Ó³ÌÐòµÄʱ ºò£¨Ê¹Óà -pg ±àÒëºÍÁ´½ÓÑ¡Ï£¬gcc ÔÚÄãÓ¦ÓóÌÐòµÄÿ¸öº¯ÊýÖж¼¼ÓÈëÁËÒ»¸öÃûΪmcount£¨or“_mcount”, or“__mcount”£©µÄº¯Êý£¬Ò²¾ÍÊÇ˵-pg±àÒëµÄÓ¦ÓóÌÐòÀïµÄÿһ¸öº¯Êý¶¼»áµ÷ÓÃmcount, ¶ømcount»áÔÚÄÚ´æÖб£´æÒ»Õź¯Êýµ÷ÓÃͼ£¬²¢Í¨¹ýº¯Êýµ÷ÓöÑÕ»µÄÐÎʽ²éÕÒ×Óº¯ÊýºÍ¸¸º¯ÊýµÄµØÖ·¡£ÕâÕŵ÷ÓÃͼҲ±£´æÁËËùÓÐÓ뺯ÊýÏà¹ØµÄµ÷ÓÃʱ¼ä£¬µ÷ÓôÎÊýµÈµÈµÄËùÓÐÐÅÏ¢¡£
GPROFµÄ»ù±¾Ê¹Ó÷½·¨ÈçÏ£º
1£®Ê¹ÓÃGCC¼ÓÉÏ-pgÑ¡Ïî±àÒë³ÌÐò
2£®Ö´ÐгÌÐò£¬»áÉú³Égmon.out
3£®Ê¹ÓÃgprof·ÖÎögmon.outÎļþ£¬µÃ³öͳ¼Æ×ÊÁÏ
4£®GPROF²»Ö§³Ö¶¯Ì¬Á´½Ó¿âºÍ¶àÏß³Ì
·¶Àý£º
#include<stdio.h>
void funca()
{
int i = 0;
int n = 0;
for(i = 0;i < 10000000;i++)
{
n++;
n--;
}
}
void funcb()
{
int i = 0;
int n = 0;
for(i = 0;i < 10000000;i++)
{
n++;
n--;
}
}
int main(int argc,char *argv[])
{
int i = 0;
for(i = 0;i < 10;i++)
{
funca();
}
funcb();
return 0;
}
±àÒ룺
$ gcc hello.c -pg -o hello
ÔËÐУº
$ ./hello
Éú³Égmon.outÎʼþ
ʹÓÃgprof½øÐнâÎö£º
$ gprof hello gmon.out -p
Flat profile:
Each sample counts as 0.01 seconds.
%
Ïà¹ØÎĵµ£º
01-.tar¸ñʽ
½â°ü£º[£ª£ª£ª£ª£ª£ª£ª]$ tar xvf FileName.tar
´ò°ü£º[£ª£ª£ª£ª£ª£ª£ª]$ tar cvf FileName.tar DirName£¨×¢£ºtarÊÇ´ò°ü£¬²»ÊÇѹËõ£¡£©
02-.gz¸ñʽ
½âѹ1£º[£ª£ª£ª£ª£ª£ª£ª]$ gunzip FileName.gz
½âѹ2£º[£ª£ª£ª£ª£ª£ª£ª]$ gzip -d FileName.gz
ѹ Ëõ£º[£ª£ª£ª£ª£ª£ª£ª]$ gzip FileName
03-.tar.gz¸ñʽ
......
Ç°ÃæÀûÓÿª·¢°å´øµÄÏֳɵĶ«Î÷step by stepÈÃLinux 2.4.19ÔÚ¿ª·¢°åÉÏÅÜÆðÀ´ÁË£¬¶ÔÓÚ¿ª·¢µÄÁ÷³ÌÒ²ÓÐÁËÒ»¶¨µÄÈÏʶ¡£ÏÖÔÚÏë¶Ôÿһ²½½øÐÐÏêϸÉîÈëµÄ̽ÌÖ£¬ºÃºÃѧϰһÏ£¬°Ñ±Ê¼Ç¼Ç¼ÏÂÀ´£¬Ê¡µÃÍü¼ÇÁË¡£ÓÐЩÄÚÈÝÊÇ´Ó¿´¹ýµÄÊéÖÐÕªÒª¹ýÀ´µÄ£¬´ó²¿·ÖÊÇ×Ô¼ºÊµ¼ùºóµÄÐĵá£ÎÒÏë¼ÇµÃÏêϸµã£¬Ò²ºÃΪºóÃæ×ܽá´òºÃ»ù´¡¡£
------- ......
×ʼʱ£¬ramоƬÖаüº¬µÄÊÇËæ»úÊý¾Ý¡£µ±¿ªÊ¼Æô¶¯Ê±£¬cpuµÄÒ»¸öÒý½ÅÉÏ»á²úÉúÒ»¸öresetÂß¼Öµ¡£´Ëºó´¦ÀíÆ÷µÄһЩ¼Ä´æÆ÷ÉèÖóɹ̶¨µÄÊýÖµ£¬²¢Ö´ÐÐÔÚÎïÀíµØÖ·0xfffffff0´¦ÕÒµ½µÄ´úÂë¡£Ó²¼þ°ÑÕâ¸öµØÖ·Ó³É䵽ij¸öÖ»¶Á¡¢³Ö¾ÃµÄ´æ´¢Ð¾Æ¬ÖУ¬¸ÃоƬͨ³£³ÆÎªrom(read-only memoryÖ»¶ÁÄÚ´æ)¡£romËù´æ·ÅµÄ³ÌÐò¼¯ÔÚ80x86ÌåϵÖÐͨ³£½Ð×ö ......
linux/arch/i386/boot/compressed/head.S
ÔÚsetup()½áÊøºó£¬´Ëº¯Êý¾Í±»Òƶ¯µ½ÎïÀíµØÖ·0x00100000´¦»òÕß0x00001000´¦£¬ÕâÈ¡¾öÓÚÄÚºËÓ³ÏñÊDZ»¸ß×°ÔØµ½ramÖл¹ÊǵÍ×°ÔØµ½ramÖС£
½â¶Áº¯Êý£º
startup_32:
cld
cli
&n ......
¼Ç¼ÔÚlinuxÏ¿ª·¢Óöµ½µÄ¸÷ÖÖÎÊÌ⣬·½±ãÒÔºó²éÕÒ¡£
1.¹ØÓÚshellÖнű¾µÄÖ´Ðз½Ê½£ºÔÚµ±Ç°½Å±¾Ö´Ðл¹ÊÇÆô¶¯Ò»¸öеÄshell½ø³ÌÀ´Ö´Ðнű¾¡£
¼ÙÉ赱ǰĿ¼ÏÂÓнű¾script.sh¡£
Æô¶¯Ò»¸öеÄshell½ø³ÌÀ´Ö´ÐУº
ÕâÊÇshellÖÐĬÈϵÄÖ´Ðз½Ê½ÊÇÆô¶¯Ò»¸öеÄshell½ø³Ì£¨×Ó½ø³Ì£©À´Ö´Ðнű¾£¬¼´sh script.sh»òÕ߸³Ó ......