首页 > 图书中心 >图书详情

Mac OS X 技术内幕

深入剖析Mac OS X技术的权威著作

作者:(美)阿米特·辛格(Amit Singh)著 陈宗斌 等译
定价:268
印次:1-2
ISBN:9787302509097
出版日期:2019.01.01
印刷日期:2019.12.20

本书从系统设计的角度,以一种面向实现的方法,详尽剖析Mac OS X内部工作原理的具体细节,揭示Mac OS X及其组件的核心体系结构和实现。全书共分12章和一个附录,通过丰富而详细的插图、函数调用图、加注释代码段和编程示例等,引领读者学习实用的知识和技能,加深对所学知识的理解,并在实践中加以运用。

more >

译者序   操作系统(Operating System,OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,其他任何软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。它提供各种形式的用户界面,使用户有一个良好的工作环境,以及为其他软件的开发提供必要的服务和相应的接口等。   Mac OS X以及一般意义上的Apple近年来吸引了许多人的注意力。鉴于Apple“受到狂热崇拜”的状况,以及Mac OS X独特的文化和技术组合,大量具有不同背景和兴趣的人(包括Mac OS X用户和非Mac OS X用户)都对这个操作系统非常感兴趣。   本书从系统设计的角度描述Mac OS X,对其进行详细剖析,并逐一剥去它的神秘外衣。Mac OS X具有众多用户级和内核级的IPC机制,其中一些广为人知并且形成了文档。本书不仅将说明如何使用这些机制,而且将解释最基本的机制(Mach IPC)的设计和实现,然后讨论其他机制彼此之间是如何层叠的。   本书提供了详细的插图、函数调用图、加注释的代码段和编程示例,可以引领读者学习实用的知识和技能,并能实际地运用它们,加深对所学知识的理解。本书的主要目标是为在Mac OS X上编程的任何人构建一个稳固的基础,因此非常适合应用程序员阅读。Mac OS X用户也可以阅读本书,以更好地理解系统是如何设计的以及它是如何组建的。系统管理员和技术支持人员也可以在本书中发现有价值的信息。   参加本书翻译的人员有陈宗斌、傅强、宋如杰、蔡江林、陈征、戴锋、蔡永久、何正雄、黄定光、李刚生、李韬、欧婷、苏高、孙朝辉、孙丽、许瑛琪、叶守运、易陈丽、叶淑英、易小丽、喻四容、易志东、殷小俊、张景友、张旭、张志强、陈丽丽、尼朋、王亚坤、张敬伟、张丽、张悦、宫生文、黄艳、王萍萍、解本巨、肖进、李海燕、张班班、郝军启、蒋珊珊、周为华、张宝霞等。   由于时间紧迫,加之译者水平有限,错误在所难免,恳请广大读者批评指正。      译 者    2019年1月 致谢   本书是我曾经做过的最艰巨、最费时和最伤元气的项目。我能完成这项任务的唯一原因是得到了我妻子Gowri的爱和支持。在我决定编写本书的差不多同一时间,我们意识到我们想要一个孩子。由于我全部的空闲时间都投入到编写这本书上,Gowri的责任就呈指数级增长了,尤其是在小Arjun降生后。Gowri以其似乎无限的力量和耐心,最终把一切都搞定了,我要给她致以最伟大的谢意。Arjun则通过他灿烂的笑容和滑稽的动作继续给我提供能量。我还要感谢我的家庭给予的爱和支持,尤其是Gowri的妈妈和她的姐姐 Gayethri,在我花了两年时间编写这本书期间,当我们需要家庭支持时,她们数次从世界的另一端飞过来帮助我们。   我要特别感谢我在IBM Research的经理Steve Welch,他给我提供了令人难以置信的支持,并且容忍了我飘忽不定的工作日程表。   无论怎样,都不足以表达我对Snorri Gylfason的谢意。他独自一人负责向我引荐Macintosh。如果不是他,我可能还没有开始使用Mac OS X,也不会对这个系统抱有好奇心,这本书也不可能问世。Snorri还是本书的最高效、最勤勉的评审者——他精心阅读过本书的每一页、每一幅插图和每个示例,并且做了非常好的标记。我们经历了数不清的通宵达旦的评审会议。在其他许多时间(基本上是每天),Snorri都会耐心地倾听一位过于劳累的作者的满腹牢骚,甚至在Snorri迁回他的祖国冰岛之后,他仍然履行了所有的评审 承诺。   我要感谢Mark A. Smith,尽管他最初对Mac OS X不感兴趣,但他仍然评审了本书的几乎全部内容。Mark提供了非常有价值的反馈,他经常以令人困惑的速度阅读本书,但他能够如此细致地捕捉到错误,以至于都有些违背逻辑。感谢Ted Bonkenburg、?lfar Erlingsson和Amurag Sharma,他们不折不扣地详细审查了书中的多个章节。当我从Ted极其忙碌的日程表中挤占他的时间时,他和蔼地与我进行了多次讨论。   感谢Addison-Wesley团队中所有人的辛勤工作和奉献精神。我要特别感谢我的编辑Catherine Nolan管理这个项目(以及与我打交道)。感谢Mark Taub、John Wait、Denise Mickelsen、Stephane Nakib、Kim Spilker、Beth Wickenhiser、Lara Wysong以及所有其他我不知名的人在制作本书的过程中所起的作用。   最后,感谢我的文字编辑Chrysta Meadowbrooke所做的一流工作。    关 于 作 者   Amit Singh是一位操作系统研究员,目前在Google工作。在此之前,Amit就职于IBM Almaden Research Center。再往前,他曾经为硅谷的启动做过一些工作,从事操作系统虚拟化方面的前沿性工作。Amit还是贝尔实验室Information Sciences Research Center(信息科学研究中心)技术人员中的一员,他在这里从事操作系统和网络方面的工作。他创建并维护了两个Web站点:www.osxbook.com和www.kernelthread.com。           献给我的父母Sharda和Amar Singh,感谢他们教会我去努力学习一切知识,感谢他们给予我需要(或者想要)从他们那里得到的一切,感谢他们一路的陪伴和无微不至的关照。 前 言   尽管Mac OS X是一种相对较新的操作系统,它的血统其实相当多姿多彩,并且它的大多数组件的历史也非常悠久。Mac OS X以及一般意义上的Apple近年来吸引了许多的注意力。鉴于Apple“受到狂热崇拜”的状况,以及Mac OS X独特的文化和技术组合,大量具有不同背景和兴趣的人(包括Mac OS X用户和非Mac OS X用户)都对这个系统感到好奇就不令人感到诧异了。   多年来在使用、编程和扩展了多个操作系统之后,2003年4月1日有人给我引荐了Mac OS X①。很快,我就对这个系统的结构充满了好奇心。尽管有几本介绍Mac OS X的优秀图书,但令我沮丧的是,我无法从一本书中学到Mac OS X内部工作原理的具体细 节——不存在这样一本书。有一些图书描述了如何在Mac OS X上执行多种任务;如何配置、自定义和调整系统;以及在某些用户看来在Mac OS X与Windows之间有何区别。还有一些图书介绍了特定的Mac OS X编程主题,比如Cocoa和Carbon API。其他图书则使UNIX②用户能够更轻松地迁移到Mac OS X——这样的图书通常讨论的是操作系统的命令行界面。尽管这些图书在促进人们理解Mac OS X方面起到了重要的作用,但是Mac OS X及其组件的核心体系结构和实现仍然保持神秘。更糟糕的是,除了信息缺乏之外,还经常能发现关于Mac OS X的组成结构的错误信息。由于长期形成的神话和固定印象,该系统经常被误解,或者给人的感觉像是一个黑盒。   本书的目的是从系统设计的角度描述Mac OS X,对其进行解析,并剥去它的神秘外衣。本书采用一种面向实现的方法来理解该系统。考虑进程间通信(InterProcess Communication,IPC)的示例。Mac OS X具有众多用户级和内核级的IPC机制,其中一些广为人知并且形成了文档。本书不仅仅将说明如何使用这些机制,而且将解释最基本的机制(Mach IPC)的设计和实现,然后讨论其他机制彼此之间是如何层叠的。我的目标不是教会你如何做一些具体的事情,而是给你提供足够的知识和示例,使得在读完本书后,依赖于你的兴趣和背景,你就可以基于最近获得的知识,做出自己的选择。   除了文字内容之外,本书还使用了详细的插图、函数调用图、加注释的代码段和编程示例,对Mac OS X进行详细的分析研究。为了使主题保持有趣和容易理解——甚至对于临时起意的读者也是如此,本书包含了相关的琐碎知识、与主题无关的段落以及其他花絮③。 本书读者对象   我希望任何对Mac OS X的组成结构和工作原理感到好奇的人都可以通过阅读本书而获益。   应用程序员可以对他们的应用程序将如何与系统交互获得更深的理解。系统程序员可以把本书作为一份参考,并且更好地理解核心系统是如何工作的。作为一名程序员,依我的经验看,切实理解系统的内部工作原理对于设计、开发和调试是极其有用的。例如,你可以知道系统能够做什么,什么是切实可行的,在给定情况下的“最佳”选项是什么,以及出现某些程序行为的可能的原因是什么。本书的主要目标是为在Mac OS X上编程的任何人构建一个稳固的基础。   Mac OS X用户可以阅读本书,更好地理解系统是如何设计的以及它是如何组建的。系统管理员和技术支持人员也可以在本书中发现有价值的信息。   除了那些使用Mac OS X的人之外,预期的读者还包括其他技术社区的成员,比如BSD、Linux和Windows社区。鉴于Mac OS X的许多内部方面与这些系统有着根本的不同(例如,Mach内核是如何使用的),本书将帮助这些读者拓宽他们的知识,并将帮助他们比较和对照Mac OS X与其他操作系统。   在学习高级操作系统课程时,尤其是如果你希望执行关于Mac OS X的案例研究,那么本书也将是有用的。不过,本书不适合用作入门性教材。尽管我在介绍许多高级主题时附带了一些背景信息,但是大多数内容介绍都超越了入门级的层次。 本书组织结构   现代操作系统变得如此巨大和复杂,以至于不可能在一本书中合理地描述整个系统。本书有点野心勃勃,这是由于它尝试切切实实地从广度和深度上介绍Mac OS X。对本书的深度最重要的贡献者是精心挑选的编程示例。本书被组织成12章。尽管本书的大量内容相当有技术性,但是每一章中都包含一些小节,它们对于非程序员也应该很容易理解。   第1章Mac OS X起源:描述了Mac OS X以及衍生出它的系统的技术发展史。该章介绍了Apple所有过去和当前的操作系统,在本书的配套Web站点上可以找到该章的未删节版本。   第2章Mac OS X概述:是关于Mac OS X及其重要特性的漫谈,其中包含构成该系统的多个层次的简要概述。   第3章Apple内幕:描述了PowerPC体系结构,并且使用PowerPC 970(“G5”)处理器系列作为特定的示例,其中还讨论了PowerPC汇编语言和调用约定。   第4章固件和引导加载程序:描述了开放固件(Open Firmware)和可扩展固件接口(Extensible Firmware Interface,EFI)以及它们各自的引导加载程序,其中还讨论了固件和引导加载程序在系统的操作、使用场景以及在早期的自引导(bootstrapping)期间所发生的事件中所起的作用。   第5章内核和用户级启动:描述了事件的序列——包括内核子系统的初始化——从内核开始执行的位置到内核运行第一个用户空间程序(launchd)的位置,其中讨论了launchd的函数和实现。   第6章xnu内核:描述了Mac OS X的核心内核体系结构,讨论包括系统调用家族以及它们的实现、低级跟踪和调试机制以及一些特殊的特性,比如内核的PowerPC版本中的虚拟机监视器。   第7章进程:描述了Mac OS X子系统中存在的多种抽象形式(比如任务、线程和进程)以及处理器调度,其中讨论了使用多种内核级和用户级接口,用于操纵上述的抽象。   第8章内存:描述了Mac OS X内存子系统的体系结构,其中讨论了Mach虚拟内存体系结构、分页、统一缓冲区缓存、工作集检测机制、内核级和用户级内存分配器以及对64位寻址的支持。   第9章进程间通信:描述了Mac OS X中提供的多种IPC和同步机制,尤其是其中讨论了Mach IPC的实现和使用。   第10章扩展内核:描述了I/O Kit,它是Mac OS X中的面向对象的驱动程序子系统。   第11章文件系统:描述了Mac OS X中总体的文件系统层,包括每种文件系统类型的简要讨论,其中还讨论了分区模式、磁盘管理和Spotlight搜索技术。   第12章HFS+文件系统:描述了HFS+文件系统,其中通过使用为本章编写的自定义的文件系统调试器来帮助进行讨论。   附录A基于x86的Macintosh计算机上的Mac OS X:突出强调了基于x86与基于PowerPC的Mac OS X版本之间的关键区别。除了这个附录之外,本书还介绍了几个关键的特定于x86的主题的详细知识,比如EFI、基于GUID的分区和通用二进制(Universal Binaries)。Mac OS X的大多数方面都是独立于体系结构的,因此本书的绝大多数内容也是独立于体系结构的。   鉴于本书篇幅比较长,我选择排除了几个在其他图书中介绍得比较好的主题。TCP/IP栈就是一个示例——本书中没有关于“联网”的章节,因为Mac OS X TCP/IP栈大体上是FreeBSD栈的衍生品,而FreeBSD栈已经形成了良好的文档。一般而言,本书中没有包括跨UNIX变体通用并且在标准文档中可以找到的信息。 如何阅读本书   由于本书的前两章分别提供了Mac OS X的背景知识和总体介绍,建议首先阅读这两章。后续各章最好也按顺序阅读。尽管如此,读者仍然可以根据自己的兴趣以及对某些主题的熟悉程度,跳过某些小节(也许甚至可以跳过某几章),以便从本书中获得有价值的 信息。   如果你对操作系统概念比较熟悉并且使用过UNIX操作系统,将会是有帮助的。   鉴于本书具有大量的C程序和程序代码段,你应该具有一些编程经验,尤其要具有C编程语言的知识。我有时不仅使用代码来演示概念的工作原理,而且还用于描述概念。我意识到“阅读”代码通常被认为是“困难”的,而一些作者通常期望许多读者将会简单地跳过代码。我的信念是:阅读本书中的代码(而不是仅仅运行它)对于程序员将特别有 帮助。   尽管本书的内容具有技术性,但是书中有几部分可以被程序员和非程序员轻松阅读。   作为一本Mac OS X内部工作原理的参考书,我希望本书及其示例在往后一段较长的时间对于它的读者都是有用的。 如何使用示例   本书中包括了许多自含式示例。其中许多示例都有比较重要的价值,这是由于它们做的事情既有用,又有趣。我希望这些示例能够发人深省,并且充当其他项目的构件。本书中显示的几乎所有的示例都带有命令行,用于编译和运行它们。   在合适的地方,在基于PowerPC和基于x86的Macintosh计算机上测试了这些示例。值得注意的是:在代码仅适用于PowerPC的情况下,比如在PowerPC汇编语言示例中,它通常可以在基于x86的Macintosh上编译和运行——这样的代码将可以在Rosetta二进制转换软件下运行。不过,本书中的少量示例将需要PowerPC Macintosh——它们将不会在Rosetta下运行。 相关的材料   当今,技术进步是如此之快,以至于几乎不可能出版一本全新的图书。幸运的是,Internet访问允许作者和出版社在图书出版之后使各种材料可供读者使用。本书最有用的资源是它的配套网站www.osxbook.com,它提供了以下资源: * 勘误表和更新。 * 本书中的源代码。 * 本书的博客,其中具有关于新材料可用性的新闻和公告。 * 一组论坛,其中可以讨论与本书(以及一般意义上的Mac OS X)相关的主题。 * 额外的内容区,其中包含与本书相关的额外文章、演示文稿、二进制代码和源代码。 * 本书中的示例内容,包括详细的目录。             ① 这个日期很有趣,因为巧合的是,Apple是在1976年4月1日成立的。    ② 我使用术语“UNIX”代表UNIX系统、源于UNIX的系统或者类UNIX系统之一。    ③ 脚注也是一个有益的补充!

more >
扫描二维码
下载APP了解更多

同系列产品more >

分布式数据库系统原理(第4版)

(德)塔姆尔·厄兹叙(M
定 价:99元

查看详情
密码学与网络安全(第4版)

(印)阿图尔·卡哈特(A
定 价:79元

查看详情
数字图像的计算几何、拓扑和物理及...

(加)詹姆斯·彼得斯(J
定 价:89元

查看详情
计算机网络(第6版)

(美)安德鲁·S.特南鲍
定 价:138元

查看详情
彩色计算机视觉:基础与应用

(荷)西奥·盖维尔斯(T
定 价:69元

查看详情
图书分类全部图书
more >
  • 1. 详尽剖析Mac OS X内部工作原理的具体细节。
    2. 揭示Mac OS X及其组件的核心体系结构和实现。
    3. 以一种面向实现的方法介绍Mac OS X系统。
    4. 透彻解释Mac OS X的众多用户级和内核级IPC机制的工作原理,并且提供足够的知识和示例,可以满足各个层次的读者的不同需求。
    5. 提供了详细的插图、函数调用图、加注释的代码段和编程示例,并且在书中点缀了各种花絮。
  • 1. 详尽剖析Mac OS X内部工作原理的具体细节。
    2. 揭示Mac OS X及其组件的核心体系结构和实现。
    3. 以一种面向实现的方法介绍Mac OS X系统。
    4. 透彻解释Mac OS X的众多用户级和内核级IPC机制的工作原理,并且提供足够的知识和示例,可以满足各个层次的读者的不同需求。
    5. 提供了详细的插图、函数调用图、加注释的代码段和编程示例,并且在书中点缀了各种花絮。
more >
  • 目??录

    第1章  Mac OS X起源 1

    1.1  Apple对操作系统的探求 1

    1.1.1  Star Trek 2

    1.1.2  Raptor 2

    1.1.3  NuKernel 3

    1.1.4  TalOS 3

    1.1.5  Copland 3

    1.1.6  Gershwin 5

    1.1.7  BeOS 5

    1.1.8  A计划 6

    1.2  NeXT篇章 7

    1.2.1  NEXTSTEP 7

    1.2.2  OpenStep 10

    1.3  Mach因素 11

    1.3.1  罗切斯特智能网关 11

    1.3.2  Accent 12

    1.3.3  Mach 13

    1.3.4  MkLinux 16

    1.3.5  音乐名称 17

    1.4  战略 17

    1.4.1  Mac OS 8和

    ???Mac OS 9 18

    1.4.2  Rhapsody 20

    1.5  朝着Mac OS X前进 22

    1.5.1  Mac OS X Server 1.x 23

    1.5.2  Mac OS X Developer 

    ?? ?Previews 23

    1.5.3  Mac OS X Public Beta

    ???版本 24

    1.5.4  Mac OS X 10.x 25

    第2章  Mac OS X概述 30

    2.1  固件 31

    2.2  引导加载程序 32

    2.3  Darwin 32

    2.3.1  Darwin程序包 32

    2.3.2  Darwin的优点 33

    2.3.3  Darwin和Mac OS...

精彩书评more >

标题

评论

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘