Linux是一种是实用性很强的现代操作系统,开发它的中坚力量是软件工程师,因此多以实用性和效率为出发点,很多地方还考虑了工业规范和兼容性等因素,因此不同于教学性操作系统追求理论上的最先进性,Linux系统内核最注重的问题是实用和效率。
下面我们简要归纳一下Linux内核的特色。
第一,Linux内核被设计成单巨内核(monolithic?)结构(相对微内核而言,微内核是一种功能更贴近硬件的核心软件,它一般仅仅包括初等内存管理、同步原语、程间通讯机制、I/O操作和中断管理,这样做有利于扩展性和移植性。但是微内核与诸如文件管理、设备驱动、虚拟内存管理、进程管理等其它上层模块之间需要有较高的通讯开销,所以目前多集中在理论教学领域,对工业应用效率难以保证。),因此效率高,紧凑性强。
第二, 2.6版本前Linux内核是单线程结构----所谓但线程结构是说同一时间只有一个执行线程(内核中的执行程序)允许在内核中运行,不会被调度程序打断运行其它任务,这种内核被成为非抢占的,它的好处在于内核中没有并发任务(单处理器而言),因此避免了许多复杂的同步问题,但其不利影响是非抢占特性延迟了系统响应速度,新任务必须等待当前任务在内核执行退出才能获得运行机会。工业控制领域需要高响应速度,因此2.6版本后由于Robert love等人的贡献,将抢占技术引入了Linux内核,使得其变为内核抢占系统,当然付出的代价是同步操作进一步复杂化了。
第三,为了保证能方便地支持新设备、新功能,又不会无限扩大内核规模,Linux系统对设备驱动或新文件系统等采用了模块化方式,用户在需要时可以现场动态加载,使用完毕可以动态卸载。同时对内核,用户也可以定制,选择适合自己的功能,将不需要的部分剔除出内核。这两种技术都保证了内核的紧凑性和扩展性。
第四,Linux内核纯粹是一种被动调用服务对象,所谓被动是因为它为用户服务的唯一方式是用户通过系统调用来请求在内核空间运行某个函数。内核本身是一种函数和数据结构的集合,不存在运行的内核进程为用户服务(虽然Linux的确存在一种被称为内核线程的进程,但它并不是用来服务于用户的,仅仅作为系统自身的服务目的)。
第五, Linux内核的采用虚拟内存技术使得内存空间虚拟扩展到了4GB之多,其中0-3G属于用户空间,称为用户段,3G-4G属于用户空间,称为内核段。这样使得用户编写程序可以使用远远大于实际内存的存储空间。
第六, Linux的文件系统最大特点是实现了一种抽象文件模型----VFS(虚拟文件系统),该文件系统属于Unix风格。使用虚拟文件系统屏蔽了各种不同文件系统的内在差别,使得用户可以使用同样的方式访问各种不同格式的文件系统,可以毫无区别地在不同介质不同格式的文件系统之间使用VFS提供的统一接口交换数据。这种抽象为Linux带来了无限活力。
第七, Linux提供了一套很有效的延迟执行机制----下半部分,软中断,tasklet和2.6新引入的工作列队等,这些技术保证了系统可以针对任务的轻重缓急,更细粒度的选择执行时机。保证了系统运行时尽量在安全时间(不关中断)。
Linux除了以上提到的特色外,还有许多其它突出特点,我们将在以后各期的介绍中有序地介绍。如果对上述特色有疑问的话,请别着急,后面的学习将为你解答。


219.142.230.* 于 2007-06-29 14:41:24发表:
Some positions of linux kernel and driver in shanghai .
please contact me ASAP if you are interested in them.
feildingellen@163.com
loriwang 于 2007-06-28 11:04:03发表:
感谢Orsacutc发表的这篇文章,对于我这样苦于无法全面了解linux内核结构的新手来说,这篇文章描述了一个linux的概貌.期待后续的相关文章.
akfvip 于 2007-06-20 15:24:35发表:
顶一顶 顶一顶 顶一顶 顶一顶