Linux历史

Linux 于 1991 年由芬兰学生 Linus Torvalds 作为个人项目开始,旨在创建一个新的免费操作系统内核。在其历史发展中,Linux 内核经历了持续的增长。自 1991 年首次发布源代码以来,Linux 内核从少量的 C 语言文件,且受限于禁止商业发行的许可,逐步发展到 2018 年发布的 4.15 版本,其源代码行数已超过 2330 万行(不包括注释)。Linux 内核在 GNU 通用公共许可证第 2 版(GPLv2)下发布,且带有系统调用例外条款,意味着通过系统调用使用内核的内容不受 GNU GPL 的约束。

促成 Linux 诞生的事件

在这里插入图片描述

Ken Thompson(左)和 Dennis Ritchie(右)是 Unix 操作系统的创建者。在 AT&T 退出 Multics 项目之后,Ken Thompson 和 Dennis Ritchie(两人均为 AT&T 贝尔实验室的员工)于 1969 年设计并实现了 Unix 操作系统,并在 1970 年首次发布。随后,他们使用一种新编程语言 C 重写了 Unix 以使其具有可移植性。Unix 的开放性和可移植性使其被学术机构和企业广泛采用、复制和修改。

1977 年,伯克利计算机系统研究小组(CSRG)基于 AT&T 的第六版 Unix 开发了伯克利软件发行版(BSD)。由于 BSD 包含了 AT&T 所拥有的 Unix 代码,AT&T 在 1990 年代初对加利福尼亚大学提起诉讼(USL 诉 BSDi 案),这极大地限制了 BSD 的发展和应用。

Onyx Systems 于 1980 年开始销售基于微型计算机的早期 Unix 工作站。后来,Sun Microsystems 公司作为斯坦福大学学生项目的衍生公司,亦在 1982 年开始销售基于 Unix 的桌面工作站。尽管 Sun 的工作站没有像后来 Linux 那样利用通用 PC 硬件,但它代表了第一个成功商业化的运行 Unix 操作系统的单用户微型计算机的分发尝试。

1983 年,Richard Stallman 启动了 GNU 项目,目标是创建一个自由的类 Unix 操作系统。作为该项目的一部分,他编写了 GNU 通用公共许可证(GPL)。到 1990 年代初,几乎有足够的软件来创建一个完整的操作系统。然而,GNU 的内核(名为 Hurd)未能吸引足够的开发资源,导致 GNU 系统不完整。

1985 年,Intel 发布了 80386 处理器,这是首个带有 32 位指令集和分页内存管理单元的 x86 微处理器。

1986 年,AT&T 贝尔实验室的 Maurice J. Bach 发表了《UNIX 操作系统的设计》一书,详细介绍了 System V Release 2 的内核,以及 Release 3 和 BSD 的一些新特性。

1987 年,Andrew S. Tanenbaum 发布了 MINIX,这是一种类 Unix 系统,旨在用于学术教学,展示其教材《操作系统:设计与实现》中的原理。尽管 MINIX 提供了源代码,但其修改和重新分发受到限制。此外,MINIX 的 16 位设计不适应日益普及的 32 位 Intel 386 个人计算机架构。在 1990 年代初,面向 Intel 386 个人计算机的商业 Unix 操作系统价格过高,个人用户难以承受。

这些因素,加上缺乏被广泛采用的免费内核,促使 Linus Torvalds 启动了他的项目。他曾表示,如果当时 GNU Hurd 或 386BSD 内核可用,他很可能不会编写自己的内核。

Linux的诞生

Linus Torvalds 于 2002 年 1991 年,在赫尔辛基大学攻读计算机科学专业期间,Linus Torvalds 开始了一个项目,这个项目后来成为了 Linux 内核。他专门为他当时使用的硬件编写了该程序,并且独立于任何操作系统,因为他希望能够充分利用他新购置的 80386 处理器的功能。开发工作是在 MINIX 系统上使用 GNU C 编译器完成的。

1991 年 7 月 3 日,Linus Torvalds 为了在他的项目中实现 Unix 系统调用,尝试从 comp.os.minix 新闻组中获取 POSIX 标准文档的数字副本,但未能成功获取。因此,Torvalds 最初使用赫尔辛基大学用于运行 Sun Microsystems 服务器的 SunOS 文档来确定系统调用。他还从 Andrew S. Tanenbaum 的 MINIX 教材中学到了一些系统调用,该教材是 Unix 课程的一部分。

正如 Torvalds 在其著作《Just for Fun》中所写的,他最终写出了一个操作系统内核。1991 年 8 月 25 日,年仅 21 岁的 Torvalds 在 comp.os.minix 新闻组上发布了这个系统的公告:

"大家好,使用 MINIX 的朋友们:

我正在开发一个(免费的)操作系统(仅仅是个业余项目,不会像 GNU 那样大和专业),适用于 386(486) AT 克隆机。这个项目自 4 月以来一直在进行,现在开始接近完成了。我希望能听到大家对 MINIX 的喜欢或不喜欢之处的反馈,因为我的操作系统在某些方面有些类似(例如文件系统的物理布局,出于实用原因)。

目前我已经移植了 bash(1.08) 和 gcc(1.40),它们似乎工作正常。这意味着几个月内我可能会有一些实用的东西,我想知道大多数人希望有哪些功能。任何建议都欢迎,不过我不保证会实现它们 😃

Linus(torvalds@kruuna.helsinki.fi)

PS:是的——它没有任何 MINIX 的代码,并且它有一个多线程文件系统。它不具有可移植性(使用了 386 的任务切换等),并且可能永远只支持 AT 硬盘,因为那是我唯一拥有的 😦"

根据 Torvalds 的说法,Linux 在 1992 年开始变得重要,这是因为 Orest Zborowski 将 X Window 系统移植到 Linux,使其首次支持图形用户界面(GUI)。

在这里插入图片描述

命名

Linus Torvalds 最初想把他的发明命名为 “Freax”,这个词结合了 “free”(自由)、“freak”(狂热者)和 “x”(表示与 Unix 的联系)。在系统开发的初期,他将文件以 “Freax” 这个名字保存了大约半年。尽管 Torvalds 曾考虑过 “Linux” 这个名字,但他最初觉得这个名字过于自我中心。

1991 年 9 月,为了方便开发,Torvalds 将文件上传至 FUNET 网络的 FTP 服务器(ftp.funet.fi)。赫尔辛基科技大学的志愿管理员 Ari Lemmke 认为 “Freax” 这个名字不太好,因此未经 Torvalds 许可,将项目命名为 “Linux”。后来,Torvalds 同意使用 “Linux” 这个名称。

为了演示 “Linux” 的正确发音([ˈliːnʊks]),Torvalds 在内核源代码中附带了一个音频指南。

Linux使用GNU GPL 许可

最初,Torvalds 在自己的许可下发布了 Linux 内核,该许可对商业活动有限制。与内核配合使用的软件是 GNU 项目开发的软件,并基于 GNU 通用公共许可证 (GPL) 授权。Linux 内核的第一个版本 Linux 0.01 包含了 GNU 的 Bash shell 的二进制文件。

在 0.01 版本的发布说明中,Torvalds 列出了运行 Linux 所需的 GNU 软件,并指出 “仅有内核是不够的,你还需要一个 shell、编译器、库等。” 这些工具大多是 GNU 软件,且在 GNU Copyleft 许可证下发布。

1992 年,Torvalds 提议将内核改为在 GNU GPL 许可下发布,并在 0.12 版本的发布说明中宣布了这一决定。同年 12 月,他发布了 0.99 版本,并正式采用了 GNU GPL 许可证。Linux 和 GNU 开发者随后合作,将 GNU 组件与 Linux 内核整合,形成了一个完整的自由操作系统。Torvalds 表示,“将 Linux 采用 GPL 许可证绝对是我做过的最好的决定。”

GNU/Linux 命名争议

“Linux” 这个名称最初是由 Linus Torvalds 仅用于指代 Linux 内核。然而,内核通常与其他软件(尤其是 GNU 项目中的软件)一起使用。这种结合迅速成为 GNU 软件的最流行采用方式。1994 年 6 月,在 GNU 的公告中,Linux 被称为 “免费 UNIX 克隆”。此时,Debian 项目开始将其产品命名为 Debian GNU/Linux。1996 年 5 月,Richard Stallman 在 Emacs 19.31 编辑器的发布中将系统类型从 Linux 重命名为 Lignux,特意强调 GNU 与 Linux 的结合。但很快,这种拼写方式被放弃,改用 “GNU/Linux”。

这种命名法引发了不同的反应。GNU 和 Debian 项目采用了该名称,尽管大多数人仅用 “Linux” 来指代这一结合。

官方吉祥物

1996 年,Torvalds 宣布 Linux 将有一个吉祥物——企鹅。这是因为在选吉祥物时,Torvalds 提到他曾在澳大利亚堪培拉国家动物园和水族馆参观时,被一只小企鹅(小蓝企鹅)咬了。Larry Ewing 根据这个描述提供了今天大家熟知的吉祥物草图。Tux 这个名字是由 James Hughes 提议的,既来自 “Torvalds’ UniX” 的缩写,也指代穿着像企鹅一样颜色的礼服(tuxedo)。

新发展

社区开发

Linux 的开发工作主要由全球的开发者社区完成,他们提交建议改进内核的代码。此外,许多公司也为 Linux 的开发提供帮助,不仅贡献内核的开发,还撰写和分发与 Linux 捆绑的辅助软件。到 2015 年 2 月,超过 80% 的 Linux 内核开发者是有偿工作的。

Linux 不仅由像 Debian 这样的项目发布,也由与公司直接相关的项目(如 Fedora 和 openSUSE)发布。项目成员在各种会议和展会上会面,交换意见。其中规模最大的是德国的 LinuxTag,约 10,000 人每年聚集在此讨论 Linux 及相关项目。

开源发展实验室和 Linux 基金会

2000 年,开源发展实验室(OSDL)成立,作为一个独立的非营利组织,致力于优化 Linux 在数据中心和电信行业的应用。OSDL 也为 Linus Torvalds 和 Andrew Morton(直到 2006 年中期转投 Google)提供开发 Linux 内核的工作场所。2007 年 1 月 22 日,OSDL 与自由标准组织(FSG)合并成立 Linux 基金会,集中推动 Linux 与 Microsoft Windows 的竞争。

公司

尽管Linux是免费提供的,但公司还是从中获利。这些公司,其中许多也是Linux基金会的成员,为Linux的进步和发展投入了大量资源,以使其适合各种应用领域。这包括为驱动程序开发人员提供硬件捐赠,为开发Linux软件的人员提供现金捐赠,以及在公司雇佣Linux程序员。一些例子是戴尔、IBM和惠普,它们在自己的服务器上验证、使用和销售Linux,以及红帽(现在是IBM的一部分)和SUSE,它们维护着自己的企业发行版。同样,Digia通过Qt工具包的开发和LGPL许可来支持Linux,这使得KDE的开发成为可能,并雇佣了一些X和KDE开发人员。

在这里插入图片描述

桌面环境
KDE是第一个高级桌面环境(1998年7月发布的1.0版本),但由于使用了当时专有的Qt工具包,它引起了争议。[34]由于许可问题,GNOME被开发为一种替代方案。[34]两者使用不同的底层工具包,因此涉及不同的编程,并由两个不同的团体赞助,即德国非营利组织KDE e.V.和美国非营利组织GNOME基金会。
截至2007年4月,一位记者估计KDE拥有65%的市场份额,而GNOME的市场份额为26%。[34]2008年1月,KDE 4提前发布,出现了错误,导致一些用户转向GNOME。[35]2011年4月发布的GNOME 3因其有争议的设计变更而被Linus Torvalds称为“邪恶的混乱”。[36]
对GNOME 3的不满导致了Cinnamon的分叉,该分叉主要由Linux Mint开发人员Clement LeFebvre开发。这恢复了更传统的桌面环境,但略有改进。
资金相对充足的发行版Ubuntu设计(并于2011年6月发布)了另一个名为Unity的用户界面,该界面与传统的桌面环境截然不同,并被批评存在各种缺陷[37]和缺乏可配置性。[38]其动机是为台式机和平板电脑提供单一的桌面环境,尽管截至2012年11月,Unity尚未在平板电脑中广泛使用。然而,智能手机和平板电脑版本的Ubuntu及其Unity界面于2013年1月由Canonical有限公司推出。2017年4月,Canonical完全取消了基于手机的Ubuntu Touch项目,以便专注于Ubuntu Core等物联网项目。[39]2017年4月,Canonical放弃了Unity,并从17.10开始在Ubuntu版本中使用GNOME。[40]

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

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

相关文章

机器视觉基础系列四—简单了解背景建模算法

机器视觉基础系列四—简单了解背景建模算法 首先我们应该了解的是背景建模的定义是什么?又有哪些应用场景呢? 背景建模是指通过分析视频序列中的像素值变化情况,从中提取出静态背景部分,并将其用于目标检测、运动跟踪等计算机视觉…

渗透测试导论

渗透测试的定义和目的 渗透测试(Penetration Testing)是一项安全演习,网络安全专家尝试查找和利用计算机系统中的漏洞。 模拟攻击的目的是识别攻击者可以利用的系统防御中的薄弱环节。 这就像银行雇用别人假装盗匪,让他们试图闯…

LeetCode1004.最大连续1的个数

题目链接:1004. 最大连续1的个数 III - 力扣(LeetCode) 1.常规解法(会超时) 遍历数组,当元素是1时个数加一,当元素是0时且已有的0的个数不超过题目限制时,个数加一,若上…

Lumerical学习——优化和参数扫描(Optimization and parameter sweeps)

一、概要介绍 这部分介绍优化和参数扫描项目设定的方法。在有大量数据模拟计算过程中这个特性允许用户使处理方法自动地查找期望的参数值。 ① 创建一个参数扫描任务 ② 创建一个优化任务 ③ 创建一个良率分析任务 ⑤ 打开所选择项目的编辑窗口,编辑其属性…

基于Java+SpringBoot+Uniapp的博客系统设计与实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

嵌入式C++中内存分配基本实现方法

大家好,今天主要给大家分享一下,如何使用计算机中的内存空间进行分配,观察具体现象。 第一:C语言动态空间分配方式 第二:C++中动态内存分配方法 new 可以自动计算数据类型的大小 与 类型的转换 malloc 只能手动进行。 2.new 可以在分配空间的时候初始化 malloc 不行。 第三…

【优选算法】——双指针(上篇)!

🌈个人主页:秋风起,再归来~🔥系列专栏:C刷题算法总结🔖克心守己,律己则安 目录 前言:双指针 1. 移动零(easy) 2. 复写零(easy) 3…

计数型信号量

一,什么是计数型信号量? 计数型信号量相当于队列长度大于1 的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候确定的。 计数型信号量相关 API 函数 函数描述xSemaphoreCreateCounting()使用动态方法创建计数…

工业相机详解及选型

工业相机相对于传统的民用相机而言,具有搞图像稳定性,传输能力和高抗干扰能力等,目前市面上的工业相机大多数是基于CCD(Charge Coupled Device)或CMOS(Complementary Metal Oxide Semiconductor)芯片的相机。 一,工业相机的分类 …

Java 虚拟机实战(基础篇 1万字)

此笔记来自于黑马程序员 基础篇 初识 JVM(Java Virtual Machine) 什么是 JVM JVM 本质上是一个运行在计算机上的程序,他的职责是运行 Java 字节码文件 JVM 的功能 翻译成字节码 即时编译 Java语言如果不做任何优化,性能不如C、C等语言。Java 支持跨…

嬴图 | 图数据库系列 之 图算法与可解释性

2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一种能够深刻影响我们生…

手机怎么玩GTA5?GameViewer远程助你手机畅玩GTA5侠盗飞车

原来手机也可以玩电脑游戏!如果你想随时随地用手机玩GTA5,网易GameViewer远程能帮你实现,它的按键映射功能会让你在体验GTA5时非常好。你不仅可以享受4K蓝光144帧高画质的 驾驶、第三人称射击,还有开放世界探索,还可以…

服务器软件之Tomcat

服务器软件之Tomcat 服务器软件之Tomcat 服务器软件之Tomcat一、什么是Tomcat二、安装Tomcat1、前提:2、下载3、解压下载的tomcat4、tomcat启动常见错误4.1、tomcat8.0 startup报错java.util.logging.ErrorManager: 44.2、java.lang.UnsatisfiedLinkError 三、Tomca…

高级算法设计与分析 学习笔记13 线性规划

注意是线性规划不是动态规划哦 好家伙,这不是凸优化吗? 凸优化标准形式: 先改成统一最大化(凸优化那边怎么是统一最小化?) 原来的x2正负无所谓,但我希望每个x都是有限制的,所以把它改…

MySQL初识

在了解什么是MySQL前,我们先了解一下什么是数据库?? 1. 数据库简介 1.1 什么是数据库 数据库是20世纪60年代末发展起来的⼀项重要技术,已经成为计算机科学与技术的⼀个重要分⽀。数据库技术主要是⽤来解决数据处理的⾮数值计算问…

基于SpringBoot+Vue+uniapp的电影信息推荐APP的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

PCL 点云配准-4PCS算法(粗配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 加载点云数据 2.1.2 执行4PCS粗配准 2.1.3 可视化源点云、目标点云和配准结果 2.2完整代码 三、实现效果 3.1原始点云 3.2配准后点云 PCL点云算法汇总及实战案例汇总的目录地址链接…

猫分鱼干 -算法题解

题目 假如有一群猫排成一行,要分配鱼干,每一只猫都有一个等级值。你作为管理员有很多鱼干但是需要按下边的分配制度分配: 1. 每一只猫至少要分配一斤鱼干,鱼干分配最小单位是斤,必须保证是整数。 2. 猫比他们邻居有更高…

沥川的算法学习笔记:基础算法(1)----快速排序

1.快速排序 快速排序是一种高效的排序算法,它利用了分治的思想。快速排序的基本思想是选择一个基准元素,将数组分成两个子数组,其中一个子数组的元素都小于等于基准元素,另一个子数组的元素都大于等于基准元素,然后对这…

JavaCove部署文档

1. 基础配置 1.1服务器: 2 核 2G 1.2. 一个域名 1.3. 项目地址: gitee:https://gitee.com/guo-_jun/JavaCove github:https://github.com/nansheng1212/JavaCove 2. CentOS 安装 Docker 官方网站上有各种环境下的 安装指南,这里主要介绍…