图书介绍

深入解析MacOSX&iOS操作系统

  • [美] 莱文,译者{MaoHao}郑思遥,房佩慈 编
  • 店铺: 博库网旗舰店
  • 出版社: 清华大学
  • ISBN:9787302348672
  • 版次:1
  • 上架时间:2015-09-18 23:22:59
  • 商品编码:1392964604
  • 开本:16
  • 出版时间:2014-03-01

微信扫码下载

手机扫码下载

电脑下载PDF

高速下载 普通下载

赞助商链接

图书目录

基本信息商品名称:深入解析MacOSX&iOS操作系统出版社:清华大学出版时间:2014-03-01作者:(美)莱文|译者:郑思遥//房佩慈开本:16开印刷时间:2014-03-01定价:108页数:713印次:1ISBN号:9787302348672商品类型:图书版次:1编辑推荐语《深入解析MacOSX&iOS操作系统》编著者莱文。本书由苹果系统专家执笔,深入MacOSX和iOS的内部,剖析苹果系统的内核及本质,并详解各种内核工具的用法。内容包括内核的任务和基本组成、进程管理和调度、内存管理、虚拟内存、锁与进程间通信、模块、虚拟文件系统、网络、系统调用、内核活动、时间管理、页缓存和块缓存、数据同步、页面收回和交换、审计等主题。内容提要《深入解析MacOSX&iOS操作系统》编著者莱文。
系统开发者、内核黑客和对苹果感到好奇的人们注意了!本书探讨了MacOSX系统和iOS系统的方方面面,深入讲解了两个系统的架构,讨论了框架手册没有讨论的内容。本书清晰而详细地讨论了苹果操作系统的内部工作原理,包括苹果私有的API,书中的大部分内容都是首次披露。
《深入解析MacOSX&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章达尔文主义:OSX的进化史3
1.1前达尔文时代:MacOSClassic3
1.2浪子回头:NeXTSTEP4
1.3走进新时代:OSX操作系统4
1.4迄今为止的所有OSX版本5
1.4.110.0——Cheetah,初出茅庐5
1.4.210.1——Puma,更强大5
1.4.310.2——Jaguar,渐入佳境6
1.4.410.3——Panther和Safari6
1.4.510.4——Tiger,转投Intel的怀抱6
1.4.610.5——Leopard和UNIX6
1.4.710.6——SnowLeopard7
1.4.810.7——Lion7
1.4.910.8——MountainLion8
1.5iOS——走向移动平台的OSX9
1.5.11.x——Heavenly,**代iPhone9
1.5.22.x——AppStore、3G和企业级的特性10
1.5.33.x——告别**代,迎来iPad10
1.5.44.x——iPhone4、AppleTV和iPad210
1.5.55.x——iPhone4S和更新的硬件11
1.5.6iOS和OSX对比11
1.6OSX的未来13
1.7本章小结14
参考文献15
第2章合众为一:OSX和iOS的架构17
2.1OSX架构概述17
2.2用户体验层19
2.2.1Aqua19
2.2.2QuickLook20
2.2.3Spotlight21
2.3Darwin——UNIX核心22
2.3.1Shell22
2.3.2文件系统23
2.4UNIX的系统目录23
2.4.1OSX特有的目录24
2.4.2iOS文件系统的区别25
2.5bundle25
2.6应用程序和app26
2.6.1Info.plist27
2.6.2Resources目录29
2.6.3NIB文件29
2.6.4通过.lproj文件实现国际化30
2.6.5图标文件(.icns)30
2.6.6CodeResources30
2.7框架33
2.7.1框架bundle格式33
2.7.2OSX和iOS公共框架列表35
2.8库41
2.9其他应用程序类型43
2.9.1Java(仅限于OSX)43
2.9.2Widget43
2.9.3BSD/Mach原生程序44
2.10系统调用44
2.10.1POSIX44
2.10.2Mach系统调用45
2.11XNU概述47
2.11.1Mach47
2.11.2BSD层48
2.11.3libkern48
2.11.4I/OKit48
2.12本章小结48
参考文献49
第3章站在巨人的肩膀上:OSX和iOS使用的技术51
3.1BSD相关的特性51
3.1.1sysctl51
3.1.2kqueue53
3.1.3审计(OSX)54
3.1.4强制访问控制57
3.2OSX和iOS特有的技术60
3.2.1用户和组的管理(OSX)60
3.2.2系统配置62
3.2.3记录日志64
3.2.4Apple事件和AppleScript66
3.2.5FSEvents68
3.2.6通知73
3.2.7其他重要的API73
3.3OSX和iOS的安全机制73
3.3.1代码签名74
3.3.2隔离机制(沙盒化)75
3.3.3Entitlement:更严格的沙盒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.3UNIX信号89
4.2可执行文件91
4.3通用二进制格式92
4.3.1Mach-O二进制格式95
4.3.2加载命令98
4.4动态库104
4.4.1启动时库的加载105
4.4.2库的运行时加载113
4.4.3dyld的特性115
4.5进程地址空间120
4.5.1进程入口点120
4.5.2地址空间布局随机化121
4.5.332位地址空间(Intel)122
4.5.464位地址空间123
4.5.532位地址空间(iOS)123
4.6进程内存分配(用户态)128
4.6.1alloca()128
4.6.2堆分配128
4.6.3虚拟内存——系统管理员的角度130
4.7线程132
参考文献134
第5章进程跟踪和调试135
5.1DTrace135
5.1.1D语言135
5.1.2dtruss138
5.1.3DTrace工作原理139
5.2其他剖析机制142
5.2.1CHUD的衰落142
5.2.2继任者AppleProfileFamily142
5.3进程信息143
5.3.1sysctl143
5.3.2proc_info144
5.4进程和系统快照146
5.4.1system_profiler(8)146
5.4.2sysdiagnose(1)146
5.4.3allmemory(1)147
5.4.4stackshot(1)148
5.4.5stack_snapshot系统调用149
5.5kdebug152
5.5.1基于kdebug的工具152
5.5.2kdebug代码152
5.5.3写入kdebug消息154
5.5.4读取kdebug消息155
5.6应用程序崩溃156
5.6.1应用程序挂起和采样159
5.6.2内存破坏的bug160
5.7内存泄漏161
5.7.1heap(1)162
5.7.2leaks(1)162
5.7.3malloc_history(1)163
5.8标准UNIX工具163
5.8.1通过ps(1)列出进程列表164
5.8.2top(1):系统全局视图164
5.8.3通过lsof(1)和fuser(1)
进行文件诊断165
5.9使用GDB165
5.9.1GDB的Darwin扩展166
5.9.2GDB用于iOS166
5.9.3LLDB166
5.10本章小结167
参考文献和深入阅读167
第6章引导过程:EFI和iBoot169
6.1传统形式的引导169
6.2揭秘EFI171
6.2.1EFI的基本概念171
6.2.2EFI服务173
6.2.3NVRAM变量177
6.3OSX和boot.efi178
6.3.1boot.efi的执行流程179
6.3.2引导内核185
6.3.3内核对EFI的回调187
6.3.4Lion中boot.efi的变化187
6.3.5BootCamp187
6.3.6bless(8)188
6.4iOS和iBoot192
6.4.1初期:引导ROM193
6.4.2普通引导194
6.4.3恢复模式引导195
6.4.4设备固件更新(DFU)模式195
6.4.5降级和回放攻击196
6.5安装镜像196
6.5.1OSX安装过程196
6.5.2iOS文件系统镜像(.ipsw文件)201
6.6本章小结206
参考文献和深入阅读206
第7章贯穿始终——launchd207
7.1launchd207
7.1.1启动launchd207
7.1.2系统范围和用户范围的
launchd208
7.1.3守护程序和代理程序208
7.1.4多面手launchd209
7.2LaunchDaemon列表220
7.3GUIshell程序224
7.3.1Finder(OSX)224
7.3.2SpringBoard(iOS)225
7.4XPC(Lion和iOS)230
7.5本章小结234
参考文献和深入阅读235
第Ⅱ部分内核
第8章内核架构239
8.1内核基础知识239
8.2用户态和内核态243
8.2.1Intel架构——ring243
8.2.2ARM架构——CPSR244
8.3内核态/用户态转换机制245
8.3.1Intel上的陷阱处理程序246
8.3.2自愿的内核转换254
8.4系统调用的处理259
8.4.1POSIX/BSD系统调用260
8.4.2Mach陷阱263
8.4.3机器相关的调用267
8.4.4诊断调用268
8.5XNU和硬件抽象270
8.6本章小结272
参考文献272
第9章由生到死——内核引导和内核崩溃273
9.1XNU源代码273
9.1.1获得源代码273
9.1.2makeXNU274
9.1.3一个内核,多种架构支持276
9.1.4XNU源代码树278
9.2引导XNU281
9.2.1引导过程概览281
9.2.2OSX:vstart282
9.2.3iOS:start283
9.2.4[i386|arm]_init283
9.2.5i386_init_slave()285
9.2.6machine_startup285
9.2.7kernel_bootstrap286
9.2.8kernel_bootstrap_thread289
9.2.9bsd_init291
9.2.10bsdinit_task296
9.2.11睡眠和唤醒299
9.3引导参数300
9.4内核调试302
9.4.1“不要害怕”——避免panic303
9.4.2panic的实现304
9.4.3panic报告306
9.5本章小结310
参考文献310
第10章Mach原语:一切以消息为媒介311
10.1Mach概述311
10.1.1Mach设计原则312
10.1.2Mach设计目标313
10.2Mach消息313
10.2.1简单消息313
10.2.2复杂消息314
10.2.3发送消息315
10.2.4端口316
10.2.5Mach接口生成器(MIG)318
10.3深入IPC323
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任务和线程相关的API360
11.1.4任务相关的API361
11.1.5线程相关的API365
11.2调度369
11.2.1概述369
11.2.2优先级370
11.2.3运行队列373
11.3Mach调度器的独特特性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.2XNU中的定时器中断处理390
11.5异常394
11.5.1Mach异常模型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.1pmap的API420
12.2.2API在Intel架构上的实现示例421
12.3MachZone423
12.3.1MachZone的结构424
12.3.2引导期间的zone设置426
12.3.3zone垃圾回收427
12.3.4zone调试428
12.4内核内存分配器429
12.4.1kernel_memory_allocate()429
12.4.2kmem_alloc()系列函数431
12.4.3kalloc432
12.4.4OSMalloc433
12.5Mach分页器434
12.5.1Mach分页器接口435
12.5.2UniversalPageList438
12.5.3分页器类型440
12.6分页策略管理447
12.6.1Pageout守护程序448
12.6.2处理页错误450
12.6.3dynamic_pager(8)
(OSX)451
12.7本章小结452
参考文献452
第13章BSD层453
13.1BSD简介453
13.1.1一统天下454
13.1.2POSIX标准中的内容454
13.1.3实现BSD455
13.1.4XNU不是完整的BSD455
13.2进程和线程455
13.2.1BSD进程结构456
13.2.2进程列表和进程组458
13.2.3线程459
13.2.4对应到Mach461
13.3进程创建463
13.3.1用户态的角度463
13.3.2内核态的角度464
13.3.3加载和执行二进制文件467
13.3.4Mach-O二进制文件472
13.4进程控制和跟踪475
13.4.1ptrace(#26)475
13.4.2proc_info(#336)476
13.4.3策略476
13.4.4进程挂起和恢复477
13.5信号478
13.5.1UNIX异常处理程序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.1POSIX内存和页面管理系统调用487
14.1.2BSD内部的内存函数489
14.1.3内存压力492
14.1.4Jetsam(iOS)493
14.1.5内核地址空间布局随机化495
14.2工作队列496
14.3换个角度看BSD层499
14.3.1sysctl499
14.3.2kqueue501
14.3.3审计(OSX)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.2DOS/Windows文件系统524
15.3.3CD/DVD文件系统525
15.3.4基于网络的文件系统526
15.3.5伪文件系统528
15.4挂载文件系统(仅限于OSX)531
15.4.1automount531
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.3vnode对象538
15.7FUSE——用户空间的文件系统541
15.8进程的文件I/O操作543
15.9本章小结547
参考文献和深入阅读547
第16章基于B树的HFS+文件系统549
16.1HFS+文件系统概念549
16.1.1时间戳549
16.1.2访问控制表550
16.1.3扩展属性550
16.1.4fork552
16.1.5压缩553
16.1.6Unicode支持558
16.1.7Finder集成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.2HFS+的设计概念564
16.3组件570
16.3.1HFS+宗卷头571
16.3.2编录文件572
16.3.3extent溢出文件579
16.3.4属性B树579
16.3.5热文件B树580
16.3.6分配文件581
16.3.7HFS日志581
16.4VFS和内核的整合584
16.4.1fsctl(2)的整合584
16.4.2sysctl(2)的整合585
16.4.3文件系统状态通知585
16.5本章小结586
参考文献586
第17章遵守协议:网络协议栈587
17.1用户态接口回顾588
17.1.1UNIXDomain套接字589
17.1.2IPv4网络协议589
17.1.3路由套接字590
17.1.4网络驱动程序套接字590
17.1.5IPSecKeyManagement套接字592
17.1.6IPv6网络协议592
17.1.7系统套接字593
17.2套接字和协议统计信息595
17.3第5层:套接字597
17.3.1套接字描述符597
17.3.2mbuf598
17.3.3内核态中的套接字603
17.4第4层:传输层协议604
17.4.1域和protosw605
17.4.2初始化域609
17.5第3层:网络层协议610
17.6第2层:网络接口层613
17.6.1OSX和iOS中的网络接口613
17.6.2数据链路接口层614
17.6.3ifnet结构体614
17.6.4案例研究:utun616
17.7整合所有层:网络协议栈620
17.7.1接收数据620
17.7.2发送数据623
17.8数据包过滤626
17.8.1套接字过滤器627
17.8.2ipfw(8)628
17.8.3PF包过滤器(Lion和iOS)629
17.8.4IP过滤器630
17.8.5接口过滤器632
17.8.6伯克利数据包过滤器633
17.9流量整形和QoS637
17.9.1综合服务模型637
17.9.2区分服务模型637
17.9.3实现dummynet638
17.9.4在用户态控制参数638
17.10本章小结639
参考文献和深入阅读639
第18章内核扩展模块641
18.1扩展内核的功能641
18.2内核扩展(kext)643
18.2.1kext结构645
18.2.2kext安全需求647
18.2.3内核扩展的相关操作647
18.2.4kernelcache647
18.2.5multi-kext651
18.2.6从程序员的视角看kext651
18.2.7kext的内核支持652
18.3本章小结661
参考文献662
第19章驱动力——I/OKit驱动程序框架663
19.1I/OKit简介664
19.1.1设备驱动程序的编程约束664
19.1.2I/OKit是什么664
19.1.3I/OKit不是什么666
19.2libkern:I/OKit的基类667
19.2.1OSObject668
19.2.2OSMetaClass668
19.3I/ORegistry669
19.3.1IORegistryEntry671
19.3.2IOService671
19.4用户态的I/OKit671
19.4.1访问I/ORegistry672
19.4.2获得/设置驱动程序属性674
19.4.3即插即用(通知端口)675
19.4.4I/OKit电源管理676
19.4.5其他I/OKit子系统677
19.4.6I/OKit诊断678
19.5I/OKit内核驱动程序680
19.5.1驱动程序匹配680
19.5.2I/OKit族682
19.5.3I/OKit驱动程序模型685
19.5.4IOWorkLoop687
19.5.5中断处理689
19.5.6I/OKit内存管理691
19.6整合BSD693
19.7本章小结694
参考文献和深入阅读695
附录A了解机器架构697



查看全部 ↓

精品推荐