首页 理论教育深入剖析Linux内核及设备驱动:内核初始化需求

深入剖析Linux内核及设备驱动:内核初始化需求

【摘要】:整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。

Linux系统中内核处于硬件和应用层之间。整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。这就要求在初始化过程中要将体系结构相关和无关部分分开。另外同一体系结构,由于外设的不同也会有板级的差别,在初始化的框架中也要考虑板级的接口。内核相关的初始化既要有体系结构相关的部分,又要有板级相关的部分。

Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。如果直接使用执行文件,就要求外部存储保留很大的空间用于存放操作系统的执行镜像。启动过程读取执行镜像文件比较长,这对于系统使用来说是不经济的。考虑到系统在内存中执行速度会很快,而启动时如果将比较小的压缩文件读入内存,然后解压,这样就会节省外部存储的空间。另外现在的处理器从内存解压比从外部存储读取速度快得多,所以通常在内存中解压启动也会快,这就需要Linux内核初始化的时候,能够将压缩的image进行解压,当然解压功能应该由Linux内核提供。

普通应用一般都是有初始化参数的,当然内核同样需要有初始化参数。内核中各个模块也有这种需求,这就要求内核能提供一种方式进行初始化参数设置,并且能标定不同模块的初始化参数,还要将初始化参数传给对应的模块。(www.chuimin.cn)

还有一个需求是和内存占用相关的,通常初始化代码只在初始化的时候执行,而在系统的运行过程中并不需要,这样在系统初始化之后就应该把这部分内存释放以减少这部分内存资源的无故浪费。