Linux内核是Linux操作系统的核心,它由保持最高稳定性的软件构成,其中一些功能被大多数用户完全不了解。该内核处理系统的所有Master级操作,如管理多种进程间的内存、硬盘、和网络设备。
探索Linux内核的奥秘,要从Linux内核源码中开始。大多数Unix和Linux操作系统从技术上讲,都是”开源”的,使用者可以参考和使用源码,加以改变以提高其功能性。大多数Linux用户都没有深入理解过它的内部文件内容,但我们可以把它看作一个巨大的元素集合,它确实可以称得上是一种”奥秘”。
Linux的内核结构比较复杂,对于那些没有特殊背景知识的新手来说,其配置如何是困难的。另外,要理解内核,也需要一定的C/C++基础。linux系统内核按照模块化组织,采用消息型(message-based)架构。它包含了许多主要部分:内核核心,I/O子系统,进程管理子系统,用户级子系统等等。在每一个子系统里,又包含了不同的模块,每个模块又有自己的功能,例如有存储类、设备管理类,还有调度类等等,比如交互控制台程序就是一个模块,有内存管理内核模块,文件系统模块等等。
Linux内核的每个子系统和模块,都有一些特定的函数。每个函数都由某个代码段所实现,这些段被称为API。例如,用户级程序需要调用内核API来打开文件,而在Linux内核中,open()函数就是实现这个功能的API,可以用如下代码实现:
int open (const char * filename, int flags);
当程序员调用了open()函数后,它会进入内核,并检查文件权限、检查文件是否存在,并分配内存空间等等,最后得到文件句柄,然后返回给程序。
探索Linux内核的奥秘,需要深入理解它的内部架构,熟悉C/C++的编程语言,以及Linux内核的API函数等。Linux内核非常庞大,要就这么一个庞大的内核去研究非常困难,程序员也需把握该内核的思路去激发出自己的想象。