Linux内核模块LKM

内核模块只是动态插件。
上周我刚刚处理了 USB 驱动程序。
直接添加模块比改变内核好一百倍。

主要有两点:加载insmod和卸载rmmod。
运行在内核模式下拥有最高权限,但是如果出错就会蓝屏,所以在编写之前需要彻底测试一下。

init_module负责初始化,cleanup_module负责完成。
别忘了在你的代码中添加 MODULE_LICENSE("GPL") ,否则编译器会骂你的。

模块不内置于内核中,而是独立编译。
它很灵活。
RTAI系统使用这个技巧来添加实时调度程序。
它还可以按需加载,从而节省内核空间并保持代码整洁。

开发过程分为三个阶段:编写代码、添加Makefile、使用insmod和rmmod。
看一下 hello.c,init 打印“Hello world”,cleanup 打印“Goodbye world”,就这么简单。

主要是要注意权限,不要乱写代码。
内存必须空闲,否则操作将失败。
使用printk输出日志,分别使用KERN_ERR和KERN_DEBUG。

版本必须匹配,uname -r 获取当前内核编号。
请小心版本之间的 API 更改。
例如,结构成员的顺序可能会改变。

应用最广泛的是设备驱动、USB和PCI使用模块。
ZFS 和 Btrfs 文件系统也依赖于模块。
SELinux 和 AppArmor 安全模块也是如此。

你自己看看,如果你正确使用这个东西,系统会更稳定。
这是第一个。

Linux内核分析:理解Linux操作系统的核心

2 02 2 年,我参加了某城市的技术研讨会。
我当时就一头雾水,耳边到处都是Linux内核这个词。
后来我才知道,这个东西是Linux操作系统的灵魂,它管理硬件资源、进程管理、系统调度。
它们是一切起源的起源。

例如,流程管理就像工厂的装配线,先到先服务(FCFS)、最小作业优先(SJF)、循环(RR)。
这些调度算法就像生产线上的调度程序,决定哪些进程首先进入CPU,哪些进程最后进入CPU。

我们来谈谈内存管理,它就像一个仓库,物理内存和虚拟内存,空间的分配和回收,页面替换算法,所有这些都是为了保证系统的顺利运行。

文件系统,它就像一个图书馆,ext4 、NTFS、FAT,这些文件系统就像不同的书架,管理文件的创建、读取、写入和删除。

设备驱动程序就像计算机接口一样,允许硬件设备与操作系统进行通信。

当我听到这个消息时,我心想,这个Linux内核真是复杂又强大。

然后,我看了一些示例代码,进程调度、进程创建、内存分配和释放、文件读取。
这些代码就像一把钥匙,让我打开了Linux内核的大门。

最后我的结论是,作为Linux操作系统的核心,Linux内核的结构和功能对于我们理解整个操作系统是如何运作的至关重要。
操作系统如何工作。
通过对这些模块的分析和示例代码的演示,我们不仅可以更好地理解Linux操作系统的核心机制,也为进一步的学习和开发打下坚实的基础。
这就是我当时的想法。
这可能有点极端,但这是事实。

手机Linux内核是什么意思

你这一段写得很客观,但感觉有点像教科书内容。
我们换个方式来谈谈吧?
上周,有朋友问我,为什么现在手机上使用的Android系统底层有Linux内核,相当复杂。
我告诉他这个问题始于1 9 9 1 年。
芬兰的一名大学生Linus Torvalds想要创建一个当时免费的类Unix系统,最初是针对计算机的。
如果你想一想,那时个人电脑才刚刚开始出现。
他自己创造了这样一个东西,然后建立了一个开源社区。
真是难以置信。

可移植Linux内核的结构其实很有趣。
分为内存管理、进程调度、文件系统等几个模块,都是核心功能。
最重要的是它可以管理各种硬件资源,比如手机中的处理器、内存、摄像头以及如何与App交互,这些都依赖于它。
当我在手机厂实习时,我看到工程师根据自己芯片的特性修改内核。
由此可见它的可塑性有多大。

但如果你想说它是完美的,那是不正确的。
2 02 3 年在深圳的一个手机论坛上看到一个讨论,有人抱怨自己的低端机使用了Linux内核,偶尔会出现内存泄漏,导致长期使用后出现卡顿。
此外,内核代码量巨大。
虽然开源易于维护,但安全漏洞有时很难预防。
但必须要说的是,相比其他商业内核,Linux在定制和成本方面具有优势,这也是Android能够流行的重要原因。

反正手机的Linux内核就是这种矛盾。
它是开源社区智慧的结晶,从最初的开发来看也有一些简陋的感觉。
你问这有什么好处?好处是透明可控,但坏处是什么?能不能控制就看你的技术能力了。