提问 | Linux内核工程师是怎么步入内核殿堂的?
1、了解Linux内核由哪些组成?
2、须知Linux内核源码组织结构?
3、重点需要学习地知识点有哪些?
内存原理
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
蓝牙数据包接收架构
4、大佬视频
1、Linux Kernel Network Drivers - Classification(Linux内核网络驱动程序)百度网盘:qdt5
2、Linux Kernel Development(Linux内核开发)百度网盘:vg1u
3、The mind behind Linux(Linux背后的思想)百度网盘:zgnu
4、Linux Systems Performance(Linux系统性能)百度网盘:9qom
5、Network Driver Interfaces(网络驱动程序接口)百度网盘:xpke
6、Selective module compilation in mainline kernel(在主线内核中编译可选模块):百度网盘:l56j
7、Linux System Programming 6 Hours Course(Linux系统编程6小时课程)百度网盘:hc2d
8、Threads and Thread Handing(线程和线程处理)百度网盘:erxm
9、Learning the Linux Kernel with tracing(通过跟踪学习Linux内核)百度网盘:066g
10、How to Apply a Patch to the Linux Kernel Stable Tree(如何将补丁应用到Linux内核稳定树)百度网盘:955e
11、Linux Kernel Programming(Linux内核编程- atomic_t数据类型-原子变量和api)百度网盘:njt0
12、Kernel Recipes 2017 - 性能优化大牛Brendan Gregg 百度网盘:lrex
5、电子书籍推荐:
《Linux命令行大全 - 绍茨 (william E.shotts)》
6、论文阅读
7、面试题
1、什么是Linux?
2、Unix和Linux有什么区别?
3、什么是 Linux 内核?
4、Linux的基本组件是什么?
5、Linux 的体系结构
6、BASH和DOS之间的基本区别是什么?
7、Linux 开机启动过程?
8、Linux系统缺省的运行级别?
9、Linux 使用的进程间通信方式?
10、Linux 有哪些系统日志文件?
从N个维度学习,Linux内核的知识,但是又需要有规划,有计划的学习,不要乱学,最好有个大纲,确定好方向,这样学习起来才会更有思路,更好的效果。
以上内容参考来自Github项目,感兴趣的小伙伴,可以去看看。