网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 深入解析Mac OS X & iOS操作系统
分类 计算机-操作系统
作者 (美)莱文
出版社 清华大学出版社
下载
简介
编辑推荐

《深入解析Mac OS X & iOS操作系统》编著者莱文。

本书由苹果系统专家执笔,深入Mac OS X和iOS的内部,剖析苹果系统的内核及本质,并详解各种内核工具的用法。内容包括内核的任务和基本组成、进程管理和调度、内存管理、虚拟内存、锁与进程间通信、模块、虚拟文件系统、网络、系统调用、内核活动、时间管理、页缓存和块缓存、数据同步、页面收回和交换、审计等主题。

内容推荐

《深入解析Mac OS X & iOS操作系统》编著者莱文。

系统开发者、内核黑客和对苹果感到好奇的人们注意了!本书探讨了MacOSX系统和iOS系统的方方面面,深入讲解了两个系统的架构,讨论了框架手册没有讨论的内容。本书清晰而详细地讨论了苹果操作系统的内部工作原理,包括苹果私有的API,书中的大部分内容都是首次披露。

《深入解析Mac OS X & iOS操作系统》在漫游系统架构的时候,从用户态深入到内核态,通过带注释的代码示例揭示了每一个层次和组件,还提供了可上手的实验,并且比较了两个系统实现的区别。

主要内容

◆引导过程:Mac的EFI、iOS的iBoot以及内核启动过程

◆进程、线程以及虚拟内存管理

◆通过DTrace、ptrace和隐藏的系统调用进行调试和性能剖析

◆系统级的API:POSIX调用、Mach陷阱以及OSX/iOS私有的API

◆文件系统架构,包括VFS和HFS+

◆网络架构:从套接字到网络接口以及网络驱动程序

◆内核扩展、驱动程序以及I/OKit架构的讨论

◆安全特性、强制访问控制(MAC)以及iOS监狱

《深入解析MacOSX&iOS操作系统》的支持网站(http://www。newosxbook。com)包含了示例程序、可免费下载的工具、更新的参考资料以及其他额外的内容。

目录

第Ⅰ部分 高级用户指南

第1章 达尔文主义:OS X的进化史 3

 1.1 前达尔文时代:Mac OS Classic 3

 1.2 浪子回头:NeXTSTEP 4

 1.3 走进新时代:OS X操作系统 4

 1.4 迄今为止的所有OS X版本 5

 1.4.1 10.0——Cheetah,初出茅庐 5

 1.4.2 10.1——Puma,更强大 5

 1.4.3 10.2——Jaguar,渐入佳境 6

 1.4.4 10.3——Panther和Safari 6

 1.4.5 10.4——Tiger,转投Intel的怀抱 6

 1.4.6 10.5——Leopard和UNIX 6

 1.4.7 10.6——Snow Leopard 7

 1.4.8 10.7——Lion 7

 1.4.9 10.8——Mountain Lion 8

 1.5 iOS——走向移动平台的OS X 9

 1.5.1 1.x——Heavenly,第一代iPhone 9

 1.5.2 2.x——App Store、3G和企业级的特性 10

 1.5.3 3.x——告别第一代,迎来iPad 10

 1.5.4 4.x——iPhone 4、Apple TV和iPad 2 10

 1.5.5 5.x——iPhone 4S和更新的硬件 11

 1.5.6 iOS和OS X对比 11

 1.6 OS X的未来 13

 1.7 本章小结 14

 参考文献 15

第2章 合众为一:OS X和iOS的架构 17

 2.1 OS X架构概述 17

 2.2 用户体验层 19

 2.2.1 Aqua 19

 2.2.2 QuickLook 20

 2.2.3 Spotlight 21

 2.3 Darwin——UNIX核心 22

 2.3.1 Shell 22

 2.3.2 文件系统 23

 2.4 UNIX的系统目录 23

 2.4.1 OS X特有的目录 24

 2.4.2 iOS文件系统的区别 25

 2.5 bundle 25

 2.6 应用程序和app 26

 2.6.1 Info.plist 27

 2.6.2 Resources目录 29

 2.6.3 NIB文件 29

 2.6.4 通过.lproj文件实现国际化 30

 2.6.5 图标文件(.icns) 30

 2.6.6 CodeResources 30

 2.7 框架 33

 2.7.1 框架bundle格式 33

 2.7.2 OS X和iOS公共框架列表 35

 2.8 库 41

 2.9 其他应用程序类型 43

 2.9.1 Java(仅限于OS X) 43

 2.9.2 Widget 43

 2.9.3 BSD/Mach原生程序 44

 2.10 系统调用 44

 2.10.1 POSIX 44

 2.10.2 Mach系统调用 45

 2.11 XNU概述 47

 2.11.1 Mach 47

 2.11.2 BSD层 48

 2.11.3 libkern 48

 2.11.4 I/O Kit 48

 2.12 本章小结 48

 参考文献 49

第3章 站在巨人的肩膀上:OS X和iOS使用的技术 51

 3.1 BSD相关的特性 51

 3.1.1 sysctl 51

 3.1.2 kqueue 53

 3.1.3 审计(OS X) 54

 3.1.4 强制访问控制 57

 3.2 OS X和iOS特有的技术 60

 3.2.1 用户和组的管理(OS X) 60

 3.2.2 系统配置 62

 3.2.3 记录日志 64

 3.2.4 Apple事件和AppleScript 66

 3.2.5 FSEvents 68

 3.2.6 通知 73

 3.2.7 其他重要的API 73

 3.3 OS X和iOS的安全机制 73

 3.3.1 代码签名 74

 3.3.2 隔离机制(沙盒化) 75

 3.3.3 Entitlement:更严格的沙盒 77

 3.3.4 沙盒机制的实施 82

 3.4 本章小结 83

 参考文献 84

第4章 庖丁解进程:Mach-O格式、进程以及线程内幕 85

 4.1 关键概念回顾 85

 4.1.1 进程和线程 85

 4.1.2 进程生命周期 86

 4.1.3 UNIX信号 89

 4.2 可执行文件 91

 4.3 通用二进制格式 92

 4.3.1 Mach-O二进制格式 95

 4.3.2 加载命令 98

 4.4 动态库 104

 4.4.1 启动时库的加载 105

 4.4.2 库的运行时加载 113

 4.4.3 dyld的特性 115

 4.5 进程地址空间 120

 4.5.1 进程入口点 120

 4.5.2 地址空间布局随机化 121

 4.5.3 32位地址空间(Intel) 122

 4.5.4 64位地址空间 123

 4.5.5 32位地址空间(iOS) 123

 4.6 进程内存分配(用户态) 128

 4.6.1 alloca() 128

 4.6.2 堆分配 128

 4.6.3 虚拟内存——系统管理员的角度 130

 4.7 线程 132

 参考文献 134

第5章 进程跟踪和调试 135

 5.1 DTrace 135

 5.1.1 D语言 135

 5.1.2 dtruss 138

 5.1.3 DTrace工作原理 139

 5.2 其他剖析机制 142

 5.2.1 CHUD的衰落 142

 5.2.2 继任者AppleProfileFamily 142

 5.3 进程信息 143

 5.3.1 sysctl 143

 5.3.2 proc_info 144

 5.4 进程和系统快照 146

 5.4.1 system_profiler(8) 146

 5.4.2 sysdiagnose(1) 146

 5.4.3 allmemory(1) 147

 5.4.4 stackshot(1) 148

 5.4.5 stack_snapshot系统调用 149

 5.5 kdebug 152

 5.5.1 基于kdebug的工具 152

 5.5.2 kdebug代码 152

 5.5.3 写入kdebug消息 154

 5.5.4 读取kdebug消息 155

 5.6 应用程序崩溃 156

 5.6.1 应用程序挂起和采样 159

 5.6.2 内存破坏的bug 160

 5.7 内存泄漏 161

 5.7.1 heap(1) 162

 5.7.2 leaks(1) 162

 5.7.3 malloc_history(1) 163

 5.8 标准UNIX工具 163

 5.8.1 通过ps(1)列出进程列表 164

 5.8.2 top(1):系统全局视图 164

 5.8.3 通过lsof(1)和fuser(1)

 进行文件诊断 165

 5.9 使用GDB 165

 5.9.1 GDB的Darwin扩展 166

 5.9.2 GDB用于iOS 166

 5.9.3 LLDB 166

 5.10 本章小结 167

 参考文献和深入阅读 167

第6章 引导过程:EFI和iBoot 169

 6.1 传统形式的引导 169

 6.2 揭秘EFI 171

 6.2.1 EFI的基本概念 171

 6.2.2 EFI服务 173

 6.2.3 NVRAM变量 177

 6.3 OS X和boot.efi 178

 6.3.1 boot.efi的执行流程 179

 6.3.2 引导内核 185

 6.3.3 内核对EFI的回调 187

 6.3.4 Lion中boot.efi的变化 187

 6.3.5 Boot Camp 187

 6.3.6 bless(8) 188

 6.4 iOS和iBoot 192

 6.4.1 初期:引导ROM 193

 6.4.2 普通引导 194

 6.4.3 恢复模式引导 195

 6.4.4 设备固件更新(DFU)模式 195

 6.4.5 降级和回放攻击 196

 6.5 安装镜像 196

 6.5.1 OS X安装过程 196

 6.5.2 iOS文件系统镜像(.ipsw文件) 201

 6.6 本章小结 206

 参考文献和深入阅读 206

第7章 贯穿始终——launchd 207

 7.1 launchd 207

 7.1.1 启动launchd 207

 7.1.2 系统范围和用户范围的

 launchd 208

 7.1.3 守护程序和代理程序 208

 7.1.4 多面手launchd 209

 7.2 LaunchDaemon列表 220

 7.3 GUI shell程序 224

 7.3.1 Finder(OS X) 224

 7.3.2 SpringBoard(iOS) 225

 7.4 XPC(Lion和iOS) 230

 7.5 本章小结 234

 参考文献和深入阅读 235

第Ⅱ部分 内核

第8章 内核架构 239

 8.1 内核基础知识 239

 8.2 用户态和内核态 243

 8.2.1 Intel架构——ring 243

 8.2.2 ARM架构——CPSR 244

 8.3 内核态/用户态转换机制 245

 8.3.1 Intel上的陷阱处理程序 246

 8.3.2 自愿的内核转换 254

 8.4 系统调用的处理 259

 8.4.1 POSIX/BSD系统调用 260

 8.4.2 Mach陷阱 263

 8.4.3 机器相关的调用 267

 8.4.4 诊断调用 268

 8.5 XNU和硬件抽象 270

 8.6 本章小结 272

 参考文献 272

第9章 由生到死——内核引导和内核崩溃 273

 9.1 XNU源代码 273

 9.1.1 获得源代码 273

 9.1.2 make XNU 274

 9.1.3 一个内核,多种架构支持 276

 9.1.4 XNU源代码树 278

 9.2 引导XNU 281

 9.2.1 引导过程概览 281

 9.2.2 OS X:vstart 282

 9.2.3 iOS:start 283

 9.2.4 [i386|arm]_init 283

 9.2.5 i386_init_slave() 285

 9.2.6 machine_startup 285

 9.2.7 kernel_bootstrap 286

 9.2.8 kernel_bootstrap_thread 289

 9.2.9 bsd_init 291

 9.2.10 bsdinit_task 296

 9.2.11 睡眠和唤醒 299

 9.3 引导参数 300

 9.4 内核调试 302

 9.4.1 “不要害怕”——避免panic 303

 9.4.2 panic的实现 304

 9.4.3 panic报告 306

 9.5 本章小结 310

 参考文献 310

第10章 Mach原语:一切以消息为媒介 311

 10.1 Mach概述 311

 10.1.1 Mach设计原则 312

 10.1.2 Mach设计目标 313

 10.2 Mach消息 313

 10.2.1 简单消息 313

 10.2.2 复杂消息 314

 10.2.3 发送消息 315

 10.2.4 端口 316

 10.2.5 Mach接口生成器(MIG) 318

 10.3 深入IPC 323

 10.4 同步原语 326

 10.4.1 锁组对象 326

 10.4.2 互斥体对象 327

 10.4.3 读写锁对象 328

 10.4.4 自旋锁对象 329

 10.4.5 信号量对象 329

 10.4.6 锁集对象 331

 10.5 机器原语 332

 10.5.1 主机对象 332

 10.5.2 时钟对象 341

 10.5.3 处理器对象 343

 10.5.4 处理器集对象 346

 10.6 本章小结 350

 参考文献 350

第11章 刹那之间——Mach调度 351

 11.1 调度原语 351

 11.1.1 线程 351

 11.1.2 任务 356

 11.1.3 任务和线程相关的API 360

 11.1.4 任务相关的API 361

 11.1.5 线程相关的API 365

 11.2 调度 369

 11.2.1 概述 369

 11.2.2 优先级 370

 11.2.3 运行队列 373

 11.3 Mach调度器的独特特性 376

 11.3.1 控制权转交 376

 11.3.2 续体 376

 11.3.3 抢占模式 378

 11.3.4 异步软件陷阱(AST) 383

 11.3.5 调度算法 386

 11.4 定时器中断 389

 11.4.1 中断驱动的调度 389

 11.4.2 XNU中的定时器中断处理 390

 11.5 异常 394

 11.5.1 Mach异常模型 394

 11.5.2 实现细节 395

 11.6 本章小结 403

 参考文献 403

第12章 Mach虚拟内存 405

 12.1 虚拟内存架构 405

 12.1.1 虚拟内存全貌 405

 12.1.2 虚拟内存概述 406

 12.1.3 用户态视角 410

 12.2 物理内存管理 419

 12.2.1 pmap的API 420

 12.2.2 API在Intel架构上的实现示例 421

 12.3 Mach Zone 423

 12.3.1 Mach Zone的结构 424

 12.3.2 引导期间的zone设置 426

 12.3.3 zone垃圾回收 427

 12.3.4 zone调试 428

 12.4 内核内存分配器 429

 12.4.1 kernel_memory_allocate() 429

 12.4.2 kmem_alloc()系列函数 431

 12.4.3 kalloc 432

 12.4.4 OSMalloc 433

 12.5 Mach分页器 434

 12.5.1 Mach分页器接口 435

 12.5.2 Universal Page List 438

 12.5.3 分页器类型 440

 12.6 分页策略管理 447

 12.6.1 Pageout守护程序 448

 12.6.2 处理页错误 450

 12.6.3 dynamic_pager(8)

 (OS X) 451

 12.7 本章小结 452

 参考文献 452

第13章 BSD层 453

 13.1 BSD简介 453

 13.1.1 一统天下 454

 13.1.2 POSIX标准中的内容 454

 13.1.3 实现BSD 455

 13.1.4 XNU不是完整的BSD 455

 13.2 进程和线程 455

 13.2.1 BSD进程结构 456

 13.2.2 进程列表和进程组 458

 13.2.3 线程 459

 13.2.4 对应到Mach 461

 13.3 进程创建 463

 13.3.1 用户态的角度 463

 13.3.2 内核态的角度 464

 13.3.3 加载和执行二进制文件 467

 13.3.4 Mach-O二进制文件 472

 13.4 进程控制和跟踪 475

 13.4.1 ptrace (#26) 475

 13.4.2 proc_info (#336) 476

 13.4.3 策略 476

 13.4.4 进程挂起和恢复 477

 13.5 信号 478

 13.5.1 UNIX异常处理程序 478

 13.5.2 硬件产生的信号 483

 13.5.3 软件产生的信号 484

 13.5.4 受害者的信号处理 484

 13.6 本章小结 485

 参考文献 485

第14章 有新有旧:BSD高级功能 487

 14.1 内存管理 487

 14.1.1 POSIX内存和页面管理系统调用 487

 14.1.2 BSD内部的内存函数 489

 14.1.3 内存压力 492

 14.1.4 Jetsam(iOS) 493

 14.1.5 内核地址空间布局随机化 495

 14.2 工作队列 496

 14.3 换个角度看BSD层 499

 14.3.1 sysctl 499

 14.3.2 kqueue 501

 14.3.3 审计(OS X) 503

 14.3.4 强制访问控制(MAC) 504

 14.4 苹果的策略模块 506

 14.5 本章小结 509

 参考文献 509

第15章 文件系统和虚拟文件系统交换 511

 15.1 磁盘设备和分区 511

 15.2 通用文件系统的概念 522

 15.2.1 文件 522

 15.2.2 扩展属性 522

 15.2.3 权限 522

 15.2.4 时间戳 522

 15.2.5 快捷方式和连接 523

 15.3 苹果生态圈中的文件系统 524

 15.3.1 苹果原生的文件系统 524

 15.3.2 DOS/Windows文件系统 524

 15.3.3 CD/DVD文件系统 525

 15.3.4 基于网络的文件系统 526

 15.3.5 伪文件系统 528

 15.4 挂载文件系统(仅限于OS X) 531

 15.4.1 automount 531

 15.4.2 磁盘仲裁 531

 15.5 磁盘镜像文件 533

 15.5.1 原始DMG文件 533

 15.5.2 从磁盘镜像引导(Lion) 534

 15.6 虚拟文件系统交换 534

 15.6.1 文件系统条目 535

 15.6.2 挂载条目 535

 15.6.3 vnode对象 538

 15.7 FUSE——用户空间的文件系统 541

 15.8 进程的文件I/O操作 543

 15.9 本章小结 547

 参考文献和深入阅读 547

第16章 基于B树的HFS+文件系统 549

 16.1 HFS+文件系统概念 549

 16.1.1 时间戳 549

 16.1.2 访问控制表 550

 16.1.3 扩展属性 550

 16.1.4 fork 552

 16.1.5 压缩 553

 16.1.6 Unicode支持 558

 16.1.7 Finder集成 558

 16.1.8 大小写敏感(HFSX) 559

 16.1.9 日志 560

 16.1.10 动态大小调节 561

 16.1.11 元数据区域 561

 16.1.12 热文件 562

 16.1.13 动态碎片整理 562

 16.2 HFS+的设计概念 564

 16.3 组件 570

 16.3.1 HFS+宗卷头 571

 16.3.2 编录文件 572

 16.3.3 extent溢出文件 579

 16.3.4 属性B树 579

 16.3.5 热文件B树 580

 16.3.6 分配文件 581

 16.3.7 HFS日志 581

 16.4 VFS和内核的整合 584

 16.4.1 fsctl(2)的整合 584

 16.4.2 sysctl(2)的整合 585

 16.4.3 文件系统状态通知 585

 16.5 本章小结 586

 参考文献 586

第17章 遵守协议:网络协议栈 587

 17.1 用户态接口回顾 588

 17.1.1 UNIX Domain套接字 589

 17.1.2 IPv4网络协议 589

 17.1.3 路由套接字 590

 17.1.4 网络驱动程序套接字 590

 17.1.5 IPSec Key Management套接字 592

 17.1.6 IPv6网络协议 592

 17.1.7 系统套接字 593

 17.2 套接字和协议统计信息 595

 17.3 第5层:套接字 597

 17.3.1 套接字描述符 597

 17.3.2 mbuf 598

 17.3.3 内核态中的套接字 603

 17.4 第4层:传输层协议 604

 17.4.1 域和protosw 605

 17.4.2 初始化域 609

 17.5 第3层:网络层协议 610

 17.6 第2层:网络接口层 613

 17.6.1 OS X和iOS中的网络接口 613

 17.6.2 数据链路接口层 614

 17.6.3 ifnet结构体 614

 17.6.4 案例研究:utun 616

 17.7 整合所有层:网络协议栈 620

 17.7.1 接收数据 620

 17.7.2 发送数据 623

 17.8 数据包过滤 626

 17.8.1 套接字过滤器 627

 17.8.2 ipfw(8) 628

 17.8.3 PF包过滤器(Lion和iOS) 629

 17.8.4 IP过滤器 630

 17.8.5 接口过滤器 632

 17.8.6 伯克利数据包过滤器 633

 17.9 流量整形和QoS 637

 17.9.1 综合服务模型 637

 17.9.2 区分服务模型 637

 17.9.3 实现dummynet 638

 17.9.4 在用户态控制参数 638

 17.10 本章小结 639

 参考文献和深入阅读 639

第18章 内核扩展模块 641

 18.1 扩展内核的功能 641

 18.2 内核扩展(kext) 643

 18.2.1 kext结构 645

 18.2.2 kext安全需求 647

 18.2.3 内核扩展的相关操作 647

 18.2.4 kernelcache 647

 18.2.5 multi-kext 651

 18.2.6 从程序员的视角看kext 651

 18.2.7 kext的内核支持 652

 18.3 本章小结 661

 参考文献 662

第19章 驱动力——I/O Kit驱动程序框架 663

 19.1 I/O Kit简介 664

 19.1.1 设备驱动程序的编程约束 664

 19.1.2 I/O Kit是什么 664

 19.1.3 I/O Kit不是什么 666

 19.2 libkern:I/O Kit的基类 667

 19.2.1 OSObject 668

 19.2.2 OSMetaClass 668

 19.3 I/O Registry 669

 19.3.1 IORegistryEntry 671

 19.3.2 IOService 671

 19.4 用户态的I/O Kit 671

 19.4.1 访问I/O Registry 672

 19.4.2 获得/设置驱动程序属性 674

 19.4.3 即插即用(通知端口) 675

 19.4.4 I/O Kit电源管理 676

 19.4.5 其他I/O Kit子系统 677

 19.4.6 I/O Kit诊断 678

 19.5 I/O Kit内核驱动程序 680

 19.5.1 驱动程序匹配 680

 19.5.2 I/O Kit族 682

 19.5.3 I/O Kit驱动程序模型 685

 19.5.4 IOWorkLoop 687

 19.5.5 中断处理 689

 19.5.6 I/O Kit内存管理 691

 19.6 整合BSD 693

 19.7 本章小结 694

 参考文献和深入阅读 695

 附录A 了解机器架构 697

随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/4/30 1:44:58