基于UNIX的操作系统内核——目标文件格式、调试文件格式、运行时环境、安全
目标文件格式(Object File Formats) Mac OS X支持多种目标文件的读取,包括: • Mach-O • Java字节码 • Prefered Executable Format Mach-O用于本地的Mac OS X应用程序开发。Java字节码用于被Java虚拟机执行,仅用于执行Java程序。PEF格式被用于Code Fragmen
目标文件格式(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 。
更多推荐
所有评论(0)