Linux是什么

文章目录

  • Linux是什么
  • Linux之前Unix发展史
    • Multics
    • Unics
    • Unix
    • UNIX分支--BSD
    • UNIX分支--System V
    • Minix
    • GUN计划
    • GPL
    • XFree86
    • Linux
  • 开源软件和闭源软件
    • 开源软件
    • 闭源软件/专利软件(copyright)
  • Linux的内核版本
  • Linux发行版

Linux是什么

Linux到底是操作系统还是应用程序呢?Linux其实就是一个操作系统!

Linux就是内核与系统调用接口那两层,应用程序并不算Linux

image-20240220185451847

操作系统(Operating System,缩写:OS)主要在管理与驱动硬件,因此必须要能够管理内存、管理设备、负责任务管理以及系统调用等。因此,只要能够让硬件准备妥当的情况下,就是一个普通的操作系统

Linux之前Unix发展史

早在Linux出现之前就有一个相当稳点而成熟的操作系统存在,那就是Linux的大哥UNIX

image-20240221193958508

Multics

1969年以前:一个伟大的梦想-Bell,MIT与 GE的“Multics”系统

在1969年以前的早期计算机时代,普通人很难接触计算机,除了一些军事、高科技或学术单位使用。因为那时的计算机操作系统不像现在这么方便,只能进行批处理型操作,需要把要输入的信息打在读卡纸上面打洞,然后将读卡纸插入读卡机并等待计算机运算完毕。而且这时的计算机主机很少,需要多人排队等待使用。所以,在那个时候想要使用计算机是件很麻烦的事情。

1960年代初期麻省理工学院(MIT)开发了兼容分时系统(CTSS)后,大型主机可以通过提供终端来连接多个用户,多个用户也可以通过终端同时连接到主机上使用计算机,让计算机资源得到更好地利用。

架构图如下:

image-20231117103335502

1964年由贝尔实验室(Bell)、麻省理工学院(MIT)和通用电器公司(GE)共同发起了Multics计划,目的是让大型计算机提供 300 个以上的终端用于联机使用。但是,到了1969年前后,计划进度比较慢,钱不够,所以贝尔实验室退出了计划的研究工作。虽然计划还在继续研究,但贝尔实验室退出了该计划的研究工作。

`注:最终Multics还是成功开发出了它们的系统,完整历史参考 https://www.multicians.org/ 网站内容。

Unics

1969 年: Ken Thompson 的小型 file server system

1969年,贝尔实验室退出了Multics计划,认为这个计划不可能成功。有些人从这个计划中得到了启发,其中包括Ken Thompson(肯·汤普逊)。

在贝尔实验室退出Multics后,习惯使用Multics的工程师们无法继续使用该系统。Ken Thompson为Multics写了一个名为“Space Travel(太空旅行)”的游戏。为了继续开发这个游戏,他开始重新编写一个操作系统。Ken在DEC推出的PDP-7上用汇编语言写了一组内核程序、内核工具程序和一个小文件系统,这就是Unix的雏形。Thompson简化了Multics庞大的系统,因此他的朋友戏称这个系统为Unics(Unics表示单一,与Multics相反)。Ken最初的目标是游戏开发,而不是操作系统,因此他接受了朋友们给系统起的这个名字。

Ken Thompson的这个文件系统有两个重要概念:

  • 所有程序或系统设备皆文件
  • 不管程序本身还是附属文件,所写的程序只有一个目的,且要有效的完成目标

Unix

1973年: UNIX 的正式诞生,Dennis Ritchie 等人用 C 语言写出第一个正式 UNIX 内核

因为 Thompson 写的 Unics 很实用,贝尔实验室内部流传甚广。但是由于当时计算机架构不同,每次安装到不同的机器都得重新编写汇编语言,非常不方便。

于是,Ken Thompson和Dennis Ritchie合作,想用高级程序语言重新编写 Unics,最初使用的是 B 语言,但是 B 语言编译后的内核性能并不理想。Ritchie将 B语言改写成C语言,并用C语言重新编写和编译了Unics内核。最终,这个内核版本被命名为 UNIX,并正式发布了。这个改变也使得UNIX很容易被移植到不同的机器上面。

UNIX分支–BSD

1977年由Bill Joy发布BSD(Berkeley Software Distribution)这些称为UNIX-like的操作系统

虽然贝尔实验室属于AT&T,但是AT&T此时对于Unix是采取较为开放的态度,Unix是以C语言写程的,具有可移植性。所以在1973年后,Unix与学术界合作开发。最重要的就是与加州伯克利大学的合作。

伯克利大学的Bill Joy(比尔·乔伊)取得了Unix的内核源代码后,修改成适合自己机器的版本,并且增加了很多工具软件编译器(如Vi编辑器,TCP/IP等),最终将他命名为(Berkeley Software Distribution,简称BSD)

UNIX分支–System V

System V架构与版权声明

由于Unix具有可移植性和强大性能,以及缺乏版权纠纷,许多公司开始开发自己的Unix操作系统,并与他们的硬件配套推出自家的主机。然而,在早期,由于缺乏标准化协议,每家计算机公司的硬件都不相同,因此为各自的硬件开发适配的Unix系统成为必要,早期的Unix主要与服务器或大型工作站相关联。

1979年,AT&T推出了System V第七版Unix,这一版本的重要之处在于它支持X86架构的个人计算机,使得System V可以在个人计算机上运行。 由于商业考量,AT&T决定收回Unix的版权。特别提到“不可对学生提供源代码”的严格限制。

Minix

1984年:x86架构的Minix操作系统诞生

在1984年,Unix系统的版权仍受AT&T公司严密控制,明确规定不允许提供给学生使用。荷兰一位大学教授Andrew Stuart “Andy” Tanenbaum(安德鲁·斯图尔特·塔能鲍姆)为了给学生上课,仿照Unix系统编写了一款名为Minix的操作系统。为避免版权问题,Andrew在编写过程中完全不参照Unix内核源代码。

1986年,他完成了Minix的内核程序,并发行了相关书籍。由于Minix最初只是用于课堂教学,没有大规模商业推广的打算,因此实际使用Minix操作系统的人数并不多。

GUN计划

GUN计划目标

1984年由Richard Mathew Stallman(理查德 马修斯 托曼)提倡GUN(名称来自GNU’s Not Unix!)计划,这个计划目的是:建立一个自由开放的UNIX操作系统。

软件开发策略

鉴于操作系统开发复杂,Stallman决定从开发可以在UNIX系统上运行的小程序开始,而不是直接构建整个操作系统。斯托曼参考现有UNIX软件,开发出功能相同的自由软件,避免看其他软件源代码以免侵权。

发展自由软件

GNU软件逐渐广为人知,人们开始了解并使用这些免费的GNU软件,提升了GNU计划的知名度。 为了提高GNU计划的曝光度,斯托曼开始开发C语言编译器,即著名的GNU C Compiler(gcc)。他希望通过编写一款优秀且高性能的C语言编译器来吸引更多的人关注GNU计划。此时,C语言的编译器大多数都是专有软件,如果gcc编译器能够表现出色,那么GNU计划就有更大的机会为大众所接受。 然而,开始编写gcc并不顺利。为了继续推动GNU计划,斯托曼转而将他之前已经开发好的Emacs编辑器写成可以在UNIX上运行的软件,并公开了源代码。Emacs是一款功能强大的程序编辑器,可以在程序编写过程中进行语法检查,从而减少程序员的调试时间。由于Emacs的优秀表现,很多人直接向斯托曼购买了该软件。

成立FSF

Stallman通过以磁带方式销售Emacs软件来赚取一些资金,然后全力以赴地编写其他软件,并于1985年成立了自由软件基金会(Free Software Foundation,FSF),邀请更多的工程师和志愿者参与自由软件的开发。最终,他成功完成了gcc编译器,这比Emacs编辑器还要有助于推动GNU计划的发展。此外,他还编写了更多可供调用的C函数库(GNU C Library)以及用于操作系统的基本接口的Bash shell。这些工作大致在1990年左右完成。

GPL

GUN的通用公共许可证

在1985年,为了避免GNU开发的自由软件被私有化,Richard Stallman与律师起草了著名的通用公共许可证(GPL),并称其为copyleft的概念。

下图来自百度百科

image-20240221151811718

GNU开发的重要软件,例如Emacs、GNU C Compiler(gcc)、GNU C Library(glibc)和Bash shell等,为许多软件开发者提供了基础工具,帮助壮大了自由软件团体。

然而,尽管这些软件为GNU计划做出了贡献,但在当时的环境下,仍缺少一个自由的UNIX内核,导致这些软件只能在专有的UNIX平台上运行。 事实上GNU开发的自主内核称为Hurd,是一个设计相当先进的内核。由于开发过程中对系统要求过于严格,导致推出时间一再延后。因此,直到Linux内核的出现才实现了GNU计划建立自由UNIX操作系统的目标。Linux内核的出现填补了GNU计划中缺少的自由UNIX内核这一空缺。

GPL是什么?为什么要将自由软件使用GPL这个版权声明?

斯托曼强调了GPL中的"Free"一词,并指出自由软件指的是具有自由权力而非免费的软件。

自由软件可以自由执行、复制、再发行、学习、修改和强化自由软件。通过使用GPL版权声明,软件成为自由软件,具备取得软件与源代码、复制、修改和再发行的特点。

使用自由软件时,你可以根据自己的需求自由使用、复制和修改,并可以将修改过的程序自由发行,并向社区回馈。然而,你不能修改授权一个GPL授权的自由软件,也不能单纯销售自由软件。销售自由软件需要提供售后服务和相关手册,这些需要工本费。很多Linux开发商销售的是售后服务,而非自由软件本身。自由软件工作者维生的主要方式是通过提供服务收费。所以,自由软件确实具有商业空间。

GPL对于自由软件的作者有何优点?

  • 软件安全性能较好
  • 软件运行性能较好
  • 软件除错时间较短
  • 贡献的源代码永远都存在

因为计软是提供源代码的自由软件,那么你的程序代码将会有很多人帮你检查,如此一你来,程序的漏洞与程序的优化将会进展的很快。

XFree86

1988年:XFree86诞生,即x86版UNIX上的GUI系统

1988年,为满足不断增长的图形用户界面(Graphical User Interface, GUI)需求,MIT与其他第三方合作发布了XWindow System,并于同年成立了非营利性质的XFree86组织。XFree86实际上是XWindow System、Free和x86的组合名称。XFree86的GUI接口在1994年发布的Linux内核1.0版本中整合到了Linux操作系统中。

Linux

1991年:Linux诞生,Linus Torvalds发布的运行在386机器上的内核程序

芬兰赫尔辛基大学的在校生Linus Torvalds便是其中一员,他在1991年10月使用bash解释器和gcc编译器等开源工具编写出了一个名为Linux的全新的系统内核,并且在技术论坛中低调地上传了该内核的0.02版本。该系统内核因其较高的代码质量目基于GNU GPL许可证的开放源代码特性,迅速得到了GNU源代码开放计划和一大批黑客程序员的支持,随后Linux正式进入如火如荼的发展阶段。

开源软件和闭源软件

开源软件

什么是开源?

开源软件指的是在软件发布时将源代码公开并与软件一同提供的软件。源代码是程序员编写但尚未被编译的代码。

从自由软件到开源软件

1998年成立的开放源代码促进会(Open Source Initiative)提出了“开放源代码”(open source)这一术语,以解决“自由软件”(free software)一词中存在的歧义。自由软件一词中的“free”既可以表示“自由”的意义,也可以表示“免费”的含义,容易引起误解。因此,开放源代码这一术语更加准确地传达了其核心概念。需要注意的是,并非所有可读取源代码的软件都可以被称为开源软件。该软件的授权必须要符合下面的基本需求,才可以算是开源软件。

  • 公布源代码并允许用户修改和编译程序代码
  • 可以再发布:允许任意分发和销售软件的副本,且程序代码可成为其他软件的组件之一作者不该宣称具有拥有权或收取其他额外费用。
  • 允许修改或衍生作品,并使用相似的授权再发布
  • 允许以不同的名称或编号发布
  • 不得限制个人或团体的使用权;
  • 不得限制特定领域的应用,例如商业行为或学术研究等
  • 不得限制程序代码在不同产品中的应用
  • 不得具有排他条款,例如限制软件不能用于教育类的研究等

常见的开放源代码授权有哪些?

  • GPL
  • BSD
  • MIT
  • Apache
  • LGPL

闭源软件/专利软件(copyright)

什么是闭源软件

闭源软件(也称为专有软件或专利软件)与开源软件不同,它不公开源代码,仅提供可执行的二进制程序。

闭源软件优缺点

闭源软件的优点包括有专人维护和支持,用户无需修改代码。然而,闭源软件的缺点是用户的灵活度受限,无法按照自己的需求修改程序样式。此外,如果存在恶意软件或安全漏洞,修复问题可能需要相当长的时间。

Linux的内核版本

Linux内核下载地址:https://www.kernel.org/

Linux内核版本编号类似如下样子

3.10.0-1160.108.1.el7.x86_64
主版本.次版本.发布版本-修改版本
  • “3”:这是Linux内核的主要版本号。
  • “10”:这是次要版本号,指示了内核功能的更新程度。
  • “0”:这是发布版本号,表明内核发布的修订数量。
  • “1160.108.1”:修改版本
  • “.el7”:表示适用于RHEL 7版本
  • “x86_64”:CPU结构,64位

Linux的内核版本的种类分为稳定版开发版,主要是以次版本数字的奇偶性来区分,偶数代表稳定版本,奇数代表开发版本。

Linux发行版

要区分Linux内核与Linux发行版的不同

  • Linux内核由Linus Torvalds及其他贡献者开发和维护,提供硬件抽象层、磁盘、文件系统控制及多任务功能的系统核心程序
  • Linux发行版是我们常说的Linux操作系统,也就是由Linux内核+软件+工具+可完全安装程序的东西,我们称之为Linux发行版或Linux发行套件系统

image-20240221174706581

常见的Linux发行版有:

  • Deepin(国产操作系统)

  • Red Hat

  • SUSE

  • Ubuntu

  • Fedora

  • Debian

官方网址

Deepin: https://www.deepin.org/

Red Hat: https://www.redhat.com/

SUSE: https://www.suse.com/

Fedora: https://getfedora.org/

CentOS: https://www.centos.org

Debian: http://www.debian.org/

Ubuntu: http://www.ubuntu.com/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用nbsp设置空格

想要实现上面效果&#xff0c;一开始直接<el-col :span"8" >{{ item.name }} </el-col> 或者<el-col :span"8" >{{ item.name }}</el-col>或者<el-col :span"8" >{{ item.name }}</el-col> 都无…

基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论 首先需要两个页面支持&#xff0c;分别是角色管理和员工管理&#xff0c;其中角色管理对应的是角色和权限的配合&#xff0c;员工管理则是将登录的员工账号和员工所处的角色进行对应&#xff0c;即通过新增角色这个概念&#xff0c;让权限和员工并不直接关联&a…

【前端】前端三要素之DOM

写在前面&#xff1a;本文仅包含DOM内容&#xff0c;JavaScript传送门在这里&#xff0c;BOM传送门在这里。 本文内容是假期中刷的黑马Pink老师视频&#xff08;十分感谢Pink老师&#xff09;&#xff0c;原文保存在个人的GitLab中&#xff0c;如果需要写的网页内容信息等可以评…

ArcGIS中查看栅格影像最大值最小值的位置

如果只是想大概获取栅格影像中最大值最小值的位置进行查看&#xff0c;可以不用编写程序获取具体的行列信息&#xff0c;只需要利用分类工具即可。 假设有一幅灰度影像数据&#xff0c;如下图所示。 想要查看最大值2116的大概位置在哪里&#xff0c;可以右击选择图层属性&…

缩小ppt文件大小的办法

之前用别人模版做了个PPT&#xff0c;100多M,文件存在卡顿问题 解决办法&#xff1a; 1.找到ppt中哪个文件过大&#xff0c;针对解决 2.寻找视频/音频文件&#xff0c;减少体积 3.字体文件是不是过多的问题。 一、文件寻找的内容步骤&#xff1a; 步骤&#xff1a; 1.把p…

linux系统内核升级

1.查看旧版本内核 2.导入密钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 3.安装yum源 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm4.启用elrepo-kernel仓库并安装最新内核版本 yum --enablerepoelrepo-kernel install …

据库异常sql耗尽CPU资源

问题描述 核心系统出现数据库卡顿&#xff0c;严重影响前端业务响应&#xff0c;节点一数据库服务器CPU几乎耗尽&#xff0c;多次重启数据库依然没有效果&#xff0c;仔细诊断初步判定业务SQL执行效率不佳所致&#xff0c;特别是SQL_ID为1hwgwzgw0vfrc的SQL&#xff0c;半小时…

5GC 网元AMF、SMF、AUSF、UPF、PCF、UDM、NRF、NSSF、NEF介绍

文章目录 1、AMF2、SMF3、AUSF4、UPF5、PCF6、UDM7、NRF8、NSSF9、NEF10、DN 1、AMF Access and Mobility Management Function&#xff0c;接入和移动性管理功能&#xff0c;执行注册、连接、可达性、移动性管理。 为UE和SMF提供会话管理消息传输通道&#xff0c;为用户接入…

C语言读取 ini 配置文件,修改/添加键值对

C语言读取 ini 配置文件&#xff0c;修改/添加键值对 C语言读取 ini 配置文件&#xff0c;对section中的键值对进行修改/添加&#xff0c;如果section不存在&#xff0c;则在末尾将新的section/key/value 添加进去。 一、了解什么是INI文件&#xff1f; ini 文件是Initializ…

人工智能|深度学习——基于数字图像处理和深度学习的车牌定位

1.研究背景及研究目的和意义 车牌识别Vehicle License Plate Recognition VLPR) 是从一张或一系列数字图片中自动定位车牌区域并提取车牌信息的图像识别技术。车牌识别 以数字图像处理、模式识别、计算机视觉等技术为基础&#xff0c;是现代智能交通系统的重要组成部分&#xf…

ABAQUS中创建主视图命令菜单和工具条

在ABAQUS中操作模型时&#xff0c;经常需要选择边界上的元素&#xff0c;如果使用框选则需要将模型摆正&#xff08;处于一个主视图角度&#xff09;&#xff0c;虽然ABAQUS提供了6个主视图工具按键&#xff0c;但实际使用中还有有一些不便的&#xff1a; ABAQUS提供的视角只是…

复高斯分布的随机变量的模方的分布

文章目录 服从复高斯分布的随机向量的模方的分布问题的源头矩阵服从复高斯分布向量服从复高斯分布杂记需要与上面向量的分布区别开的是&#xff1a;服从复高斯分布的随机变量的和的平方的分布 服从复高斯分布的随机向量的模方的分布 已知 x ∈ C L 1 \mathbf{x} \in \mathbb{…

【CVE-2024-21626】容器逃逸漏洞修复

哈喽大家好&#xff0c;我是咸鱼。 好久不见&#xff0c;最近有一个很火的 CVE——runc 容器逃逸漏洞。年前的时候我们已经在测试环境进行了相关操作打算年后线上进行修复。 因为今天咸鱼才开工&#xff0c;所以文章也就拖到了现在 &#x1f603; 漏洞介绍 简单来讲&#xf…

怿星科技测试实验室(EPT LABS)服务介绍

据中国汽车工业协会数据&#xff0c;2023年我国汽车产销量分别达3016.1万辆和3009.4万辆&#xff0c;年产销量双双创历史新高&#xff0c;汽车行业进入了新时代。新汽车时代下的OEM竞争更激烈&#xff0c;汽车电子架构更复杂&#xff0c;研发周期更短&#xff0c;软件迭代更快&…

汽车线束中的螺栓拧紧有哪些要求——SunTorque智能扭矩系统

在现代汽车的电气系统中&#xff0c;线束是连接各个电器元件的桥梁&#xff0c;承担着传输电能、信号以及实现控制功能的重要任务。而在线束的装配过程中&#xff0c;螺栓的拧紧技术是确保线束固定、连接可靠的关键环节。SunTorque智能扭矩系统和大家一起探讨汽车线束中的螺栓拧…

Java中的关键字

✨✨ 所属专栏&#xff1a; Java基石&#xff1a;深入探索Java核心基础✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; Java中的关键字是一些具有特殊含义的单词&#xff0c;它们在语法中有特定的用途&#xff0c;不能用作标识符&am…

响应式编程上下文

标题响应式编程代码示例 代码示例 多个消费者订阅了同一个生产者 package com.yaeher.infrastructure.userinfovault.user; import org.junit.jupiter.api.Test; import reactor.core.publisher.Flux; import reactor.core.scheduler.Scheduler; import reactor.core.schedul…

基于ImageSharp实现趣味横生的点选验证

引言 随着安全需求的不断提升&#xff0c;传统的文本验证码已经无法满足防止机器自动识别和攻击的要求。点选式验证码作为一种交互式的验证手段&#xff0c;因其更难被自动化脚本破解而逐渐受到欢迎。利用开源图像处理库SixLabors.ImageSharp来实现点选式验证码功能。 ImageS…

APP 有漏洞被测要下架,怎么处理?

事情的经过是这样的&#xff1a; 1&#xff1a;学员公司测试的 APP 发现有漏洞&#xff0c;被要求下架 2&#xff1a;他被公司要求去查询 APP 哪里有漏洞 3&#xff1a;他来寻求帮助&#xff0c;推荐几款安全测试扫描漏洞的问题。 事情的梳理&#xff1a; 1:我们看了他的 …

UE5 C++ UENUM 和 USTRUCT

一.首先在APawn里声明 UENUM 和 USTRUCT。UENUM 有两种定义方式 一种是使用命名空间&#xff1a; 还有是继承uint8&#xff1a; 通过申明class类 别名来替代 USTRUCT的定义 上面的第二种有类似但仍然有很多的差异&#xff1a; 首先要有GENERATED_USTRUCT_BODY()这个函数 并且…