dawnscofield / linux_kernel_wiki

linux内核学习资料:200+经典内核文章,100+内核论文,50+内核项目,500+内核面试题,80+内核视频

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

肝下50万字《Linux内核精通》笔记,你的底层原理水平将从入门到入魔

200+篇经典内核文章,100+篇内核论文,50+内核项目,500+道内核面试题,80+内核讲解视频


📢 重磅消息:现已开启【Linux内核学习资料】姊妹篇 ——【最全空降Golang资料补给包(满血战斗)】repo计划,有兴趣的开发者可以去看看哟!!!

📢 前言

在我们学习Linux内核之前,我们首先需要掌握以下几点:


学习资料

📖 文章

【🏆 强烈推荐阅读】Linux入门学习笔记.pdf


操作系统
官方说明:操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

1、Linux操作系统学习——启动
2、Linux操作系统学习——内核运行
3、Linux操作系统学习——内核初始化
4、Linux操作系统IO机制原理(流程图详解)
5、Linux操作系统处理器调度基本准则和实现
6、Linux操作系统基础的常用命令
7、Linux操作系统进程的状态和转换(五态模型)
8、Linux操作系统进程同步的几种方式及基本原理
9、Linux操作系统内存管理RAID磁盘阵列与配置
10、Linux操作系统内存管理之磁盘高速缓存机制
11、Linux操作系统通过实战理解CPU上下文切换
12、Linux内核操作系统原理与概述(流程图)
13、Linux操作系统ARM体系结构处理器机制原理与实现
14、Linux操作系统ARM指令集与汇编语言程序设计
15、Linux操作系统汇编语言基础知识(图文代码)
16、Linux操作系统汇编指令入门级整理知识点

进程管理
计算机术语:进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。很多人在回答进程的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程。linux下查看系统进程的命令是ps。

1、Linux内核进程、线程、调度(一)
2、Linux内核进程、线程、调度(二)
3、Linux内核进程、线程、调度(三)
4、Linux内核进程、线程、调度(四)
5、一文带你,彻底了解,零拷贝Zero-Copy技术
6、Linux内核进程间通信与管道socket,XSI(System V)
7、Linux内核进程状态总结
8、Linux内核进程的核心——task_truct
9、Linux内核进程、线程的创建和派生
10、Linux内核进程管理任务调度
11、Linux内核进程间通信之管道
12、Linux内核进程间通信之信号
13、Linux内核进程间通信之共享内存和信号量
14、Linux内核进程调度O(1)调度算法
15、Linux内核进程管理原理详解(代码演示)
16、Linux内核进程管理并发同步与原子操作
17、Linux内核进程管理进程优先级
18、Linux内核进程述符和进程状态
19、Linux内核IO基础知识与概念
20、Linux内核Socket通信原理和实例讲解
21、Linux内核进程的管理与调度
22、Linux内核进程管理几种CPU调度策略
23、Linux内核进程管理几种进程状态
24、Linux内核六大进程通信机制原理

内存管理
管理学领域术语:内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。一个执行中的程式,譬如网页浏览器在个人电脑或是图灵机(Turing machine)里面,为一个行程将资料转换于真实世界及电脑内存之间,然后将资料存于电脑内存内部(在计算机科学,一个程式是一群指令的集合,一个行程是电脑在执行中的程式)。一个程式结构由以下两部分而成:“本文区段”,也就是指令存放,提供CPU使用及执行; “资料区段”,储存程式内部本身设定的资料,例如常数字串。

1、硬件原理 和 分页管理
2、内存的动态申请和释放
3、进程的内存消耗和泄漏
4、内存与I/O的交换
5、其他工程问题以及调优
6、一文了解,Linux内存管理,malloc、free 实现原理
7、尽情阅读,技术进阶,详解mmap原理
8、浅谈Linux内存管理机制
9、熟读精思,熟读玩味,Linux虚拟内存管理,MMU机制,原来如此也
10、多核心Linux内核路径优化的不二法门之-slab与伙伴系统
11、Linux中的内存管理机制
12、Linux中的内存管理之内存映射
13、Linux中的内存管理之分页
14、浅谈Linux内核之CPU缓存
15、Linux IO 之 IO与网络模型
15、你真的理解Linux中断机制吗
16、Linux内核之系统调用
17、Linux内核之任务空间管理

网络协议栈
官方说明:计算机网络中的一种软件架构,用于实现网络通信的各种协议。它是一种层次化的结构,由多个协议层次组成,每个层次负责不同的功能,从而实现网络通信的各种功能。

1、Linux内核网络udp数据包发送(一)
2、Linux内核网络udp数据包发送(二)-UDP协议层分析
3、Linux内核网络UDP数据包发送(三)—IP协议层分析
4、Linux操作系统原理—内核网络协议栈
5、Linux网络栈解剖
6、深入分析Linux操作系统对于TCP IP栈的实现原理与具体过程
7、透过现象看本质,从linux源码角度看epoll
8、驾驭Linux内部网络实现——关键数据结构 sk_buff
9、Linux内核之epoll模型
10、Linux网络源代码学习——整体介绍
11、Linux 中的五种IO模型


设备驱动
官方说明:设备驱动是指操作系统和输入输出设备间的粘合剂。

1、Linux 总线、设备、驱动模型的探究
2、Linux 设备和驱动的相遇
3、Linux操作系统学习之字符设备
4、Linux内核设备驱动IO流程详解
5、Linux内核设备信息集合
6、Linux内核字符设备Character Device


文件系统
官方说明:文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

1、Linux 操作系统原理-文件系统(一)
2、Linux 操作系统原理-文件系统(二)
3、Linux文件系统详解
4、磁盘IO那些事
5、Linux IO 之 文件系统的架构
6、Linux IO 之 文件系统的实现
7、Linux IO 之 块I/O流程与I/O调度器
8、Linux操作系统学习之虚拟文件系统
9、Linux操作系统学习之文件系统

🕵 面试题

面试题一

1、什么是Linux?
2、Unix和Linux有什么区别?
3、什么是 Linux 内核?
4、Linux的基本组件是什么?
5、Linux 的体系结构
6、BASH和DOS之间的基本区别是什么?
7、Linux 开机启动过程?
8、Linux系统缺省的运行级别?
9、Linux 使用的进程间通信方式?
10、Linux 有哪些系统日志文件?
11、Linux系统安装多个桌面环境有帮助吗?
12、什么是交换空间?
13、什么是root帐户?
14、什么是LILO?
15、什么是BASH?
16、什么是CLI?
17、什么是GUI?
18、开源的优势是什么?
19、简单 Linux 文件系统?
20、Linux 的目录结构是怎样的?
21、什么是 inode ?
22、什么是硬链接和软链接?
23、RAID 是什么?
24、一台 Linux 系统初始化环境后需要做一些什么安全工作?
25、什么叫 CC 攻击?什么叫 DDOS 攻击?
26、什么是网站数据库注入?
27、Shell 脚本是什么?
28、可以在 Shell 脚本中使用哪些类型的变量?
29、Shell 脚本中 if 语法如何嵌套?
30、Shell 脚本中 case 语句的语法?
31、Shell 脚本中 for 循环语法?
32、Shell 脚本中 while 循环语法?
33、如何使脚本可执行?
34、在 Shell 脚本如何定义函数呢?
35、判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下?
36、添加一个新组为 class1 ,然后添加属于这个组的 30 个用户,用户名的形式为 stdxx ,其中 xx 从 01 到 30 ?
37、写一个 sed 命令,修改 /tmp/input.txt 文件的内容?
38、用户进程间通信主要哪几种方式?
39、通过伙伴系统申请内核内存的函数有哪些?
40、Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
41、对文件或设备的操作函数保存在那个数据结构中?
42、Linux 中的文件包括哪些?
43、创建进程的系统调用有那些?
44、调用 schedule()进行进程切换的方式有几种?
45、Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
46、进程调度的核心数据结构是哪个?
47、如何加载、卸载一个模块?
48、模块和应用程序分别运行在什么空间?
49、Linux 中的浮点运算由应用程序实现还是内核实现?
50、模块程序能否使用可链接的库函数?
51、TLB 中缓存的是什么内容?
52、Linux 中有哪几种设备?
53、字符设备驱动程序的关键数据结构是哪个?
54、设备驱动程序包括哪些功能函数?
55、如何唯一标识一个设备?
56、Linux 通过什么方式实现系统调用?
57、Linux 软中断和工作队列的作用是什么?
58、Linux开机启动过程?
59、Linux系统缺省的运行级别
60、Linux系统是由那些部分组成?
61、硬链接和软链接有什么区别?
62、如何规划一台Linux主机,步骤是怎样?
63、查看系统当前进程连接数?
64、如何在/usr目录下找出大小超过10MB的文件?
65、添加一条到192.168.3.0/24的路由,网关为192.168.1.254?
66、如何在/var目录下找出90天之内未被访问过的文件?
67、如何在/home目录下找出120天之前被修改过的文件?
68、在整个目录树下查找文件“core”,如发现则无需提示直接删除它们。
69、有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
70、每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写?
71、找到/tmp/目录下面的所有名称以"s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中
72、配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?
73、详细说明keepalived的故障切换工作原理
74、什么是系统调用?
75、进程和线程的区别?
76、进程有哪几种状态?
77、进程间的通信方式
78、线程间的同步的方式
79、进程的调度算法
80、操作系统的内存管理主要是做什么?
81、常见的几种内存管理机制
82、快表和多级页表
83、分页机制和分段机制的共同点和区别
84、逻辑(虚拟)地址和物理地址
85、CPU 寻址了解吗?为什么需要虚拟地址空间?
86、什么是虚拟内存(Virtual Memory)?
87、局部性原理
88、虚拟存储器
89、虚拟内存的技术实现
90、页面置换算法

面试题二

1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
2、怎么查看当前进程?怎么执行退出?怎么查看当前路径?
3、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
4、Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
5、建立软链接(快捷方式),以及硬链接的命令。
6、目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
7、使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?
8、查看文件内容有哪些命令可以使用?
9、随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
10、终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
11、移动文件用哪个命令?改名用哪个命令?
12、复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
13、删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
14、Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
15、用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
16、Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
17、Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
18、怎么使一个命令在后台运行?
19、利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
20、哪个命令专门用来查看后台任务?
21、把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
22、终止进程用什么命令? 带什么参数?
23、怎么查看系统支持的所有信号?
24、搜索文件用什么命令? 格式是怎么样的?
25、查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
26、使用什么命令查看用过的命令列表?
27、使用什么命令查看磁盘使用空间? 空闲空间呢?
28、使用什么命令查看网络是否连通?
29、使用什么命令查看 ip 地址及接口信息?
30、查看各类环境变量用什么命令?
31、通过什么命令指定命令提示符?
32、查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
33、通过什么命令查找执行命令?
34、怎么对命令进行取别名?
35、du 和 df 的定义,以及区别?
36、awk 详解?
37、当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
38、如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
39、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?
40、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
41、bash shell 中的hash 命令有什么作用?
42、哪一个bash内置命令能够进行数学运算?
43、怎样一页一页地查看一个大文件的内容呢?
44、数据字典属于哪一个用户的?
45、怎样查看一个linux命令的概要与用法?假设你在/bin目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?


📀 视频

Linux内核源码视频讲解

1、深度剖析Linux内核SMP负载均衡-----视频讲解地址

2、深度剖析Linux内核ARM64处理器架构-----视频讲解地址

3、深度剖析Linux内核ARM异常处理-----视频讲解地址

4、深度剖析Linux内核CFS调度器-----视频讲解地址

5、深度剖析Linux内核量化负载计算能力-----视频讲解地址

6、深度剖析Linux内核进程及生命周期-----视频讲解地址

7、深度剖析Linux内核CPU域初始化实现-----视频讲解地址

8、深度剖析Linux内核蓝牙子系统架构-----视频讲解地址

9、深度剖析Linux内核USB系统架构-----视频讲解地址

10、深度剖析Linux内核IO体系结构与访问设备-----视频讲解地址

11、深度剖析Linux内核进程管理机制-----视频讲解地址

12、深度剖析Linux内核MLFQ经典调度算法-----视频讲解地址

13、深入剖析Linux内核伙伴系统实现及API调度实战-----视频讲解地址

14、深入剖析Linux内核哈希表与运行队列-----视频讲解地址

15、深入剖析Linux内核NUMA调度器-----视频讲解地址

16、深度剖析Linux内核perf性能优化分析-----视频讲解地址


📕 电子书籍

《Linux内核完全注释V3.0书签版》

《Linux命令行大全 - 绍茨 (william E.shotts)》

《Linux命令速查手册》

《Linux就该这么学》

《Linux性能优化大师》

《Linux环境编程:从应用到内核》

《Linux集群和自动化运维 余洪春》

《Linux驱动程序开发实例(第2版)》

《Linux高级程序设计(第3版)》

《构建高可用Linux服务器(第4版)》

《深入了解Linux内核》


🏗 内核项目

No. Project Introduction
1 esp8089 ESP8089 WiFi芯片的Linux内核模块驱动程序
2 fibdrv 计算斐波那契数列的Linux内核模块
3 exfat-linux 这个用于Linux内核的exFAT文件系统模块是三星最新的Linux主线的exFAT驱动程序的后端端口。这个项目可以用于日常Linux用户,只需简单地做make && make install。Ubuntu用户可以简单地添加一个PPA并开始使用它,甚至不需要下载代码。这也可以直接插入到现有的Linux内核源代码中,以内联地构建文件系统驱动程序,这对Android内核开发人员应该很有用。
4 ipt-netflow 适用于 Linux 的高性能 NetFlow v5、v9、IPFIX 流数据导出模块核心。创建用于高吞吐量网络中的 linux 路由器。
5 buildKernelAndModules 在NVIDIA Jetson Nano Developer Kit上构建Linux内核和模块
6 kernel-modules-hook 使Arch Linux在内核升级后完全功能
7 rfm12b-linux HopeRF公司生产的RFM12B和RFM69CW数字射频模块的Linux内核驱动程序。它的目标是提供SPI接口的嵌入式Linux板。
8 khttpd khttpd是一个实验性的HTTP服务器,实现为Linux内核模块。服务器默认端口为8081,但是可以使用命令行参数port=?当您准备加载内核模块时。
9 Kernel_Rootkit Kernel_Rootkit是一种特殊类型的恶意软件,它通过修改操作系统内核来向用户和系统管理员隐藏自己的存在。rootkit是一个内核模块——一个动态加载到内核中的库。
10 ktls Linux内核传输层安全模块
11 frdev 一个高效的ip黑/白名单防火墙(作为一个linux内核模块)。
12 HomaModule 一个实现了Homa传输协议的Linux内核模块。
13 PCRE Linux内核模块&PCRE文本搜索引擎
14 acpi_call 一个内核简单模块,允许您通过将方法名称后跟参数写入/proc/ ACPI /call来调用ACPI方法。
13 Linux Modules 这是一个管理Linux内核模块的工具。它是modprobe的一个替代方案,支持列出、添加和删除模块,以及显示模块上的信息。
14 LiME 一个可加载内核模块(LKM),它允许从Linux和基于Linux的设备(如Android)获取易失性内存。这使得LiME独一无二,因为它是Android设备上第一个允许全内存捕获的工具。它还在获取过程中最小化了用户和内核空间进程之间的交互,这使得它能够生成比其他为Linux内存获取而设计的工具更可靠的内存捕获。
15 kplugs KPlugs是一个Linux内核模块,它提供了在Linux内核中动态执行脚本的接口。
16 rapiddisk 一个高级Linux RAM驱动器和缓存内核模块。动态分配RAM作为块设备。使用它们作为独立的磁盘驱动器,甚至将它们映射为缓存节点到较慢的本地磁盘驱动器。
17 forge_socket Linux内核模块,用于从用户空间检查/修改TCP套接字状态
18 CCKiller Linux轻量级CC攻击防御工具脚本
19 libNetGo Linux网络分析工具
20 wgcloud linux运维监控工具,支持系统信息,内存,cpu,温度,磁盘空间及IO,硬盘smart,系统负载,网络流量,进程等监控,API接口,大屏展示,拓扑图,端口监控,docker监控,日志文件监控,数据可视化,webSSH工具,堡垒机(跳板机)
21 hookso hookso是一个Linux动态链接库的注入修改查找工具,用来修改其他进程的动态链接库行为。
22 LinuxPerformanceTools Linux性能监控工具
23 jon jon 是一款Linux系统攻防工具箱,包含扫描,入侵,痕迹清理,木马,网站测试等各种黑客工具。
24 perf-tools 用于Linux ftrace和perf_events(也就是“perf”命令)的各种开发中且不受支持的性能分析工具。ftrace和perf都是核心的Linux跟踪工具,包含在内核源代码中。您的系统可能已经有了ftrace,而perf通常只是一个添加包(参见先决条件)。
25 FlameGraph 火焰图形可视化分析器
26 bcc BCC 是一个用于创建高效内核跟踪和操作程序的工具包,包括几个有用的工具和示例。它利用了扩展 BPF(伯克利数据包过滤器),正式名称为 eBPF,这是首次添加到 Linux 3.15 的新功能。BCC 使用的大部分内容都需要 Linux 4.1 及更高版本。
27 fhe-toolkit-linux IBM Linux的完全同态加密(FHE)工具包被打包为Docker容器,这使得开始和试验完全同态加密技术变得更容易。
28 linux-smart-enumeration 用于渗透测试的Linux枚举工具和具有冗长级别的ctf
29 gpu-monitoring-tools Linux上监视NVIDIA gpu的工具
30 linux-inject 将共享对象注入Linux进程的工具
31 ntttcp-for-linux 一个Linux网络吞吐量多线程基准测试工具
32 linux-pentest Linux穿透测试工具

📚 论文

No. Title Translation(参考) Company
1 《A dataset of feature additions and feature removals from the Linux kernel》 《从Linux内核中添加和删除特性的数据集》 滑铁卢大学
2 《A Novel DDoS Floods Detection and Testing Approaches for Network Traffic based on Linux Techniques》 《基于Linux技术的网络流量DDoS flood检测与测试方法》 大连理工大学软件学院
3 《A Permission Check Analysis Framework for Linux Kernel》 《Linux内核权限检查分析框架》 弗吉尼亚理工学院
4 《An Evaluation of Adaptive Partitioning of Real-Time Workloads on Linux》 《Linux下实时工作负载自适应分区的评估》 Red Hat
5 《Analysis and Study of Security Mechanisms inside Linux Kernel 》 《Linux内核内部安全机制分析与研究》 北京交通大学计算机与信息技术学院
6 《Architecture of the Linux kernel》 《Linux内核的架构》 未知
7 《Automated Patch Backporting in Linux》 《Linux中的自动补丁支持》 新加坡国立大学
8 《Automated Voxel Placement A Linux-based Suite of Tools for Accurate and Reliable Single Voxel Coregistration》 《自动化体素放置基于linux的精确可靠的单体素共配准工具套件》 韦恩州立大学
9 《Automatic Rebootless Kernel Updates》 《自动重启内核更新》 麻省理工学院
10 《Communication on Linux using Socket Programming in ‘C’》 《基于C语言套接字编程的Linux通信》 印度北阿坎德邦现代技术学院计算机科学与信息技术系
11 《Compatibility of Linux Architecture for Diskless Technology System》 《Linux体系结构对无磁盘技术系统的兼容性》 台南科技大学电气工程学院
12 《Concurrency in the Linux kernel》 《Linux内核中的并发性》 伦敦大学
13 《Container-based real-time scheduling in the Linux kernel》 《Linux内核中基于容器的实时调度》 未知
14 《Crash Consistency Test Generation for the Linux Kernel》 《Linux内核的崩溃一致性测试生成》 德克萨斯大学奥斯汀分校
15 《Designing of a Virtual File System》 《虚拟文件系统的设计》 未知
16 《Efficient Formal Verification for the Linux Kernel》 《Linux内核的有效正式验证》 RETIS实验室
17 《Exploiting Uses of Uninitialized Stack Variables in Linux Kernels to Leak Kernel Pointers》 《利用Linux内核中未初始化的堆栈变量泄漏内核指针》 亚利桑那州立大学
18 《Hybrid Fuzzing on the Linux Kernel》 《Linux内核的混合Fuzzing》 俄勒冈州立大学
19 《In-Process Memory Isolation for Modern Linux Systems》 《面向现代Linux系统的进程内内存隔离》 罗格斯大学
20 《Introduction to the Linux kernel challenges and case studies》 《介绍Linux内核的挑战和案例研究》 马德里康普顿斯大学
21 《Kernel Mode Linux Toward an Operating System Protected by a Type Theory》 《面向类型理论保护的操作系统的内核模式Linux》 东京大学
22 《Linux Kernel development》 《Linux内核开发》 怀卡托大学
23 《Linux Kernel Transport Layer Security》 《Linux内核传输层安全》 Facebook
24 《Linux kernel vulnerabilities State-of-the-art defenses and open problems》 《Linux内核漏洞最新的防御和开放问题》 麻省理工学院
25 《Linux Kernel Workshop Hacking the Kernel for Fun and Profit》 《Linux内核研讨会黑客内核的乐趣和利润》 IBM
26 《Linux Network Device Drivers an Overview》 《Linux网络设备驱动程序概述》 印度理工学院
27 《Linux Physical Memory Page Allocation》 《Linux物理内存页分配》 未知
28 《Linux Random Number Generator – A New Approach》 《Linux随机数生成器-一种新的方法》 未知
29 《Machine Learning for Load Balancing in the Linux Kernel》 《Linux内核负载平衡的机器学习》 伊利诺伊大学
30 《Performance of IPv6 Segment Routing in Linux Kernel》 《Linux内核下的IPv6段路由性能》 Cisco
31 《Professional Linux® Kernel Architecture》 《专业的Linux®内核架构》 Wolfgang Mauerer
32 《Research of Performance Linux Kernel File Systems》 《高性能Linux内核文件系统的研究》 乌拉尔国立技术大学
33 《Resource Management for Hardware Accelerated Linux Kernel Network Functions》 《硬件加速Linux内核网络功能的资源管理》 积云网络
34 《Rethinking Compiler Optimizations for the Linux Kernel An Explorative Study》 《重新思考Linux内核的编译器优化——探索性研究》 北京大学电子工程与计算机学院
35 《Securing the Linux Boot Process From Start to Finish》 《从开始到结束保护Linux引导过程》 奥地利波尔顿应用科学大学
36 《Security Applications of Extended BPF Under the Linux Kernel》 《Linux内核下扩展BPF的安全应用》 卡尔顿大学计算机科学学院
37 《Simple and precise static analysis of untrusted Linux kernel extensions》 《简单和精确的静态分析不可信的Linux内核扩展》 VMware
38 《Speeding Up Linux Disk Encryption》 《加快Linux磁盘加密》 未知
39 《Stateless model checking of the Linux kernel's hierarchical read-copy-update (tree RCU)》 《Linux内核的分层read-copy-update (tree RCU)的无状态模型检查》 雅典国立技术大学
40 《Survey Paper on Adding System Call in Linux Kernel 3.2+ & 3.16》 《关于在Linux内核3.2+ & 3.16中添加系统调用的调查报告》 北阿坎德邦技术大学Shivalik工程学院计算机科学与工程
41 《The benefits and costs of writing a POSIX kernel in a high-level language》 《用高级语言编写POSIX内核的好处和成本》 麻省理工学院
42 《The real-time Linux kernel a Survey on PREEMPT_RT》 《实时Linux内核PREEMPT_RT综述》 米兰理工大学
43 《Trace-Based Analysis of Locking in the Linux Kernel》 《基于跟踪的Linux内核锁定分析》 奥斯纳布吕克大学
44 《Tracing Network Packets in the Linux Kernel using eBPF》 《使用eBPF跟踪Linux内核中的网络包》 圣彼得堡国立大学
45 《TRACING THE WAY OF DATA IN A TCP CONNECTION THROUGH THE LINUX KERNEL》 《通过Linux内核跟踪TCP连接中的数据方式》 加纳马尼理工学院
46 《Understanding Linux Kernel》 《了解Linux内核》 未知
47 《Understanding Linux Malware》 《了解Linux的恶意软件》 Cisco
48 《Using kAFS on Linux for Network Home Directories》 《在Linux上使用kfs用于网络主目录》 密歇根大学
49 《Verification of tree-based hierarchical read-copy update in the Linux kernel》 《Linux内核中基于树的分层读拷贝更新的验证》 牛津大学
50 《XDP test suite for Linux kernel》 《Linux内核的XDP测试套件》 马萨里克大学

📁 Linux内核组成

Linux内核主要由 进程管理内存管理设备驱动文件系统网络协议栈 外加一个 系统调用




内存管理文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀

  • 内存原理
    • SMP/NUMA模型组织
    • 页表/页表缓存
    • CPU缓存
    • 内存映射
  • 虚拟内存
    • 伙伴分配器
    • 块分配器
    • 巨型页
    • 页回收
    • 页错误异常处理与反碎片技术
    • 连续内存分配器技术原理
    • 不连续页分配器原理与实现
  • 内存系统调用
    • kmalloc/vmalloc
    • 内存池原理与实现
    • 内存优化与实现

文件系统文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀

  • 虚拟文件系统VFS
    • 通用文件模型
    • 数据结构
    • 文件系统调用
    • 挂载文件系统
    • 无存储文件系统
  • 磁盘文件系统
    • Ext2/Ext3/Ext4文件系统
    • 日志JBD2
  • 用户空间系统
    • FUSE原理机制/接口与实现

进程管理文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀

  • 进程基础
    • 进程原理及状态
    • 生命周期及系统调用
    • task_struct数据结构
  • 进程调度
    • 调度策略
    • 进程优先级
    • 调度类分析
    • SMP调度

网络协议栈文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀

  • 网络基础架构
    • SKB/net_device
    • 网络层分析
    • Linux邻近子系统
    • netlink套接字
    • iptables套接字
    • netfilter框架
    • 内核NIC接口分析
    • mac80211无线子系统
  • 网络协议栈
    • internet控制消息协议(ICMP)
    • 用户数据报协议(UDP)
    • 传输控制协议(TCP)
    • 流控制传输协议(SCTP)
    • 数据报拥塞控制协议(DCCP)
    • IPv4路由选择子系统*
    • 组播/策略/多路径路由选择
    • 接收/发送(IPv4/IPv6)数据报
    • infiniBand栈的架构
  • 系统API调用
    • POSIX网络API调用
    • epoll内核原理与实现
    • 网络系统参数配置

设备驱动文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀

  • 设备子系统
    • I/O机制原理
    • 设备模型
    • 字符设备子系统
    • 网络接口卡驱动
  • Linux设备模型
    • LDM
    • 设备模型和sysfs
  • 字符设备驱动
    • 主设备与次设备
    • 设备文件操作
    • 分配与注册字符设备
    • 写文件操作实现
  • 网卡设备驱动
    • 数据结构
    • 设备方法
    • 驱动程序
  • 块设备驱动
    • 资源管理
    • I/O调度
    • BIO结构原理
    • PCI总线原理
  • 蓝牙子系统
    • HCI层/连接
    • L2CAP
    • BNEP
    • 蓝牙数据包接收架构


金主爸爸


安利术语:零声,专注于C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK, SPDK, bpf/ebpf等等相关技术分享。本repo由零声的小伙伴推动以及所有提交patch的小伙伴(后面鸣谢部分)参与,共同完成。内容来源于互联网,本repo仅限于整理总结。


About

linux内核学习资料:200+经典内核文章,100+内核论文,50+内核项目,500+内核面试题,80+内核视频