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. 浅析 MySQL Replication(本文转自网络,非本人所写)

    作者:卢飞 来源:DoDBA(mysqlcode) 0.导读 本文几乎涵盖了MySQL Replication(主从复制)的大部分知识点,包括Replication原理.binlog format.复 ...

  2. div与span

    div与span的区别: div标签属于块级元素,span标签属于行内元素,使用对比效果如下: <!DOCTYPE html> <html> <head lang=&qu ...

  3. Hyper-v虚拟机上网

    Windows 8中内置的Hyper-V管理器可以说给许多人带来了惊喜!在Hyper-V管理器强大的同时,也同样面临着设置中一些不可避免的麻烦.有人说,Hyper-V虚拟机联网麻烦,其实,只要掌握了技 ...

  4. (转) C# Activator.CreateInstance()方法使用

    C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...

  5. Mysql的Error 1364

    在安装mysql 5.5.8的最后一步,应用安全配置时, 弹出错误对话框, Error Nr.1364 authentication_string 解决办法: 1.暂时不要关闭该窗口,cmd命令,执行 ...

  6. 清北学堂 Pa

    PA[题目描述]汉诺塔升级了:现在我们有?个圆盘和?个柱子,每个圆盘大小都不一样,大的圆盘不能放在小的圆盘上面,?个柱子从左到右排成一排.每次你可以将一个柱子上的最上面的圆盘移动到右边或者左边的柱子上 ...

  7. [Mugeda HTML5技术教程之11]Mugeda API简介

    一.API 概述 Mugeda API 提供了一个简单的,结构化的方法来实时动态管理Mugeda内容.它提供了一下方法: •访问Mugeda内容中的对象. •获取和设置对象属性,如位置.旋转.比例.不 ...

  8. PHP优化的总结

    今天看了下PHPBB的相关规范,觉得有很多值得学习之处. 以下就几点PHP的优化做下总结: 1.in_array的用法 避免在大的数组上使用 in_array(),同时避免在循环中对包含20个以上元素 ...

  9. Android再学习-20141023-Intent-Thread

    20141023-Android再学习 Intent对象的基本概念 Intent是Android应用程序组件之一 Intent对象在Android系统中表示一种意图 Intent当中最重要的内容是ac ...

  10. openpyxl

    openpyxl库的使用,这个处理xlsx还是挺有用的 ref:传送门 from openpyxl import Workbook from openpyxl import load_workbook ...