第一点,就是源码树中有相应的头文件和函数的实现,没有源码树,你哪调用去呢?

(pc上编译的时候内核有导出符号,系统中有头文件,这样就可以引用内核给你的接口了,但是只能编译你pc上版本的内核可加载的模块)。
第二个,内核模块中会记录版本号的部分,需要记录版本号的原因是不同的内核版本之间,那些接口和调用可能会有比较大的差异,因此必须要保证你的代码和某个特定的内核对应,这样编译出来的模块就可以(也是只能)在运行这个内核版本的Linux系统中加载,否则一个很简单的异常就会导致内核崩溃,或者你的代码根本无法编译通过(接口名变了)。我上面说的是编译模块的情况,当然如果是把模块直接编译到内核当中去的话,那就不用说了,没有内核源码,你无法编译内核。
在Linux中,有八个主要的类别,它们是:操作系统内核、系统库、命令行界面工具、图形用户界面、应用软件、开发工具、服务器软件和嵌入式系统。
操作系统内核是Linux的核心,负责管理硬件和提供基本的系统功能。系统库提供了许多常用的函数和工具,用于开发和运行应用程序。
命令行界面工具允许用户通过命令行输入指令来操作系统。
图形用户界面提供了更直观和易用的操作方式。应用软件包括办公套件、媒体播放器、网页浏览器等。
开发工具用于编写和调试软件。服务器软件用于搭建和管理服务器。
嵌入式系统是指运行在嵌入式设备上的Linux系统,如智能手机、路由器等。这些类别共同构成了Linux操作系统的基本组成部分。
Linux可以分为八大类,即:桌面、服务器、嵌入式、移动设备、网络、虚拟化、云计算和安全。
桌面类Linux适用于个人电脑,提供图形化界面和各种应用程序。
服务器类Linux是用于网络服务器的操作系统,具有高性能和可扩展性。
嵌入式类Linux适用于嵌入式系统,如智能家居、智能手机等。
移动设备类Linux适用于平板电脑和智能手机等移动设备。
网络类Linux主要用于网络设备和路由器等。
虚拟化类Linux是用于虚拟化平台的操作系统,支持虚拟化技术。
云计算类Linux是用于云计算基础设施的操作系统。
安全类Linux主要用于安全领域,如防火墙、入侵检测等。
1.进程调度模块 2.内存管理模块 3.文件系统模块 4.进程间通信模块 5.网络接口模块
用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU, 同时保证内核能及时地执行硬件操作。
用于确保所有进程能够安全地共享机器主内存区, 同时, 内存管理模块还支持虚拟内存管理方式, 使得Linux 支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统, 对暂时不用的内存数据块交换到外部存储设备上去, 当需要时再交换回来。
用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的多种文件系统格式。
用于支持多种进程间的信息交换方式
提供对多种网络通信标准的访问并支持许多网络硬件