操作系统发展简史(Unix/Linux 篇 + DOS/Windows 篇)| Mac 与 Microsoft 之风云争霸

注:本文为 “操作系统往事” 相关文章合辑。


操作系统发展简史(Unix/Linux 篇)

原创 小枣君 鲜枣课堂 2023 年 05 月 11 日 20:01 江苏

说到操作系统,大家都不会陌生。我们天天都在接触操作系统 —— 用台式机或笔记本电脑,使用的是 windows 和 macOS 系统;用手机、平板电脑,则是 android(安卓)和 iOS 系统。

如果是从事信息通信行业,还经常会和 ubuntu、CentOS、Fedora 这样的 Linux 系统打交道。

其实,操作系统的种类极多,远远不止我们知道的这些。

从使用场景来看,操作系统大致可以分为桌面操作系统、服务器操作系统、移动终端操作系统、嵌入式操作系统、物联网操作系统、云操作系统等类别。

如下表所示:

图片

那么,操作系统究竟是什么?

从本质来看,操作系统其实就是一套软件。

它属于底层软件,可以说是一个大管家,专门负责把所有的硬件和上层软件(中间件、数据库、应用程序等)管理和连通起来,并进行资源调配,完成用户下达的任务。

图片

操作系统包揽了很多底层的复杂工作,大大简化了应用软件的开发难度。

比如说,我开发一个视频播放器,就不需要写那些底层硬件代码。

操作系统还有一个重要作用,就是方便用户使用。

用户有了操作系统,就能更好地管理计算机,进行人机交互(下达命令,查询结果和状态)。

新手学习操作系统,最麻烦的是认名字和认类别。接下来,小枣君就从时间线的角度,对所有的操作系统关系进行一下梳理。

█ 操作系统的诞生

操作系统这个东西,并不是计算机诞生时就有的。

1946 年 2 月,在美国的宾夕法尼亚大学诞生了世界上第一台电子计算机,它的名称叫 ENIAC(埃尼阿克)。

ENIAC 是由大量的电子管(真空管)组成,体积极为庞大,占地 170 平方米,重达 30 吨,耗电 174 千瓦。在算力上,它可以实现每秒 5000 次的加法运算。

图片

这种早期的计算机,既没有显示器,也没有键盘,更没有鼠标,全部都是 人工操作

在使用时,专职操作员将运算信息记录在穿孔卡带上。系统启动后,读取卡带信息,然后进行运算,最后输出结果。

图片

穿孔卡带

计算机的速度快,人的速度慢。所以,计算机经常处于等待状态,等待操作员的输入。

这严重耽误了计算效率,浪费时间,也浪费钱(电费)。于是,到了 20 世纪 50 年代,开始出现了 批处理系统(batch processing)。

批处理系统中,操作员把用户提交的作业进行分类,把一批作业编成一个 “作业执行序列”。每一批作业,都由专门编制的监督程序(monitor)自动依次处理。

这个 监督程序,就是操作系统的雏形。它标志着操作系统的诞生(1955 年)。

最早使用批处理系统的,是第二代通用计算机,代表产品是 IBM 的 1401 和 7094 等。

图片

批处理虽然提升了效率,但仍存在缺陷。

例如,当作业进行 I/O(输入 / 输出)操作时,主机会等待操作完成,造成自身空闲。再例如,计算机只能同时运行一个批处理任务,效率还是太低。

到了 60 年代,集成电路技术高速发展,我们有了更快的处理器、更大的内存、更丰富的 I/O 设备。同时,通道和中断技术出现,开始允许系统执行 “挂起” 操作。

于是,就有了 “多道程序系统”

简单来说,计算机系统从串行变成了并行,可以同时运行多个任务(多个程序放入内存,交替在 CPU 中运行,共享硬软件资源)。

多道程序系统大幅提升了计算机的工作效率。再后来,系统又支持了多个用户同时使用。于是,就变成了 “多用户 + 多任务” 的系统,称为 “分时系统”

“分时” 和通信领域的 “时分复用” 有点像,就是把处理机的运行时间分成很短的时间片,按时间片轮流分配给各个作业使用。

再后来,技术又继续演进。终于,我们有了时效性更强的 “实时操作系统”。这种系统,就非常接近于 现代操作系统 的概念了。

图片

█ UNIX 的诞生

1964 年,美国电话电报公司(AT&T)、通用电器公司(GE)及麻省理工学院(MIT)合作,提出了一个超级分时操作系统的开发计划。

这个计划,被命名为 Multics OS。Multics 是 “MULTiplexed Information and Coputing System(多路信息与计算系统)” 的意思。

当时,他们打算借助这个系统,打造一台能够连接 1000 台终端、满足 300 人同时在线的计算机。

这个计划持续了五年,并没有达到既定目标。于是,1969 年,隶属 AT&T 公司的贝尔实验室(Bell Labs)宣布退出。

贝尔实验室退出之后,相关的项目组成员就闲了下来。其中就有一个人,名字叫做 肯・汤普森(Ken Thompson)。

图片

肯・汤普森此前在 Multics 上开发了一款名叫 “星际旅行(Space Travel)” 的游戏。退出 Multics 项目后,肯・汤普森就没办法继续玩这个游戏了。

于是,他突发奇想,打算在一台空闲的 PDP-7(DEC 公司生产的一种小型计算机,性能很低)上,开发一个简单操作系统,运行这个游戏。

1969 年 8 月,肯・汤普森趁着妻子回家探亲,用了 1 个月的时间,使用汇编语言,写出了一个简版的 Multics 系统(包括一组内核程序,一些内核工具程序,以及一个小的文件系统)。

实验室的同事们,将这个系统戏称为 Unics。Uni 作为前缀,是 “单一、一个” 的意思。Unics,对应 Multics,是 “单路信息与计算系统” 的意思。

后来,大家又取其谐音,直接称其为 “Unix”

图片

一边工作一边下棋的肯・汤普森

基于汇编语言编写的 Unics,硬件通用性差,没法移植到其它机器上运行。因此,肯・汤普森尝试使用 BCPL、PASCAL 语言进行重写。但是,效果并不理想。

这时,他的同事 丹尼斯。里奇(Dennis Ritchie)站了出来。

图片

丹尼斯。里奇在 BCPL 语言(也就是 B 语言)的基础上,开发了一套新的语言,也就是后来如日中天的 C 语言(按字母表顺序,B 之后就是 C)。

不久后,丹尼斯。里奇用 C 语言重写 Unics 成功。就这样,Unix 操作系统正式诞生了。

图片

正在操作 DEC PDP-11 计算机的肯・汤普森(坐者)和丹尼斯・里奇(站者)

1973 年,丹尼斯・里奇和肯・汤普森正式发表论文,宣布了 Unix 的存在。消息引起很大反响,很多人都期望学习和研究 Unix。

贝尔实验室(AT&T)推出了 Unix 之后,因为受美国政府反垄断制裁的原因,并不能对它进行销售。所以,他们只能将 Unix 无偿提供给所有人学习。

又过了一段时间,AT&T 发布了 Unix 系统第 5 版,并授权给教育机构使用。1975 年,他们第一次以 2 万美元的价格,授权企业使用 Unix 第 6 版。

这期间,很多企业和机构开始打 Unix 的主意。

1977 年,伯克利大学的研究生比尔・乔伊(Bill Joy),将 Unix 程序整理到磁带上,推出了 BSD 版本。BSD,就是 Berkeley Software Distribution(伯克利软件发行版)。

1978 年,SCO(一家服务器系统软件供应商)包装发行了商用版的 Unix。

目前公认的最完美版本,是 1979 年发行的 System V7。这个版本也被 Unix 玩家们称为 “最后一个真正的 UNIX”。

1980 年,美国国防高级研究计划局(DARPA,Defense Advanced Research Projects Agency)准备制定 TCP/IP 协议,选择了与 BSD 合作。这大大刺激了 Unix 的发展和普及。

后来,丹尼斯・里奇和肯・汤普森被誉为 Unix 之父和 C 语言之父。1983 年,他们二人都获得了图灵奖。

图片

在 System V7 推出之后,AT&T 发布新的使用条款,将 Unix 源代码私有化。Unix 开始走向了商业闭源之路。

很多公司,都推出了自己的 Unix 系统分支。比较有名的,是 Sun 公司的 Solaris、IBM 公司的 AIX、惠普公司的 HP-UX,以及由 BSD 版本发展起来的 FreeBSD。

Solaris 这个系统,小枣君非常熟悉。当年我就是通过 Solaris 学会的 Unix。它的稳定性极高,主要用在 SUN 公司的服务器(V240/V440 等)上,CPU 都是完全不一样的,叫做 SPARC。

FreeBSD 的应用范围就广多了。它在 BSD 许可协议下发布,由来自世界各地的志愿者开发和维护,允许任何人随意使用和发行(在保留版权和许可协议信息的前提下)。

苹果公司的 OS X,就是基于 FreeBSD 的。

详细 Unix 闭源分支可以参考:

在这里插入图片描述

█ Linux 的诞生

Unix 开始收费和商业闭源之后,引起了一个大叔的不满。这个大叔,名叫 理查德・马修・斯托曼(Richard Matthew Stallman)。

图片

理查德・马修・斯托曼

1984 年,他发起了自由软件体系 GNU(GNU is not unix),模仿 Unix 的界面和使用方式,重新开发一个开源的版本。他还组织成立了 FSF(Free Software Foundation,自由软件基金会),起草了 GPL(General Public License,通用公共许可证)。

在这里插入图片描述

GNU 著名的牛头 logo

斯托曼的做法,具有划时代的意义。他开创了开源软件的黄金时代。

所有 GPL 协议下的自由软件,都必须遵循 “Copyleft(非版权)" 原则 ——

即:自由软件,允许用户自由拷贝、修改和销售。但是,对其源代码的任何修改,都必须向所有用户公开。

到上世纪 90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的 emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。

这些都为后来 Linux 的诞生创造了条件。

Unix 源代码私有化之后,在大学中不再允许使用 Unix 源代码。

1987 年,荷兰阿姆斯特丹自由大学计算机系的 安德鲁・塔能鲍姆 教授(Andrew S. Tanenbaum,也译为谭宁邦),为了能在课堂上教授操作系统课程,决定在不使用任何 AT&T 源代码的前提下,自行开发与 Unix 兼容的操作系统。

图片

安德鲁·S·塔能鲍姆

他将这个系统称为 MINIX,也就是 mini-UNIX(小型 UNIX)的意思。

MINIX 的主要工作平台,是 IBM PC 及其兼容机。这款 PC 搭载了英特尔公司的 16 位处理器 ——Intel 8080。

开发出 MINIX 之后,塔能鲍姆教授并没有对它进行大规模推广。而且,他认为这个系统只是用于教育目的,所以也没有进行深入开发。

他甚至还不允许别人加入代码(估计是怕侵权 Unix),这就更加限制了 MINIX 的发展和普及。

1991 年,正在芬兰赫尔辛基大学求学的 林纳斯・托瓦兹(Linus Torvalds),对 Unix 产生浓厚兴趣,尝试借助 MINIX 完成一些日常工作。

MINIX 的功能太弱,无法满足林纳斯的需求。于是,他利用 GNU 的 bash 当做开发环境,gcc 当做编译工具,成功编写出了拥有 10000 行代码的 Linux 内核(Linux kernel)

此时的林纳斯,只有 21 岁!

图片

林纳斯・托瓦兹

林纳斯的 Linux 内核基于 POSIX(Portable Operating System Interface for Computing Systems,可移植操作系统接口)标准,能够与绝大多数 Unix 操作系统兼容。

他在发布时,选择了遵循 GPL 协议和 GNU 宗旨,所以,正式发布时,命名为 “GNU/linux”。

在这里插入图片描述

Linux 的吉祥物是企鹅(英文名: Tux)

因为林纳斯小时候被企鹅咬过,印象非常深刻。

█ Linux 和 Unix 的关系

这里,我要特别说明一下,Linux 和 Unix 的关系。

很多人觉得,Linux 就是 Unix,这显然是不对的。由上面的介绍可以看出,Linux 是开源自由软件,而 Unix 是对源代码实行知识产权保护的传统商业软件。两者是完全不同的东西。

那么,Linux 是不是类 Unix(Unix-like)系统呢?

严格来说,也不行。

Linux 只是风格上和 Unix 很像,但它并不含有 Unix 的代码。UNIX 的源代码,为 SCO 公司所有。UNIX 的商标权和标准认定权,属于 OPENGROUP 所有。
真正意义上的类 Unix 系统,必须要通过官方认证(例如苹果的 MacOS)。而 Linux 并没有。

█ Linux 的发行版

大家注意,林纳斯 1991 年开发的,并不是一个操作系统,而是一个内核。

后来,全球开发者(开源社区、企业、个人等)对内核代码进行大量的修改和补充,加入 GUI(图形界面)、应用等部分,才形成了相应的 **Linux 操作系统发行版 **,也就是真正的操作系统。

这些发行版分为社区版和商业版。社区版数量较多,开发和维护的主体是开源社区。商业版数量较少,是在社区版的基础上进一步优化而来。

值得一提的是,发行版之间也有复杂的衍生关系。也就是说,发行版可以构建在另一个发行版之上。

一些大家可能比较熟悉的发行版,包括:Ubuntu、Debian、Centos、Fedora、 Redhat Linux、Slackware、Turbolinux、Mandrake、SUSE、红旗、麒麟等。

图片

Slackware 和 Debian 是最早期的两个发行版,创建于 1993 年。

在这里插入图片描述

Debian 的后代分支比较庞大。除了 Debian 本身之外,这个分支的主要代表还有 Ubuntu(构建在 Debian 之上)、LinuxMint(构建在 Ubuntu 之上)、Kali Linux。

图片

Redhat,也就是大家很熟悉的红帽系列。它的主要发行版是 Red Hat Enterprise Linux(RHEL),针对企业客户。

图片

CentOS 是 RHEL 源代码再编译的产物,修正了不少 Bug,稳定性更强。

图片

除了 RHEL 之外,Redhat 还向社区提供另一个免费发行版,即 Fedora。

图片

这些发行版的具体关系和发布时间,如下图所示:

图片

上面这些操作系统,小枣君基本都用过。2005 年我刚工作的时候,用的是 Debian、RHEL、Solaris。后来,开始用 Fedora。再后来,是 CentOS。刚开始的使用,很难受,不适应。但是一旦用习惯了,就觉得很爽。

2020 年底,红帽公司宣布陆续停止维护 CentOS,后续将无法获得官方升级和补丁。虽然比较可惜,但也给国产操作系统带来了机会。


操作系统发展简史(DOS/Windows 篇)

原创 小枣君 鲜枣课堂 2023 年 05 月 17 日 17:03 江苏

█ DOS 操作系统

上期提到,20 世纪 70 年代,伴随着计算机技术的成熟,操作系统也进入了一个快速发展阶段。现代操作系统的概念,也在那一时期逐渐形成。

1975 年初,MITS 电脑公司推出了基于 Intel 8080 芯片的 Altair 8800 微型计算机。这是人类历史上第一台 PC(个人电脑),具有重要意义。

图片
Altair 8800

1976 年,美国的 Digital Research 公司(以下简称 DR 公司),成功研制出一套名为 CP/M(Control Program/Monitor,控制程序 / 监控)的操作系统,专门用于搭载了 8080 芯片的微型计算机(包括 Altair 8800)。

后来,到了 1980 年,IBM 公司也秘密搞起了自己的 PC 项目。

这个被命名为 “国际象棋” 的项目,由 唐・埃斯特里奇(Don Estridge)负责领导,旨在开发一款价格足够低廉的微型计算机产品,面向小企业和家庭用户市场。

为了给这款新 PC 搭配合适的操作系统,他们找到了微软公司的比尔・盖茨 (Bill Gates)。

之所以找比尔・盖茨,主要有两个方面的原因:

一,微软公司此前开发了一款让 CP/M 在 Apple II 上运行的 Z-80 SoftCard 产品,所以,IBM 以为微软拥有 CP/M。

二,比尔・盖茨的妈妈 —— 玛丽・麦克斯韦尔・盖茨 (Mary Maxwell Gates),在担任全美联合劝募协会执行理事会主席期间,与 IBM 的首席执行官约翰・埃克斯(John Fellows Akers)共事,所以做了牵线搭桥。

比尔・盖茨和 IBM 团队进行洽谈后,表示自己并不拥有 CP/M,建议他们直接去找 DR 公司。

因为签订了严格的保密协议,比尔・盖茨在和 DR 公司负责人 加里・基尔代(Gary Kildall)说明此事时,并没有直接点明是 IBM 要找他们,而是说:“有人来看你了。好好对待他们,他们是重要的人。”

图片
加里・基尔代尔,传奇程序员,他还发明了 BIOS

但是,基于种种原因,DR 公司和 IBM 公司没有谈拢,双方不欢而散。(一种说法是:IBM 一见面就让加里签严格的保密协议,让加里很不爽。也有一种说法是,DR 公司想打包卖,而 IBM 想按单台授权买。)

看到这个情况,比尔・盖茨觉得,这是一个巨大的商业机会,一定不能错过。

经过一番调查,比尔・盖茨得知,SCP(西雅图计算机产品)公司有一个名叫 蒂姆・帕特森(Tim Paterson)的 24 岁程序员,花了四个月的时间,写了一个 QDOS 系统(Quick and Dirty Operating System,快速和肮脏的操作系统,后来觉得名字不太好听,改成 86-DOS)。这个系统是 CP/M 系统的变种,貌似能够满足 IBM 的需求。

图片
蒂姆・帕特森,DOS 之父

一开始,比尔・盖茨只是花了 2.5W 美元,买了 86-DOS 的授权。后来,考虑到 IBM 这个项目的巨大商业潜力,比尔・盖茨直接掏了 5-7W 美元,一口气买断了版权。

为了更好地对 86-DOS 进行改造,比尔・盖茨还把蒂姆・帕特森直接挖了过来,让他加入了微软。

1981 年 7 月 27 日,微软正式推出了 MS-DOS 系统(MS 是 MicroSoft 的意思,DOS 是 Disk Operating System,磁盘操作系统)。

图片
MS-DOS 的第一个版本

几天后,1981 年 8 月 12 日,IBM 也正式发布了个人电脑产品 ——IBM PC,采用 MS-DOS 1.14 版(在 IBM PC 上被命名为 PC-DOS)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值