图书介绍

Mac OS X技术内幕2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Mac OS X技术内幕
  • (美)阿米特·辛格(Amit Singh)著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302509097
  • 出版时间:2019
  • 标注页数:1302页
  • 文件大小:167MB
  • 文件页数:1324页
  • 主题词:微型计算机-操作系统

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Mac OS X技术内幕PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 Mac OS X起源1

1.1 Apple对操作系统的探求1

1.1.1 Star Trek2

1.1.2 Raptor2

1.1.3 NuKernel3

1.1.4 TalOS3

1.1.5 Copland3

1.1.6 Gershwin5

1.1.7 BeOS5

1.1.8 A计划6

1.2 NeXT篇章7

1.2.1 NEXTSTEP7

1.2.2 OpenStep10

1.3 Mach因素11

1.3.1罗切斯特智能网关11

1.3.2 Accent12

1.3.3 Mach13

1.3.4 MkLinux16

1.3.5音乐名称17

1.4战略17

1.4.1 Mac OS 8和Mac OS 918

1.4.2 Rhapsody20

1.5朝着Mac OS X前进22

1.5.1 Mac OS X Server 1.x23

1.5.2 Mac OS X Developer Previews23

1.5.3 Mac OS X Public Beta版本24

1.5.4 Mac OS X 10.x25

第2章 Mac OS X概述30

2.1固件31

2.2引导加载程序32

2.3 Darwin32

2.3.1 Darwin程序包32

2.3.2 Darwin的优点33

2.3.3 Darwin和Mac OS X33

2.4 xnu内核33

2.4.1 Mach34

2.4.2 BSD35

2.4.3 I/O Kit36

2.4.4 libkern库37

2.4.5 libsa库38

2.4.6 Platform Export38

2.4.7内核扩展39

2.5文件系统的用户空间视图39

2.5.1文件系统域40

2.5.2 /System/Library/目录40

2.6运行时体系结构42

2.6.1 Mach-O文件43

2.6.2胖二进制文件45

2.6.3链接48

2.7 C库52

2.8捆绑组件和框架54

2.8.1捆绑组件54

2.8.2属性列表文件58

2.8.3框架59

2.8.4预绑定62

2.9 Core Services64

2.10应用程序服务65

2.10.1图形和多媒体服务65

2.10.2其他应用程序服务72

2.11应用程序环境73

2.11.1 BSD73

2.11.2 X Window System74

2.11.3 Carbon74

2.11.4 Cocoa76

2.11.5 WebObjects81

2.11.6 Java81

2.11.7 QuickTime82

2.11.8 Classic82

2.11.9 Rosetta83

2.12用户界面84

2.12.1可视化效果84

2.12.2与分辨率无关的用户界面85

2.12.3效率特性85

2.12.4通用访问支持86

2.13编程87

2.13.1 Xcode87

2.13.2编译器和库89

2.13.3解释器89

2.13.4工具92

2.14安全94

2.14.1内核空间的安全95

2.14.2用户空间的安全96

2.14.3系统管理100

2.14.4审计系统103

2.15 Mac OS X Server105

2.15.1 Xgrid105

2.15.2 Xsan108

2.16网络111

第3章 Apple内幕112

3.1 Power Mac G5113

3.1.1 U3H系统控制器113

3.1.2 K2 I/O设备控制器114

3.1.3 PCI-X和PCI Express115

3.1.4 HyperTransport117

3.1.5 Elastic I/O互连118

3.2 G5:血统和路线图120

3.2.1 G5的基本方面121

3.2.2新一代POWER122

3.2.3 PowerPC 970、970FX和970MP123

3.2.4 Intel Core Duo125

3.3 PowerPC 970FX125

3.3.1基本知识125

3.3.2缓存126

3.3.3内存管理单元(MMU)130

3.3.4各式各样的内部缓冲区和队列133

3.3.5预取134

3.3.6寄存器135

3.3.7重命名寄存器141

3.3.8指令集142

3.3.9 970FX核心146

3.3.10 AltiVec153

3.3.11电源管理158

3.3.12 64位体系结构160

3.3.13软补丁功能161

3.4软件约定161

3.4.1字节序162

3.4.2寄存器使用163

3.4.3栈使用166

3.4.4函数形参和返回值172

3.5示例173

3.5.1递归阶乘函数174

3.5.2原子式比较和存储函数177

3.5.3函数重定向179

3.5.4 970FX的周期精确的模拟188

第4章 固件和引导加载程序193

4.1简介193

4.1.1固件的种类194

4.1.2优先存储194

4.2全新的世界195

4.2.1“新”是好消息196

4.2.2现代的Boot ROM(PowerPC)197

4.3上电复位199

4.4 Open Firmware199

4.4.1与Open Firmware交互200

4.4.2 Open Firmware仿真器204

4.5 Forth204

4.5.1基本单元204

4.5.2栈204

4.5.3字205

4.5.4字典206

4.5.5调试212

4.6设备树213

4.6.1属性216

4.6.2方法220

4.6.3数据220

4.7 Open Firmware接口221

4.7.1用户接口222

4.7.2客户接口222

4.7.3设备接口222

4.8编程示例222

4.8.1转储NVRAM内容223

4.8.2确定屏幕尺寸224

4.8.3处理颜色224

4.8.4绘制颜色填充的矩形225

4.8.5创建“汉诺塔”问题的动画式解决方案226

4.8.6创造和使用鼠标指针236

4.8.7窃取字体239

4.8.8实现时钟241

4.8.9绘制图像242

4.8.10创建窗口243

4.9固件引导序列244

4.9.1脚本246

4.9.2锁键246

4.10 BootX247

4.10.1文件格式247

4.10.2结构249

4.10.3操作249

4.11备用的引导方案257

4.11.1引导备用内核257

4.11.2从软件RAID设备引导259

4.11.3通过网络引导262

4.12固件安全264

4.12.1管理固件安全264

4.12.2找回Open Firmware密码266

4.13启动内核266

4.14 BootCache优化267

4.15 引导时的内核参数268

4.16 EFI273

4.16.1遗留的伤痛273

4.16.2新的开始275

4.16.3 EFI276

4.16.4 EFI的抽样278

4.16.5 EFI的好处285

第5章 内核和用户级启动287

5.1安排内核执行287

5.1.1异常和异常矢量288

5.1.2内核符号290

5.1.3运行内核291

5.2低级处理器初始化292

5.2.1每个处理器的数据292

5.2.2复位类型296

5.2.3处理器类型298

5.2.4内存补丁301

5.2.5特定于处理器的初始化303

5.2.6其他早期的初始化304

5.3高级处理器初始化307

5.3.1在虚拟内存之前308

5.3.2低级虚拟内存初始化311

5.3.3在虚拟内存之后316

5.4 Mach子系统初始化320

5.4.1调度器初始化322

5.4.2高级虚拟内存子系统初始化322

5.4.3 IPC初始化327

5.4.4完成VM和IPC初始化327

5.4.5初始化其他的子系统328

5.4.6任务和线程328

5.4.7启动内核自举线程329

5.5第一个线程329

5.6 I/O Kit初始化331

5.7 BSD初始化338

5.7.1其他的BSD初始化(第1部分)339

5.7.2文件系统初始化341

5.7.3其他的BSD初始化(第2部分)342

5.7.4网络子系统初始化343

5.7.5其他的BSD初始化(第3部分)346

5.7.6挂接根文件系统348

5.7.7创建进程1355

5.7.8共享内存区域357

5.8启动第一个用户空间的程序359

5.9从处理器360

5.10用户级启动362

5.10.1 launchd362

5.10.2多用户启动374

5.10.3单用户启动382

5.10.4安装启动382

第6章 xnu内核386

6.1 xnu源386

6.2 Mach391

6.2.1内核基础392

6.2.2异常处理396

6.3 Mach API的性质397

6.3.1显示主机信息397

6.3.2访问内核的时钟服务399

6.3.3使用时钟服务发出警报402

6.3.4显示主机统计信息404

6.4进入内核407

6.4.1控制转移的类型408

6.4.2实现系统进入机制410

6.5异常处理418

6.5.1硬件中断423

6.5.2各种陷阱424

6.5.3系统调用426

6.6系统调用处理426

6.7系统调用类别429

6.7.1 BSD系统调用429

6.7.2 Mach陷阱446

6.7.3 I/O Kit陷阱453

6.7.4仅支持PowerPC的系统调用453

6.7.5超快陷阱454

6.7.6公共页460

6.8对调试、诊断和跟踪的内核支持467

6.8.1 GDB(基于网络或者基于FireWire的调试)467

6.8.2 KDB(基于串行线路的调试)468

6.8.3 CHUD支持470

6.8.4内核分析(kgmon和gprof)476

6.8.5每个进程的内核跟踪(ktrace(2)和kdump)480

6.8.6审计支持482

6.8.7细粒度的内核事件跟踪(kdebug)486

6.8.8低级诊断和调试接口499

6.8.9低级内核跟踪508

6.9虚拟机监视器516

6.9.1特性517

6.9.2使用VMM设施518

6.9.3示例:在虚拟机中运行代码519

6.10编译内核533

6.10.1获取必要的程序包533

6.10.2编译必要的程序包534

6.10.3编译xnu程序包536

6.10.4 DarwinBuild536

第7章 进程538

7.1进程:从早期的UNIX到Mac OS X538

7.1.1 Mac OS X进程限制539

7.1.2 Mac OS X执行风格540

7.2 Mach抽象、数据结构和API541

7.2.1关系总结542

7.2.2处理器集542

7.2.3处理器544

7.2.4任务和任务API553

7.2.5线程555

7.2.6线程相关的抽象561

7.3新系统的许多线程571

7.3.1 Mach任务和线程572

7.3.2 BSD进程592

7.3.3 POSIX线程(Pthreads)602

7.3.4 Java线程604

7.3.5 Cocoa中的NSTask类605

7.3.6 Cocoa中的NSThread类606

7.3.7 Carbon Process Manager609

7.3.8 Carbon Multiprocessing Services611

7.3.9 Carbon Thread Manager613

7.4调度616

7.4.1调度基础设施初始化616

7.4.2调度器操作628

7.4.3调度策略639

7.5 execve()系统调用647

7.5.1 Mach-O二进制文件650

7.5.2胖(通用)二进制文件658

7.5.3解释器脚本658

7.6启动应用程序660

7.6.1把实体映射到处理程序660

7.6.2统一类型标识符662

第8章 内存665

8.1回顾665

8.1.1虚拟内存和UNIX665

8.1.2虚拟内存和个人计算666

8.1.3 Mac OS X虚拟内存子系统的根源666

8.2 Mac OS X内存管理概览667

8.2.1从用户空间中读取内核内存669

8.2.2查询物理内存大小673

8.3 Mach VM674

8.3.1概述674

8.3.2任务地址空间676

8.3.3 VM映射677

8.3.4 VM映射条目677

8.3.5 VM对象677

8.3.6分页器679

8.3.7写时复制685

8.3.8物理映射(pmap)687

8.4驻留内存690

8.4.1 vm_page结构690

8.4.2搜索驻留页691

8.4.3驻留页队列692

8.4.4页置换692

8.4.5物理内存簿记693

8.4.6页错误696

8.5自举期间的虚拟内存初始化697

8.6 Mach VM用户空间的接口698

8.6.1 mach_vm_map()700

8.6.2 mach_vm_remap()703

8.6.3 mach_vm_allocate()703

8.6.4 mach_vm_deallocate()703

8.6.5 mach_vm_protect()704

8.6.6 mach_vm_inherit()704

8.6.7 mach_vm_read()704

8.6.8 mach_vm_write()705

8.6.9 mach_vm_copy()706

8.6.10 mach_vm_wire()706

8.6.11 mach_vm_behavior_set()706

8.6.12 mach_vm_msync()708

8.6.13统计709

8.7使用Mach VM接口710

8.7.1控制内存继承710

8.7.2调试Mach VM子系统713

8.7.3保护内存714

8.7.4访问另一个任务的内存715

8.7.5命名和共享内存718

8.8内核和用户地址空间布局724

8.9通用页列表(UUL)726

8.10统一缓冲区缓存(UBC)727

8.10.1 UBC接口729

8.10.2 NFS缓冲区缓存730

8.11动态分页器程序732

8.12更新守护进程734

8.13系统共享内存735

8.13.1共享内存的应用735

8.13.2 Shared Memory Server子系统的实现738

8.13.3动态链接器的共享目标文件加载742

8.13.4通过系统应用程序使用shared_region_map_file_np()745

8.13.5关于预绑定的注释751

8.14任务工作集检测和维护752

8.14.1 TWS机制752

8.14.2 TWS实现753

8.15 用户空间中的内存分配757

8.15.1历史性突破757

8.15.2内存分配器内幕759

8.15.3 malloc()例程771

8.15.4最大的单个分配(32位)773

8.15.5最大的单个分配(64位)774

8.15.6枚举所有指针775

8.15.7显示可伸缩区域的统计信息778

8.15.8记录malloc操作780

8.15.9实现malloc层783

8.16内核中的内存分配784

8.16.1页级分配784

8.16.2 kmem_alloc787

8.16.3 Mach区域分配器788

8.16.4 kalloc函数家族794

8.16.5 OSMalloc函数家族795

8.16.6 I/O Kit中的内存分配796

8.16.7内核的BSD部分的内存分配799

8.16.8 libkem的C++环境中的内存分配801

8.17内存映射的文件802

8.18 64位计算809

8.18.1引入64位计算的原因810

8.18.2 Mac OS X 10.4:64位用户地址空间813

8.18.3为什么不使用64位的可执行文件817

8.18.4 64位“场景”817

第9章 进程间通信818

9.1简介818

9.1.1 IPC的演化819

9.1.2 Mac OS X中的IPC820

9.2 Mach IPC:概述821

9.2.1 Mach端口822

9.2.2 Mach IPC消息825

9.3 Mach IPC:Mac OS X实现832

9.3.1 IPC空间833

9.3.2 Mach端口的构成835

9.3.3任务和IPC838

9.3.4线程和IPC840

9.3.5端口分配841

9.3.6消息传递实现846

9.3.7 IPC子系统初始化848

9.4名称服务器和自举服务器850

9.4.1网络消息服务器850

9.4.2自举服务器851

9.4.3自举服务器API854

9.5使用Mach IPC864

9.5.1简单的客户-服务器示例865

9.5.2死名869

9.5.3端口集870

9.5.4介入872

9.5.5传输页外内存和端口权限874

9.6 MIG878

9.6.1 MIG规范文件879

9.6.2使用MIG创建客户-服务器系统882

9.6.3内核中的MIG890

9.7 Mach异常893

9.7.1 Mach的异常处理设施的程序员可见的方面895

9.7.2 Mach异常处理链898

9.7.3示例:Mach异常处理程序902

9.8信号908

9.8.1可靠性909

9.8.2信号的数量910

9.8.3应用程序定义的信号910

9.8.4异步I/O的基于信号的通知910

9.8.5信号和多线程913

9.8.6信号动作913

9.8.7信号生成和递送915

9.8.8 Mach异常与UNIX信号共存917

9.8.9异常、信号和调试919

9.8.10 ptrace()系统调用920

9.9管道920

9.10命名管道(fifo)921

9.11文件描述符传递922

9.12 XSI IPC929

9.13 POSIX IPC929

9.13.1 POSIX信号量930

9.13.2 POSIX共享内存934

9.14 Distributed Objects938

9.15 Apple Events945

9.15.1在AppleScript中使用Apple Events平铺应用程序窗口947

9.15.2在C程序中构建和发送Apple Event949

9.15.3通过发送AppleEvent导致系统睡眠951

9.16通知953

9.16.1 Foundation通知953

9.16.2 notify(3)API956

9.16.3内核事件通知机制(kqueue(2))963

9.16.4 Core Foundation通知967

9.16.5 fsevents967

9.16.6 kauth967

9.17 Core Foundation IPC967

9.17.1通知968

9.17.2运行循环971

9.18同步980

9.18.1用于原子操作的接口981

9.18.2低级锁定982

9.18.3 BSD条件变量985

9.18.4 Mach锁集986

9.18.5 Mach信号量986

9.18.6 Pthreads同步接口990

9.18.7 I/O Kit中的锁定990

9.18.8漏斗991

9.18.9 SPL996

9.18.10劝告模式的文件锁定996

第10章 扩展内核999

10.1沿着内存通道的驱动程序999

10.1.1驱动程序编程被认为是困难的999

10.1.2良好的继承999

10.1.3一切都是文件1000

10.1.4扩展内核不仅仅是驱动设备1000

10.2 I/O Kit1000

10.2.1嵌入式C++1002

10.2.2 I/O Kit类层次结构1003

10.2.3 I/O Kit家族1004

10.2.4 I/O Kit驱动程序1005

10.2.5结点1006

10.2.6一般I/O Kit类1006

10.2.7工作循环1008

10.2.8 I/O Registry1013

10.2.9 I/O Catalog1014

10.2.10 I/O Kit初始化1014

10.2.11 I/O Kit中的驱动程序匹配1016

10.3 DART1017

10.4动态扩展内核1018

10.4.1内核扩展的结构1018

10.4.2内核扩展的创建1019

10.4.3内核扩展的管理1024

10.4.4内核扩展的自动加载1025

10.5与内核通信1026

10.6创建内核扩展1027

10.6.1通用内核扩展1027

10.6.2使用通用kext实现sysctl变量1031

10.6.3 I/O Kit设备驱动程序kext1035

10.7 I/O Kit功能的编程之旅1042

10.7.1旋转帧缓冲区1042

10.7.2访问帧缓冲区内存1046

10.7.3获取固件变量的列表1048

10.7.4获取关于加载的内核扩展的信息1049

10.7.5从SMS获取加速计数据1051

10.7.6列出PCI设备1055

10.7.7获取计算机的序号和型号信息1056

10.7.8获取温度传感器读数1057

10.7.9获取以太网接口的MAC地址1060

10.7.10实现一种加密式磁盘过滤方案1062

10.8调试1073

10.8.1内核恐慌1073

10.8.2远程核心转储1074

10.8.3日志记录1075

10.8.4使用GDB进行调试1078

10.8.5使用KDB进行调试1080

10.8.6各种各样的调试工具1085

10.8.7 stabs1086

第11章 文件系统1092

11.1磁盘和分区1092

11.1.1 Apple分区方案1095

11.1.2 PC风格的分区1097

11.1.3基于GUID的分区1098

11.2 DiskArbitration1098

11.2.1获取磁盘的描述1100

11.2.2参与磁盘挂接决策1102

11.2.3从I/O Kit接收媒体通知1103

11.3磁盘设备的实现1106

11.4磁盘映像1110

11.4.1使用hdiutil程序1110

11.4.2 RAM磁盘1113

11.4.3 BSD虚拟结点磁盘驱动程序1113

11.4.4从头开始创建虚拟磁盘1114

11.5文件和文件描述符1116

11.6 VFS层1118

11.7文件系统类型1127

11.7.1 HFS+和HFS1128

11.7.2 ISO 96601129

11.7.3 MS-DOS1130

11.7.4 NTFS1131

11.7.5 UDF1131

11.7.6 UFS1131

11.7.7 AFP1133

11.7.8 FTP1134

11.7.9 NFS1135

11.7.10 SMB/CIFS1135

11.7.11 WebDAV1136

11.7.12 cddafs1136

11.7.13 deadfs1138

11.7.14 devfs1139

11.7.15 fdesc1139

11.7.16 specfs和fifofs1140

11.7.17 synthfs1141

11.7.18联合1142

11.7.19 volfs1144

11.8 Spotlight1145

11.8.1 Spotlight的体系结构1146

11.8.2 fsevents机制1151

11.8.3导入元数据1163

11.8.4查询Spotlight1165

11.8.5 Spotlight命令行工具1173

11.8.6克服粒度限制1173

11.9访问控制列表1175

11.10 kauth授权子系统1178

11.10.1 kauth概念1179

11.10.2实现1182

11.10.3虚拟结点级文件系统活动监视器1184

第12章 HFS+文件系统1201

12.1分析工具1202

12.1.1 HFSDebug1202

12.1.2用于获取文件系统基本属性的接口1204

12.1.3 Mac OS X命令行工具1204

12.1.4 HFS+源和技术说明TN 11501204

12.2基本概念1205

12.2.1卷1205

12.2.2分配块1206

12.2.3区段1206

12.2.4文件分支1207

12.2.5簇1208

12.2.6 B树1208

12.3 HFS+卷的结构1215

12.4保留区域1216

12.5卷头1217

12.5.1查看卷头1217

12.5.2查看卷控制块1222

12.6 HFS包装器1223

12.7特殊文件1226

12.7.1分配文件1226

12.7.2编目文件1230

12.7.3区段溢出文件1237

12.7.4基本属性文件1242

12.7.5启动文件1247

12.8检查HFS+特性1247

12.8.1大小写敏感性1247

12.8.2文件名编码1249

12.8.3权限1250

12.8.4日志记录1254

12.8.5配额1260

12.8.6硬链接1261

12.8.7解除链接打开的文件1265

12.8.8符号链接1266

12.8.9别名1267

12.8.10资源分支1268

12.9优化1270

12.9.1即时的碎片整理1270

12.9.2元数据区域1273

12.9.3热文件群集1274

12.10其他各种特性1280

12.10.1特殊的系统调用1280

12.10.2冻结和解冻卷1280

12.10.3扩展和收缩卷1281

12.10.4卷通知1281

12.10.5对稀疏设备的支持1283

12.11 比较Mac OSX文件系统1284

12.12比较HFS+与NTFS1290

附录A 基于x86的Macintosh计算机上的Mac OS X1293

A.1硬件区别1293

A.2固件和引导1294

A.3分区1295

A.4通用二进制文件1296

A.5 Rosetta1297

A.6字节序1299

A.7其他各种改变1299

A.7.1无双重映射的内核地址空间1299

A.7.2不可执行的栈1299

A.7.3线程创建1300

A.7.4系统调用1301

A.7.5没有/dev/mem或/dev/kmem1302

A.7.6新的I/O Kit平面1302

热门推荐