Linux编程环境介绍(1) -- linux的历史
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的历史的更多相关文章
- Linux编程环境介绍(3) -- linux下的c/c++程序开发
目录: 1. 编辑器( Vi ) [vi 与 vim] vi(visual interface)是linux系统最重要的文本编辑器, 所有的 Unix-Like 系统都会内置vi文本编辑器. vim ...
- Linux编程环境介绍(2) -- shell(Bash) 介绍
1. 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe. 2. bash (Bourne Aga ...
- Linux云计算-01_介绍以及Linux操作系统安装
1 学习目的 兴趣爱好 技能提升 找到满意的工作 2 什么是云计算 云计算(cloud computing)是分布式计算的一种,指的是通过网络"云"将巨大的数据计算处理程序分解成无 ...
- 【Linux】 Linux编程规范&Linux 编程环境搭建
一.通过Samba映射网络驱动器 菜单栏-计算机-映射网络驱动器 English 菜单栏-Home -Easy access-Map as drive 编辑代码使用 Windows 编译 运行程序在 ...
- 五十二、linux 编程——网络介绍
52.1 网络介绍 使用远程资源 共享信息.程序和数据 分布处理 52.1.1 协议的概念 计算机网络中实现通信必须有一些约定,如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被 ...
- Linux编程环境
yum -y install gcc gcc-c++ libtool-ltdl libtool-ltdl-devel openssl openssl-devel curl curl-devel lib ...
- linux 编程环境搭建过程记录
1, 安装centos 7 最小版 过程略 ...... 2, 安装桌面安装yum groupinstall "GNOME Desktop" 更新系统运行级别ln -sf /li ...
- 第2天【OS Linux发行版介绍、Linux系统基础使用入门、Linux命令帮助、Linux基础命令】
Logout 退出系统 Gedit 文本编辑器工具 Uname –r 查看内核版本信息,uname –a 比较详细 Cat /proc/cpuinfo 查看CPU Cat /p ...
- [Linux & SVN] SVN介绍及Linux下SVN命令收录
1. SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移 ...
随机推荐
- hdu4893Wow! Such Sequence! (线段树)
Problem Description Recently, Doge got a funny birthday present from his new friend, Protein Tiger f ...
- Ftp实现文件同步
通常在做服务器与服务器文件.服务器与本地文件同步时通过Ftp服务实现,下面就以服务器文件和本地同步为例,介绍一下Ftp同步文件:首先建立一个Ftp站点服务,基本身份验证登陆,端口号为默认的21:Ftp ...
- Cycling Label
Cycling Label 来源: github/BBCyclingLabel Licence: Apache 2.0 作者: Bruno de Carvalho 分类: 标签(Label) 平台: ...
- Ajax (jquery)实现智能提示搜索框(in Django)
搜索框输入搜索名字,从数据库中筛选名字, 如果有包含输入的字母的名字则以json格式返回并且显示在搜索框下: html文件: <!DOCTYPE html> <ht ...
- (转)js 中{},[]中括号,大括号使用详解
一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen",&qu ...
- shell中的eval
eval语法 eval arg1 arg2 ... eval的作用就是将后面的参数arg1 arg2等等当成一个pipeline,然后重新执行shell处理pipeline的流程(有关pipeline ...
- Github提交代码及分支管理
#提交代码cd <Cat>git initgit add .git statusgit commit -m "注释"git remote add origin < ...
- javascript字符类型操作函数
//获取字符串的长度 String.prototype.getByteLength = function() { var bytes=0,i=0; for (; i<this.length; + ...
- Ajax实现三级联动(0520)
查询数据库中的chinastates表,通过父级代号查询相应省市区. 实现界面: 在js页面实现三级联动 在JQuery中调用Ajax方法(引用JQuery文件一定放在最上面) 用插件的形式,创建三个 ...
- win7安装memcached
根据公司业务需求,需要用memcache缓存,正好接触一下,在win7下配置安装: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也 ...