万本电子书0元读

万本电子书0元读

顶部广告

图解Linux内核(基于6.x)电子书

浓缩数百万行代码 308张图表深度解析 扫码观看教学视频 源代码及电子课件

售       价:¥

纸质售价:¥100.10购买纸书

0人正在读 | 0人评论 6.7

作       者:姜亚华

出  版  社:机械工业出版社

出版时间:2024-04-11

字       数:29.2万

所属分类: 科技 > 计算机/网络 > 计算机理论与教程

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(条)
  • 读书简介
  • 目录
  • 累计评论(条)
全书共五篇,以从易到难的顺序详细剖析了Linux内核发的核心技术。“知识储备篇”介绍了Linux的数据结构、中断处理、内核同步和时间计算等内容,这些是理解后续章节的前提;之后通过“内存管理篇”“文件系统篇”“程管理篇”详细介绍了Linux的三大核心模块;最后的“综合应用篇”则融合了前面诸多模块知识展示了Linux内核发在操作系统、智能设备、驱动、通信、芯片、云计算和人工智能等热领域的应用。书中的重、难均配有图表、代码和实战案例,力求直观、清晰。 学习本书的读者需要熟悉C语言,建议对Linux内核有一定了解。推荐初学者按照本书的编排顺序阅读,而熟悉Linux内核的读者可以跳过知识储备篇,直从三大核心模块篇行阅读。 本书深浅出、配图丰富,可作为Linux初中级读者系统学习Linux内核发的指导手册,也可作为从事嵌式、操作系统、Linux编程、驱动/内核发,以及智能设备发的工程师的案头指南和阶工具书。<br/>【推荐语】<br/>浓缩数百万行代码 308张图表深度解析 扫码观看教学视频 源代码及电子课件<br/>【作者】<br/>姜亚华 先后就职于华为、Intel、AMD、壁仞科技和曦智科技。 ?就职于华为期间,负责华为手机的Touch和Sensor的驱动和软件优化,包括Viva、D1、Mate1、Mate2和P2等。 ?就职于Intel期间,负责Intel安卓平台的Camera和Sensor的驱动,包括Baytrail、Cherrytrail、Cherrytrail CR和Sofia等。 ?就职于AMD期间,负责DMA、Interrupt、Semaphore等模块的优化和验证,包括Vega系列、Navi系列和多款APU产品。 ?在曦智科技负责多款产品的系统软件发至今,包括PCIe驱动、设备固件和系统类库等。 一直从事与Linux内核和Linux系统编程相关的工作,研究内核代码十余年,对多数模块的细节如数家珍。<br/>
目录展开

前言

知识储备篇

第1章 Linux内核概述

1.1 基于Linux的操作系统生态

1.2 【图解】Linux工程师技能和领域

1.3 内核代码结构

1.4 【看图说话】Android操作系统

第2章 数据结构和设计模式

2.1 【图解】关系型数据结构

2.1.1 一对一关系

2.1.2 一对多关系

2.1.3 多对多关系

2.2 【图解】内核中常见的设计模式

2.2.1 模板方法设计模式

2.2.2 观察者设计模式

2.3 【看图说话】input子系统

第3章 中断

3.1 【图解】中断处理的软硬件分工

3.2 中断的处理

3.2.1 注册中断服务例程

3.2.2 中断处理和返回

3.3 软中断

3.3.1 tasklet小任务

3.3.2 timer定时器

3.4 【看图说话】系统调用与程序优化

第4章 Linux的时间

4.1 数据结构

4.2 时间的衡量

4.2.1 时钟芯片

4.2.2 时间的计算

4.3 【图解】时钟中断

4.4 【看图说话】timer和hrtimer

内存管理篇

第5章 内存寻址

5.1 DRAM和MMIO

5.2 【图解】内存分页

5.2.1 寻址

5.2.2 内存映射

5.3 【看图说话】访问GPU的Framebuffer

第6章 物理内存的管理

6.1 【图解】物理内存的布局

6.1.1 【图解】node

6.1.2 【图解】node的管理

6.2 物理内存申请的三个阶段

6.2.1 启动程序

6.2.2 memblock分配器

6.2.3 伙伴系统

6.3 【看图说话】搭建管理物理内存的系统

第7章 虚拟内存的管理

7.1 线性空间的划分

7.2 【图解】内核线性空间布局

7.2.1 直接映射区

7.2.2 动态映射区

7.2.3 永久映射区

7.2.4 固定映射区

7.3 用户空间内存映射mmap

7.3.1 数据结构

7.3.2 mmap的实现

7.4 【看图说话】/dev/mem的巧用和限制

第8章 内存管理进阶

8.1 内存申请

8.1.1 申请连续物理内存

8.1.2 vmalloc的使用

8.2 缓存

8.2.1 TLB缓存

8.2.2 内存缓存

8.3 【图解】缺页异常

8.3.1 异常的处理

8.3.2 COW的精髓

8.4 【看图说话】看似简单的malloc

第9章 内存回收

9.1 【图解】内存回收调用栈

9.2 扫描过程的控制

9.3 选择扫描对象

9.4 扫描inactive链表

9.4.1 页隔离

9.4.2 folio的原理

9.4.3 回收隔离页

9.4.4 扫尾

9.5 扫描active链表

9.6 【看图说话】反向映射

9.6.1 匿名映射的mapping

9.6.2 文件映射的mapping

文件系统篇

第10章 虚拟文件系统

10.1 数据结构

10.2 【图解】文件系统的挂载

10.3 文件查找

10.4 文件操作

10.4.1 软链接和硬链接

10.4.2 创建和删除目录

10.4.3 打开和关闭文件

10.4.4 创建节点

10.4.5 删除文件

10.5 文件的IO

10.5.1 读写

10.5.2 ioctl操作

10.6 【看图说话】proc文件系统

第11章 sysfs文件系统

11.1 基本框架

11.2 数据结构

11.3 创建文件

11.4 文件的IO

11.5 【看图说话】sysfs和驱动

第12章 ext4 文件系统

12.1 【图解】ext4布局

12.2 数据结构

12.2.1 ext4_super_block结构体

12.2.2 ext4_group_desc结构体

12.2.3 ext4_inode结构体

12.2.4 ext4_sb_info结构体

12.2.5 ext4_inode_info结构体

12.3 ext4的挂载

12.4 【图解】ext4目录结构

12.4.1 线性目录

12.4.2 哈希树目录

12.4.3 硬链接

12.5 【图解】ext4文件的IO

12.5.1 映射

12.5.2 区段树

12.6 【看图说话】文件的恢复

进程管理篇

第13章 进程

13.1 概述

13.1.1 数据结构

13.1.2 扩展讨论

13.2 进程的创建

13.2.1 dup_task_struct函数

13.2.2 复制creds

13.2.3 设置时间

13.2.4 sched_fork函数

13.2.5 复制资源

13.2.6 申请pid

13.2.7 重要的杂项

13.3 创建进程

13.3.1 fork/vfork系统调用

13.3.2 创建线程

13.3.3 创建内核线程

13.4 进程“三巨头”

13.5 进程退出

13.5.1 退出方式

13.5.2 退出过程

13.5.3 使用wait等待子进程

13.6 【看图说话】Android的thread

第14章 进程调度

14.1 数据结构

14.2 进程调度的过程

14.2.1 进程被创建

14.2.2 唤醒进程

14.2.3 时钟中断

14.2.4 进程切换

14.3 stop调度类

14.4 实时调度类

14.4.1 优先级和抢占

14.4.2 task_tick_rt函数

14.4.3 选择下一个进程

14.5 【图解】完全公平调度类

14.5.1 task_fork_fair函数

14.5.2 enqueue_task和check_preempt

14.5.3 task_tick_fair函数

14.5.4 进程切换

14.6 最后期限调度类

14.7 idle调度类

14.8 进程优先级

14.9 【看图说话】idle进程

第15章 进程通信

15.1 经典的管道

15.1.1 创建pipe

15.1.2 pipe的操作

15.1.3 命名管道

15.2 POSIX通信

15.2.1 POSIX信号量

15.2.2 POSIX共享内存

15.2.3 POSIX消息队列

15.3 XSI通信

15.3.1 IPC对象的key和id

15.3.2 XSI信号量

15.3.3 XSI消息队列

15.3.4 XSI共享内存

15.4 【看图说话】多线程和多进程

第16章 信号

16.1 数据结构

16.2 捕捉信号

16.3 发送信号

16.4 【图解】信号处理的过程

16.4.1 处理信号的时机和方式

16.4.2 处理信号后如何返回

16.5 【看图说话】监控文件的IO

综合应用篇

第17章 玩转操作系统——程序的执行

17.1 【图解】elf文件

17.1.1 概述

17.1.2 文件格式

17.2 exec函数族

17.2.1 数据结构

17.2.2 系统调用

17.3 【看图说话】main函数的来龙去脉

第18章 玩转操作系统——IO多路复用

18.1 select机制

18.2 poll机制

18.3 【图解】epoll

18.3.1 数据结构

18.3.2 epoll的使用

18.4 【看图说话】改良管道通信

第19章 玩转操作系统——Binder通信

19.1 【图解】Binder通信的原理

19.2 Binder的流程

19.2.1 ServiceManager进程管理服务

19.2.2 注册和获取服务

19.2.3 服务的过程

19.3 Binder的驱动

19.4 【看图说话】使用Binder让设计变清晰

第20章 玩转驱动——Linux设备驱动模型

20.1 数据结构

20.2 【图解】probe

20.3 再论总线

20.4 【看图说话】触摸屏的驱动

第21章 玩转驱动——智能设备的Camera

21.1 Camera在智能设备中的应用

21.2 【图解】V4L2架构

21.2.1 数据结构

21.2.2 ioctl操作

21.3 Camera的核心ioctl操作

21.4 【看图说话】安卓的Camera的架构

第22章 玩转云计算、虚拟化——KVM

22.1 【图解】KVM原理

22.2 KVM的实现

22.2.1 硬件上的Intercept

22.2.2 CPU虚拟化

22.3 【看图说话】KVM和QEMU

第23章 玩转云计算、虚拟化——设备虚拟化

23.1 【图解】virtio

23.1.1 设备端实现

23.1.2 驱动端实现

23.2 【图解】VFIO

23.2.1 原理

23.2.2 VFIO驱动

23.3 【看图说话】QEMU的virtio设备

附录

附录A 内存初始化

A.1 内存识别

A.2 内存加入伙伴系统

A.3 内存热插拔

附录B 内核同步

B.1 竞争

B.2 同步原语

B.2.1 每cpu变量

B.2.2 volatile关键字

B.2.3 屏障

B.2.4 atomic变量

B.2.5 禁中断

B.2.6 禁抢占

B.2.7 自旋锁

B.2.8 读写锁

B.2.9 顺序锁

B.2.10 信号量

B.2.11 互斥锁

B.2.12 读-拷贝-更新

附录C 内嵌汇编语言

C.1 基本格式

C.2 扩展格式

附录D 链接脚本

D.1 编译的基本过程

D.2 内核的链接脚本

累计评论(条) 个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部