新書推薦:

《
7步吃透商业提案写作
》
售價:HK$
65.9

《
大国谍影
》
售價:HK$
96.8

《
从荒诞到反抗:导读加缪《局外人》和《鼠疫》(谜文库)
》
售價:HK$
65.8

《
给孩子的考古
》
售價:HK$
63.8

《
文明的重建:战后德国五十年(译林思想史)从大屠杀刽子手到爱好和平的民主主义者,揭秘战后德国五十年奇迹般的复兴之路!
》
售價:HK$
108.9

《
推荐系统核心技术与实践
》
售價:HK$
108.9

《
乌合之众:群体心理研究
》
售價:HK$
74.8

《
流浪的君子:孔子的最后二十年 王健文
》
售價:HK$
54.8
|
內容簡介: |
本书共13章,操作系统部分涉及内存管理、进程管理、文件系统、同步管理,以及系统调用。SoC(即片上系统)部分涉及SoC启动的过程、设备模型、设备树原理、电源模块、时钟模块、引脚模块、时间模块和中断模块,这些模块都是芯片运行的基本要求。作者站在一线开发者的角度先剖析了Kernel 6.6的实现原理,然后结合恩智浦i.MX9芯片的SoC 硬件原理,由浅入深地讲解了操作系统和SoC 的深层原理。 本书适合互联网开发从业人员、芯片开发相关人员阅读,也适合计算机及相关专业的在校学生作为专业参考书阅读。
|
關於作者: |
刘盼盼,十多年项目工作经验,涉及手机、汽车、芯片行业,目前就职于芯片大厂,任谷歌开发者社区优秀讲师,腾讯技术训练营导师,某科技公司合伙人,善于挖掘技术背后的本质。个人微信rrjike可提供技术支持,自媒体“人人极客社区”深受粉丝喜爱。
|
目錄:
|
第1章 内存管理 1.1 内存管理的机制 1.1.1 分段机制 1.1.2 分页机制 1.2 CPU访问内存的过程 1.2.1 PN/PFN/PT/PTE 1.2.2 MMU中的TLB和TTW 1.2.3 一级页表映射过程 1.2.4 为什么使用多级页表 1.3 内存架构和内存模型 1.3.1 Linux内存模型 1.3.2 Linux内存映射 1.4 memblock物理内存的初始化 1.4.1 early boot memory 1.4.2 memblock的数据结构 1.4.3 memblock的初始化 1.5 memblock物理内存的映射 1.5.1 paging_init函数 1.5.2 __create_pgd_mapping函数 1.6 物理内存的软件划分 1.6.1 划分的数据结构 1.6.2 划分的初始化 1.7 页帧分配器的实现 1.8 页帧分配器的快速分配之水位控制 1.8.1 水位的初始化 1.8.2 水位的判断 1.9 页帧分配器的快速分配之伙伴系统 1.9.1 相关的数据结构 1.9.2 伙伴算法申请页面 1.9.3 伙伴算法释放页面 1.10 页帧分配器的慢速分配之内存回收 1.10.1 数据结构 1.10.2 代码流程 1.11 页帧分配器的慢速分配之内存碎片规整 1.11.1 什么是内存碎片化 1.11.2 规整碎片化页面的算法 1.11.3 数据结构 1.11.4 规整的三种方式 第2章 进程管理 2.1 内核对进程的描述 2.1.1 通过task_struct描述进程 2.1.2 如何获取当前进程 2.2 用户态进程/线程的创建 2.2.1 fork函数 2.2.2 vfork函数 2.2.3 pthread_create函数 2.2.4 三者之间的关系 2.3 do_fork函数的实现 2.3.1 copy_process函数 2.3.2 wake_up_new_task函数 2.4 进程的调度 2.4.1 进程的分类 2.4.2 调度相关的数据结构 2.4.3 调度时刻 2.4.4 调度算法 2.4.5 CFS调度器 2.4.6 选择下一个进程 2.4.7 进程上下文切换 2.5 多核系统的负载均衡 2.5.1 多核架构 2.5.2 CPU拓扑 2.5.3 调度域和调度组 2.5.4 何时做负载均衡 2.5.5 负载均衡的基本过程 第3章 同步管理 3.1 原子操作 3.2 自旋锁 3.3 信号量 3.4 互斥锁 3.5 RCU 第4章 文件系统 4.1 磁盘 4.1.1 磁盘类型 4.1.2 磁盘读写数据所花费的时间 4.2 磁盘的分区 4.3 磁盘上数据的分布 4.4 查看文件系统的文件 4.4.1 文件系统对象结构 4.4.2 查看分区信息 4.4.3 查看超级块 4.4.4 查看块组描述符 4.5 ext4文件系统 4.5.1 磁盘布局 4.5.2 ext3布局 4.5.3 ext4中的inode 4.5.4 ext4文件寻址 4.6 查找文件test的过程 4.7 虚拟文件系统 4.7.1 文件系统类型(file_system_type) 4.7.2 超级块(super_block) 4.7.3 目录项(dentry) 4.7.4 索引节点(inode) 4.7.5 文件对象(file) 第5章 系统调用 5.1 系统调用的定义 5.2 系统调用的处理流程 5.2.1 用户态的处理 5.2.2 内核态的处理 第6章 SoC启动 6.1 Uboot启动前的工作 6.1.1 链接脚本和程序入口 6.1.2 镜像容器 6.1.3 SPL的启动 6.1.4 ATF的启动 6.2 Uboot的初始化过程 6.2.1 Uboot的启动 6.2.2 Uboot驱动的初始化 6.2.3 Uboot的交互原理 6.3 kernel的初始化过程 6.3.1 内核运行的第一行代码 6.3.2 head.S的执行过程 6.3.3 内核子系统启动的全过程 第7章 设备模型 7.1 设备模型的基石 7.1.1 设备模型是什么 7.1.2 设备模型的实现 7.2 设备模型的探究 7.2.1 总线、设备和驱动模型 7.2.2 设备树的出现 7.2.3 各级设备的展开 第8章 设备树原理 8.1 设备树的基本用法 8.1.1 设备树的结构 8.1.2 设备树的语法 8.2 设备树的解析过程 8.3 设备树常用of操作函数 8.3.1 查找节点的of函数 8.3.2 查找父/子节点的of函数 8.3.3 提取属性值的of函数 8.3.4 其他常用的of函数 第9章 电源模块 9.1 电源子系统的power domain 9.1.1 power domain的硬件实现 目 录XVII 9.1.2 power domain的软件实现 9.2 电源子系统的runtime pm 9.2.1 runtime pm在内核中的作用 9.2.2 runtime pm的软件流程 9.2.3 suspend/resume的过程 第10章 时钟模块 10.1 时钟控制器的硬件实现 10.1.1 Clock Source 10.1.2 Clock Root 10.1.3 Clock Gate 10.2 时钟控制器的驱动实现 10.3 时钟子系统的实现 10.3.1 时钟子系统之Clock Provider 10.3.2 时钟子系统之Clock Consumer 第11章 引脚模块 11.1 IOMUX控制器的工作原理 11.1.1 IOMUX控制器的硬件实现 11.1.2 引脚的使用 11.2 pinctrl驱动和client device使用过程 11.2.1 pinctrl_desc结构体 11.2.2 IOMUX控制器驱动初始化 11.2.3 client device使用过程 第12章 时间模块 12.1 定时器和计时器的初始化 12.1.1 local timer的初始化 12.1.2 system counter的初始化 12.2 定时器的应用 12.2.1 高分辨率定时器 12.2.2 低分辨率定时器 12.2.3 sched_timer 第13章 中断模块 13.1 中断控制器(GIC)硬件原理 13.1.1 GIC v3中断类别 13.1.2 GIC v3组成 13.1.3 中断路由 13.1.4 中断处理状态机 13.1.5 中断处理流程 13.2 中断控制器的驱动实现 13.3 中断的映射 13.3.1 数据结构 13.3.2 中断控制器注册irq_domain 13.3.3 外设硬中断和虚拟中断号的映射关系 13.4 中断的注册 13.5 中断的处理 13.5.1 保护现场 13.5.2 中断处理 13.5.3 恢复现场
|
|