扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
第二部分 Linux 内核源代码分析
第1章 Linux 简介
让用户很详细地了解大多数现有操作系统的实际工作方式是不可能的,因为大多数操作系统的源代码都是严格保密的。除了一些研究用的及为操作系统教学而设计的系统外。尽管研究和教学目的都很好,但是这类系统很少能够通过对正式操作系统的小部分实现来体现操作系统的实际功能。对于操作系统的一些特殊问题,这种折衷系统所能够表现的就更是少得可怜了。
在以实际使用为目标的操作系统中,让任何人都可以自由获取系统源代码,无论目的是要了解、学习还是改进,这样的现实系统并不多。本书的主题就是这些少数操作系统中的一个:Linux。
Linux的工作方式类似于Uinx,它是免费的,源代码也是开放的,符合标准规范的32位(在64位CPU上是64位)操作系统。Linux拥有现代操作系统的所具有的内容,例如:
* 真正的抢先式多任务处理,支持多用户。
* 内存保护。
* 虚拟内存。
* 支持对称多处理机SMP(symmetric multiprocessing),即多个CPU机器以及通常的单CPU(UP)机器。
* 符合POSIX标准。
* 联网。
* 图形用户接口和桌面环境(实际上桌面环境并不只一个)。
* 速度和稳定性。
严格说来,Linux并不是一个完整的操作系统。当我们在安装通常所说的Linux时,我们实际安装的是很多工具的集合。这些工具协同工作以组成一个功能强大的实用系统。Linux本身只是这个操作系统的内核,是操作系统的心脏、灵魂、指挥中心(整个系统应该称为GNU/Linux,其原因在本章的后续内容中将会给以介绍)。内核以独占的方式执行最底层任务,保证系统正常运行—协调多个并发进程,管理进程使用的内存,使它们相互之间不产生冲突,满足进程访问磁盘的请求等等。
在本书中,我们给大家揭示的就是Linux是如何完成这一具有挑战性的工作的。
1.1 Linux和Unix的简明历史
为了让大家对本书所讨论的内容有更清楚的了解,让我们先来简要回顾一下Linux的历史。由于Linux是在Unix的基础上发展而来的,我们的话题就从Unix开始。
Unix是由AT&T贝尔实验室的Ken Thompson和Dennis Ritchie于1969年在一台已经废弃了的PDP-7上开发的;它最初是一个用汇编语言写成的单用户操作系统。不久,Thompson和Ritchie成功地说服管理部门为他们购买更新的机器,以便该开发小组可以实现一个文本处理系统,Unix就在PDP-11上用C语言重新编写(发明C语言的部分目的就在于此)。它果真变成了一个文本处理系统—不久之后。只不过问题是他们先实现了一个操作系统而已……
最终,他们实现了该文本处理工具,而且Unix(以及Unix上运行的工具)也在AT&T得到广泛应用。在1973年,Thompson和Ritchie在一个操作系统会议上就这个系统发表了一篇论文,该论文引起了学术界对Unix系统的极大兴趣。
由于1956年反托拉斯法案的限制,AT&T不能涉足计算机业务,但允许它象征性地收取费用发售该系统。就这样,Unix被广泛发布,首先是学术科研用户,后来又扩展到政府和商业用户。
伯克利加州大学是学术用户中的一个。在这里,Unix得到了计算机系统研究小组(CSRG)的广泛应用。并且在这里所进行的修改引发了Unix的一大系列,这就是广为人知的伯克利软件开发(BSD)Unix。除了AT&T所提供的Unix系列之外,BSD是最有影响力的Unix系列。BSD在Unix中增加了很多显著特性,例如TCP/IP网络,更好的用户文件系统(UFS),工作控制,并且改进了AT&T的内存管理代码。
多年以来,BSD版本的Unix一直在学术环境中占据主导地位,但最终发展成为System V版本的AT&T的Unix则成为商业领域的领头羊。从某种程度上来说,这是有社会原因的:学校倾向于使用非正式但通常更好用的BSD风格的Unix,而商业界则倾向于从AT&T获取Unix。
在用户需求和用户编程改进特性的促进下,BSD风格的Unix一般要比AT&T的Unix更具有创新性,而且改进也更为迅速。但是,在AT&T发布最后一个正式版本System V Release 4(SVR4)时,System V Unix已经吸收了BSD的大多数重要的优点,并且还增加了一些自己的优势。这部分由于从1984年开始,AT&T逐渐可以将Unix商业化,而伯克利Unix的开发工作在1993年BSD4.4版本完成以后就逐渐收缩,以至终止了。然而,BSD的进一步改进由外界开发者延续下来,到今天还在继续进行。正在进行的Unix系列开发中至少有四个独立的版本是直接起源于BSD4.4,这还不包括几个厂商的Unix版本,例如惠普的HP-UX,都是部分地或者全部基于BSD而发展起来的。
实际上Unix的变种并不止BSD和System V。由于Unix主要使用C语言来编写,这就使得它移植到新的机器上相对比较容易,它的简单性也使其重新设计与开发相对比较容易。Unix的这些特点大受商业界硬件供应商的欢迎,比如Sun、SGI、HP、IBM、DEC、Amdahl等等;IBM还不止一次对Unix进行了再开发。厂商们设计开发出新的硬件,并简单地将Unix移植到新的硬件上,这样新的硬件一经发布便具备一定的功能。经过一段时间之后,这些厂商都拥有了自己的专有Unix版本。而且为了占有市场,这些版本故意以不同的侧重点发布出来,以更好地占有用户。
版本混乱的状态促进了标准化工作的进行。其中最主要的就是POSIX系列标准,它定义了一套标准的操作系统接口和工具。从理论上说,POSIX标准代码很容易移植到任何遵守POSIX标准的操作系统中,而且严格的POSIX测试已经把这种理论上的可移植性转化为现实。直到今天,几乎所有的正式操作系统都以支持POSIX标准为目标。
现在让我们回顾一下,在1984年,杰出的电脑黑客Richard Stallman独立开发出一个类Unix的操作系统,该操作系统具有完全的内核、开发工具和终端用户应用程序。在GNU(“GNU誷 Not Unix”首字母的缩写)计划的配合下,Stallman开发这个产品有自己的技术理想:他想开发出一个质量高而且自由的操作系统。Stallman使用了“自由”(free)这个词,不仅意味着用户可以免费获取软件;而且更重要的是,它将意味着某种程度的“解放”:用户可以自由使用、拷贝、查询、重用、修改甚至是分发这份软件,完全没有软件使用协议的限制。这也正是Stallman创建自由软件基金会(FSF)资助GNU软件开发的本意(FSF也在资助其他科研方面的开发工作)。
15年来,GNU工程已经吸收、产生了大量的程序,这不仅包括Emacs、gcc(GNU的C编译器)、bash(shell命令),还有大部分Linux用户所熟知的许多应用程序。现在正在进行开发的项目是GNU Hurd内核,这是GNU操作系统的最后一个主要部件(实际上Hurd内核早已能够使用了,不过当前的版本号为0.3的系统在什么时候能够完成,还是未知数)。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者