首页 > 系统相关 >Linux历史

Linux历史

时间:2024-10-16 20:21:28浏览次数:3  
标签:历史 操作系统 GNU Linux Unix 内核 Torvalds

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),它们似乎工作正常。这意味着几个月内我可能会有一些实用的东西,我想知道大多数人希望有哪些功能。任何建议都欢迎,不过我不保证会实现它们

标签:历史,操作系统,GNU,Linux,Unix,内核,Torvalds
From: https://blog.csdn.net/Interview_TC/article/details/142936615

相关文章

  • 第2课笔记 linux系统指令
    测试分类linux虚拟机搭建linux命令:一、linux介绍1、Linux是一个免费、开源的操作系统,能多用户、多任务、支持多线程和多CPU的操作系统,相对windows更加稳定,在unix系统的基础上开发的系统;注解:(1)免费:不要钱(2)源代码公开(3)多用户:可以在不同用户操作(4)多任务:同时执行多个任务......
  • 【DBA Part03】国产Linux上Oracle RAC安装-升级-ADG-迁移
    本阶段内容如下:01.国产统信UOS-Oracle19c安装配置02.国产龙蜥AnolisOS-Oracle19cRAC集群安装配置03.Linux-Oracle11gR2数据库升级到Oracle19C04.Linux-Oracle11gR2RAC数据库升级到Oracle19cRAC05.Linux-Oracle19cADG容灾配置(1+1+1级联)06.OracleXTTS跨平台数据库迁移0......
  • 【DBA Part01】国产Linux上安装Oracle进行数据迁移
    内容如下:1.1.生产环境RHEL/OELLinux8+Oracle11gR2安装配置1.2.国产麒麟操作系统+Oracle11gR2安装配置1.3.国产麒麟操作系统+Oracle11gR2RAC集群安装配置1.4.Oracle11gR2迁移到国产麒麟操作系统(单机/RAC)本阶段课程项目需求说明:某单位原有两套核心业务fgeduwx:itpux-com,运......
  • linux命令
    一、linux介绍1、Linux是一个免费、开源的操作系统,能多用户、多任务、支持多线程和多CPU的操作系统,相对windows更加稳定,在unix系统的基础上开发的系统;注解:(1)免费:不要钱(2)源代码公开(3)多用户:可以在不同用户操作(4)多任务:同时执行多个任务(5)多线程:支多个线程同时工作(6)多cpu:系......
  • Linux命令(10.16)
    linux命令ifconfig查看IP地址serviceiptablesstop关闭防火墙serviceiptablesstart开启防火墙serviceiptablesrestart重启防火墙serviceiptablesstatus查看防火墙状态ssh+ip地址链接虚拟机su切换用户名su+root切换超级用户cat/etc......
  • 【Linux】解锁线程基本概念和线程控制,步入多线程学习的大门
    目录1、线程初识1.1线程的概念1.2.关于线程和进程的进一步理解1.3.线程的设计理念1.4.进程vs线程(图解)1.5地址空间的第四谈2.线程的控制:2.1.关于线程控制的前置知识2.2创建线程的系统调用:这个几号手册具体代表的什么含义?2.3.线程终止我们怎么没有像进程一样获取线程......
  • Linux系统编程——进程标识、进程创建
    一、进程标识(pid)  每个进程都有一个非负整数形式的唯一编号,即PID。PID在任何时刻都是唯一的,但是可以重用,当进程终止并被回收以后,其PID就可以为其它进程所用。进程的PID由系统内核根据延迟重用算法生成,以确保新进程的PID不同于最近终止进程的PID。1、特殊的进程标......
  • 关于Linux shell的简单分享
    背景前两天看到有人分享说,谷歌程序员至少要会3种语言,这要求倒也不过分。一个强类型、一个弱类型,一个工具型语言,刚好三个。想着随便更新点东西,就写几点关于工具shell语言的经验分享。在安装、部署、扩容、升级等重要场景中,Bash的方便性不言而喻。但我始终提醒大家,对代码保持敬......
  • Linux多进程通信--管道、消息队列、共享内存
    转载至https://www.cnblogs.com/LUO77/p/5816326.html多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(childprocess)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程id。将子进程id返......
  • linux 为普通用户配置sudo权限
    linux为普通用户配置sudo权限  目录一.关于sudo二.sudo的工作过程三.为普通用户配置sudo权限3.1方法一:把普通用户的附属组更改为wheel,使其具有sudo权限(推荐)3.2方法二:修改/etc/sudoers文件,使普通用户具有sudo权限四./etc/sudoers配置文件详解 一.关于sud......