Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。

Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,可支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux存在着许多不同的版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如:手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

1.1969年以前:Bell,MIT与GE的"Mutics"系统

Bell:贝尔实验室,隶属于AT&T公司

MIT:麻省理工学院

GE:通用电气公司

Mutics:有"多数"的意思,意在让多人同时使用一台主机的资源(多用户)

·60年代初,MIT开发出分时操作系统,最多同时提供30台终端机(技术上的限制)连接一台大型主机,以让更多用户可以同时使用同一台昂贵主机的资源;

·1965年,Bell、MIT与GE共同发起Mutics项目,目的是想让大型主机可以同时提供300台以上终端机来连接大型主机;

·1969年前后,Mutics项目资金缺乏,虽然项目仍然进行,不过Bell最终退出了该项目;

·Mutics项目最终还是成功的,只是没有受到太大的重视(需求问题)。

2.1969年:Ken Thompson的小型File Server System

Thompson:贝尔实验室的成员,当时参与了Mutics项目开发

·Mutics项目培养了优秀的人才,Thompson便是其中一员;

·Thompson从Mutics项目中获得了不少的想法;

·为了移植"太空旅游"游戏,Thompson将Mutics项目中庞大复杂的系统进行简化,在PDP-7主机上以汇编语言写出了一组内核程序、内核工具程序以及一个小的文件系统,被称为Unics(UNIX的原型);

·Thompson开发的文件系统概念:

a.所有的程序或系统装置都是文件

b.不管构建编辑器还是附属文件,所写的程序只有一个目的,就是要有效地完成目标

3.1973年:UNIX正式诞生,Ritchie等人以C语言写出第一个正式UNIX内核

汇编语言:具有专一性,与硬件相关,Unics即用汇编语言所开发

B语言:高级语言,但所编译出来的内核性能不是很好

C语言:高级语言,由Dennis Ritchie将B语言重新改写而成

·Thompson开发的Unics实用性强,在Bell内部广为流传;

·当时计算机机器架构(硬件架构)都不太相同,给Unics移植带来一定的复杂性;

·Ritchie将B语言改写成C语言,并与Thompson合作,用C语言来重新必定与编译Unics的内核;

·发行出UNIX的正式版本;

·由于高级语言的特性,UNIX很容易被移植到不同的机器上(硬件架构不同的主机)。

 

 

 

4.1977年:重要的UNIX分支——BSD诞生

可移植性:UNIX用高级语言开发,理论具有可移植性,即只要取得UNIX的源码,针对不同主机特性加以修改,即可以移植到不同的主机上

Berkeley:加州柏克莱分校

Bill Joy:Sun公司创始人

Berkeley Softsare Distribution:即BSD

FreeBSD:由BSD改版而来,可以安装在x86硬件架构上

·由于UNIX的可移植特性,1973年后,Bell得以与学术界合作开发UNIX(学术界进行学术研究,往往需要使用计算机,而当时缺乏的是一个好的操作系统);

·Bell与Berkeley进行了重要的接触;

·Berkeley的Bill Joy取得UNIX的内核源码后,修改成适合自己机器的版本,增加很多工具软件与编译程序,并将其命名为Berkeley Softsare Distribution,即BSD;

·Bell Joy创建办Sun公司,以其修改的内核(BSD)来进行自己的商业UNIX版本的开发。

5.1979年:重要的System V架构与版权声明

协议:这里指硬件架构的通用生产协议,当时计算机硬件公司没有该概念,因此所生产的硬件需要合适的UNIX系统

x86:早期的个人计算机架构,该架构下的CPU没有多任务的作业能力

纯种的UNIX:指BSD以及System V

·UNIX高可移植性、强大性能、无版权纠纷,商业公司开发UNIX操作系统,推出自家的主机搭配"自家"的UNIX操作系统;

·这些公司开发的硬件没有遵循统一的协议(当时没有),开发的UNIX操作系统及相关软件只能在自家硬件架构的主机上运行;

·这些公司有:AT&T、IBM、HP、DEC、Sun、Cray等;

·UNIX强调多用户、多任务,由于x86的特性,没有人愿意移植UNIX到x86架构主机上;

·AT&T推出的System V第七版UNIX,支持x86架构的个人计算机;

·AT&T出于商业考虑,发行其第七版UNIX时,提出"不可对学生提供源码",即要将UNIX版权收回。

6.1984年之一:x86架构的Minix操作系统诞生

Minix:迷你的UNIX操作系统

·System V每七版的版权声明,影响了教导UNIX内核源码学问的Andrew S. Tanenbaum教授

·为了教学的方便,谭邦宁教授与UNIX兼容的迷你UNIX操作系统Minix;

·Minix只能通过磁盘/磁带购买,但是提供Minix源码;

·谭邦宁教授没有继续开发Minix,只是点到为止。

7.1984年之二:GNU项目与FSF基金会成立

Richard Mathew Stallman:史托曼

GNU项目发起人,起草GPL

GNU项目:创建一个自由、开放的UNIX操作系统(Free UNIX)

GPL:,General Public License,GNU的通用公共许可证,避免GNU自由软件被商业利用而发起

AI Lab.:黑客圈中出名的人工智能实验室,1971年史托曼进入该实验室

Lisp:MIT开发的操作系统,属于专利软件,史托曼早期在Lab中即使用其来开发软件

Free Software Foundation:即FSF,自由软件基金会--自由分享的环境

·史托曼早年进入AI Lab.中,强调"分享",对于软件没有专利的困扰;

·AI Lab.的管理层问题,导致优秀黑客离开并加入商业公司开发软件;

·史托曼坚持分享、自由而留下来,但意识到需要成立一个开放的团体来共同努力。

--使用UNIX开发阶段

·实验室硬件的更换,使得史托曼放弃了Lisp,并得以接触UNIX;

·UNIX在那时虽然也是专利软件,但相比Lisp,其在架构上还是比较开放的;

·史托曼将在Lisp上写的软件移植到UNIX上,并公布源码。

-GNU项目的推展

·1984年史托曼开始GNU项目,旨在创建一个自由、开放的UNIX操作系统;

·由于当时只用史托曼一个人,并且创建操作系统并不容易,困难重重;

·史托曼采取"先开发UNIX操作系统上的软件"的策略,这些软件称为GNU软件;

·开发出Emacs:程序编辑器(非编译器),进行程序语法的检查;

·为了开发出UNIX下的编译程序(非常重要),史托曼利用Emacs出售赚来的钱,成立FSF;

·FSF请更多工程师和志愿者来编写软件;

·进而开发的重要软件:Gcc,C语言的编译程序

8.1985年:GNU的通用公共许可证——GPL

·起草GPL,是为了避免GNU自由软件被他人利用而成为专利软件

·GNU项目的重要自由软件:

Emacs

GNU C(GCC)

GNU C Library(GLIBC)

Bash shell

·这些软件使得软件开发者可以更好地进行软件开发工作,从而壮大了自由软件团体;

·这些软件仍然是在那些授权的UNIX平台上工作,当时并没有"自由的UNIX内核"存在,直到Linux出现。

9.1988年:图形接口XFree86项目

XFree86:,开发用户图形接口的非营利性组织,即X Window System + Free + x86的简称

·用户图形接口需求日益加重;

·MIT在1984年已与第三方合作开发出X Window System;

·MIT在1988年成立非营利性组织XFree86。

10.1991年:荷兰大学生Linus Torvalds的一则消息

Linus Torvalds被称作Linux之父,著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。他利用个人时间及器材创造出了这套当今全球最流行的操作系统内核之一,现受聘于开放源代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。

·1991年,Torvalds在BBS上发布消息,称以bash,gcc等工具写了一个小小的内核程序,并可以在Intel的386机器上面运行。

企鹅的来源

1994年发表Linux正式核心1.0的时候,大家要Linus Torvalds想一只吉祥物,他想起曾经在澳大利亚的一个动物园里被企鹅咬过,干脆就以企鹅来当吉祥物了!

更容易接受的说法是:企鹅代表南极,而南极又是全世界共有个一块陆地,不属于任何国家。也就是说Linux不属于

 

 

 

 

 

任何商业公司,是全人类每个人都可以分享的一项技术成果。

 

 

 

一张Linux基础思维导图

内容参考自:

https://zh.wikipedia.org/wiki/Linux#%E6%AD%B7%E5%8F%B2

https://yq.aliyun.com/articles/40702

https://blog.csdn.net/liang19890820/article/details/51868167

https://raw.githubusercontent.com/phith0n/Mind-Map/master/Linux%20Security%20Coaching.png

 

Linux学习之一-从三个重要人物的故事和一张思维导图说起的更多相关文章

  1. Linux学习之CentOS(三)--初识linux的文件系统以及用户组等概念

    Linux学习之CentOS(三)--初识linux的文件系统以及用户组等概念 进入到了Linux学习之CentOS第三篇了,这篇文章主要记录下对linux文件系统的初步认识,以及用户组.用户权限.文 ...

  2. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  3. 【转载】跟着9张思维导图学习JavaScript

    原文:跟着9张思维导图学习JavaScript 学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将 po 出我收集的 9 张 JavaScript相关的思维导图(非原创). 思维导图小ti ...

  4. 10张思维导图带你学习Java​Script

    10张思维导图带你学习Java​Script   下面将po出10张JavaScript相关的思维导图. 分别归类为: JavaScript变量 JavaScript运算符 JavaScript数组 ...

  5. 【转载】一文总结学习 Python 的 14 张思维导图

    本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库,后续会发布相应专题的文章). 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典 ...

  6. 一文总结学习 Python 的 14 张思维导图

    本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库,后续会发布相应专题的文章). 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典 ...

  7. 跟着9张思维导图学习Javascript js 关键字和保留字 css3中的BFC,IFC,GFC和FFC

    跟着9张思维导图学习Javascript   学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将 po 出我收集的 9 张 javascript 相关的思维导图(非原创). 思维导图小ti ...

  8. Linux学习之Centos(三)------系统文件目录及含义详解

    Linux学习之Centos 之三------文件目录及含义 在了解了每个文件的相关种类与属性,以及了解了如何更改文件属性/权限的相关信息后,再来要了解的就是, 为什么每套Linux distribu ...

  9. 跟着9张思维导图学习Javascript

    学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将 po 出我收集的 9 张 javascript 相关的思维导图(非原创). 思维导图小tips: 思维导图又叫心智图,是表达发射性思维的 ...

随机推荐

  1. shell,perl,python的区别

    shell+sed+awk严格的讲, shell不是一种编程语言, 但是shell有自己的控制流结构(判断,循环,选择),运算以及函数等编程语言特性, 加上shell命令组织在一起构成脚本, 能够完成 ...

  2. LinuxMint下JDK+Tomcat+Mysql+Eclipse javaEE安装

    网上查了很多方法,总结下比较简单的做法. 本人使用的系统版本为64位LinuxMint18,cinnamon桌面环境,预装Openjdk1.8.开发使用版本为oracle的1.7版本jdk. 1 jd ...

  3. 学习C++ -> 向量(vector)

    一.向量的介绍 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template Lib ...

  4. Html5学习进阶二 画布

    canvas 元素用于在网页上绘制图形. 什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canv ...

  5. Cow Dance Show

    题目大意: 经过几个月的排练,奶牛们基本准备好展出她们的年度舞蹈表演.今年她们要表演的是著名的奶牛芭蕾——“cowpelia”. 表演唯一有待决定的是舞台的尺寸.一个大小为K的舞台可以支持K头牛同时在 ...

  6. glRotatef 转动方向

    http://blog.sina.com.cn/s/blog_3c6889fe0100qko6.html glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLf ...

  7. gluPerspective(解释得很好)

    http://www.cppblog.com/COOOOOOOOL/archive/2009/12/28/104255.html 函数原型gluPerspective(GLdouble fovy,GL ...

  8. 和菜鸟一起学c之gcc编译过程及其常用编译选项【转】

    转自:http://blog.csdn.net/eastmoon502136/article/details/8162626 版权声明:本文为博主东月之神原创文章,未经博主允许不得转载. 上篇文章,知 ...

  9. kubernetes 搭建集群外部ip服务

    nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: webapp labels: app: webapp spec: containers: ...

  10. kubernetes 搭建集群内服务

    nginx-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: webapp spec: replicas: 2 te ...