1. linux是什么?

"Hello everybody out there using minix——I'm doing a (free) operating system" 


在1991年的八月,网络上出现了一篇以此为开篇话语的帖子. 这是一个芬兰的名为Linus Torvalds的大学生在为自己新编写的操作系统寻找志同道合的合作伙伴。一个类似minix、可运行在386上的操作系—— Linux的不平凡路程就这样开始了!

众所周知的,Linux的核心原型是1991年由托瓦兹(Linus Torvalds)写出来的,但是托瓦兹为何可以写出Linux这个操作系统? linux和unix的区别是什么?为什么Linux的发展可以这举迅速?又为什么Linux是免费的? 目前众多的Linux distributions又是什么?

2. 不得不说的, Linux之前,Unix的历史!

早在Linux出现之前的二十年(大约在1970 年代),就有一个相当稳定而成熟的操作系统存在了! 那就是Linux的老大哥『Unix』了!
1) Unix原型的诞生
1969年, 贝尔实验室的Ken Thompson, 以汇编程序(Assembler)写出了一组核心程序,同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是Unix的原型! 当时同实验室的朋友都戏称这个系统为:Unics。(当时尚未有Unix这个名称)
2) 1973年, Unix的正式发行, C语言的诞生
Unics操作系统太好用了, 在贝尔实验室内部非常受欢迎. 但是汇编的专一性太强了, 每次要安装到不同的机器都得要重新编写汇编代码. 
于是Thompson与Ritchie(c语言之父, unix之父)合作想将Unics改以高阶程序语言来撰写。当时现成的高阶程序语言有B语言, 但是由B语言所编译出来的核心性能不是很好。于是伟大的C语言就在这种情况下诞生了! 
Dennis Ritchie先将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心,最终在1973年发行出了Unix的正式版本!

3) 1979年:重要的架构与版权宣告
出于商业的考虑,AT&T(贝尔实验室是隶属于美国电信大厂AT&T公司的)在1979年发行的第七版Unix的同时,也收回了Unix的版权. 特别提到了『不可对学生提供原始码』的严格限制!
4) 1986年, Minix(Mini的Unix)系统完成
对于1979年的版权声明,影响最大的当然就是学校教Unix核心原始码的教授了! 没有了Unix内核代码,又如何教导学生认识Unix呢?
于是Andrew Tanenbaum(谭宁邦)教授在1984年开始自己动手写Minix这个Unix Like的核心程序! 在撰写的过程中,为了避免版权纠纷,谭宁邦教授完全不看Unix核心原始码! 并且强调他的Minix必须能够与Unix兼容才行!1986年, Minix系统完成, 并于次年出版了Minix相关书籍.

5) 1991年, linux诞生了!
1988年间,托瓦兹(Linus Torvalds)顺利的进入了赫尔辛基大学,并选读了计算机科学系, 开始接触到Unix. 
他购买了最新的Intel 386的个人计算机后,就立即安装了Minix这个操作系统。然而托瓦兹跟BBS上面一堆工程师一样, 他发现Minix虽然真的很棒,但是谭宁邦教授就是不愿意进行功能的加强,导致一堆工程师在操作系统功能上面的欲求不满! 这个时候年轻的托瓦兹就想:『既然如此,那我何不自己来改写一个我想要的操作系统?』 
于是托瓦兹参考Minix的设计理念和程序源码,并仔细研究386个人计算机的效能优化,利用GNU计划提供的bash工作环境软件以及gcc编译程序等自由软件,最终写出了他所需要的核心程序。
他还希望这个程序可以获得大家的一些修改建议, 于是他便将这个核心放置在网络上提供大家下载,同时在BBS上面贴了开篇提到的那则消息:"Hello everybody out there using minix——I'm doing a (free) operating system" .
Linux诞生了~

PS: 当然, 这无疑是一个伟大的时代, 还有好多非常重要的大事发生, 比如1977年Unix最重要分支BSD的出现, 比如1984年自由软件之父Richard M.Stallman创立了GNU与FSF(Free Software Foundation)等, 这里只列举了和linux产生最直接关系的几件大事.

3. linux和unix的联系和区别
联系:
1) unix的历史久于linux. linux的思想源于unix.
2) linux源于unix, unix的系统的优点它都有.
3) 它们遵从一套相同的标准, 因此软件兼容度非常高.
区别:
1) unix和linux都是操作系统的名称.但unix这四个字母除了是操作系统名称外,还作为商标归SCO所有.
2) unix系统大多是与硬件配套的,而linux则可运行在多种硬件平台上.
3) linux和unix的内核并不一样,并且unix的核心的不公开的, 而linux是自由软件,免费、公开源代码的.

4. 什么是 distribution?
经由上面的说明,我们知道 Linux 是个『操作系统』,并且有个老大哥是 Unix 。不过,毕竟由 Torvalds 负责维护的 Linux 提供的仅是『核心』与『核心工具』的集合,对于需要更完整功能的操作系统来说,毕竟还不够完备,例如如果你要桌面程序,还得要加入 X-Window 系统对吧!?如果你要架设 WWW 还得加入服务器软件对吧?所以,虽然 Linux 的核心已经提供了相当多的支持与工具程序,但毕竟还不足以构成一个很完整的操作系统。
好在,由于 Linux 的稳定性良好,并且可以在便宜的 x86 架构下的计算机平台运作,所以吸引了很多的套件商与自由软件的开发团队在这个 Linux 的核心上面开发相关的软件,例如有名的 sendmail, wu-ftp, apache 等等。此外,亦有一些商业公司发现这个商机,这些商业公司或者是非营利性的工作团队,便将 Linux 核心、核心工具与相关的软件集合起来,并加入自己公司或团队特有的系统管理模块与工具,融合出了一套可以完整安装的操作系统。这个完整的 Linux 操作系统,我们就称呼他为 distribution,或者是中文所谓的『安装套件』。
平时我们常听到的Ubuntu, Red Hat, Debian, CentOS等等, 他们都是众多Linux distributions的一种了!

文毕.

Linux编程环境介绍(1) -- linux的历史的更多相关文章

  1. Linux编程环境介绍(3) -- linux下的c/c++程序开发

    目录: 1. 编辑器( Vi ) [vi 与 vim] vi(visual interface)是linux系统最重要的文本编辑器, 所有的 Unix-Like 系统都会内置vi文本编辑器.  vim ...

  2. Linux编程环境介绍(2) -- shell(Bash) 介绍

    1. 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe. 2. bash (Bourne Aga ...

  3. Linux云计算-01_介绍以及Linux操作系统安装

    1 学习目的 兴趣爱好 技能提升 找到满意的工作 2 什么是云计算 云计算(cloud computing)是分布式计算的一种,指的是通过网络"云"将巨大的数据计算处理程序分解成无 ...

  4. 【Linux】 Linux编程规范&Linux 编程环境搭建

    一.通过Samba映射网络驱动器 菜单栏-计算机-映射网络驱动器 English 菜单栏-Home -Easy access-Map as drive 编辑代码使用 Windows 编译 运行程序在 ...

  5. 五十二、linux 编程——网络介绍

    52.1 网络介绍 使用远程资源 共享信息.程序和数据 分布处理 52.1.1 协议的概念 计算机网络中实现通信必须有一些约定,如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被 ...

  6. Linux编程环境

    yum -y install gcc gcc-c++ libtool-ltdl libtool-ltdl-devel openssl openssl-devel curl curl-devel lib ...

  7. linux 编程环境搭建过程记录

    1, 安装centos 7 最小版  过程略 ...... 2, 安装桌面安装yum groupinstall "GNOME Desktop" 更新系统运行级别ln -sf /li ...

  8. 第2天【OS Linux发行版介绍、Linux系统基础使用入门、Linux命令帮助、Linux基础命令】

    Logout    退出系统 Gedit     文本编辑器工具 Uname –r 查看内核版本信息,uname –a 比较详细 Cat /proc/cpuinfo      查看CPU Cat /p ...

  9. [Linux & SVN] SVN介绍及Linux下SVN命令收录

    1. SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移 ...

随机推荐

  1. Android学习笔记之viewholder

    在adapter中通过使用静态内部类(viewholder)缓存组件的引用来防止ListView刷新时重新LayoutInflater跟findViewById从而达到优化的目的.示例如下: @Ove ...

  2. LINUX增加并管理用户

    使用groupadd命令增加新的用户组 使用useradd命令增加新用户: useradd -s /bin/bash -d /home/XXX -g group username 使用passwd修改 ...

  3. python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表

    目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...

  4. AngularJs练习Demo19 Resource

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  5. Swift中的协议

    协议: 1.Swift协议用于定义多个类型应该遵守的规范 2.协议定义了一种规范, 不提供任何实现 3.协议统一了属性名, 方法, 下标, 但是协议并不提供任何实现 4.语法格式: [修饰符] pro ...

  6. C#System.Net.Mail采用简单邮件传输协议发送邮件

    引用: using System.Net.Mail; public class EmailHelper { public static bool SendEmail(string title, str ...

  7. defer和async

    1.decument.wirte不能使用 2.<script src="text.js" type="text/javascript" defer=&qu ...

  8. static在类中的定义,和enum的用法

    class A { // static int a = 1;//错误,静态变量在类外定义 static int a; static const int b = 1;//如果是静态成员常量,则可以在类内 ...

  9. 【Node.js】Event Loop执行顺序详解

    本文基于node 0.10.22版本 关于EventLoop是什么,请看阮老师写的什么是EventLoop 本文讲述的是EventLoop中的执行顺序(着重讲setImmediate, setTime ...

  10. 神奇的match和replace

    源自跟奈落大叔的讨论,PHP和JavaScript的比较. 正则: 先说几个正则写法: () 选择匹配一组, (?:) 降低 () 的优先级, .*? 和 .+? ,阻止 . 和 + 的贪婪. 还有一 ...