- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核注释第3章 内核的体系结构概述
内核体系结构概述
本章从较高层次上对内核进行说明。从顺序上来说,本章首先介绍内核设计目标,接下来介绍内核体系结构,最后介绍内核源程序目录结构。
内核设计目标
Linux 的内核展现出了几个相互关联的设计目标,它们依次是:清晰性(clarity),兼容性(compatibility),可移植性(portability),健壮性(robustness),安全性(security)和速度(speed)。这些目标有时是互补的,有时则是矛盾的。但是它们被尽可能的保持在相互一致的状态,内核设计和实现的特性通常都要回归到这些问题上来。本节接下来的部分将分别讨论这些设计目标,同时还将对它们之间的取舍与平衡进行简要的说明。
清晰性
稍微过于简化的说,内核目标是在保证速度和健壮性的前提下尽量清晰。这和现在的大多数应用程序的开发有所区别,后者的目标通常是在保证清晰性和健壮性的基础上尽量提高速度。因而在内核内部,速度和清晰性经常是一对矛盾。
在某种程度上,清晰性是健壮性的必要补充:一个很容易理解的实现方法比较容易证明是正确的;或者即使不正确,也能比较容易的找出其问题所在。从而这两个目标很少会发生冲突。
但是清晰性和速度通常却是一对矛盾。经过仔细手工优化的算法通常都使用了编译器生成代码的类似技术,很少可能是最清晰的解决方案。当内核中清晰性和速度要求不一致时,通常都是以牺牲清晰性来保证速度的。即便如此,程序员仍然清楚的知道清晰性的重要性,而且他们也做了大量完美的工作以使用最清晰的方法保证速度。
兼容性
正如第1章中所述,Linux最初的编写目的是为了实现一个完整的、与Unix兼容的操作系统内核。随着开发过程的展开,它也开始以符合POSIX标准为目标。就内核而言,兼容Unix(至少是同某一现代的Unix实现相兼容)和符合POSIX标准并没有什么区别,因此我们也不会在这个问题上详细追究。
内核提供了另外一种类型的兼容性。基于Linux 的系统能够提供可选择的对Java.class文件的本地运行支持。(据说Linux是第一个提供这种支持的操作系统。)尽管实际负责Java程序解释执行的是另外一个Java虚拟机进程,该虚拟机并没有内置到内核中。但是内核提供的这种机制可以使得这种支持对用户是透明的。通过内核本身提供的程度不同的支持(这并不代表大部分工作像Java的解决方式一样能够通过外部进程实现),对其它可执行文件格式的支持也能够以同样的方式插入内核中。这方面的内容将在第7章中详细介绍。
另外需要说明的是,GNU/Linux系统作为一个整体通过DOSEMU仿真机器提供了对DOS可执行程序的支持,而且也通过WINE设计提供了对Windows可执行程序的部分支持。系统还以同样的方式通过SAMBA提供了对Windows兼容文件和打印服务的支持。但是这些都不是同内核密切相关的问题,因此在本书中我们不再对它们进行讨论。
兼容性的另外一个方面是兼容异种文件系统,本章中稍后会有更为详细的介绍,但是大部分内容已经超出了本书的范围。Linux能够支持很多文件系统,例如ext2(“本地”文件系统),ISO-9660(CD-ROM使用的文件系统),MS-DOS,网络文件系统(NFS)等许多其它文件系统。如果你有使用其它操作系统格式的磁盘或者一个网络磁盘服务器,那么Linux将能够和这些不同的文件系统进行交互。
兼容性的另外一个问题是网络,这在当今Internet流行的时代尤为重要。作为Unix的一个变种,Linux自然从很早就开始提供对TCP/IP的支持。内核还支持其它许多网络协议,它们包括AppleTalk协议的代码,这使得Linux单元(box)可以和Macintosh机自由通讯;Novell的网络协议,也就是网络报文交换(IPX),分组报文交换(SPX),和NetWare核心协议(NCP);IP协议的新版本IPv6;以及其它一些不太出名的协议。
兼容性考虑的最后一个方面是硬件兼容性。似乎每个不常见的显卡,市场份额小的网卡,非标准的CD-ROM接口和专用磁带设备都有Linux的驱动程序。(只要它不是专为特定操作系统设计的专用硬件。)而且只要越来越多的厂商也逐渐认识到Linux的优势,并能够为更容易地实现向Linux上移植而开放相应的源程序代码,Linux对硬件支持会越来越好。
这些兼容性必须通过一个重要的子目标:模块度(Modularity)来实现。在可能的情况下,内核只定义子系统的抽象接口,这种抽象接口可以通过任何方法来实现。例如,内核对于新文件系统的支持将简化为对虚拟文件系统(VFS)接口的代码实现。第7章中介绍的是另外一个例子,内核对二进制句柄的抽象支持是实现对诸如Java之类的新可执行格式的支持的方法。增加新的可执行格式的支持将转变为对相应的二进制句柄接口的实现。
可移植性
文档评论(0)