目标文件格式(Object File Formats)

 
        Mac OS X支持多种目标文件的读取,包括:
 • Mach-O
 • Java字节码
 • Prefered Executable Format

        Mach-O用于本地的Mac OS X应用程序开发。Java字节码用于被Java虚拟机执行,仅用于执行Java程序。PEF格式被用于Code Fragment Manager将Mac OS 9程序移植到Mac OS X。

        详情请见,Mac OS X ABI Mach-O File Format Refer-ence 。如何使用Mach-O文件,请看Mach-O Programming Topics 。关于Java支持,请看Java Support 。关于PEF文件格式,请看CFM Runtime Environment

 

调试文件格式(Debug File Formats)
 

       调试可执行文件的时候,调试器需要使用由编译器生成的一些调试文件,这些信息将用户可读的变量名字与过程和数据地址联系起来。一般地,这些信息在程序执行时被舍去。调试程序时,这些信息很重要。

        Mac OS X使用两种调试文件格式,stabs和DWARF。stabs格式是Xcode 2.4之前的默认格式。DWARF是Xcode 2.4后的默认格式。stabs格式将调试信息贮存在可执行体的符号表中。参见Mac OS X ABI Mach-O File Format Refer-ence。DWARF格式则将其贮存在特殊的段中,或另一个调试信息文件。

        关于DWARF的更多信息,请看www.dwarfstd.org。关于stabs的更多信息,请看STABS Debug Format 。关于Mach-O文件和它的符号表,请看Mach-O Programming Topics


运行时环境(Runtime Environment)

        Mac OS X在初始发布时即支持多种运行环境,现在活跃工程的环境是Dyld环境。其它环境仅用于Mac OS 9到Mac OS X的移植。

Dyld运行环境

        Dyld环境是读取,链接,执行Mach-O文件的本地Mac OS X环境。其核心是称为dyld的动态加载器(dynamic loader)。它处理了程序和动态库的读取,解析库和模组的依赖,并执行程序。

        在读取程序代码模块时,动态加载器执行最小的符号绑定,以执行你的程序。绑定过程包括解析外部的程序库并在使用它们是被加载。符号是强链接或弱链接的。它们的区别在于,强链接当找不到程序库中符号或找不到程序库时终止程序。弱链接则在使用符号不存在并要使用是终止程序。

        更多信息,请看dyld 。关于如何使用Mach-O可执行文件,请看Mach-O Programming Topics


Java运行环境

        Java运行环境由Java虚拟机,JIT字节码编译器和代码包(code packages)组成。详情请看,Java Support

 

CFM运行环境
 

        CFM(Code Fragment Manager)运行环境是从Mac OS 9继承的,它被用于期望使用Mac OS X的特性而不希望或无法迁移到dyld运行环境的用户。CFM运行环境希望用户使用PEF(Preferred Executable Format)代码模块。

        CFM使用静态的符号表绑定。在代码读取时绑定所有的符号表。如果有符号找不到,则程序不被执行(除非使用弱绑定)。

        注意,所有系统库都使用Mach-O目标文件格式和dyld的运行环境。当使用其它环境时,Mac OS X使用一系列的程序库桥接解决库迁移问题。但迁移增加了程序的负载。Carbon库是一个桥接的程序库。

        程序库桥接仅从CFM到dyld,而不是从dyld到CFM。dyld应用程序可使用CFBundle调用CFM的程序库。如果您要使程序库支持所有Mac OS X执行环境,请使用dyld程序库。

        在基于Intel的Macintosh计算机上,CFM程序在Rosetta环境下执行。


安全

        Mac OS X基于UNIX,所以具有UNIX操作系统一贯的高安全性。Mac OS X的安全服务基于BSD(Berkeley Software Distribution)和CDSA (Common Data Security Archi-tecture),BSD提供基础的安全服务,CDSA提供更为细致的安全服务,如:

 • 更细粒度的访问控制
 • 用户身份识别
 • 加密技术
 • 安全数据存储
 

        但是,CDSA复杂且不符合Macintosh的编程规范,所以Mac OS X自己设计了多套基于CDSA的安全接口。
 
 
        在Mac OS X 10.5中,安全系统有如下的改进:

 • 强制访问控制(Mandatory Access Control),细粒度的访问控制安全架构,从内核的层面管理进程的执行情况。每个应用程序只允许执行被规定的部分。
 • 代码签名和安装包签名。检查代码的数字签名有助于了解软件是不是已经被修改或损坏,并给用户及时的提示和帮助,免于被恶意软件侵害。
 • 编译器检查用户代码,防止栈空间和用户内存的恶意使用。
 • 对未知文件类型实行监控,如监视从互联网上下载的未知文件,防止恶意代码的执行。

        为了解详细信息,请看Security Overview 。 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐