当前位置: 首页 > news >正文

从技术史看:Unix 从何而来

大家好!我是大聪明-PLUS

如今,许多人认为“Unix”和“Linux”是同一个东西。但从 2024 年起,对于大多数我们认为是“Unix”和“Linux”的发行版来说,情况基本如此。

但 Unix 的历史悠久。如果你只了解我们今天所熟知的 Linux 系统,很难想象“Unix 早期的情况是什么样的”,因为自那时以来发生了太多变化。

❯ 从原型到 Unix

让我们回顾一下 Unix 的起源。1969 年,贝尔实验室的研究员 Ken Thompson 正在尝试操作系统设计。

当时,贝尔实验室有一台 PDP-7 计算机,它配备了一些有趣的外设:一个速度非常快(在当时来说)的磁盘驱动器。汤普森对这台驱动器在处理数据时所能达到的最大吞吐量很感兴趣,于是他编写了自己的程序来与硬盘驱动器进行交互。这是一项艰巨的任务:在那个年代,所有程序都是用汇编语言编写的,而编写一个硬盘驱动器驱动程序需要大量的底层代码。

汤普森意识到,这个接口已经投入了大量精力,几乎可以算作一个成熟的操作系统内核了。他估算,只需要三周时间就能完善内核。一周用来创建新的编辑器,一周用来编写汇编程序,一周用来编写内核原型。Unix 操作系统的历史就是从这个原型开始的。

这个早期原型及其蕴含的理念似乎很有意思,于是汤普森和他在贝尔实验室的同事们开始开发它。新系统的唯一设计模式是:多个实用工具,每个工具专注于解决一个问题。贝尔实验室的另一位研究员布莱恩·科尼汉建议将新系统命名为“Unix”——与贝尔实验室几年前也在开发的Multis操作系统形成对比。然而,Multis项目最终失败了,因为该操作系统过于复杂。

❯ 早期 Unix

1971 年 11 月,贝尔实验室编译完成了新操作系统的代码,Unix 第一版应运而生。随后,Unix 第二版于 1972 年 7 月发布,Unix 第三版于 1973 年 2 月发布,Unix 第四版于 1973 年 11 月发布。

这些早期版本的 Unix 与现代 Linux 系统并没有太大区别。我们今天使用 Linux 时所依赖的许多命令在 Unix 第二版中就已经存在。例如,用于显示文件的 cat 命令, 用于管理目录、管理  文件和 控制文件访问的mkdir 和 命令 。df  和 du 命令允许您检查磁盘空间使用情况,而 和 命令 (类似于 cd)允许您浏览文件。此外还有许多其他熟悉的命令rmdircpmvrmchmodchownlschdircmp, dateechofindlnmanmountumountsortwcwho

摘自《Unix 第四版》手册。该手册分为几个部分,第一部分涵盖了通用用户命令:

  1. 自定义命令;

  2. 系统调用;

  3. 编程程序;

  4. 特殊文件;

  5. 文件格式;

  6. 用户支持的程序;

  7. 各种各样的;

  8. 支持。

您可能对其中许多命令都很熟悉。它们中的大多数仍然保留在现代 Linux 系统中,但有些已被其他功能几乎与旧命令相同的命令所取代。例如, ar 命令以前用于归档,但现在您可以使用 zip 或 tar

 
 

早期版本的 Unix 还包含其他一些至今仍保留但很少使用的命令,例如ar 用于文件归档、 dc 桌面计算器、 ed 文件编辑和校验和 sum 计算的命令。Unix 第二版还支持早期的电子邮件概念(有一个用于电子邮件的命令mail)和一种即时通讯工具:使用命令 mesg 和 , write 您可以通过终端与其他用户交换消息。

使用早期 Unix 版本的程序员使用各种编译器和工具来帮助他们创建新程序。命令as 用于构建程序,而 bas 对于 BASIC 编程,还有诸如 cc (C 编译器)、  db (调试器)、  fc (FORTRAN 编译器)、  ld (链接器)、  nm (列表名称)、( od 八进制转储)、  strip (字符串符号) 和 un (查找未定义符号) 之类的命令。您可能在现代 Linux 系统上认出了这些工具,但其中许多现在都有不同的名称。例如,用于编译 C 程序的命令是gcc

一些 Unix 命令随着时间的推移而发生了变化,但它们的早期版本在 Unix 第二版中很容易辨认。shell sh 支持早期版本的标签 goto和运算符 if。您可能习惯于在 Bash shell 中工作,因为 Bash 语言可以完成所有这些功能以及更多功能。该程序 roff 用于准备文档,是基于几年前出现的 RUNOFF 程序的简化实现。check 和 命令salve 提供与大致相同的文件系统检查fsck,命令 dsw 删除了类似的文件 rm -i,命令 istat 返回 inode 的状态, m6 是最早的宏处理程序之一,并且类似于现代的 m4,并tm 显示系统时间和有关系统保持活动时间的信息。

早期 Unix 系统的其他命令长期以来被保留下来,并用于支持不再存在的系统。例如,Unix 第二版手册描述了与 Honeywell 6070 大型机通信的工具,包括 dpd (通过电话提供数据服务)、  tss (与分时系统通信)以及 opr (离线)文件打印到 Honeywell 6070 系统。

❯ 文本处理

在Unix的第一个版本发布之后,汤普森试图发明一个更强大的系统,以便他能够继续使用Unix。不幸的是,他的管理层不愿投资操作系统研究,因为公司已经因与Multics的失败合作而遭受重创。购买新计算机系统的请求被拒绝了。

但 Unix 团队最终还是抽出时间处理了这件事。大约在同一时间,法律部门正计划购买一套新的文档准备系统,以帮助他们提交专利申请,这需要特定的格式。但他们想买的新软件还没有准备好。Unix 团队提出了一项协议:专利部门为他们购买一台新的 PDP-11 电脑,Unix 专家则负责升级文字处理器roff,实现准备专利申请所需的所有缺失功能。

此外,从技术上讲,没有人会研究操作系统。

这就是为什么 Unix 第二版还包含许多用于处理文档和打印的工具,包括 nroff ( 版本 roff) ov 用于拼版打印页面、 pr 用于印前以及 type 用于在打字机等 TeleType 机器上打印页面的工具。

后来,当公司购置了一台照排机时,Unix 团队重写了 nroff,将其变成了troff (排版 版本 roff)——该命令包含在 Unix 第 4 版中。其他文本处理工具也支持troff。例如,该工具 eqn 可以生成科学文档的公式并tbl 用于格式化表格。

其他如今已习以为常的 Unix 特性出现在 Unix 的后续版本中。一个典型的例子是使用 管道将一个命令作为输入传递给另一个命令。该特性首次出现在 Unix 第三版中。管道使得创建充当过滤器的新程序成为可能。例如,该命令 grep允许比较文本文件并搜索匹配项(Unix 第四版),以及 tee 保存管道命令的中间输出(Unix 第五版)。在 Unix 第七版中,该命令sh最终被提供更多功能的 Bourne Shell 取代。

❯ Unix 中的常见根源

我们很少会思考日常生活中使用的 Linux 命令的起源。这些命令诞生于计算机运行缓慢、内存以千字节为单位的时代。那时的工具必须小巧且高度专业化。

从最初的 Unix 到现代 Linux 发行版,可用的命令行选项范围发生了显著变化。随着计算机速度的提升和内存的充裕,每个工具都开始承担越来越多的工作。例如,ls Unix 第二版中的命令仅支持五个选项: 以-l格式 列出  、  按时间而非名称排序、  列出所有文件、  显示每个文件的大小以及  列出目录名称而非其内容。现代GNU 命令不仅支持这些原始选项,还支持超过 50 个扩展选项。-t-a-s-dls

所有现代类 Unix 系统的起源都可以追溯到最初的 Unix。Linux 就是这样一个系统,它使用 GNU 工具链。GNU 工具链基于 Unix 工具。2024 年,Linux 不再出现在最初的 Unix 架构中,原因很简单:Linux 现在支持 Unix 诞生之初无法想象的架构和工具。但使用命令行的一般原则与 20 世纪 70 年代 Unix 首次开发时大致相同。下次您使用 []ls列出目录中的文件时,请记住,您使用的是已有五十多年历史的工具。

 

http://www.dtcms.com/a/438590.html

相关文章:

  • qt 可以做网站吗优化师简历
  • DreamControl——结合扩散模型和RL的全身人形控制:利用在人体运动数据上训练得到的扩散先验,随后在仿真中引导RL策略完成特定任务
  • Spring Boot 实现邮件发送功能:整合 JavaMailSender 与 FreeMarker 模板
  • 新手理解的电子IO口
  • 网站开发完整项目案例做视频网站视频短片
  • 怎样自己做一个网站想创建一个网站
  • wordpress本站只对会员开放网站建设求职要求
  • PyQt5 QLineEdit案例大全:进阶实战应用指南
  • 技术博客SEO优化指南
  • 【LeetCode热题100(33/100)】排序链表
  • C++坑系列,C++ std::atomic 拷贝构造函数问题分析与解决方案
  • 视频网站做板块栏目asp.net企业网站
  • 如何做超一个电子商务网站做网站有个名字叫小廖
  • Font Awesome Web 应用图标
  • 校企合作下的中医实训室:如何实现 “教学 - 就业” 无缝衔接?
  • Python学习之Day04学习(持久存储与推倒数据)
  • 3100. 换水问题 II
  • 南宁网站搜索引擎优化上海做网站的的公司有哪些
  • P1420 最长连号
  • 渠道推广代理郑州厉害的seo优化顾问
  • LangChain源码分析(八)- Document加载器
  • Day91 基本情报技术者 单词表27 AI基礎
  • 质量管理方法
  • 【ATBS with Python】QA Chap1 Python Basics
  • Java 之继承与多态
  • 建设局电话965559seo综合查询平台官网
  • 做网站分辨率多少wordpress调查问卷插件
  • 东莞网站关键词优化排名wordpress init
  • 淘客APP的联盟规则适配层设计:如何通过策略模式快速响应淘宝/京东/拼多多政策变动?
  • Java-140 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(2)