linux内核源码学习所需基础

1.面向对象的思想,尤其是oopc的实现方式。

2.设计模式。

这两点需要内核源码学习者不仅要会c和汇编,还要接触一门面向对象的语言,比如c++/java/python等等任意一门都行,起码要了解面向对象的思想。

另外linux内核是c实现的,那么还得接触oopc,看c语言实现面向对象的概念和实现套路。

还有设计模式,用来抵抗变化,简单来说就是随着变化不重构代码,而是扩展就够了。

如果没有这2点基础知识,那么面对linux内核某些模块源码时,你只用你c语言知识和面向过程的思想,你只会感到很困惑------你也只能看到,这是指针,这是函数指针,这是回调,这是计数------但是这些结构形式、这些组织形式,你会感到难以理解,"为啥会这样子结构?""为啥会这样子组织?""感觉怪怪的""算了,先不管了""它就是这样的""可能比较特殊吧",你想破脑袋也难以看清楚,只能看到一块块砖,但看不到由这些砖块堆砌出来房子或者大厦的模样

如果有上述2点基础,你就会看到新世界------"啊!这是继承""啊!这是多态""啊!这是接口类""啊!这是抽象类""啊!这是this指针""啊!这是智能指针""啊!这是设计模式"------也不在困惑代码数据结构等为何这么组织了------你的眼中不再是"指针,回调,计数"这种一块块砖头了,而是整个房子整个大厦!这样你就能和设计者所站的高度一样了,理解起来更加容易轻松。

设备驱动模型

面向对象思想只是个思想,不局限于任何语言,那些说c语言不能用的人,建议看看linux内核源码尤其是linux内核设备驱动模型。

调度器

比如调度器算法,就采用了策略模式的设计模式。

linux内核设计模式

比如有文章写:
linux内核所用设计模式

https://blog.csdn.net/weixin_39757802/article/details/135267875

linux设计模式

oopc

linux内核采用的c编写的,但是很多模块(不是全部,rtt是全部采用的oopc)采用了面向对象思想,面向对象在c中的实现就是oopc,它也是有固定实现套路的,不了解相关知识,你看内核源码也很吃力。

面向对象思想使用场景

对于管控大型软件,是不得不用面向对象思想+面向过程+其他思想等的混合体进行管控。

你看,面向对象的框架下,每个对象的方法内部实现是面向过程的,所以不要排斥面向过程,也不要排斥面向对象,它们都是管理开发软件代码的工具。

相关推荐
宵时待雨3 分钟前
linux笔记归纳9:进程间通信
linux·服务器·笔记
Zhang~Ling4 分钟前
深入学习Linux: 命令行参数与环境变量详解
linux·服务器
Shadow(⊙o⊙)24 分钟前
日志与线程池
linux·c++·算法
樂禮43 分钟前
Windows-Arch Linux 键鼠共享 & 剪贴板同步配置
linux·运维·windows
CHANG_THE_WORLD44 分钟前
Linux C 多线程 TCP 并发服务器:从 `accept()` 到工作线程的完整解析
linux·服务器·c语言
影视飓风TIM1 小时前
Linux基础入门笔记:命令、内核架构与压缩传输全梳理
linux·笔记·架构
敲上瘾1 小时前
Linux系统调用mmap文件映射与malloc简单模拟实现指南
linux·服务器·c语言·缓存
wdfk_prog8 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
x-cmd10 小时前
Mac 涨价后,本地 AI 还能千元入门吗?
linux·人工智能·macos·ai·agent·amd·本地ai入门
摇滚侠16 小时前
Linux 零基础教程 09、11、77
linux·运维·服务器