稀酷客

 找回密码
 加入稀酷客

只需一步,快速开始

关注微信
免费下载

[电子图书] 《拨云见日 基于android的内核与系统架构源码分析》.(王森).[PDF]@ckook

[推广链接]
立即下载
by : 121441909 | QQ | 发表于 2017-2-3 09:50:36 | 查看: 575|回复: 1
《拨云见日 基于android的内核与系统架构源码分析》.(王森).[PDF]@ckook Android

本书包括上下两篇内容。上篇在保证完整Linux内核架构分析的前提下,着重分析Android系统中强烈依赖的Linux内核机制,如多核ARM架构的支持,而略去Android系统产品化没有用到内核机制,如SWAP机制。下篇主要分析Android系统层主要架构机制,尤其注重分析这些用户态机制与内核机制的接驳与交互。本书整理自作者多年积累的笔记,形式以源代码分析为主。
本书适合相关领域工程师作为实际项目的参考,以及有志于通过研读源码掌握Android系统与Linux内核精髓的读者。
目录
上篇 内核
第1章 ARM多核处理器        2
1.1 SMP相关基础数据结构        3
1.2 Percpu内存管理        6
1.2.1 内核显式定义的处理器局部数据        6
1.2.2 Percpu内存管理的建立        8
1.2.3 Percpu动态分配内存空间        13
1.3 CpuFreq        15
1.3.1 初始化        15
1.3.2 CpuFreq策略的建立        16
1.3.3 Ondemand调频算法分析        18
1.4 CPU0 bootup CPU1        19
1.4.1 CPU0侧策略和动作        19
1.4.2 CPU1侧执行路线        21
1.5 CPU1的关闭        23
1.5.1 关闭时机        23
1.5.2 CPU1关闭操作        24
1.6 ARM处理器展望        26
1.6.1 ARM架构处理器的演进        26
1.6.2 TrustZone        27
1.6.3 ARM Virtualization        28
第2章 异常        33
2.1 异常向量表        33
2.1.1 异常进入        33
2.1.2 异常表的构建        35
2.2 中断体系        37
2.2.1 Cortex A9多核处理器的中断控制器GIC        37
2.2.2 MT6577的中断体系        38
2.2.3 Exynos4的中断体系        42
2.2.4 OMAP4的中断体系        46
2.3 中断处理        49
2.3.1 中断的基本结构        49
2.3.2 中断源识别        51
2.4 数据异常        54
2.5 处理器间通信        56
第3章 调度与实时性        62
3.1 Tick        62
3.1.1 Local timer        62
3.1.2 Tick挂载        63
3.1.3 Tick产生        66
3.2 Fair调度类        67
3.2.1 Fair调度类的负载均衡        67
3.2.2 Fair调度类的处理器选择        72
3.3 RT调度类        73
3.3.1 RT调度类的基本结构        73
3.3.2 Rt_Bandwidth        76
3.3.3 负载均衡与抢占        79
3.3.4 基础操作        80
3.4 调度器        82
3.4.1 调度域的构建        82
3.4.2 调度器        86
3.5 唤醒        89
3.5.1 唤醒与抢占        89
3.5.2 跨处理器分发线程        91
3.5.3 抢占        92
第4章 Signal        99
4.1 信号发送        99
4.2 信号执行        102
4.2.1 路径切换        102
4.2.2 ARM Linux下信号执行环境的搭建        103
4.2.3 Signal处理函数的返回        107
4.2.4 系统调用重入        109
第5章 进程与进程内存        111
5.1 Linux进程        111
5.1.1 Fork        111
5.1.2 Exec新进程创建        112
5.2 CPU与MMU        117
5.2.1 ARM Linux页表页目录结构        117
5.2.2 页表页目录的建立        120
5.3 进程虚拟内存        122
5.3.1 Android进程虚拟内存的继承        122
5.3.2 进程虚拟地址空间的获得        127
第6章 缺页请页与内存Shrink        129
6.1 缺页与请页        129
6.1.1 File backed虚拟内存段操作函数        130
6.1.2 File backed内存的请页        131
6.1.3 匿名内存的请页        134
6.1.4 COW访问        135
6.2 内存Shrink        137
6.2.1 Shrink操作shrink_page_list        137
6.2.2 Clean Page        142
6.2.3 脏页的监控        143
6.3 全景图        145
第7章 块设备        148
7.1 Bdev文件系统        148
7.2 块设备基础结构        150
7.3 块设备的创建与注册        152
7.4 分区检测生成        156
7.5 块设备的打开        157
7.6 块设备驱动的层次结构        159
7.7 虚拟块设备        161
第8章 VFS        163
8.1 根目录        163
8.1.1 根目录文件系统——initramfs        165
8.1.2 Android ramdisk.img        166
8.1.3 传统根目录文件系统加载方式        166
8.2 文件打开        166
8.2.1 目录的层级查找        167
8.2.2 各层次操作函数的安装        171
8.3 文件写        172
8.3.1 文件写框架        172
8.3.2 write_begin        174
8.3.3 write_end        176
8.4 脏页的提交与回写机制        177
8.4.1 脏页的提交        177
8.4.2 回写时机        179
8.4.3 回写机制的层次操作        183
8.4.4 节点层次的回写        183
第9章 EXT4文件系统        191
9.1 Android文件系统的选择        191
9.2 EXT4文件节点        191
9.2.1 EXT4 inode基础结构        191
9.2.2 EXt4 raw inode的定位        192
9.2.3 EXT4 inode的获取        193
9.3 Mount        195
9.4 EXT4文件写操作        197
9.5 EXT4 journal        199
9.6 Extent tree        202
9.6.1 基础结构        202
9.6.2 定位逻辑块的struct ext4_extent        203
9.6.3 定位逻辑块左右侧的struct ext4_extent项        205
9.7 块分配        208
9.7.1 块组的buddy算法        208
9.7.2 分配物理块        217
9.8 逻辑块到物理块的映射        225
第10章 RCU        229
10.1 RCU tree        229
10.1.1 RCU Tree结构        229
10.1.2 RCU tree的构建        230
10.2 Grace Period        232
10.2.1 Grace Period的检测        232
10.2.2 重新启动新一轮Grace Period        235
10.3 RCU函数的执行        237
第11章 MMC Driver        238
11.1 MMC Driver        238
11.1.1 MMC协议层        238
11.1.2 MMC块设备        239
11.2 开源手机U8836D(MT6577)分区的实现        242
第12章 内核配置系统及内核调试        246
12.1 Conf        246
12.1.1 Kconfig元素        246
12.1.2 Kconfig分析        247
12.2 内核调试        248
12.2.1 senix_printk        249
12.2.2 LOG_BUF        252
下篇 Dalvik与Android用户态源码分析
第13章 内存        258
13.1 Dalvik内存管理        258
13.1.1 虚拟内存分配        258
13.1.2 内存回收        263
13.2 Ashmem        265
13.3 GC        267
13.3.1 对象Mark        267
13.3.2 从Root对象集到普通对象        268
13.3.3 GC与线程实时性        270
第14章 进程与线程        272
14.1 Dalvik虚拟机的进程        272
14.2 Dalvik线程创建机制        273
14.3 Android线程模型        276
14.3.1 主线程的生成        276
14.3.2 线程池线程的生成        276
14.4 Java线程转换        278
14.4.1 从Java到JNI        278
14.4.2 从JNI到Java        279
第15章 Bionic的动态加载机制        283
15.1 Linker——用户态入口        283
15.2 Linker主体——link_image        284
第16章 Android系统初始        287
16.1 Android入口        287
16.2 Init——OS的入口        289
16.2.1 RC文件分析        289
16.2.2 RC动作执行        294
16.2.3 RC的逻辑分析        295
16.2.4 设备探测        295
16.2.5 property库的构建        297
16.2.6 Init的调试        299
第17章 Interpreter与JIT        301
17.1 解释器编译结构        301
17.2 Dalvik寄存器编译模型        301
17.2.1 Callee寄存器分配        301
17.2.2 Caller寄存器分配        303
17.2.3 outs的处理        304
17.3 Portable Interpreter结构        305
17.4 ASM Interpreter        306
17.4.1 基本结构        306
17.4.2 运行时模型与基本操作        308
17.4.3 ASM Interpreter入口        309
17.5 Interpreter的切换        311
17.6 Dalvik运行时帧结构        312
17.7 JIT        313
17.7.1 热点检测        313
17.7.2 Mode切换        315
17.7.3 JIT提交        316
17.8 Compile        317
17.8.1 基础数据结构        317
17.8.2 dalvik指令格式分析        319
17.8.3 TraceRun分析        319
17.8.4 MIR        323
17.8.5 基本块的逻辑关系        325
17.8.6 寄存器分配        327
17.8.7 LIR        332
17.8.8 Codecache        334
17.9 Dalvik ART        335
第18章 Binder        336
18.1 Parcel        336
18.1.1 C++层的Parcel        336
18.1.2 Java层的Parcel        337
18.2 Binder驱动        338
18.2.1 Binder写        339
18.2.2 Binder读        344
18.3 C++层面        346
18.3.1 本地与远端对象        346
18.3.2 服务的建立        349
18.4 Java层面        350
18.5 service_manager        351
第19章 Class        352
19.1 系统类库        352
19.1.1 Inital class        352
19.1.2 ODEX文件的加载        353
19.1.3 系统类库        354
19.1.4 preloaded-classes        355
19.2 类加载        357
19.2.1 类加载框架        357
19.2.2 类加载        359
19.3 对象实体生成        361
第20章 Android应用框架        363
20.1 线程池线程        363
20.1.1 C++层        363
20.1.2 Java层        365
20.2 系统侧Activity与Service的生成控制        366
20.3 class ActivityThread        368
20.3.1 MainLooper        368
20.3.2 activity与service的加载        370
第21章 Android UI体系        371
21.1 窗口体系的生成        371
21.2 ViewRoot与Surface        372
21.3 编辑框实例分析        373
21.3.1 ViewRoot获得系统侧代理对象        373
21.3.2 焦点切换事件——主要Android UI机制的互动        375
21.3.3 输入事件的处理        376
21.3.4 编辑框的生成        377
第22章 ADB        379
22.1 ADB基本结构        379
22.1.1 连接        379
22.1.2 主线程        381
22.1.3 主线程监测的文件句柄        382
22.2 Transport        382
22.2.1 初始化        382
22.2.2 transport传输线程        384
22.2.3 transport的管理        386
22.3 Local服务        389
22.3.1 Local服务的种类        389
22.3.2 Local服务的形态        391
22.3.3 SYNC服务        392
第23章 Android浏览器的Webkit分析        394
23.1 Webcore        394
23.1.1 DOM与Rendering树生成        394
23.1.2 事件的产生与分发        397
23.2 V8 parser源码分析        401
23.2.1 V8 parser处理脚本的层次        402
23.2.2 Scope        406
23.2.3 语法分析的入口 Parser::ParseStatement(…)        408
23.2.4 普通语句的分析        409
23.3 指令生成        415

游客,本付费内容需要支付 30酷币 才能浏览  购买


打赏列表

~~~还没有人打赏~~~
回复

使用道具 举报

by : handg007 | QQ | 发表于 2017-2-3 21:26:59
拨开乌云见红日,:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入稀酷客  

本版积分规则

点击这里给我发消息 |Archiver|手机版|小黑屋|ckook ( 冀ICP备14004526号-1 )

GMT+8, 2017-7-23 19:00 , Processed in 1.218774 second(s), 52 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表