EN

新闻中心

LOONGSON NEWS

栏目导航

5年磨一剑,探核必用“芯” | 龙芯图书新书预告

发布时间:2020-05-19    已阅读:

为了帮助国产CPU平台的内核开发者更全面地了解学习Linux内核,基于龙芯平台的内核探索书籍——《用“芯”探核: 基于龙芯的 Linux 内核探索解析》即将在8月上旬与读者见面!

本书由陈华才博士与龙芯中科联合打造,是一本信创领域的内核探索解析类书籍。陈华才博士作为官方Linux内核中龙芯代码的主要贡献者,长期从事龙芯内核研究和实践。

【全书主要内容】本书内容主要分为以下几个方面,内核启动解析,异常与中断解析,内核管理解析,进程管理解析,显卡驱动解析,网卡驱动解析,电源管理解析。

【书籍面向人群】本书读者人群定位于Linux系统相关的开发人员——特别是基于龙芯处理器做内核开发的技术人员。 【 书籍亮点】

作为第一本基于国产CPU的内核书籍,本书从龙芯CPU上运行的内核入手,基于最新的 5.x 内核,深入浅出地分析了内核的各个重要模块,并在其中讲解了大量关联知识。书籍内容紧密结合实战,贴合产业需求,兼顾模块间关系的讲解和代码本质的解析,并列举了大量可读性强的龙芯实现案例。

【全书章节】

第 01 章  基础知识

1.1  龙芯处理器简介     002

1.1.1  龙芯3号功能特征  004

1.1.2  龙芯3号处理器核  008

1.1.3  龙芯电脑基本结构  015

1.2  Linux 内核简介      018

1.2.1  Linux内核发展简史  019

1.2.2  Linux内核的开发模式021

1.2.3  关于长期维护稳定版本025

1.2.4  龙芯的内核版本选型      025

1.3  如何高效阅读代码  027

1.3.1  找准入口点            028

1.3.2  理清主脉络            029

1.3.3  顾名思义看功能       040

1.3.4  理解补丁文件       042

1.4  如何开发健壮内核045

1.4.1  内核代码风格   046

1.4.2  合理生成补丁   048

1.4.3  谨慎对待创新   049

第 02 章  内核启动解析

2.1  内核源代码目录结构    054

2.2  内核启动过程:主核视角      055

2.2.1  第一入口:kernel_entry     056

2.2.2  第二入口:start_kernel()   063

2.2.3  重要函数:setup_arch()    070

2.2.4  重要函数:trap_init()      083

2.2.5  重要函数:init_IRQ()      087

2.2.6  重要函数:time_init()             092

2.2.7  1号进程:kernel_init()     096

2.3  内核启动过程:辅核视角         104

2.3.1  第一入口:smp_bootstrap         105

2.3.2  第二入口:start_secondary()    107

2.4  本章小结       110

第 03 章  异常与中断解析

3.1  寄存器操作      113

3.2  异常处理解析  114

3.2.1  复位异常和 NMI      115

3.2.2  缓存错误异常       116

3.2.3  TLB/XTLB 异常  117

3.2.4  其他通用异常       126

3.3  中断处理解析  137

3.3.1  中断处理的入口       137

3.3.2  中断处理的分派       140

3.4  软中断、小任务与工作队列151

3.4.1  软中断 softirq 151

3.4.2  小任务 tasklet 154

3.5  本章小结          159

第 04 章  内存管理解析

4.1  内存管理相关概念  161

4.1.1  龙芯 3 号的高速缓存    161

4.1.2  龙芯 3 号的 TLB      168

4.1.3  龙芯的虚拟地址空间      170

4.2  物理内存页帧管理  171

4.2.1  物理地址空间   177 v4.2.2  伙伴系统算法   183

4.3  内核内存对象管理 201

4.3.1  数据结构与 API        202

4.3.2  核心函数解析       209

4.4  分页映射内存管理 217

4.4.1  持久内核映射    221

4.4.2  临时内核映射    226

4.4.3  非连续内存管理 229

4.5  进程地址空间管理 241

4.5.1  数据结构与 API        241

4.5.2  内存映射          250

4.5.3  堆区管理          257

4.5.4  缺页异常处理      258

4.6  内存管理其他话题  266

4.6.1  反向映射   267

4.6.2  内存回收   271

4.6.3  巨页机制   274

4.7  本章小结   275

第 05 章  进程管理解析

5.1  进程描述符      278

5.1.1  运行状态相关   285

5.1.2  标识调度相关   289

5.1.3  其他重要部分   295

5.2  进程创建 296

5.2.1  复制新进程        296

5.2.2  执行新程序        308

5.3  进程销毁  314

5.3.1  退出程序执行   314

5.3.2  清理进程资源   317

5.4  进程调度   327

5.4.1  基本概念       328

5.4.2  发展历史       330

5.4.3  公平调度策略   334

5.4.4  调度核心解析   347

5.4.5  进程切换解析   360

5.5  其他话题   364

5.5.1  CPU 负载       364

5.5.2  调度域与调度组       370

5.5.3  NUMA 均衡调度      374

5.6  本章小结      380

第 06 章  显卡驱动解析

6.1  显卡概述  382

6.1.1  发展简史及有关概念      382

6.1.2  现代显卡的硬件结构      385

6.2  Linux 图形系统架构    388

6.2.1  X-Window 和 Wayland    388

6.2.2  直接渲染、间接渲染和显卡驱动 391

6.3  Linux 内核显卡驱动    392

6.3.1  寄存器读写        393

6.3.2  常用数据结构   394

6.3.3  显卡初始化        411

6.3.4  命令流处理        435

6.3.5  存储区域间数据交换      439

6.3.6  GPU 重置(Reset)       443

6.4  本章小结 446

第 07 章  网卡驱动解析

7.1  网络子系统概述     448

7.2  Linux 以太网卡驱动449

7.2.1  常用数据结构      449

7.2.2  网卡初始化           452

7.2.3  网卡的开与关      456

7.2.4  数据发送与接收       457

7.2.5  故障检测与修复(看门狗)        466

7.3  本章小结  468

第 08 章  电源管理解析

8.1  电源管理概述  470

8.2  运行时电源管理     473

8.2.1  动态变频   474

8.2.2  自动调核   488

8.3  系统级睡眠管理     507

8.3.1  睡眠到内存(待机)    509

8.3.2  睡眠到磁盘(休眠)    520

8.4  本章小结  527

附录 A  并发与同步原语

A.1  内存屏障   529

A.2  每CPU变量533

A.3  原子操作   535

A.4  开关抢占   539

A.5  自旋锁       540

A.6  顺序锁       544

A.7  信号量       546

A.8  互斥量       548

A.9  RCU 机制  549

A.10  其他原语  556

附录 B  Linux 内核大事记

B.1  史前时代      560

B.2  奇偶时代      560

B.3  快速演进时代 562

B.4  极速演进时代 564

后记

参考文献