图书介绍

拨云见日 基于android的内核与系统架构源码分析【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

拨云见日 基于android的内核与系统架构源码分析
  • 王森著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302381990
  • 出版时间:2015
  • 标注页数:416页
  • 文件大小:199MB
  • 文件页数:430页
  • 主题词:移动终端-应用程序-程序设计

PDF下载


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

下载说明

拨云见日 基于android的内核与系统架构源码分析PDF格式电子书版下载

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

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

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

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

图书目录

上篇 内核2

第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 CpuFreq15

1.3.1 初始化15

1.3.2 CpuFreq策略的建立16

1.3.3 Ondemand调频算法分析18

1.4 CPU0 bootup CPU119

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 TrustZone27

1.6.3 ARM Virtualization28

第2章 异常33

2.1 异常向量表33

2.1.1 异常进入33

2.1.2 异常表的构建35

2.2 中断体系37

2.2.1 Cortex A9多核处理器的中断控制器GIC37

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 Tick62

3.1.1 Local timer62

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_Bandwidth76

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章 Signal99

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 Fork111

5.1.2 Exec新进程创建112

5.2 CPU与MMU117

5.2.1 ARM Linux页表页目录结构117

5.2.2 页表页目录的建立120

5.3 进程虚拟内存122

5.3.1 Android进程虚拟内存的继承122

5.3.2 进程虚拟地址空间的获得127

第6章 缺页请页与内存Shrink129

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 内存Shrink137

6.2.1 Shrink操作shrink_page_list137

6.2.2 Clean Page142

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章 VFS163

8.1 根目录163

8.1.1 根目录文件系统——initramfs165

8.1.2 Android ramdisk.img166

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_begin174

8.3.3 write_end176

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 Mount195

9.4 EXT4文件写操作197

9.5 EXT4 journal199

9.6 Extent tree202

9.6.1 基础结构202

9.6.2 定位逻辑块的struct ext4_extent203

9.6.3 定位逻辑块左右侧的struct ext4_extent项205

9.7 块分配208

9.7.1 块组的buddy算法208

9.7.2 分配物理块217

9.8 逻辑块到物理块的映射225

第10章 RCU229

10.1 RCU tree229

10.1.1 RCU Tree结构229

10.1.2 RCU tree的构建230

10.2 Grace Period232

10.2.1 Grace Period的检测232

10.2.2 重新启动新一轮Grace Period235

10.3 RCU函数的执行237

第11章 MMC Driver238

11.1 MMC Driver238

11.1.1 MMC协议层238

11.1.2 MMC块设备239

11.2 开源手机U8836D(MT6577)分区的实现242

第12章 内核配置系统及内核调试246

12.1 Conf246

12.1.1 Kconfig元素246

12.1.2 Kconfig分析247

12.2 内核调试248

12.2.1 senix_printk249

12.2.2 LOG_BUF252

下篇 Dalvik与Android用户态源码分析258

第13章 内存258

13.1 Dalvik内存管理258

13.1.1 虚拟内存分配258

13.1.2 内存回收263

13.2 Ashmem265

13.3 GC267

13.3.1 对象Mark267

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到JNI278

14.4.2 从JNI到Java279

第15章 Bionic的动态加载机制283

15.1 Linker——用户态入口283

15.2 Linker主体——link_image284

第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与JIT301

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 Interpreter306

17.4.1 基本结构306

17.4.2 运行时模型与基本操作308

17.4.3 ASM Interpreter入口309

17.5 Interpreter的切换311

17.6 Dalvik运行时帧结构312

17.7 JIT313

17.7.1 热点检测313

17.7.2 Mode切换315

17.7.3 JIT提交316

17.8 Compile317

17.8.1 基础数据结构317

17.8.2 dalvik指令格式分析319

17.8.3 TraceRun分析319

17.8.4 MIR323

17.8.5 基本块的逻辑关系325

17.8.6 寄存器分配327

17.8.7 LIR332

17.8.8 Codecache334

17.9 Dalvik ART335

第18章 Binder336

18.1 Parcel336

18.1.1 C++层的Parcel336

18.1.2 Java层的Parcel337

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_manager351

第19章 Class352

19.1 系统类库352

19.1.1 Inital class352

19.1.2 ODEX文件的加载353

19.1.3 系统类库354

19.1.4 preloaded-classes355

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 ActivityThread368

20.3.1 MainLooper368

20.3.2 activity与service的加载370

第21章 Android UI体系371

21.1 窗口体系的生成371

21.2 ViewRoot与Surface372

21.3 编辑框实例分析373

21.3.1 ViewRoot获得系统侧代理对象373

21.3.2 焦点切换事件——主要Android UI机制的互动375

21.3.3 输入事件的处理376

21.3.4 编辑框的生成377

第22章 ADB379

22.1 ADB基本结构379

22.1.1 连接379

22.1.2 主线程381

22.1.3 主线程监测的文件句柄382

22.2 Transport382

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 Webcore394

23.1.1 DOM与Rendering树生成394

23.1.2 事件的产生与分发397

23.2 V8 parser源码分析401

23.2.1 V8 parser处理脚本的层次402

23.2.2 Scope406

23.2.3 语法分析的入口Parser::ParseStatement(…)408

23.2.4 普通语句的分析409

23.3 指令生成415

热门推荐