深入解析Mac OS XiOS操作系统PDF电子书下载
- 电子书积分:20 积分如何计算积分?
- 作 者:(美)JONATHANLEVIN著;郑思遥,房佩慈译
- 出 版 社:北京:清华大学出版社
- 出版年份:2014
- ISBN:9787302348672
- 页数:713 页
第Ⅰ部分 高级用户指南 3
第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 POSLX 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_profiiler(8) 146
5.4.2 sysd agnose(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(I)列出进程列表 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 E FI的基本概念 171
6.2.2 EFI服务 173
6.2.3 NVRAM变量 177
6.3 OS X和boot.efii 178
6.3.1 boot.efii的执行流程 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章 贯穿始终——Iaunchd 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
第Ⅱ部分 内核 239
第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 libkem: 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
- 《管理信息系统习题集》郭晓军 2016
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《药剂学实验操作技术》刘芳,高森主编 2019
- 《数字影视特效制作技法解析》王文瑞著 2019
- 《信息系统安全技术管理策略 信息安全经济学视角》赵柳榕著 2020
- 《系统解剖学速记》阿虎医考研究组编 2019
- 《慢性呼吸系统疾病物理治疗工作手册》(荷)瑞克·考斯林克(RikGosselink) 2020
- 《2019国家医师资格考试用书 中医执业助理医师资格考试全真模拟试卷与解析 第3版》国家医师资格考试研究组 2019
- 《社会文化系统中的翻译》姜秋霞,杨正军 2019
- 《中国生态系统定位观测与研究数据集 森林生态系统卷 云南西双版纳》邓晓保·唐建维 2010
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019