- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2004年第18卷增刊 测 试 技 术 学 报 Vol18
Supp.2004
JOURNALOFTESTANDMEASUREMENT
TECHNOLOGY
Linux与UNIX系统可执行文件
兼容性的研究与实现
肖文鹏张丽芬
(北京理工大学汁算机系 北京邮编:100081)
Linux内核中添加对UNIX的二进制格式的支持,办法是为每种格式提供相应的装载器。其次,对UNIX可执行程序
的系统调用表进行模拟。摄后,通过建立相应的映射表,实现信号处理和错误处理的兼容。)
关键字:二进制兼容、Linux、UNIX、POSIX、操作系统
1概述
一个概念上非常先进的操作系统,但UNIX进入商业化后。由于各开发UNIX的组织,Sun、HP、
IBM、SCO等公司都对UNIX进行修改,不同公司之间的开发者彼此很少考虑相互之间的兼容,因
此要将应用程序从一种UNIX平台移植到另一种UNIX平台是非常困难的。这在一定程度上制约了
UNIX的继续发展。
Linux要取得快速的发展,很重要的一个方面就是考虑如何与UNIX系统应用程序的二进制兼
容(ApplicationBinary
或者类似系统(如SCOUNIX、SunSolaris、FreeBSD)上编译好的可执行文件,都能够在任意一个
标准化的Linux操作系统下运行,从而实现“一次编译,到处运行”,方便用户对同类系统的使用。
在二进制兼容问题的研究上,各种组织都投入了相当大的精力。SCO在其推出的部分UNIX系
序的二进制兼容奠定了坚实的基础。
2研究途径
实现二进制兼容的关键和难点在于,当应用程序与系统核心问进行交互时,如何提供完全的兼
容性。要想解决好这一问题,主要涉及到以下几个方面的内容:UNIX与Linux系统调用上的差异、
基础上,通过在LINUX核心内部添加一个系统模拟和映射层,就能够实现二进制代码的兼容性。
‘除此之外,要将保存在磁盘上的UNIX可执行程序成功地加载到Linux系统中,并成为一个标
件的装载器。
为了实现这些系统功能,首先对UNIX的进程模型进行了分析和研究,从中整理出基本的实现
思路,从而为之后的二I:作奠定了基础。接着对Linux下程序加载的基本原理和流程进行了的分析,
此提出了在Linux系统上模拟UNIX系统调用的思路,并给出了相应的实现原理。最后,为了让UNIX
可执行程序能够在Linux内核上运行,还对Linux下的信号机制和错误处理进行了相应的扩充,建
+收稿¨期:2004-04-12
16 测试技术学报
立映射表,缩小两个系统之间的差异。系统的基李实现原理可概括为图1。
图1系统原理性框架
3实现方案
3.1程序加载
ELF等。
1)COFF文件格式分析
File
通用对象文件格式(Common Format,COFF)是~种常用的二进制文件格式,它用
Object
于目标文件、库文件和可执行文件。最初由UNIX V引入并作为标准可执行程序的格式,已
System
系统的二进制兼容,首先要解决如何正确地加载UNIX系统中COFF格式的目标文件。
为了实现兼容,首先分析了COFF格式的可执行文件的格式。COFF文件中共有8种数据:文
件头、可选头、段落头、段数据、重定位表、行号表、符号表和字符串表。
的建立时间。r】符号表在该文件中从文件头开始的的偏移量。口符号表中符号记录的个数。fj可选头
的长度。通常它的值是0。口COFF文件的类型及文件的内容等信息。
2)UNIX可执行文件的加载
在实现与UNIX二进制兼容时,要考虑如何处理后两种格式。即使ELF格式的可执行文件,两者的
格式也不完全相同。因此,对Linux内核中的这一部分也要做相应的修改,使
文档评论(0)