【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Linux 内核发展史(二):Unix 操作系统

  • 2020-03-04
  • 本文字数:2313 字

    阅读完需:约 8 分钟

Linux内核发展史(二):Unix操作系统

Linux 是由赫尔辛基大学的 Linus Torvalds 开发的,在系统开发期间得到了因特网上广大 UNIX 程序员的帮助。它最初只是受 Andy Tanenbaum 教授的 Minix (—个小型的类 UNIX 系统)启发而开发的一个程序,纯属个人爱好,但后来它逐步发展成为一个完整的系统。Linux 的成功来源于其之前操作系统和应用软件——主要是 Unix 和 GNU——的已有工作,本小结我们将介绍一下 Unix 的发展简史。

一、Unix 操作系统发展历史

UNIX 操作系统最初是由贝尔实验室开发的,当时的贝尔实验室是电信业巨头 AT&T (美国电报电话公司)旗下的一员。UNIX 是在 20 世纪 70 年代为 DEC (数字设备公司)的 PDP 系列计算机设计的,它现在已成为一种非常流行的多用户、多任务操作系统。UNIX 操作系统可以运行在大量不同种类的硬件平台上,其适用范围从 PC 工作站一直到多处理器服务器和超级计算机。


Unix 系统的主要特点有[1]:


  1. 简单性:许多很有用的 UNIX 工具是非常简单的,因此也是很小并易于理解的。

  2. 集中性:在 UNIX 中,当用户出现新的需求时,我们通常是把小工具组合起来以完成更复杂的任务,而不是试图将一个用户期望的所有功能放在一个大程序里。

  3. 可重用组件:将应用程序的核心实现为库。具有简单而灵活的编程接口、文档齐备的库可以常助其他人开发出同类程序,或者把这些技术应用到新的应用领域。

  4. 过滤器:许多 UNIX 应用程序可用作过滤器。也就是说,它们对输入进行转换并产生输出。

  5. 开放的文件格式:比较成功并流行的 UNIX 程序都使用纯 ASCII 码的文本文件或 XML 文件作为配置文件和数据文件。

  6. 灵活性:你不能期待用户都能非常正确地使用你的程序。所以,你在編程时应尽景考虑到灵活性,尽量避免随意限制字段长度或记录数目。


最初的 Unix 是用汇编语言编写的,一些应用是由叫做 B 语言的解释型语言和汇编语言混合编写的。B 语言在进行系统编程时不够强大,所以汤普逊和里奇对其进行了改造,并与 1971 年共同发明了 C 语言。1973 年汤普逊和里奇用 C 语言重写了 Unix。在当时,为了实现最高效率,系统程序都是由汇编语言编写,所以汤普逊和里奇此举是极具大胆创新和革命意义的。用 C 语言编写的 Unix 代码简洁紧凑、易移植、易读、易修改,为此后 Unix 的发展奠定了坚实基础。


1974 年,汤普逊和里奇合作在 ACM 通信上发表了一篇关于 UNIX 的文章,这是 UNIX 第一次出现在贝尔实验室以外。此后 UNIX 被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。


1975 年,UNIX 发布了 4、5、6 三个版本。1978 年,已经有大约 600 台计算机在运行 UNIX。1979 年,版本 7 发布,这是最后一个广泛发布的研究型 UNIX 版本。20 世纪 80 年代相继发布的 8、9、10 版本只授权给了少数大学。此后这个方向上的研究导致了九号计划的出现,这是一个新的分布式操作系统。


1982 年,AT&T 基于版本 7 开发了 UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的 UNIX 版本情况,AT&T 综合了其他大学和公司开发的各种 UNIX,开发了 UNIX System V Release 1。 这个新的 UNIX 商业发布版本不再包含源代码,所以加州大学柏克莱分校继续开发 BSD UNIX,作为 UNIX System III 和 V 的替代选择。BSD 对 UNIX 最重要的贡献之一是 TCP/IP。BSD 有 8 个主要的发行版中包含了 TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4 以及 4.4-lite。这些发布版中的 TCP/IP 代码几乎是现在所有系统中 TCP/IP 实现的前辈,包括 AT&T System V UNIX 和 Microsoft Windows。其他一些公司也开始为其自己的小型机或工作站提供商业版本的 UNIX 系统,有些选择 System V 作为基础版本,有些则选择了 BSD。BSD 的一名主要开发者,比尔·乔伊,在 BSD 基础上开发了 SunOS,并最终创办了太阳计算机系统公司。


1991 年,一群 BSD 开发者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)离开了加州大学,创办了 Berkeley Software Design, Inc (BSDI)。BSDI 是第一家在便宜常见的 Intel 平台上提供全功能商业 BSD UNIX 的厂商。后来 Bill Jolitz 离开了 BSDI,开始了 386BSD 的工作。386BSD 被认为是 FreeBSD、OpenBSD 和 NetBSD、DragonFlyBSD 的先辈。AT&T 继续为 UNIX System V 增加了文件锁定,系统管理,作业控制,流和远程文件系统。1987 到 1989 年,AT&T 决定将 Xenix(微软开发的一个 x86-pc 上的 UNIX 版本),BSD,SunOS 和 System V 融合为 System V Release 4(SVR4)。这个新发布版将多种特性融为一体,结束了混乱的竞争局面。


1993 年以后,大多数商业 UNIX 发行商都基于 SVR4 开发自己的 UNIX 变体了。


UNIX System V Release 4 发布后不久,AT&T 就将其所有 UNIX 权利出售给了 Novell。Novell 期望以此来对抗微软的 Windows NT,但其核心市场受到了严重伤害,最终 Novell 将 SVR4 的权利出售给了 X/OPEN Consortium,后者是定义 UNIX 标准的产业团体。最后 X/OPEN 和 OSF/1 合并,创建了 Open Group。Open Group 定义的多个标准定义着什么是以及什么不是 UNIX。实际的 UNIX 代码则辗转到了 Santa Cruz Operation,这家公司后来出售给了 Caldera Systems。Caldera 原来也出售 Linux 系统,交易完成后,新公司又被重命名为 SCO Group。


下图以树状图的形式展示了从 Unix 系统衍生出的各种操作系统[2]:



值得注意的是 Unix v6 这个操作系统,从图中可以看出,几乎现在常用的那些操作系统都是从 Unix v6 衍生而来的,我们将重点关注衍生出 Linux 的那个分支。

二、总结

本小节中我们简要介绍了有关 Linux 内核的一个重要基础——Unix 操作系统。下一小节我们将介绍 Linux 应用程序的一个重要来源——GNU。




参考文献


[1]《Linux 程序设计(第四版)》


[2] https://www.cnblogs.com/alantu2018/p/8991158.html


2020-03-04 14:251426

评论 1 条评论

发布
用户头像
不错

2021-04-14 09:55
回复
没有更多了
发现更多内容

所见即所得的用户增长技术背后是如何实现的

代立冬

大数据 用户增长 用户增长技术 ad-hoc技术

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

E科讯

如何正确设置Java.home

谷鱼

在Ubuntu 20.04 搭建 Django 开发环境 以及 快速构建一个简单的 Blog

Matrix Chan

Python django 后端 Ubuntu20.04

知识点总结

Acker飏

彻底理解JavaScript执行上下文

Walker

Java 大前端 this指针 函数执行

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

大头星

区块链技术与我们的生活将并存

CECBC

区块链 数字经济

LeetCode题解:206. 反转链表,双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

区块链交易系统开发,期货合约平台搭建

SpringBoot写后端接口,看这一篇就够了!

华为云开发者联盟

后端 swagger pringboot

服务质量分析:腾讯会议&腾讯云Elasticsearch玩出了怎样的新操作?

腾讯云大数据

大数据

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者联盟

gpu caffe

开源决策树工具xDecision简介

赫杰辉

决策树 可视化 简化代码

区块链合约层是一种自动执行的数字协议

CECBC

区块链 智能合约

用Go-Guardian写一个Golang的可扩展的身份认证

朱亚光

微服务 身份认证 Go 语言

我写了一个TypeScript虚拟机。

渔子长

Java typescript 大前端 deno Node

Netty之旅三:Netty服务端启动源码分析,一梭子带走!

一枝花算不算浪漫

Netty

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

架构师期末作业

傻傻的帅

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

如何让知识图谱告诉你“故障根因”

华为云开发者联盟

华为云 知识图谱 图谱

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

滴滴基于 Flink 的实时数仓建设实践

Apache Flink

flink

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者联盟

命令行 游戏 斗地主

USDT跑分承兑系统开发,区块链支付平台搭建

介绍

剑心

学习

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

区块链技术最重要价值所在

CECBC

区块链 数字经济 互联网革命

Linux内核发展史(二):Unix操作系统_服务革新_华为云开发者联盟_InfoQ精选文章