Linux的起源

news2024/11/23 8:13:05

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥",后来的 Windows 和 Linux 都参考了 UNIX。

现代的 Windows 系统已经朝着“图形界面”的方向发展了,和 UNIX 系统有了巨大的差异,从表面上甚至看不出两者的关联。

UNIX 的坎坷历史

UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。

可惜,由于 Multics 工程计划所追求的目标太庞大、太复杂,以至于它的开发人员都不知道要做成什么样子,最终以失败收场。

以肯•汤普森为首的贝尔实验室研究人员吸取了 Multics 工程计划失败的经验教训,于 1969 年实现了一种分时操作系统的雏形,1970 年该系统正式取名为 UNIX。

有意思的是,肯•汤普森当年开发 UNIX 的初衷是运行他编写的一款计算机游戏 Space Travel,这款游戏模拟太阳系天体运动,由玩家驾驶飞船,观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发操作系统,就这样,UNIX 诞生了。

这个时候已经是1970年了,于是就将1970年定为Unix元年,因此计算机上的时间就是从这一年开始计算的。

 

1971-1972 年,肯•汤普森的同事丹尼斯•里奇发明了传说中的C语言,这是一种适合编写系统软件的高级语言,它的诞生是 UNIX 系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰。

到了 1973 年,UNIX 系统的绝大部分源代码都用C语言进行了重写,这为提高 UNIX 系统的可移植性打下了基础(之前操作系统多采用汇编语言,对硬件依赖性强),也为提高系统软件的开发效率创造了条件。可以说,UNIX 系统与C语言是一对孪生兄弟,具有密不可分的关系。

20 世纪 70 年代初,计算机界还有一项伟大的发明——TCP/IP 协议,这是当年美国国防部接手 ARPAnet 后所开发的网络协议。美国国防部把 TCP/IP 协议与 UNIX 系统、C语言捆绑在一起,由 AT&T 发行给美国各个大学非商业的许可证,这为 UNIX 系统、C语言、TCP/IP 协议的发展拉开了序幕,它们分别在操作系统、编程语言、网络协议这三个领域影响至今。肯•汤普森和丹尼斯•里奇因在计算机领域做出的杰出贡献,于 1983 年获得了计算机科学的最高奖——图灵奖。

图 1 为肯•汤普森与丹尼斯•里奇的合影,天才都是不修边幅的……

 后来Unix这个小操作系统就在Bell实验室内部流行开,并经过不断地改良最终在1974年7月Unix发展到第5个版本,Bell实验室公开了Unix,结果引起了学术界的广泛兴趣并对其源码索取。所以,Unix第五个版本就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和拓展。1978年学术界的老大伯克利大学,推出了一份以第六版为基础,加上一些改进和新功能而成的Unix。并命名为BSD(Berkeley Software Distribution伯克利分发版),开创了Unix的另一分支:BSD系列。

  于是乎Unix就有了两个分支,一个就是BSD系列的分支,一个就是Bell本身发放的分支,当时因为Bell属于AT&T,AT&T受到了美国《谢尔曼反托拉斯法》的影响,不能销售除了电话机电报机等之外的商品,后来AT&T分解,Bell可以卖Unix了,Unix走向了商业化,如果想继续使用就需要购买授权,一份授权4万美元。

  在Unix昂贵的授权费用下,很多大学不得不停止对其研究,老师导致上课也不知道讲什么了。在1987年荷兰有个大学教授安德鲁写了一个Minix,类似于Unix,专用于教学。当Minix流传开来之后,世界各地的黑客们纷纷开始使用并改进,希望把改进的东西合并到Minix中,但是安德鲁觉得他的系统是用于教学的,不能破坏纯净性,于是拒绝了。

Linux 的那些往事

Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 年 9 月发布,当时仅有 10 000 行代码。

李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。

据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux 内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多 Linux 好者共同开发完成的。

李纳斯•托瓦兹无疑是这个世界上最伟大的程序员之一,何况,他还搞出了全世界最大的程序员交友社区 GitHub (开源代码库及版本控制系统)。

关于 Linux Logo 的由来是一个很有意思的话题,它是一只企鹅。

为什么选择企鹅,而不是选择狮子、老虎或者小白兔?有人说因为李纳斯•托瓦兹是芬兰人,所以选择企鹅,有人说因为其他动物图案都被用光了,李纳斯•托瓦兹只好选择企鹅。

我更愿意相信以下说法,企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于世界上的任何国家,可国家都无权将南极洲纳入其版图。Linux 选择企鹅图案作为 Logo,其含义是:开放源代码的 Linux 为全人类共同所有,可公司无权将其私有。

UNIX与Linux的亲密关系

二者的关系,不是大哥和小弟,"UNIX 是 Linux 的父亲"这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。

二者也有两个大的区别:

  1. UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
  2. UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。

Linux 受至旷大计算机爱好者的喜爱,主要原因也有两个:

  1. 它属于开源软件,用户不用支付可费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿使用,无约束地继续传播;
  2. 它具有 UNIX 的全部功能,任何使用 UNIX 操作系统或想要学习 UNIX 操作系统的人都可以从 Linux 中获益。

开源软件是不同于商业软件的一种模式,从字面上理解,就是开放源代码,大家不用担心里面会搞什么猫腻,这会带来软件的革新和安全。

另外,开源其实并不等同于免费,而是一种新的软件盈利模式。目前很多软件都是开源软件,对计算机行业与互联网影响深远。

近年来,Linux 已经青出于蓝而胜于蓝,以超常的速度发展,从一个丑小鸭变成了一个拥有庞大用户群的真正优秀的、值得信赖的操作系统。历史的车轮让 Linux 成为 UNIX 最优秀的传承者。

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

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

相关文章

Prompt本质解密及Evaluation实战与源码解析(二)

9.4 Evaluation for Agents源码解析 如图9-4所示,转过来,我们再看一下LangChain框架代理评估(Evaluation for Agents)的源代码。 图9- 4 LangChain的evaluation agents目录 在trajectory_eval_prompt.py文件里面,写了一个非常经典的提示词。 1. """提示…

抽象轻松有点使用的JavaScript

数据类型转换 定义概念:将一种数据类型通过用特定的方法转换成另一种数据类型 拆分: 数据类型转换 A1(一种数据类型) A2(方法) A3(转换成另一种数据类型) 理解:A1 &…

使用STM32 再实现电动车防盗钥匙扣

实现目标 1. 点击遥控器 A 按键,系统进入警戒模式,一旦检测到震动(小偷偷车),则喇叭发出声响报警 2. 点击遥控器 B 按键,系统退出警戒模式,再怎么摇晃系统都不会报警 硬件介绍 1. 震动传感器…

安装orcle报错:指定的 Oracle 系统标识符 (SID) 已在使用

安装orcle报错:[INS-35075]指定的 Oracle 系统标识符 (SID) 已在使用 说明前面的orcle没有彻底删除 解决这个问题: 搜索框 —— > 输入:regedit ——> 回车 运行regedit,选择HKEY_LOCAL_MACHINE SOFTWARE ORACLE&#xff…

【Android】从零搭建组件化项目

组件化系列文章介绍的内容稍微多了点,本着研究透这玩意的精神,从组件化的简介开始说起。 目录 简介组件化、模块化与插件化开始创建配置共享文件打包模式配置APT与JavaPoet 简介 什么是组件化? 将多个功能模板拆分、重组的过程。 为什么要使…

GEE入门学习,遥感云大数据分析、管理与可视化以及在林业应用丨灾害、水体与湿地领域应用丨GPT模型应用

目录 ①海量遥感数据处理与GEE云计算技术实践应用 ②GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用 ③GEE遥感云大数据林业应用典型案例实践及GPT模型应用 ④遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 ①海量遥感…

78. 左旋转字符串

目录 链接: 题目: 思路: 代码: 图片: 链接: 原题链接 题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如输入字…

Talk预告 | 天津大学博士生赵煜:从平面图像中理解空间语义 - 视觉空间位置描述

本期为TechBeat人工智能社区第512期线上Talk! 北京时间7月12日(周三)20:00, 天津大学博士生—赵煜的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “从平面图像中理解空间语义-视觉空间位置描述”,届时将与大家…

webpack插件安装

webpack插件安装 1、html-webpack-plugin插件2 、css-loader和style-loader插件3、less-load插件 1、html-webpack-plugin插件 1、下载插件 yarn add html-webpack-plugin -D2、webpack.config.js添加配置 *const HtmlWebpackPlugin require(html-webpack-plugin); const p…

Linux系统编程(信号处理机制)

文章目录 前言一、中断,异常,信号的区别二、信号在Linux中的标识三、信号处理相关函数四、代码实验总结 前言 本篇文章我们来讲解信号的处理机制,信号处理在Linux操作系统中必不可少,这一点值得大家注意,信号又会与中…

打通前后端 -- 创建第一个JSP页面

前言 JSP是由Sun Microsystems公司主导创建的一种动态网页技术标准。 JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。 JSP技术以Java语言作为脚本语言&…

从0-100:约拍小程序开发笔记

背景 摄影师预约小程序功能是一种方便摄影师和客户之间进行预约和安排拍摄的工具。通过该功能,摄影师可以在小程序上设置自己的可预约时间,客户可以根据摄影师的日程安排选择合适的时间进行预约。这样可以提高预约的效率,减少沟通成本&#…

【工具】tempormonkey 同步插件

tempormonkey 同步插件 1.打开tempormonkey的dashboard界面 2.右上角的setting 3.选择谷歌云盘

数字孪生建筑3D可视化运维管理平台降低成本

深圳是我国数字经济重镇,数字经济核心产业增加值占全市GDP逾三成,数字产业化和产业数字化正呈双向融合发展之势。越来越多的企业正与深圳华锐视点一道,利用互联网、大数据、云计算、人工智能、区块链、5G、数字孪生等技术优势,赋能…

Red Hat Linux官网下载地址

注册一个账号,就可以从官网下载最新版本的Red Hat 企业版Linux。

从0到100:定制公交预约小程序开发笔记

业务背景 可以让用户通过手机随时随地进行公交车的预约,无需排队等候,节省了用户的时间和精力。通过公交预约小程序,用户可以提前预约座位,避免了拥挤和等待时间,提高了公交出行的效率。可以根据用户的预约情况&#…

软考A计划-系统集成项目管理工程师-项目成本管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

k8s 的命名空间一直 Terminating

查看命名空间状态,[NAMESPACE] 处于 Terminating kubectl get ns使用强制删除命令没有效果 kubectl delete namespace [namespace] --force --grace-period0 解决办法:删除部署文件 yaml 中的 finalizers 属性 kubectl get namespace [NAMESPACE] -o …

AIGCxRPA打造更智能的数字员工,帮助千行万业实现新生产力的跃升

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 金融行业,长久以来一直是新科技的最佳试验场。作为一个高度数字化、信息密集的行业,金融业对于新科技的吸纳和应用具有天然的优势和需求。数字经济的崛起,更加快了金融行业对智能化的渴望…

低代码开发的兴衰

刚才在思考写一个PPT,然后留下一些辅料,给大家分享出来。 (1)DOS时代的爽:1981-1995 一、Dbase:一体化,前中后端都搞定 1、后端-数据层:数据库系统(DBASE本质其实是个单机…