论文部分内容阅读
本文论述了LINUX内核结构及其开发实践。
1991年,linus torvalds开发出最初的Linux,这个操作系统适用与基于intel 80386微处理器的IBM PC兼容机。现在,linus依然不遗余力的改进Linux,使它保持与各种硬件平台发展的同步更新,协调世界各地上百名开发者的开发工作。
Linux一个最吸引人的优点在于,它不是商业化的操作系统,它遵循GNU公共许可证,源代码全部开放,任何人都可以获得源代码并研究它。
从技术上讲,尽管Linux是一个真正的Unix内核,但它不是完整的Unix操作系统,因为以下几方面的应用程序没有全部包括在Linux中:如文件系统实用程序,窗口系统,图形化桌面,系统管理员命令,文本编辑程序,编译程序等等。然而,因为以上大部分应用程序都可以在GNU许可证下免费获得,因此可以把它们安装在任何一个Linux支持的文件系统中。
Linux内核是单块结构。它是一个庞大,复杂的DIY程序,由几个逻辑上不同的部分组成。在这一点上,它是相当传统的。
传统的Unix内核以静态的方式编译和连接。而大部分现代操作系统内核可以动态的装载和卸载部分内核代码,通常把这种结构叫模块。Linux对模块的支持是很好的,因为它能动态的按需装载或卸载模块。
内核线程。一些现代Unix内核被当作一组内核线程来组织。内核线程是一个能被独立地调度的可执行上下文,也许它与用户程序有关,也许仅仅执行一些内核函数。线程之间的上下文切换比普通进程之间的上下文切换花费的代价要小的多。
Linux是非抢占式内核。这就意味着,不能随意的交错执行处于特权模式下的流。内核中的几部分代码假定它们能够运行和修改一些数据结构,无需担心被中断,也无需担心让另一个线程改变这些数据结构。通常,完全抢占式内核总是与专用实时操作系统有关。
系统不仅可以使用多处理器,而且任何一个处理器可以处理任何一个任务它们之间没有任何区别。
更高级的文件系统已经可以在linux上使用了尽管它们没有被包含在。linux源代码中。有了强大的面向对象的虚拟文件系统技术,把外部文件系统移植到linux就变得相对容易了。