拨云见日

拨云见日

王森, 著

出版社:清华大学出版社

年代:2014

定价:59.0

书籍简介:

linux内核源码分析、dalvik源码分析、android源码分析、webkit源码分析(作为附录,或者作为android的源码分析的一部分)

书籍目录:

上篇 内核

第1章 ARM多核处理器

1.1 SMP相关基础数据结构

1.2 Percpu内存管理

1.2.1 内核显式定义的处理器局部数据

1.2.2 Percpu内存管理的建立

1.2.3 Percpu动态分配内存空间

1.3 CpuFreq

1.3.1 初始化

1.3.2 CpuFreq策略的建立

1.3.3 Ondemand调频算法分析

1.4 CPU0bootupCPU

1.4.1 CPU0侧策略和动作

1.4.2 CPU1侧执行路线

1.5 CPU1的关闭

1.5.1 关闭时机

1.5.2 CPU1关闭操作

1.6 ARM处理器展望

1.6.1 ARM架构处理器的演进

1.6.2 TrustZone

1.6.3 ARMVirtualization

第2章 异常

2.1 异常向量表

2.1.1 异常进入

2.1.2 异常表的构建

2.2 中断体系

2.2.1 CortexA9多核处理器的中断控制器GIC

2.2.2 MT6577的中断体系

2.2.3 Exynos4的中断体系

2.2.4 OMAP4的中断体系

2.3 中断处理

2.3.1 中断的基本结构

2.3.2 中断源识别

2.4 数据异常

2.5 处理器间通信

第3章 调度与实时性

3.1 Tick

3.1.1 Localtimer

3.1.2 Tick挂载

3.1.3 Tick产生

3.2 Fair调度类

3.2.1 Fair调度类的负载均衡

3.2.2 Fair调度类的处理器选择

3.3 RT调度类

3.3.1 RT调度类的基本结构

3.3.2 Rt_Bandwidth

3.3.3 负载均衡与抢占

3.3.4 基础操作

3.4 调度器

3.4.1 调度域的构建

3.4.2 调度器

3.5 唤醒

3.5.1 唤醒与抢占

3.5.2 跨处理器分发线程

3.5.3 抢占

第4章 Signal

4.1 信号发送

4.2 信号执行

4.2.1 路径切换

4.2.2 ARMLinux下信号执行环境的搭建

4.2.3 Signal处理函数的返回

4.2.4 系统调用重入

第5章 进程与进程内存

5.1 Linux进程

5.1.1 Fork

5.1.2 Exec新进程创建

5.2 CPU与MMU

5.2.1 ARMLinux页表页目录结构

5.2.2 页表页目录的建立

5.3 进程虚拟内存

5.3.1 Android进程虚拟内存的继承

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

第6章 缺页请页与内存Shrink

6.1 缺页与请页

6.1.1 Filebacked虚拟内存段操作函数

6.1.2 Filebacked内存的请页

6.1.3 匿名内存的请页

6.1.4 COW访问

6.2 内存Shrink

6.2.1 Shrink操作shrink_page_list

6.2.2 CleanPage

6.2.3 脏页的监控

6.3 全景图

第7章 块设备

7.1 Bdev文件系统

7.2 块设备基础结构

7.3 块设备的创建与注册

7.4 分区检测生成

7.5 块设备的打开

7.6 块设备驱动的层次结构

7.7 虚拟块设备

第8章 VFS

8.1 根目录

8.1.1 根目录文件系统——initramfs

8.1.2 Androidramdisk.img

8.1.3 传统根目录文件系统加载方式

8.2 文件打开

8.2.1 目录的层级查找

8.2.2 各层次操作函数的安装

8.3 文件写

8.3.1 文件写框架

8.3.2 write_begin

8.3.3 write_end

8.4 脏页的提交与回写机制

8.4.1 脏页的提交

8.4.2 回写时机

8.4.3 回写机制的层次操作

8.4.4 节点层次的回写

第9章 EXT4文件系统

9.1 Android文件系统的选择

9.2 EXT4文件节点

9.2.1 EXT4inode基础结构

9.2.2 EXt4rawinode的定位

9.2.3 EXT4inode的获取

9.3 Mount

9.4 EXT4文件写操作

9.5 EXT4journal

9.6 Extenttree

9.6.1 基础结构

9.6.2 定位逻辑块的structext4_extent

9.6.3 定位逻辑块左右侧的structext4_extent项

9.7 块分配

9.7.1 块组的buddy算法

9.7.2 分配物理块

9.8 逻辑块到物理块的映射

第10章 RCU

10.1 RCUtree

10.1.1 RCUTree结构

10.1.2 RCUtree的构建

10.2 GracePeriod

10.2.1 GracePeriod的检测

10.2.2 重新启动新一轮GracePeriod

10.3 RCU函数的执行

第11章 MMCDriver

11.1 MMCDriver

11.1.1 MMC协议层

11.1.2 MMC块设备

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

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

12.1 Conf

12.1.1 Kconfig元素

12.1.2 Kconfig分析

12.2 内核调试

12.2.1 senix_printk

12.2.2 LOG_BUF

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

第13章 内存

13.1 Dalvik内存管理

13.1.1 虚拟内存分配

13.1.2 内存回收

13.2 Ashmem

13.3 GC

13.3.1 对象Mark

13.3.2 从Root对象集到普通对象

13.3.3 GC与线程实时性

第14章 进程与线程

14.1 Dalvik虚拟机的进程

14.2 Dalvik线程创建机制

14.3 Android线程模型

14.3.1 主线程的生成

14.3.2 线程池线程的生成

14.4 Java线程转换

14.4.1 从Java到JNI

14.4.2 从JNI到Java

第15章 Bionic的动态加载机制

15.1 Linker——用户态入口

15.2 Linker主体——link_image

第16章 Android系统初始

16.1 Android入口

16.2 Init——OS的入口

16.2.1 RC文件分析

16.2.2 RC动作执行

16.2.3 RC的逻辑分析

16.2.4 设备探测

16.2.5 property库的构建

16.2.6 Init的调试

第17章 Interpreter与JIT

17.1 解释器编译结构

17.2 Dalvik寄存器编译模型

17.2.1 Callee寄存器分配

17.2.2 Caller寄存器分配

17.2.3 outs的处理

17.3 PortableInterpreter结构

17.4 ASMInterpreter

17.4.1 基本结构

17.4.2 运行时模型与基本操作

17.4.3 ASMInterpreter入口

17.5 Interpreter的切换

17.6 Dalvik运行时帧结构

17.7 JIT

17.7.1 热点检测

17.7.2 Mode切换

17.7.3 JIT提交

17.8 Compile

17.8.1 基础数据结构

17.8.2 dalvik指令格式分析

17.8.3 TraceRun分析

17.8.4 MIR

17.8.5 基本块的逻辑关系

17.8.6 寄存器分配

17.8.7 LIR

17.8.8 Codecache

17.9 DalvikART

第18章 Binder

18.1 Parcel

18.1.1 C++层的Parcel

18.1.2 Java层的Parcel

18.2 Binder驱动

18.2.1 Binder写

18.2.2 Binder读

18.3 C++层面

18.3.1 本地与远端对象

18.3.2 服务的建立

18.4 Java层面

18.5 service_manager

第19章 Class

19.1 系统类库

19.1.1 Initalclass

19.1.2 ODEX文件的加载

19.1.3 系统类库

19.1.4 preloaded-classes

19.2 类加载

19.2.1 类加载框架

19.2.2 类加载

19.3 对象实体生成

第20章 Android应用框架

20.1 线程池线程

20.1.1 C++层

20.1.2 Java层

20.2 系统侧Activity与Service的生成控制

20.3 classActivityThread

20.3.1 MainLooper

20.3.2 activity与service的加载

第21章 AndroidUI体系

21.1 窗口体系的生成

21.2 ViewRoot与Surface

21.3 编辑框实例分析

21.3.1 ViewRoot获得系统侧代理对象

21.3.2 焦点切换事件——主要AndroidUI机制的互动

21.3.3 输入事件的处理

21.3.4 编辑框的生成

第22章 ADB

22.1 ADB基本结构

22.1.1 连接

22.1.2 主线程

22.1.3 主线程监测的文件句柄

22.2 Transport

22.2.1 初始化

22.2.2 transport传输线程

22.2.3 transport的管理

22.3 Local服务

22.3.1 Local服务的种类

22.3.2 Local服务的形态

22.3.3 SYNC服务

第23章 Android浏览器的Webkit分析

23.1 Webcore

23.1.1 DOM与Rendering树生成

23.1.2 事件的产生与分发

23.2 V8parser源码分析

23.2.1 V8parser处理脚本的层次

23.2.2 Scope

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

23.2.4 普通语句的分析

23.3 指令生成

内容摘要:

本书包括上下两篇内容。上篇在保证完整Linux内核架构分析的前提下,着重分析Android系统中强烈依赖的Linux内核机制,如多核ARM架构的支持,而略去Android系统产品化没有用到内核机制,如SWAP机制。下篇主要分析Android系统层主要架构机制,尤其注重分析这些用户态机制与内核机制的接驳与交互。本书整理自作者多年积累的笔记,形式以源代码分析为主。本书适合相关领域工程师作为实际项目的参考,以及有志于通过研读源码掌握Android系统与Linux内核精髓的读者。

书籍规格:

书籍详细信息
书名拨云见日站内查询相似图书
9787302381990
如需购买下载《拨云见日》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位清华大学出版社
版次1版印次1
定价(元)59.0语种简体中文
尺寸26 × 19装帧平装
页数印数 4000

书籍信息归属:

拨云见日是清华大学出版社于2014.出版的中图分类号为 TN929.53 的主题关于 移动终端-应用程序-程序设计 的书籍。