高级程序员的进阶之路:Linux内核

Posted linux大本营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高级程序员的进阶之路:Linux内核相关的知识,希望对你有一定的参考价值。

前言:内核学习路线推荐,喜欢研究内核,想在内核这块深入学习的,可以参考。课程体系7个专题组成:进程管理专题,内存管理专题,设备驱动专题,网络协议专题,内核组件专题,文件系统专题,内核项目实战专题。

腾讯课堂直播学习地址:https://ke.qq.com/course/417774?flowToken=1013300

进程管理专题

进程原理:进程生命周期,task_struct结构,进程优先级,进程系统调用。

进程调度机制:调度器实现schedule(),完全公平调度类CFS,实时调度类原理

多核模式调度SMP。

进程竞争机制:RCU机制原理,内存优化与屏障,大内核锁,per_CPU计数器。

进程系统调用:写时复制原理,进程内存布局,进程堆栈管理,系统调用实现流程。

推荐视频:剖析Linux内核进程管理

内存管理专题

内存原理:(N)UMA模型组织,页表原理,处理器高速缓存,TLB工作原理。

物理内存:伴伙算法,slab/slub/slob分配器,内存映射。分配器原理,不连续页原理。

虚拟内存:进程内存映射,进程堆栈管理,用户空间缺页异常,内核空间与用户空间。

内存系统调用:kmalloc/vmaloc,BRK,内存池机制,内存优化。

推荐视频: Linux内核内存管理——内存泄漏、栈溢出、虚拟地址布局、内存映射、内存模型、伙伴分配器

设备驱动专题

设备子系统原理:字符设备子系统,块设备子系统,网络适配器子系统,I/O原理。

字符设备驱动:file_operations原理,系统调用流程,ioctl流程,请求中断

块设备驱动:资源管理,I/O调度,BIO结构原理,PCI总线原理

网卡设备驱动:net_device/net_device_ops,sk_buff原理,网卡数据中断,网络适配器映射。

内核模块架构:模块添加与删除,自动化与热插拔,主从设备号,版本控制。

推荐视频:​​​​​​​Linux内核源码分析之设备驱动架构

网络协议专题

网络系统架构:接收缓冲区,发送缓冲区,netfilter,iptables。

网络协议栈:TCP/UDP,TCP控制块,IP协议,netlink机制

系统API:POSIX网络API,epoll实现原理,socket初始化,网络系统参数设置

推荐视频: Linux内核源码分析之网络协议栈架构

内核组件专题

时间管理:通用时间子系统,高分辨率定时器,动态时钟结构,定时器系统调用实现。

系统缓存:页缓存实现,块缓存实现。

数据同步:数据同步原理,inode同步与拥塞,强制回写与完全同步。

文件系统专题

虚拟文件系统VFS:通用文件模型,VSF结构 ,文件操作系统调用,file/inode原理。

无存储文件系统:proc文件系统,文件系统数据结构,管理/proc数据项,系统控制机制。

sysfs文件分析:sysfs数据结构,装载文件系统,文件目录 操作,向sysfs增加数据。

磁盘文件系统:Ext2文件系统,Ext3文件系统,Ext4文件系统。

用户态文件系统:FUSE使用场景,FUSE原理,FUSE实现 ,用户态文件接口实现。

推荐视频: 3个linux内核的秘密,让你彻底搞懂文件系统

内核项目实战专题

1、手把手实现进程间通信

2、网络适合器实现

3、无存储文件系统实现

4、为内核添加自己系统调用

5、添加进程调度器

6、用户态文件系统实现

7、为内核防火墙做贡献之iptables

8、用slab实现内存池

9、内核定制化系统

10、向VFS添加自定义文件系统

Linux内核学习参考书籍

1、《深入理解LINUX内核》 第三版 [美] 博韦等著

2、《Linux设备驱动开发详解》 宋宝华 编著

3、《Linux内核设计与实现》 原书第3版 拉芙 (RobertLove) 著

4、《深入理解LINUX网络内幕》 [意] Benvenuti 著

5、《Linux设备驱动程序》 [美] 科波特(Corbet J.) 著

以上是关于高级程序员的进阶之路:Linux内核的主要内容,如果未能解决你的问题,请参考以下文章

一个java高级工程师的进阶之路

程序员的进阶之路

Android资深工程师进阶之路

CC++Go 语言Linux服务器开发高级架构师进阶之路

每天嚼烂5道精选面试题,中高级工程师的进阶之路(day01)

每天嚼烂5道精选面试题,中高级工程师的进阶之路(day01)