首页 理论教育Linux内核与设备驱动探究及需求分析

Linux内核与设备驱动探究及需求分析

【摘要】:Linux内核有一类特殊的用户,就是系统管理员,这些用户需要对内核有一定的了解,并对内核进行相应的设置。Linux内核也要满足性能需求,需要更快、更高、更强。内核和驱动开发人员需要Linux内核提供基本功能和框架的支持。

探讨需求首先要考虑的就是需求从哪里来的问题。这就涉及用户是谁的问题。Linux内核的用户是谁呢?Linux内核的用户不是Linux桌面系统的使用者,主要是两类程序开发人员,一类是应用层的开发人员,另一类是内核及驱动的开发人员。

这两类开发人员看Linux内核系统的视角是不同的,应用层开发人员是从外部看Linux内核,更多的是将内核作为黑盒;而内核及驱动开发人员是从内部看Linux内核,需要了解Linux内核的内部实现机制。

视角不同自然需求就不同。应用开发人员需要Linux内核提供的功能,主要在用户管理(包括用户界面和用户账户管理)、系统管理(涉及资源分配和时间管理等)、数据管理(通常通过文件系统相关接口实现)和各种网络功能几个方面。另外Linux内核设计之初就考虑兼容UNIX的应用,所以要求与UNIX功能接口一致,不能在不同版本中功能有变化。针对这些特点,Linux内核提供和UNIX相同的应用层接口即系统调用。由于UNIX本身并不是图像化系统,所以设计时并没有考虑图形化操作的接口。所以Linux内核在开始的时候并没有像Windows那样考虑这部分功能,在内核也没有图形渲染的驱动,只有通过字符设备这种抽象的功能和ioctl这种扩展性极强的系统调用,来进行各种扩展。随着系统的发展,现如今也提供了DRM(direct rendering manager)图形渲染等功能,来完善图形化操作。当然这部分功能并不是通过增加新的系统调用,而是通过字符设备和ioctl系统调用来共同完成的。可见在设计系统时,关注主要功能并保留一个强大的扩展能力是十分重要的。

应用层开发人员还有对设备操作的需要,但是应用开发人员不想了解设备的具体细节,只是想使用设备完成一定的功能。对这些功能的需求,还要求这些功能的实现在任何硬件上都是相同的,也就是硬件无关或者说屏蔽各种硬件的差异。这部分需求,就要求Linux内核中提供给应用层的资源,要是虚拟的逻辑资源,不能是物理资源,通过转换来实现对应用层统一的视角。对于应用层来说硬件的无关性需要操作系统支持各种各样的设备,可以说要支持所有的设备,这样应用层可以只关注其业务的实现,而不关心设备寄存器的读写逻辑。(www.chuimin.cn)

应用层还有对安全性的需求,不同的用户所拥有的资源是有限的,并且不能超越权限访问其他用户的资源。

Linux内核有一类特殊的用户,就是系统管理员,这些用户需要对内核有一定的了解,并对内核进行相应的设置。这就需要内核很多模块开放设置,设置分为启动参数设置和运行时参数设置。设置很大程度上是进行系统调优,是为了性能。Linux内核也要满足性能需求,需要更快、更高、更强。

内核和驱动开发人员需要Linux内核提供基本功能和框架的支持。他们更多是需要Linux内核有良好的框架设计和性能,可以使得他们开发的模块容易集成到内核系统中,并且彼此隔离对其他模块没有影响。从内核和驱动开发人员的角度,功能可以分为核心功能和设备相关功能两个方面。