拨云见日:基于android的内核与系统架构源码分析pdf下载

拨云见日:基于android的内核与系统架构源码分析百度网盘pdf下载

作者:
简介:拨云见日:基于android的内核与系统架构源码分析
出版社:
出版时间:2015-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

内容简介

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

内页插图

精彩书评

  ★对于像Android、Linux这样复杂的大型软件,如果想要有比较深入透彻的理解,那就非得要阅读分析其源代码不可。王森这本书分享了他所获的知识和心得,书中不光有代码的分析,还有他的见解,特别是还有他的一些经验之谈,相信读者会和我一样看了后觉得受益匪浅。
  ——《Linux内核源代码情景分析》作者 毛德操
  
  ★本书在着力分析Android系统最常用到的内核机制之后,继续向上剖析Android用户层核心机制是如何接驳Linux内核的。而且书中分析涉及到ARM体系为较新CortexA9SMP架构,对于读者开发、研究工作有着实际的借鉴作用。
  ——红狼软件创始人:《深入剖析Android系统》作者 杨长刚
  
  ★作者从研一开始就埋头于Linux源代码的学习、分析。虽然他常常不修边幅,但只要谈起编程或Linux源代码他就两眼放光,滔滔不绝地大谈特谈心得体会。书中源代码注释的写作方式看起来有些简陋,但是这样对阅读Android源代码非常有帮助。
  ——本书作者同学;CATechnologies研发经理 王晋强

目录

上篇 内核
第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 指令生成