专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Linux » linux系统硬盘格式:Linux系统的可执行文件格式详细解析 »正文

linux系统硬盘格式:Linux系统的可执行文件格式详细解析

来源: 发布时间:星期四, 2009年2月12日 浏览:67次 评论:0


  可执行文件可以是具有区别格式 2进制文件也可以是个文本脚本可执行文件映像中包含了进程执行代码和数据同时也包含了操作系统用来将映像正确装入内存并执行信息在Linux中当前“本地”(系统默认)可执行文件格式是ELF[15] (Executable and Linking Format)可执行链接格式由于先前a.out格式难于实现共享库不能适用于动态链接所以目前已经全部被ELF所替换不过Linux仍然为 a.out保留了个 2进制处理但通常是使用ELF.
 
  Linux加载般是根据内嵌在可执行文件开头“magic序列”(个特殊字节序列)来识别文件有时也会通过文件名些特性例如编译处理可以保证其文件名以结尾并且文件起始前 4个字节是 0xcafebabe这是标准所定义下面是2.4版本内核在Intel体系下所提供 2进制处理理论上Linux灵活到足以处理几乎所有目标文件格式
 
  (1)a.out(在fs/binfmt_aout.c中):这是为了支持原来风格Linux 2进制文件存在主要是为了满足些系统向后兼容需要但是基本上a.out已经光荣退役了
 
  (2) ELF(在fs/binfmt_elf.c中):目前是Linux默认 2进制文件格式该格式在可执行文件和共享库中都广泛使用最新Linux系统 (例如Red Hat 9)般只预装了ELF 2进制文件解释器但是特殊情况下要决定加载a.out 2进制文件那么系统也通过模块方式对它提供支持虽然ELF被作为惯用Linux本地格式但也和其它格式样使用同个加载处理
 
  (3)EM86(在fs/binfmt_em86.c中):允许在Alpha机器上运行IntelLinux 2进制文件仿佛它们就是Alpha本地 2进制文件
 
  (4) Java(在fs/binfmt_java.c中):可以不必每次都定义Java字节码解释就可以执行Java文件这种机制和脚本中使用机制类似通过把文件文件名作为参数传递处理返回执行整型字节码解释从用户观点来看Java 2进制文件是作为本地可执行文件处理
 
  (5)misc(在fs/binfmt_misc.c中):这是最明智地使用 2进制处理思路方法这个处理通过内嵌特征数字或者文件名后缀可以识别出各种 2进制格式不过最优秀特性是它可以在运行期配置而不是只能在编译期配置因此只要遵循其规则就可以快速增加对新 2进制文件支持而不用重新编译内核也无须重新启动机器Linux源文件中注释建议最终使用它来取代Java和EM86 2进制处理
 
  (6)脚本(在fs/binfmt_script.c中):对于shell脚本、Perl脚本等提供支持宽松点地说所有前面两个是“#!”可执行文件都归由这个 2进制处理进行处理
 
  这些Linux支持 2进制格式可以在内核编译链接时候直接建立在内核的中也可以在内核运行时候作为模块来加载内核保存了支持 2进制格式解释列表当试图执行个文件时候个 2进制格式都会被依次尝试直到判断出可识别对应 2进制格式为止
 
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: