UNIX简史

        从1991年Linux出现至今,由于众多IT巨头以及技术社区的推动,Linux已经成为非常成熟、可用于各种关键领域的操作系统,适当了解其发展历史,对于理顺其技术流派、从而更好地学习和使用Linux具有重要意义。由于其基于UNIX系统二十多年的研发成果,要了解Linux的历史就要先了解UNIX的历史。笔者搜集整理了一些史料分享给大家,本篇先介绍UNIX的历史,有不当之处欢迎批评指正。
        UNIX由AT&T的贝尔实验室(BTL, Bell Telephone Labs)于1969年开发。UNIX源于一个叫MULTICS的项目,该项目于1964年发起,旨在开发一个可同时支持大量用户使用的计算机操作系统。除了BTL,通用电气(Generic Electrics)、麻省理工(MIT)也参与其中,但该项目并未成功(据说是因为进展过度缓慢被最终裁撤,也有人说是因为需求过于超前)。
        在项目进行期间,1969年,BTL的两名工程师Ken Thompson和Dennis Bitchie利用业余时间在一台闲置的DEC PDP7计算机上开发了一个最基本的操作系统内核,同年,Thompson经过两个多月的论证和开发,为该系统内核设计了文件系统,使文件能够在层次结构中有序地存放。
        后来,更多的人投入到了这项工作,这个项目也该有个名字了。因为MULTICS项目是“Multiplexed Information and Computer Services(多路信息和计算机服务)”的缩写,开发团队决定将他们的系统命名为“Unics”,表示“Unixplexed Information and Computer Service(综合信息和计算机服务)”,后来研究员Brian Kernighan干脆就将新系统叫做“Unix”。
         随着系统开发的推进,他们使用的PDP 7显得有些小了,他们需要一台更强的计算机。他们决定以开发新的文本处理程序为由向公司申请购买新的计算机。在当时,文本处理程序是非常受市场欢迎的——公司同意他们购买一台PDP 11。
        PDP 11到货后,他们发现只有CPU和内存,没有磁盘和操作系统,Thompson为它开发了一个驻留内存的RAM盘,一半用作磁盘,另一半用来运行操作系统。磁盘到货后,他们继续开发操作系统以及向公司许诺的文本处理程序。这个文本处理程序就是Troff,后来被用来制作UNIX的man手册。
    1971年11月,Thompson和Ritchie完成了程序员手册。1972年6月,UNIX的第二版V2诞生,此时UNIX的装机数量已经超过10台。
    1973年底,开发团队决定开一次发布会对外公开他们的成果。众多的IT机构和大学向他们申请UNIX的许可。因AT&T作为电信业垄断巨头(尤其是其垄断了长途电话业务),早就被美国司法部盯上,美国司法部在1958年与AT&T签订了一个和解协议,双方约定AT&T不进入计算机领域,不销售计算机相关产品,司法部不以《反托拉斯法》对其发起诉讼。由于这个原因,AT&T是免费向各机构和大学提供UNIX源代码的。但AT&T不向这些用户提供技术支持,也不为他们纠正系统中的错误,这些用户不得不联合起来形成社区来进行技术交流。他们创建了USENIX社区,意为“UNIX用户”,用来共享技术,他们曾在1974年5月举行了第一次交流会,虽然当时只有十多人参加,但对UNIX社区的发展起到了重要的推动作用。
    加州大学伯克利分校也获得了UNIX使用许可,它是Ken Thompson的母校。1975年Thompson回到母校任教,同时带去了最新版本的UNIX。两个刚毕业的学生Chuck Haley和Bill Joy也加入了对UNIX的进一步开发中(Bill Joy后来成为了SUN Microsystems的副总裁之一)。Joy完善了EX编辑器,使其最终演变成了著名的全屏幕编辑器VI。VI不依赖于特定类型的终端,通过Joy创建的TERMCAP通用终端系统与特定终端所对应的控制器结合使VI在各种类型的终端上都可以正确工作。Haley和Joy还开发了一个Pascal编译器,并将其加入了UNIX。Joy将伯克利分校的UNIX版本叫做BSD(Berkely Software Distribution)。
    Bill Joy在伯克利分校完成BSD4.1的开发后,离开伯克利加入了SUN Microsystems公司,在那里他完成了BSD 4.2的开发,在1983年他在此基础上创建了SUN版本的Unix——SunOS。

    再回到AT&T。从1977年开始AT&T开始将UNIX向Interdata和IBM计算机移植,在此之前,UNIX只能在PDP计算机运行。到1979年6月发布的UNIX Version 7是第一个可移植的UNIX版本,该版本还提供了更多的先进功能,如awk, lint, make, uucp等。此时系统手册已达到400页,另有两个各400页的附录。该版本还包含了Kernighan和Ritchie开发的C编译器,用来对UNIX的大部分代码进行重写;以及增强的shell(Bourne shell)、find、cpio、expr等命令。
    此时UNIX已作为计算机工业的一个重要领域开始被各大厂商重视,比如微软和SCO合作开发了Xenix,用于运行在Intel 8086平台的计算机上。AT&T意识到了UNIX是一个非常有商业价值的系统,它在Version 7的使用许可中以防止泄露商业机密为由阻止大学将其作为学术研究的范例,至此各大学只能将操作系统课程的传授限制在理论层面了。
    1983年AT&T发布了UNIX System V(SV),这是一个收费的商业化版本,不允许传播源代码。
    由于在1974年美国司法部再次起诉AT&T违反《反托拉斯法》,1982年哥伦比亚地区法庭判决AT&T败诉,1984年AT&T被拆成了8个小公司(一个新的AT&T和七个本地电话公司,分别是大西洋贝尔、西南贝尔、西部贝尔、太平洋贝尔、南方贝尔、亚美达科以及纽新公司,他们也被称为“贝尔七兄弟”)。这个判决实际上同时表示1958年的和解协议已经无效了,AT&T可以进军计算机领域了。所以拆分后AT&T依然继续开发System V。SV经过了多次修订,1989年发布的System V Release 4(SVR4)是最重要的一个版本,它首次结合了多个UNIX版本的特性,引入了其他厂商的技术,比如SUN Microsystems,实际上SVR4是AT&T和SUN Microsystems共同发布的,它标志着UNIX系统的进一步标准化和商业化。

    再看伯克利分校这边。AT&T对UNIX版权的控制使得伯克利分校仅能将其BSD分发给持有AT&T源码许可的公司,同时伯克利也开始着手在BSD中清除AT&T的代码。80年代后期,几个伯克利的学生成立了一个叫“Berkely Software Design Inc."的公司用来出售BSD的一个商业版本,1990年被AT&T指控其侵权并告上法庭,伯克利分校也成为被告。一直到1994年双方才达成和解,BSD得以继续发展。BSD分裂成不同的版本,FreeBSD,netBSD,OpenBSD(被认为最安全的UNIX)和TrustedBSD。实际上,在1994年和解之前,AT&T就已经将UNIX卖给了Novell,次年Novell又将UNIX卖给了SCO。

        这些年的时间里,各大厂商纷纷有了自己的UNIX产品,比如IBM的AIX,DEC的Ultrix,HP的HPUX,Microsoft与SCO合作开发的 Xenix,SUN的Solaries(SunOS的升级版本)。UNIX系统形成两大主要分支,即SVR4和BSD。所有现代的UNIX系统或多或少地都是基于这两个主流分支开发的。

    由于AT&T对UNIX版权的控制使大学在教授操作系统时没有了范例可用,1987年,荷兰阿姆斯特丹自由大学的美籍教授Andrew Tanenbaum(加州大学伯克利分校物理博士,《操作系统:设计与实现》的作者)决定自己写一个不含AT&T代码的UNIX兼容操作系统用于教学,他将他的系统叫做Minix。Minix就是Linux的前身,1991年芬兰学生Linus Torvalds在Minix的基础上创建了Linux。由于Linux作为开源软件,获得了众多厂商和技术社区的支持,在1995-1999年间,Linux得到很大的发展,支持多种硬件平台,成为商业UNIX的有力竞争对手。

    回望历史,对于UNIX版权的控制深深地影响了UNIX的发展历程。由于IBM在支持Linux时使用了部分AT&T原始代码,掌握版权地SCO在2001年对IBM进行了长达18年的诉讼案,期间SCO的言行表现使得SCO被UNIX世界边缘化了,从现在来看,从SCO拿到UNIX版权的时候,UNIX原始版本的开发就已经结束了。在UNIX的发展过程中形成了一系列的工业标准,比如IEEE POSIX,UNIX97,FHS等,Linux的开发也会参考或升级这些标准。

        下面是笔者从某教材中截取的UNIX发展历史简图,供大家参考。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# OpenCV机器视觉:畸变矫正

在一个阳光明媚的早晨,阿强决定去拍照。他拿起相机,穿上他最喜欢的羊毛大衣,准备记录下生活中的美好瞬间。可是,当他兴奋地查看照片时,发现自己拍的每一张都像是被外星人用变形金刚的力量扭曲过一样!“这是…

tryhackme——Defensive Security Intro(防御安全简介)

任务一:Introduction to Defensive Security防御安全简介 此room的两个要点: Preventing intrusions from occurring 防止入侵发生Detecting intrusions when they occur and responding properly 检测发生的入侵并正确响应 防御安全还有更多内容。 除上…

使用rust语言创建python模块(pyo3+maturin)

1. 首先使用conda创建python虚拟环境(已创建的可省略) >conda create --prefixE:\python_envs\rust_python python3.11 2. 激活python虚拟环境 conda activate rust_python 3. 安装maturin pip install maturin 4. 创建rust项目 >cd E:\py…

关于Postgresql旧版本安装

抛出问题 局点项目现场,要求对如下三类资产做安全加固,需要在公司侧搭建测试验证环境,故有此篇。 bclinux 8.2 tomcat-8.5.59 postgrel -11 随着PG迭代,老旧版本仅提供有限维护。如果想安装老版本可能就要费劲儿一些。现在&…

使用echarts实现3d柱状图+折线图

以下代码有问题请直接问国内直连GPT/Claude HTML 需要注意threeDchart一定要设置宽度高度&#xff0c;不然图不显示,然后echarts版本不要太低&#xff0c;不然也不显示 <div id"threeDchart" class"threeDchart"></div>js set3DBarChart2(dat…

2024.1212-02-虚拟私人网(VPN) 虚拟局域网 及隧道技术(四)--GRE47 Etherip97 原理及应用

虚拟局域网 及隧道技术&#xff08;四&#xff09;-GRE47 & Etherip97原理及应用 概述原理及应用EOIP/Etherip概念区别 隧道协议标准EtherIP &#xff08;IP protocol number 97&#xff09;GRE 开源工具katlogic-eoip 验证环境GRE&#xff08;EOIP&#xff09;演示验证Eth…

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

文章目录 前言前置条件进制什么是十进制、二进制二进制有什么用&#xff1f;为什么计算机用二进制而不用十进制&#xff1f;二进制转十进制十进制转二进制二进制运算 计算机中的数据存储单位什么是编程&#xff1f;什么是代码&#xff1f;什么是编程语言&#xff1f;常见的编程…

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例&#xff1a;某报表处理系统要求用户输入处理报表的日期&#xff0c;日期限制在2003年1月至2008年12月&#xff0c;即系统只能对该段期间内的报表进行处理&#xff0c;如日期不在此范围内&#xff0c;则显示输入错误信息…

CSS学习记录11

CSS布局 - display属性 display属性是用于控制布局的最终要的CSS属性。display 属性规定是否/如何显示元素。每个HTML元素都有一个默认的display值&#xff0c;具体取决于它的元素类型。大多数元素的默认display值为block 或 inline。 块级元素&#xff08;block element&…

ByteCTF2024

wp参考&#xff1a; 2024 ByteCTF wp 2024 ByteCTF WP- Nepnep ByteCTF 2024 writeup by Arr3stY0u 五冠王&#xff01;ByteCTF 2024 初赛WriteUp By W&M ByteCTF 2024 By W&M - W&M Team ByteCTF Re WP - 吾爱破解 - 52pojie.cn 2024 ByteCTF - BediveRe_R…

C#,在 C# 语言中将 LaTeX 转换为 PNG 或 JPG 图像

在 C 语言中将 LaTeX 转换为 PNG 或 JPG 图像# 12月 28&#xff0c; 2021 2 分钟 法尔汉拉扎 在 C 语言中将 TeX 转换为 PNG JPG 图像# TeX 格式用于处理技术和科学文件。它通常用于交流或发布此类文档。在某些情况下&#xff0c;您可能需要将 TeX 文件渲染为 PNG 或 JPG 等图像…

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展&#xff0c;AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统&#xff0c;AI技术赋予监控系统实时分析、智能识别和精准预警的能力&#xff0c;让“被动监视”转变为“主动防控”。 二、AI监控应用…

搭建Tomcat(一)---SocketServerSocket

目录 引入1 引入2--socket 流程 Socket&#xff08;应用程序之间的通讯保障&#xff09; 网卡(计算机之间的通讯保障) 端口 端口号 实例 client端 解析 server端 解析 相关方法 问题1&#xff1a;ServerSocket和Socket有什么关系&#xff1f; ServerSocket Soc…

爬虫学习案例5

爬取b站一个视频 罗翔老师某一个视频很刑 单个完整代码&#xff1a; 安装依赖库 pip install lxml requests import osimport requests import re from lxml import etree import json # 格式化展开输出 from pprint import pprint # 导入进程模块 import subprocess head…

【深度学习】 零基础介绍卷积神经网络(CNN)

零基础介绍 卷积神经网络&#xff08;CNN&#xff0c;Convolutional Neural Network&#xff09;是深度学习中的一种神经网络&#xff0c;特别擅长处理图像和视频等有空间结构的数据。 假设我们在做一个“照片分类”的任务&#xff0c;比如判断一张照片中是猫还是狗。下面用一…

【计算机组成原理】实验二:通用寄存器单元实验

实验二&#xff1a;通用寄存器单元实验 一、实验目的 了解通用寄存器的组成和硬件电路&#xff0c;利用通用寄存器实现数据的置数、左移、右移等功能。 二、实验内容 数据输入通用寄存器 寄存器内容无进位位左移实验 寄存器内容无进位位右移实验 三、实验步骤和结果 实…

4G模块详解

在之前的教程中&#xff0c;无线通信技术我们学习了蓝牙和 WiFi&#xff0c;今天我们要来学习 4G。 4G 模块在距离上有个突破&#xff0c;它不像蓝牙短距离&#xff0c;也不像 WiFi 只能在局域网&#xff0c;4G 模块可使用户无论在哪&#xff0c;只要有 4G 网络信号覆盖&#…

Visual Studio 使用 GitHub Copilot 聊天

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

TimerPickerDialog组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为时间,它主…

Linux高并发服务器开发 第四天(wc/whoami命令 权限修改chmod 添加/删除用户(组) 切换用户 修改文件所有者/所属组 查找/过滤)

目录 1.wc和whoami命令 1.1wc命令 1.2whoami命令 2.用户权限/用户/用户组 2.1修改文件权限chmod 2.1.1文字设定法 2.1.2数字设定法 2.2添加删除新用户和新用户组 2.3切换用户 2.4修改文件所有者和所属组 2.4.1修改所有者 2.4.2修改所属组 3.查找和过滤 3.1find—…