网站首页 > 博客文章 正文
篇幅长,技术内容多,点击关注不迷路。
前言:
了解Linux内核
一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。
Linux 内核实现了很多重要的体系结构属性。在或高或低的层次上,内核被划分为多个子系统。Linux 也可以看作是一个整体,因为它会将所有这些基本服务都集成到内核中。这与微内核的体系结构不同,后者会提供一些基本的服务,例如通信、I/O、内存和进程管理,更具体的服务都是插入到微内核层中的。
随着时间的流逝,Linux 内核在内存和 CPU 使用方面具有较高的效率,并且非常稳定。但是对于 Linux 来说,最为有趣的是在这种大小和复杂性的前提下,依然具有良好的可移植性。Linux 编译后可在大量处理器和具有不同体系结构约束和需求的平台上运行。一个例子是 Linux 可以在一个具有内存管理单元(MMU)的处理器上运行,也可以在那些不提供MMU的处理器上运行。Linux 内核的uClinux移植提供了对非 MMU 的支持。
在IT行业
如:嵌入式开发,驱动开发,Android开发,c++开发,Java开发如果接触到底层方面
那么
懂得内核:会使自己的开发工作产生对应的效益。
懂得内核:会让自己更加了解底层的原理与开发源码。
内核是面试的加分项 。
内核是走向专家的必经之路 。
不管你是不是做内核开发,内核技术是储备技能,开阔视野,扩展技术面的不二选择。
学习下:
剖析Linux内核《漏洞安全与虚拟内存》
剖析Linux内核套接字原理与架构
剖析Linux内核《物理内存模型》
内核学习路线推荐,喜欢研究内核,想在内核这块深入学习的,可以参考。
一:操作系统原理/汇编专题
1:操作系统原理
进程管理:进程状态与切换、进程互斥与同步、处理器调度、进程死锁
内存管理 :存储结构、分区存储管理、段式管理、页式管理、虚拟存储
设备管理:磁盘高速缓存、RAID(磁盘阵列)、I/O缓冲
文件管理:文件组织结构、堆文件原理、存储空间管理、文件目录管理
2:汇编语言精讲
x86/x86_64体系结构:x86/x86_64体系结构、汇编语言基础、数据传送、算法运算、寻址、过程与条件处理、浮点处理与指令编码
ARM体系结构:ARM核微处理器、ARM常用指令系统、ARM汇编程序及调试、异常中断/复位处理程序/SWI异常中断、RealView MDK安装与配置、ARM汇编与C混合实现、数据加载与存储指令实现
二:进程管理专题
1:进程基础
Linux内核源码组织结构
进程原理及进程状态
生命周期及系统调用:写时复制原理、进程内存布局、进程堆栈管理、系统调用实现
task_struct数据结构分析
2 :进程调度
调度策略:SCHED_DEADLINE、SCHED_FIFO、SCHED_RR、SCHED_NORMAL
进程优先级:调度优先级、静态优先级、正常优先级、实时优先级
调度类分析:stop_sched_class、dl_sched_class、rt_sched_class、cfs_sched_class、idle_shced_class
SMP调度:迁移线程/隔离处理器、限期调度类的处理器负载均衡、实时调度类的处理器负载均衡、公平调度类的处理器负载均衡
三:内存管理专题
1:内存原理
SMP/NUMA模型组织
物理内存组织结构与模型
页表/页表缓存:页表框架目录结构、TLB表项格式与管理、地址空间标识符(ASID)、虚拟机标识符(VMID)
处理器缓存:缓存结构与策略、SMP缓存一致性、高速缓存与TLB控制
内存映射:数据结构分析、创建内存映射、删除内存映射、系统调用实现
2:虚拟内存
块分配器:内存分配器原理、页分配与页释放、SLAB块分配器、SLOB块分配器、SLUB块分配器、系统调度接口
页模块大全:标准巨型页、透明巨型页、LRU算法与反向映射、页直接与异步回收原理、回收不活动页执行方案、页交换原理、回收slab缓存原理、页错误异常处理、内存碎片整理、发起内存回收、交换区数据结构/创建/激活、内存耗尽技术原理、缺页异常校正方法、KASAN检测工具、处理交换缺页异常
内存屏障与内核互斥技术
学习下:
内核必学|《物理内存与虚拟内存》|VMA管理/malloc/mmap
Linux内核技术点|页面分配路径|slab分配器实现
3:内存系统调用
kmalloc/vmalloc
内存池原理与实现操作
内存优化参数与实现
页缓存的实现
块缓存的实现
4: perf性能分析工具
perf原理机制与安装配置
perf采集数据命令29种工具应用
perf采集数据至火焰图分析
四:网络协议栈专题
1: 网络基础架构
ICMP协议
用户数据报协议(UDP)
传输控制协议(TCP)
流控制传输协议(SCTP)
数据报拥塞控制协议(DCCP)
IPv4策略路由选择
无线子系统模块:802.11 MAC帧结构分析、扫描/身份验证/关联、mac80211接收与传输实现、高吞吐量(802.11n)、网状网络(802.11s)
IPv4重定向消息/FIB表
2:网络协议栈
ARP(地址解析协议)
用户数据报协议(UDP)
传输控制协议(TCP)
高级路由选择:组播路由选择、策略路由选择、多路径路由选择
接收/发送IPv4数据包
接收/发送IPv6数据包
InfiniBand栈的架构:RDMA(远程直接内存访问 )结构、InfiniBand组件与编址、InfiniBand功能与数据包、协议栈注册/接收包/发送包流程方案
学习下:90分钟掌握Linux内核协议栈架构
3:系统API调用
POSIX网络API调用
epoll内核原理与实现
网络系统参数配置
五:设备驱动专题
1:设备驱动子系统
I/O机制原理
资源分配与管理
字符设备子系统
块设备子系统
网络接口卡驱动
2: Linux设备模型
深度剖析LDM:LDM数据结构、设备驱动程、kobject结构、kobj_type、内核对象集合
设备模型和sysfs:sysfs文件及属性、允许轮询sysfs属性文件、
3:字符设备操作
主设备与次设备
打开设备文件
分配与注册字符设备
写文件操作实现:open/release方法、read/write方法、llseek/poll方、填充file_operations结构
插入和删除模块
4: 块设备操作
块设备表示与数据结构
BIO数据结构
ioctl系统调用
总线模块: ISA总线、PCI/PCI-E总线、USB总线、VESA总线、I2C总线
5: 网卡设备驱动
数据结构:套接字缓冲区结构、网络接口结构
缓冲区管理与并发控制
ISA网络驱动程序
ATM异步传输模式
网络吞吐量
学习下:剖析Linux内核socket通信流程源码分析
六:内核组件专题
1:时间管理
通用时间子系统
高分辨率定时器
动态时钟数据结构
定时器系统调用
2:页与块缓存
页缓存结构操作与实现
块缓存结构与实现
地址空间数据结构与页树
3:数据同步
数制同步机制
inode同步与拥塞
强制回写与完全同步
4:内核活动
中断类型/硬件IRQ
irq_desc数据结构
处理IRQ与软中断
创建/注册/执行tasklet
等待队列与完成量
七:文件系统专题
1:虚拟文件系统VFS
文件系统类型与文件模型研究
数据结构:超级块(super_block)、挂载描述符(mount结构体)、索引结点(inode结构体)、目录项(dentry结构体)
文件系统调用: 打开/关闭文件、 创建/删除文件、 读/写文件、 文件回写技术原理/接口实现
挂载文件系统:系统调用mount处理流程、绑定挂载/挂载命名空间、挂载/注册rootfs文件系统
无持久文件系统:proc文件系统(proc数据结构、装载proc/管理proc数据项、数据读取与写入实现)、 简单文件系统(顺序文件、调度文件系统、伪文件系统)
2:磁盘文件系统
Ext2文件系统:物理结构与数据结构、创建文件系统、操作文件系统
Ext3文件系统
Ext4文件系统
日志JBD2
3:用户空间文件系统
Fuse架构设计与原理
Fuse内核五大队列
Fuse用户空间流程与实现方案
八 :内核项目实战专题
1-Linux内核编译与系统更换实现方法
2-进程间通信/管理(权限/优先级)实现方案
3-NIC网卡驱动实现
4-mmap系统调用/映射用户内存实现
5-Linux内存参数系统实现
6-调试与性能优化(debugfs/printk/ftrace)
7-Slab块分配器内存分配实现机制
8-tasklet/内线线程与定时器实现
9-Linux内核proc文件系统实现
10-Linux内核防火墙iptables实现
整套技术栈学习关注后台私信回复:1
· Linux内核学习参考书籍
1、《Linux设备驱动开发详解》 宋宝华 编著
2、《深入Linux内核架构》(德)莫尔勒著 郭旭 译
3、《Linux内核设计与实现》 原书第3版 作者:拉芙(RobertLove)
4、《深入理解LINUX网络内幕》 作者[意] Christian Benvenuti 著
5、《Intel汇编语言程序设计》 第5版 [美] 美欧文,温玉杰 著
6、《深入理解LINUX内核》 第三版 [美] 博韦 著, 陈莉君,张琼声,张宏伟 译
希望这个内核技术路线,对你的职业发展有帮助。更多技术点分享欢迎关注!
猜你喜欢
- 2024-09-17 带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统
- 2024-09-17 每天五分钟—珍藏的8张Linux思维导图(附Linux自学教程分享)
- 2024-09-17 为什么要学习Linux内核,如何学习?
- 2024-09-17 这估计是在座的都想得到的,最详细的Linux思维导图和自学教程
- 2024-09-17 一张图看懂Linux内核(linux内核百度百科)
- 2024-09-17 Linux最齐全的8张入门思维导图+Linux入门学习视频教程分享
- 2024-09-17 linux学习4,全靠它,三分钟把系统内核完全跑起来,busybox介绍
- 2024-09-17 沉下来心来学五个月就能学会嵌入式的最佳路线
- 2024-09-17 「干货分享」嵌入式学习路线公开(书籍推荐+视频推荐+练手项目)
- 2024-09-17 linux学习笔记:linux学习流程图思维导图
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)