linuxϵÄELFÎļþ·ÖÎö
from:http://www.dzjs.net/html/qianrushixitong/2008/0509/3125.html
1 ÒýÑÔ
ELF(Executable and Linkable Format)¼´¿ÉÖ´ÐÐÁ¬½ÓÎļþ¸ñʽ£¬ÊÇLinux£¬SVR4ºÍSolaris2.0ĬÈϵÄÄ¿±êÎļþ¸ñʽ£¬Ä¿Ç°±ê×¼½Ó¿ÚίԱ»áTISÒѽ«ELF±ê×¼»¯ÎªÒ»ÖÖ¿ÉÒÆÖ²µÄÄ¿±êÎļþ¸ñʽ£¬ÔËÐÐÓÚ32-bit IntelÌåϵ΢»úÉÏ£¬¿ÉÓë¶àÖÖ²Ù×÷ϵͳ¼æÈÝ¡£·ÖÎöelfÎļþÓÐÖúÓÚÀí½âÒ»Ð©ÖØÒªµÄϵͳ¸ÅÄÀýÈç³ÌÐòµÄ±àÒëºÍÁ´½Ó£¬³ÌÐòµÄ¼ÓÔØºÍÔËÐеÈ
2 ELFÎļþ¸ñʽ
2.1 ELFÎļþµÄÀàÐÍ
ELFÎļþÖ÷ÒªÓÐÈýÖÖÀàÐÍ£º
(1)¿ÉÖØ¶¨Î»Îļþ°üº¬ÁË´úÂëºÍÊý¾Ý£®¿ÉÓëÆäËüELFÎļþ½¨Á¢Ò»¸ö¿ÉÖ´Ðлò¹²ÏíµÄÎļþ£º
(2)¿ÉÖ´ÐÐÎļþʱ¿ÉÖ±½ÓÖ´ÐеijÌÐò£º
(3)¹²ÏíÄ¿±êÎļþ°üÀ¨´úÂëºÍÊý¾Ý£¬¿ÉÒÔÔÚÁ½¸öµØ·½Á´½Ó¡£µÚÒ»£¬Á¬½ÓÆ÷¿ÉÒÔ°ÑËüºÍÆäËü¿ÉÖØ¶¨Î»ÎļþºÍ¹²ÏíÎļþÒ»Æð´¦ÀíÒÔ½¨Á¢ÁíÒ»¸öELFÎļþ;µÚ¶þ£¬¶¯Ì¬Á´½ÓÆ÷°ÑËüºÍÒ»¸ö¿ÉÖ´ÐÐÎļþºÍÆäËü¹²ÏíÎļþ½áºÏÔÚÒ»Æð½¨Á¢Ò»¸ö½ø³ÌÓ³Ïñ¡£
2.2 ELFÎļþµÄ×éÖ¯
ELFÎļþ²ÎÓë³ÌÐòµÄÁ¬½Ó(½¨Á¢Ò»¸ö³ÌÐò)ºÍ³ÌÐòµÄÖ´ÐÐ(ÔËÐÐÒ»¸ö³ÌÐò)£¬±àÒëÆ÷ºÍÁ´½ÓÆ÷½«ÆäÊÓΪ½ÚÍ·±í(section header table)ÃèÊöµÄһЩ½Ú(section)µÄ¼¯ºÏ£¬¶ø¼ÓÔØÆ÷Ôò½«ÆäÊÓΪ³ÌÐòÍ·±í(program header table)ÃèÊöµÄ¶Î(segment)µÄ¼¯ºÏ£¬Í¨³£Ò»¸ö¶Î¿ÉÒÔ°üº¬¶à¸ö½Ú¡£¿ÉÖØ¶¨Î»Îļþ¶¼°üº¬Ò»¸ö½ÚÍ·±í£¬¿ÉÖ´ÐÐÎļþ¶¼°üº¬Ò»¸ö³ÌÐòÍ·±í¡£¹²ÏíÎļþÁ½Õß¶¼°üº¬ÓС£Îª´Ë£¬ELFÎļþ¸ñʽͬʱÌṩÁËÁ½ÖÖ¿´´ýÎļþÄÚÈݵķ½Ê½£¬·´Ó³Á˲»Í¬ÐÐΪµÄ²»Í¬ÒªÇó¡£ÏÂͼÏÔʾÁËELFÎļþµÄ×éÖ¯¡£
2.3 ÎļþÍ·(Elf header)
ElfÍ·ÔÚ³ÌÐòµÄ¿ªÊ¼²¿Î»£¬×÷ΪÒý·±íÃèÊöÕû¸öELFµÄÎļþ½á¹¹£¬ÆäÐÅÏ¢´óÖ·ÖΪËIJ¿·Ö£ºÒ»ÊÇϵͳÏà¹ØÐÅÏ¢£¬¶þÊÇÄ¿±êÎļþÀàÐÍ£¬ÈýÊǼÓÔØÏà¹ØÐÅÏ¢£¬ËÄÊÇÁ´½ÓÏà¹ØÐÅÏ¢ ÆäÖÐϵͳÏà¹ØÐÅÏ¢°üÀ¨elfÎļþħÊý(±êʶelfÎļþ)£¬Æ½Ì¨Î»Êý£¬Êý¾Ý±àÂ뷽ʽ£¬elfÍ·²¿°æ±¾£¬Ó²¼þƽ̨e_machine£¬Ä¿±êÎļþ°æ±¾e_version£¬´¦ÀíÆ÷ÌØ¶¨±êÖ¾e_ftags£ºÕâЩÐÅÏ¢µÄÒýÈ뼫´óÔöÇ¿ÁËelfÎļþµÄ¿ÉÒÆÖ²ÐÔ£¬Ê¹½»²æ±àÒë³ÉΪ¿ÉÄÜ¡£Ä¿±êÎļþÀàÐÍÓÃe_typeµÄÖµ±íʾ£¬¿ÉÖØ¶¨Î»ÎļþΪ1£¬¿ÉÖ´ÐÐÎļþΪ2£¬¹²ÏíÎļþΪ3;¼ÓÔØÏà¹ØÐÅÏ¢ÓУº³ÌÐò½øÈëµãe_entry£®³ÌÐòÍ·±íÆ«ÒÆÁ¿e_phoff£¬elfÍ·²¿³¤¶Èe_ehsize£¬³ÌÐòÍ·±íÖÐÒ»¸öÌõÄ¿µÄ³¤¶Èe_phentsize£¬³ÌÐòÍ·±íÌõÄ¿ÊýÄ¿e_phnum;Á´½ÓÏà¹ØÐÅÏ¢ÓУº½ÚÍ·±íÆ«ÒÆÁ¿e_shoff£¬½ÚÍ·±íÖÐÒ»¸öÌõÄ¿µÄ³¤¶Èe_shentsize£¬½ÚÍ·±íÌõÄ¿¸öÊýe_shnum £¬½ÚÍ·±í×Ö·ûË÷Òýe shstmdx¡£¿ÉʹÓÃreadelf -h
Ïà¹ØÎĵµ£º
2009 Äê 4 ÔÂ 23 ÈÕ
±¾ÎÄÖÐÎÒÃÇÕë¶Ô Linux É϶àÏ̱߳à³ÌµÄÖ÷ÒªÌØÐÔ×ܽá³ö 5 Ìõ¾Ñ飬ÓÃÒÔ¸ÄÉÆ Linux ¶àÏ̱߳à³ÌµÄϰ¹ßºÍ±ÜÃâÆäÖеĿª·¢ÏÝÚå¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃÇ´©²åһЩ Windows µÄ±à³ÌÓÃÀýÓÃÒÔ¶Ô±È Linux ÌØÐÔ£¬ÒÔ¼ÓÉî¶ÁÕßÓ¡Ïó¡£
±³¾°
Linux ƽ̨ÉϵĶàÏ̳߳ÌÐò¿ª·¢Ïà¶ÔÓ¦ÆäËûƽ̨£¨±ÈÈç Windows£©µÄ¶àÏß³Ì API ÓÐһЩϸ΢ ......
ÓÉÓÚ Linux Á¼ºÃµÄÓû§È¨ÏÞ¹ÜÀíÌåϵ£¬²¡¶¾ÍùÍùÊÇ Linux ϵͳ¹ÜÀíÔ±×îºó²ÅÐèÒª¿¼ÂǵÄÎÊÌâ¡£ÒÔÍù£¬Linux ÉϵÄɱ¶¾Èí¼þÖ÷ÒªÊÇΪÆóÒµµÄÓʼþºÍÎļþ·þÎñÆ÷ËùÉè¼ÆµÄ¡£Èç½ñ£¬Ëæ×Å Linux ×ÀÃæÓû§ÊýÁ¿µÄÔö³¤£¬×ÀÃæÓû§ÔÚÊÜÒæÓÚ Linux ϵͳ¶Ô²¡¶¾½ÏÇ¿µÄÌìÈ»ÃâÒßÁ¦µÄͬʱ£¬Ò²ÐèҪɱ¶¾Èí¼þÇåÀí´ÓÍøÂç»òUÅÌ´øÀ´µÄWIndows²¡¶¾¡£¾¡¹ÜÄÇЩ ......
linux 2.6 É豸Çý¶¯Ä£ÐÍ
1.±³¾°
Ëæ×ÅÉè±¸ÍØÆË½á¹¹Ô½À´Ô½¸´ÔÓ£¬ÐèҪΪÄں˽¨Á¢Ò»¸öͳһµÄÉ豸ģÐÍ£¬¶Ôϵͳ½á¹¹×öÒ»°ãÐԵijéÏóÃèÊö¡£
ÓÐÁ˸óéÏó½á¹¹£¬¿ÉÖ§³Ö¶àÖÖ²»Í¬µÄÈÎÎñ£º
a) µçÔ´¹ÜÀí Íê³ÉµçÔ´¹ÜÀí¹¤×÷ÐèÒª¶Ôϵͳ½á¹¹µÄÀí½â£¬ÇÒÓÐÑϸñµÄ˳Ðò£¬È磺һ¸öUSBËÞÖ÷ÊÊÅäÆ÷£¬ÔÚ´¦À ......
½ø³ÌÊDzÙ×÷ϵͳÌṩµÄ×î¹ÅÀÏ£¬×îÖØÒªµÄ³éÏóÖ®Ò»£¬Ëü¶Ô¿ª·¢ÈËÔ±ºÍ²Ù×÷ÈËÔ±Òþ²ØÁËÁ½¸ö»ù±¾µÄÓ²¼þ×ÊÔ´£º´¦ÀíÆ÷ºÍ´æ´¢Æ÷¡£½ø³ÌµÄÖØÒªÐÔÔÚÓÚËüÓªÔì³ö¸öÊý²»ÊÜÎïÀí´¦ÀíÆ÷ÏÞÖÆµÄÐéÄâ´¦ÀíÆ÷²¢ÎªÃ¿¸öÐéÄâ´¦ÀíÆ÷Å䱸Á˶ÀÁ¢µÄ£¬ÈÝÁ¿²»ÊÜÎïÀíÄÚ´æ´óСÏÞÖÆµÄÄÚ´æ¿Õ¼ä¡£ÕâЩÐéÄâ´¦ÀíÆ÷ΪӦÓóÌÐòÄ£Äâ³öÒ»¸öºÍÎïÀí´¦ÀíÆ÷¼¸ºõÏàͬµÄ»·¾³£ºÃ¿ ......
LinuxµÄI/O»úÖÆ¾ÀúÁËһϼ¸¸ö½×¶ÎµÄÑݽø£º
1. ͬ²½×èÈûI/O: Óû§½ø³Ì½øÐÐI/O²Ù×÷£¬Ò»Ö±×èÈûµ½I/O²Ù×÷Íê³ÉΪֹ¡£
2. ͬ²½·Ç×èÈûI/O: Óû§³ÌÐò¿ÉÒÔͨ¹ýÉèÖÃÎļþÃèÊö·ûµÄÊôÐÔO_NONBLOCK£¬I/O²Ù×÷¿ÉÒÔÁ¢¼´·µ»Ø£¬µ«ÊDz¢²»±£Ö¤I/O²Ù×÷³É¹¦¡£
3. Ò첽ʼþ×èÈûI/O: Óû§½ø³Ì¿ÉÒÔ¶ÔI/Oʼþ½øÐÐ×èÈû£¬µ«ÊÇI/O²Ù×÷²¢²»×èÈû¡£Í¨¹ýse ......