第一章  Linux 和 Linux 的内核

1.1 Linux简介

    Linux最初是由芬兰赫尔辛基大学的Linus Torvalds创建。

LinusLinux建立在一个基于PC机上运行的,小的,名为minix的UNIX的基础之上。Linux允许免费地自由运用该系统源代码,并且鼓励其他人进一步对其进行开发。通过互连网和其它途径,任何人都有机会辅助开发和调试Linux的内核,链接新的软件,编写文档或者帮助新用户。实际上,并没有单独的组织负责开发此系统,Linux团体大部分通过邮递列表和USENET的消息组通信。许多协定已跳过开发过程,如果你想将自己的代码包括进"正式"内核,只需要给Linux Torvalds发一个E-mail,他就会进行测试并包括进内核。     Linux系统本身采用彻底开发,注重特性的方法进行设计。一般规律是大约隔几个月就发行一个Linux内核的新版本。Linux开发的动力不在于追求完美,无故障,而是要开发UNIX的免费实现。

Linux,已经成为信息时代的软件骄子,在2000年就已经占领了25%的服务器市场。已经广泛应用在像Yahoo这样的性能要求较高的站点上,并且已经得到了IBM、HP等大厂商的明确支持。

当我们提到的Linux时,一般是指"Real Linux",即内核,是所有UNIX操作系统的心脏。但光有linux并不能成为一个可用的操作系统。还需要许多软件包,编译器,程序库文件,Xwindow系统等等。因为组合方式不同,面向用户对象不同,所以这就是为什么有许多不同的Linux发行版的原因。

 

Linux只是"自由软件"或者说"开放源码"软件里的冰山一角而已。准确的自由软件描述应该是:自由软件可以以收费或免费的方式再次发布,且要提供源码,源码可以允许任何人对其修改。这个概念主要出自通用版权许可(GPL)和BSD版权许可。

开放代码有许多优越的地方:(1)开放代码有助于快速修改错误, 由于开放代码软件会得到世界上成千上万的开发者的审查,所以发现并修正它们的错误的时间很快。(2)开放代码有助于改善代码质量在典型的封闭开发项目中,开发者的个人责任和职业名誉是相对有限的,更重要的是,因为源码是封闭的,错误或失误可能会被开发者悄悄掩盖过去;相反,开源软件的开发者写的每一行代码都体现着自己的声望和名誉。混乱糟糕的代码会受到同行们的批评甚至讥笑。发布源码并让同行审查,这在封闭源码开发中是不可能的。(3)开源还有助于促进安全代码开发技术开放源码的编程者经常会就开发中遇到的问题交换想法和解决办法,他们乐于创新并实践有关代码安全的新理论,如果某个技术被发现有缺点,就会出现新的技术替代它,随着旧的安全性较差的代码逐渐被修正,新的代码的安全性逐渐得到改善;而在封闭开发中,软件的安全性可能会让步于商业利益。开发者们可能因为任务时间紧或是编程习惯等因素,而不重视采纳或创造新的安全代码开发技术。

开放源码的发展曾与UNIX、INTERNET密不可分,共享而后开源。目前已有许许多多的包括操作系统级、平台软件级、应用级的源程序可以通过Internet方式自由下载使用。

 

 

 

 

1.2 Linux的内核

1.2.1 Linux内核的特征:

Linux是个人计算机和工作站上的Unix类操作系统。但是它绝不是简化的Unix。相反,是强有力和具有创新意义的Unix类操作系统,Linux内核具有以下基本特征:

(1).Linux内核的组织形式为整体式结构。也就是说整个Linux内核有很多过程组成,每个过程可以独立编译,然后用连接程序将其连接在一起成为一个单独的目标程序。从信息隐藏的观点看,她没有如何的隐藏每个过程都对其他过程可见。这种结构的最大特点是内部结构简单,子系统间易于访问,因此内核的工作效率较高。另外,基于过程的结构也有助于不同的人参与不同过程的开发,从这个角度来说,Linux内核又是开放的结构,她允许如何人对其进行修正,改进和完善。

(2).Linux的进程调度方式简单而有效。可以说Linux在追求效率方面孜孜不倦,体现在调度方式上也是别具一格。对于用户进程,Linux采用简单的动态优先级调度方式,对于内核中的例程则采用了一种独特的鸡制----内核例程处理程序(bottom half handler),这种机制保证了内核例程的高效运行。

(3).Linux支持内核线程(或称守护线程)。内核线程是在后台运行而有无终端或登录shell和它结合在一起的进程。有许多标准的内核线程,其中有一些周期地运行来完成特定的任务,而其余一些则连续地运行,等待处理某些特定的事件。内核线程可以说是用户进程,但和一般的用户进程又有不同,它像内核一样不被换出,因此运行效率较高。

(4).Linux支持多种平台的虚拟内存管理。内存管理是和硬件平台密切相关的部分,为了支持不同的硬件平台而又保证虚拟存储管理技术的通用性,Linux的虚拟内存管理为不同的硬件平台提供了统一的接口。

(5).Linux内核另外一个独具特色的部分是虚拟文件系统(VFS)。虚拟文件系统不仅为多种逻辑文件系统提供了统一的接口,而且为个种硬件设备也提供了统一接口。

(6).Linux的模块机制使得内核保持独立而又易于扩充。模块机制可以是内核很容易地增加一个新的模块,而不需要重新编译内核;同时,模块机制还可以把一个模块按需要添加到内核或者从内核斜下,可以按需要定制自己的内核。

(7).增加系统调用以满足用户的特殊需求。一般说,系统调用是操作系统的设计者提供给用户使用内核功能的接口,但Linux开放的源码允许用户设计自己的系统调用,然后把它加入到内核。

(8).网络部分面向对象的设计思想使得Linux内核支持多种协议,多种网卡驱动程序变的容易。

 

1.2.2 分析Linux内核的意义:

(1).开发适合自己的操作系统

操作系统是所有软件生存的基础,我们需要拥有自己的操作系统,对于我们国家的民族软件的发展有极大的好处,而且对国家安全和国防事业都至关重要。如果搞和国际标准不兼容的操作系统,结果也会严重的阻碍软件业的发展,而Linux正符合我们的要求,因为代码公开,可以立即加入开发,又因为是国际化的,不必考虑兼容性的问题,而且不会同国际脱轨。

(2).开发高水平的软件:

自由软件联盟涵盖了操作系统,开发语言,视窗系统,数据库,网络,文字处理等各个领域。目前Linux的源代码包含了世界各地无数计算机高手的作品,分析这些源代码对于我们掌握核心技术和各种驱动程序的编写会起到很好的作用。有利用改变目前我国软件开发在低层次上的重复过程。