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迁移 ...
随机推荐
- 大数据笔记11:MapReduce的运行流程
1.基本概念 (1)Job & Task (2)JobTracker (3)TaskTracker
- Java基础知识强化48:Java中哈希码
1.概念: 哈希其实只是一个概念,没有什么真实的指向.它的目的是保证数据均匀的分布到一定的范围内.所以不同数据产生相同的哈希码是完全可以的. 现在是站在JAVA虚拟机的角度来看内存 ...
- Java基础知识强化40:StringBuffer类之StringBuffer的替换功能
1. StringBuffer的替换功能: public StringBuffer replace(int start, int end, String str): 2. 案例演示: p ...
- sed删除空行和注释行
最近在看前辈们写的代码,他们把没有用的代码是注释掉而不是删掉.没用的代码和注释很乱,看着心烦,就把注释删掉来解读,顿时爽快多了. 不多说了,直接举例子 比如一个文本文件 data 里的内弄为 cat ...
- C语言学习笔记---谭浩强
前段时间有机会去面试了一次,真是备受“打击”(其实是启发),总的来说就是让我意识到了学习工具和学习技术的区别.所以最近在看一些数据结构和算法,操作系统,python中的并行编程与异步编程等东西.然而数 ...
- Asp.Net 下载文件的几种方式
asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...
- kvc/kvo复习
kvc/kvo复习 1 小问题 '[<XMGPerson 0x7fb8a8f30220> setValue:forUndefinedKey:]: this XMGPerson * pers ...
- Mac os 上可执行jar包转app方法
此操作可分如下几步: 1:生成jarbao: jar cf myName.jar *.class 2:生成打包所需配置文件:build.xml: <project name="MyPr ...
- SignalR2.0开发实例之——私聊
一.前言 继续上一章的补充,这章介绍使用私聊的功能.主要通过一个方法 Clients.Client(Context.ConnectionId).showMessage(msg); SignalR框 ...
- (搬运工)推荐!国外程序员整理的 C++ 资源大全
标准库 C++标准库,包括了STL容器,算法和函数等. C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Tem ...