【译】linux:大手笔 - Go语言中文社区

【译】linux:大手笔


这是我大一(2011年)时(和同学一起)抽空翻译的,现在放在网上……

=================================================

这篇文章对linux做了概要的介绍,顺便讲述了一下发展的历史,它是为《PC update》杂志(这是澳大利亚墨尔本“个人计算机组织”发行的一本月刊)这个版本不包括杂志在刊发时所做的修改。

2003.4.28

历史

计算机操作系统的历史始于二十世纪50年代,那时人们正在努力使简陋的系统更有效地运行批处理任务,并缩短两次任务运行之间的时间。每次作业不需要同用户 接触。程序从一个文件(很可能是一串打孔卡片)中读取数据并把所有东西输出到另一个文件中(可能是一部打字机)。这就是过去所有计算机的工作方式。

然后,在20世纪60年代早期,人机交互应用开始有了立足之地,而且不仅要人机交互,而且要满足几个人同时在不同终端上使用同一台电脑,这种系统叫做分时系统,比起批处理系统来说它对机器的要求更高。

在60年代,人们付出了很多努力来创造更好的分时系统,其中有一些是大学的科研项目,还有一些是商业的,其中有一个项目叫Multics,这个项目在当时非常有前瞻性。比如,它有一个分层次的文件系统,这被现代计算机系统广泛使用。

然而,Multics的进展不是很顺利,它花了几年也没达到预期的目标,更不要说在操作系统市场中分一杯羹,参与者之一贝尔实验室撤出了这个计划。贝尔实验室后来开发出了自己的操作系统,叫UNIX。

UNIX最初是免费发行的。而且在大学里非常流行,它增加了TCP/IP协议,并成为了早期工作站操作系统的最佳选择之一。

到1990年之前,UNIX在服务器领域占有了大量的市场份额,特别是大学中,大部分大学都使用UNIX操作系统供计算机系的学生使用,他们中的很多人也 想在自己的机子中跑UNIX。不幸的是,在那时UNIX已经商业化并且非常昂贵,唯一便宜的选择是MINIX,这是一个由Andrew Tanenbaum教授为教学编写的一个简化的类UNIX系统,当然也有386BSD(是NetBSD FreeBSD和OpenBSD的前身),但BSD还不够成熟,而且需要比当时的主流家庭配置更好的硬件。

在这中情况下Linux诞生了,1992年10月,Linus Torvalds(linux的作者,当时在读大二)在Helsinki大学使用UNIX,并且想在自己的机子上运作类似的东西,因为商业版操作系统太贵,于是一开是他装了Minix,但他想更好的,于是不久他开始写自己的操作系统,第一个测试版发布之后,就吸引了好几个黑客的注意,linux最初就像一个玩具一样,并不实用。但不久它就具有了足够的特征和功能,吸引了甚至对操作系统发展不关心的人的兴趣。

linux只是一个操作系统的内核,内核是所有程序运行 的基础,它实现多任务,配置硬件,并允许应用程序操作他们做相应的事情,左右用户(或操作系统管理员)真正接触的应用程序运行在内核的顶层,其中一些是必 须的,比如:一个命令的接口(shell,bash)这个接口既可以本用户交流,也可以用来写脚本(相当于bat文件)。

这些程序并非Linus自己写的,而是用了已有的免费版,这给他减少了大量的时间 ,他用这些时间创造了更好的工作环境,事实上他经常改写内核使之更容易让已存在的程序在linux上工作,而不是其他办法(比如自己重新写一个shell)。

大部分极其重要的系统程序,包括c的编译器,来自自由软件基金计划(the GNU project)。该计划开始于1984年,旨在开发一个完整并全部免费的类UNIX系统。很多人喜欢把linux当作该项目的系统(开源),虽然GNU有他们自己的内核。

在92~93年之内,linux内核获得了全部必要的特性使之可以代替UNIX作为工作站,包括TCP/IP网络以及一个图形窗口系统(Xwindows)。linux同样获得到很多工业厂商的注意,很多小公司开始开发和发行linux。成立了很多linux小组。同时《linux Journal》杂志于94年开始发行。linux内 核的1.0测试版在1994年3月发布。从那时起,这个内核经历了很多开发周期,每个周期以一个稳定版结束。每个周期通常持续1~3年。包括重新设计和编 写内核的重要部分,以便处理硬件上的改变,(例如,新的连接硬件的方式,比如通过usb设备)满足提升速度的要求(当人们把linux用在越来越多或越来越小的设备中,现在嵌入式linux是一个热门话题)。

从市场和政策的观点来看,在1.0测试版发布后的下一个大动作是在1997年,当Netscape决定把自己的浏览器作为自由软件来开发(开源这个词就是 这么来的)。这是第一次把自由软件引入公众的视线。从那以后,虽然花费了很多年时间,但是自由软件(或者叫做开源软件)不仅被广泛接受,而且成为很多应用 的首选。

社会氛围

且不论linux是一个技术上的伟大成果,linux同样也是一个有趣的社会现象,通过linux,自由软件运动取得了很大的突破,走进了公众的视线。同时它还有一个非正式的市场销售部门和品牌:“开源”,它使很多外行人感到困惑,他们不明白像linux这样一个成功的操作系统是如何通过一群无组织的人们在他们的业余时间开发出来的。

这里主要的事实是系统所有的源代码,包括一份复制协议都是开放的,源代码允许重新修改和发行。当一个系统的用户中有很多编程开发人员时,如果他们发现一个 问题,就可以非常容易地解决。如果他们认为缺少了某些特性,他们可以自己添加——从某种意义上说,这正是程序员喜欢做的事——尽管没人给他们付钱;因为他 们需要,所以他们写代码来满足这种需要。

这项工作一定需要一个程序员坚定不移的努力,然而不久之后,一旦有足够的程序员加入并提供小的改进的话,就会出现雪球效应:小的改进快速地大量汇集,最终使系统性能整体提升,这能吸引更多的程序员加入,然后性能再次提升……

特别对于一个操作系统来说,大量程序员的加入会产生两项重要的提升:一是漏洞修复,二是设备驱动,操作系统的bug通常很少,而且很难以让它第二次出现,当有成千上万的用户是程序员的时候,就形成了一支高效的调试大军。

linux的大部分代码都是设备驱动,而核心功能包括实 现多任务,多用户的功能,相比之下小很多,大部分设备驱动都相互独立,并且通过特定的接口与系统内核交互,因此不需要了解整个系统的复杂性就可以容易的编 写驱动程序。这也可以使主要开发者专注于内核本身,而让设备的拥有者自己开发驱动。(把linux所支持的上千种不同的声卡,显卡,总线控制器,主板,数码相机,打印机等等设备的驱动动存贮起来是很笨重的。)

linux的开发模式是分布式的,把工作量有效地分散开来。

linux这种工作模式不是没有问题。当一种新的设备进入市场后,得过上几个月才会有一个对该设备感兴趣的linux程序员来为这个设备开发一个驱动。同样,一些设备的厂商,不管怎样都不肯放开自己设备的编程信息(programming information),这从根本上防止其他人为其编写linux下的驱动。好在随着linux全球关注度的提高,这样的厂商越来越少了。

它是什么

linux是一个类UNIX的操作系统,支持多任务,多用户,广泛运行在各类32位和64位的硬件平台上,遵循开源软件协议,这是一个简短却十分准确的描述,下面的文章中我会详细解释。

类UNIX的含义是模拟UNIX操作系统接口,这样为UNIX写的程序只需重新编译就可以在linux下运行。这就是说linux与UNIX有相同的抽象结构。比如linux上进程的创建和控制方式与UNIX是相同的。

有很多操作系统的抽象模式可以借鉴,比如微软的windows,苹果的mac系统或是IBM的openVMS,但是但是linux的创造者linus最终决定使用UNIX的模式,这部分由于UNIX适合系统编程,部分是由于他熟悉的系统中,UNIX是他最了解的。

对UNIX的继承也使linux有了两个很重要的特性:多任务与多用户,的功能。linux就 像UNIX一样,从开始设计就是为了可以使用多任务相互独立地运行。较好的实现多任务需要注意操作系统的各个层次,向一个已经设计完成的单任务操作系统添 加多任务支持是很不明智的决定(因为还不如从头设计来得方便),这就是windows95和mac os(mac osx之前)在多任务表现上十分糟糕的原因:因为他们的多任务功能是增加进去的,而不是设计进去的,这也是为什么windowsNT系列,MacOS X在多任务上表现较以前更出色(windowsNT系列借用了重新设计的windows server版本的内核,而Mac OS则使用另一个Unix的克隆系统--上面提到的BSD内核,替换了原来的内核。译者注)。

较好实现多任务功能,还需要合理的内存管理。操作系统必须使用进程中的内存保护机制来保护运行中的程序互不干扰,否则某个出问题的程序可能引起其他程序甚至操作系统的内存错误,引起莫名其妙的动作或系统崩溃,可能会引起数据损失或是正在进行的工作未保存而丢失进度。

支持多用户同时操作在支持多任务后会变得很简单,把程序加上用户标签,防止读写其他用户的文件。

轻巧的与可升级的

linux最初是为了intel 386处理器写的,而且可以在之后的该系列处理器上工作,在经过三年的开发后,人们开始使linux可以在其他系列的处理器上工作,第一个是Alpha处理器,是由数字设备公司(美国)开发和销售的,之所以选择该处理器是因为该公司无偿赠给linux一个系统。不久,其他处理器开发支持的工作也开始了。今天,linux已 经可以运行在Sun SPARE,UltraSPARE,摩托罗拉68000,Power pc(64位),ARM,Hitachi Super H,IBMS/390,MIPS,HP-PA-RISC,Intel IA64位,DEC VAX,AMD x86-64位和CRISC处理器上(更多详细介绍请参见http://kernel.org)

不过人们的桌面电脑一般不使用这些处理器,比如S/390是ISM大型框架结构,这里的框架指的是你可以构造自己桌面的电脑,而非适于你桌面的电脑。

有一些处理器是32位的,比如Intel386,其他是64位的,比如Alpha。linux已经可以很好地使用这些处理器,这需要系统设计成合理的模式和良好的抽象结构,以此来提高代码的效率。

支持如此众多的处理器也说明linux的普适性,他可以工作在极小的系统上,如嵌入式计算机,手提设备,手机,到极大的系统上,如IBM mainframes。

使用并行技术,比如Beowulf linux可以运行在超级计算机上,比如美国的LLNA购买了一台有1920个处理器的并行计算机,是世界上五台最快的计算机之一,每秒浮点数运算次数高达9万亿次。

使用linux

对大部分人来说,这个系统很糟糕,想办事请必须得有应用程序,linux上的应用程序和UNIX上的差不多,科学计算软件,数据库,和网络服务,当然,也有程序员想要的编程工具。

大部分软件看上去十分过时。以今天操作系统的标准来看,用户接口基于文本或根根本就不存在。实际上,大部分应用程序是没有图形用户接口的,而是用命令行和批处理方式运行。由于大部分用户都是应用程序领域的专家,这已经足够好了。

因此linux被最初被广泛应用在文件服务器,邮件服务器,web服务器或是防火墙。它是运行数据库的良好平台,而且主要商业数据库的厂商支持。

在过去,linux也成为用户可以选择的较友好的桌面系统之一,KDE(http://www.kde.org/)和Gnome(http://www.gnome.org/)项目开发出了桌面环境,和易用(同时高效)的应用程序。现在已经有足够的应用程序,用过windows和Mac的人可以毫无困难地使用。

当然也有专业品牌的软件包,OpenOffice(http://www.openoffice.org/) 是一款兼容微软Office,免费而功能强大的软件套装,包括文字处理,幻灯片和表格软件。类似word,powerpoint和excel(现在由于版 权问题,Sun公司商业化了OpenOffice,而原先的OpenOffice社区则独立出来并开发了LibreOffice,并在GPL下发布。软件 公司由于利润考虑而商业化(闭源)原先的开源软件,并导致软件社区与公司决裂的故事在自由软件的发展史上发生了很多次,通常的结果是社区自己新开发出来一 套软件逐渐取代商业软件,而商业软件的市场则渐渐萎缩直至退出人们视线,这次应该也不例外。译者注)。

linux发行版

想安装linux,你得先选择一个发行版,发行版是linux内核加上一个安装软件,还有一系列运行在系统顶端的程序。linux有几百种发行版,满足不同的需求。

所有发行版的软件都差不多,但他们包含的程序却不同,有的是稳定版(工作稳定但软件很旧),或是最新版(最新,各种新功能,但也有各种未知的bug)。他 们在系统如何组织或安装上有所不同,但是openoffice,firefox,KDE和Gnome还有Apache(一种网页浏览器),可以在所有发行 版上使用。

一些发行版是基于一般使用的,但大部分都有特殊目的,如防火墙,网站服务器,或是专为某个国家或某个大学使用的,那些从没用过linux但想试一下的人可以看看一般使用的三大发行版:Red Hat,SuSE和Debian。Red Hat,SuSE分别是由Red Hat和SuSE公司发行的。旨在提供方便的安装方式和友好的用户接口,当然做服务器也好,它们以盒装方式发行,当然也可以通过网络下载。

Debian发行版是一个志愿者组织制作的,它的安装不是很容易,你在安装时得回答问题,不像其他发行版自动安装。虽然不是很复杂,但是得了解一些硬件问题,而大部分用户不关心这个。然而另一方面,Debian安装后可以自动升级到最新版本而无需重新安装。

体验linux最好的方法是用以个完全在CD-ROM上工作的发行版,这样你什么都不用装,只需要从网上下载一个CD并把它烧到光盘里,或者直接从网上买一张,把光盘放进电脑然后重启,这样你可以方便的在windows和linux之间切换,另外由于linux安装在只读的CD上,所以即使你改错了什么东西也不怕。

更多信息:

linux文档项目,这是一个寻找手册和帮助的好地方:http://www.tldp.org/

linux周报发布关于linux的新消息

linux发行版网站

Debian:http://www.debian.org/

RedHat:http://www.redhat.com/

SuSE:http://www.suse.com/us/index.html

Knoppix是一个运行在CD上的发行版,无需安装

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/fbcf8f8b96dd
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:11:47
  • 阅读 ( 1471 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢