高级程序员的进阶之路: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内核的主要内容,如果未能解决你的问题,请参考以下文章