OpenBMC hwmon内核子系统

内核模块(Loadable Kernel Module)
OpenBMC hwmon内核子系统_第1张图片

宏内核与微内核
微内核操作系统的核心部分是一个很小的内核,实现一些最基本的服务,如创建和删除进程、内存管理、中断管理等等。而文件系统、网络协议等其它部分都在微内核外的用户空间里运行。

微内核操作系统具有很好的可扩展性而且内核非常的小,但由于不同层次之间的消息传递要花费一定的代价所以效率比较低。宏内核操作系统的模块都集成在一起,系统的速度和性能都很好,但是可扩展性和维护性就相对比较差。

linux LKM
为了改善宏内核结构的可扩展性、可维护性等,Linux使用了一种内核模块机制。用户可以根据需要,在不用对内核重新编译的情况下,将模块动态地装入内核或从内核移出。模块是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是其代码可以在运行时链接到系统中作为内核的一部分运行或从内核中取下。这种目标代码通常由一组数据结构组成,用来实现一种文件系统,一个驱动程序,或其它内核上层的功能。模块机制的完整名称是可加载内核模块(Loadable Kernel Module)或 LKM,一般简称为模块。与前面讲到的运行在微内核体系操作系统的外部用户空间的进程不同,模块不是作为一个进程执行的,而像其他静态连接的内核函数一样,它在内核态代表用户空间进程执行。由于引入了模块机制,Linux的内核可以达到最小,即内核中实现一些基本功能,如从模块到内核的接口,内核管理所有模块的方式等等,而系统的可扩展性就留给模块来完成。

拓展
Linux hwmon子系统分析之二 hwmon driver开发实践

你可能感兴趣的:(OpenBMC,arm开发,hwmon)