标签:因特网 rmi 优秀 现在 lisp 等等 支持 新闻 order
一.linux 是什么
Linux就是一套操作系统!如同下图所示, Linux就是核心与系统呼叫接口那两层。
由上图中我们可以看到其实核心与硬件的关系非常的强烈。早期的Linux是针对386来开发的, 由于Linux只是一套操作系统并不含有其他的应用程序,因此很多工程师在下载了 Linux 核心并且实际安装之后,就只能看着计算机开始运作了! 接下来这些高级工程师为了自己的需求,再在Linux上面安装他们所需要的软件就是了。
由于不同的硬件他的功能函数并不相同,例如IBM的Power CPU与Intel的x86架构就是不一样! 所以同一套操作系统是无法在不同的硬件平台上面运作的!举例来说,如果你想要让x86上面跑的那套操作系统也能够在Power CPU上运作时,就得要将该操作系统进行修改才行。如果能够参考硬件的功能函数并据以修改你的操作系统程序代码, 那经过改版后的操作系统就能够在另一个硬件平台上面运作了。 这个动作我们通常就称为『软件移植』
Linux由于是Open Source的操作系统,所以他的程序代码可以被修改成适合在各种机器上面运行的, 也就是说,Linux是具有『可移植性』,这可是很重要的一个功能
二.Linux之前,Unix的历史
1969年以前:一个伟大的梦想--Bell,MIT与GE的『Multics』系统
早期的计算机并不像现在的个人计算机一样普遍,他可不是一般人碰的起的呢~ 除非是军事或者是高科技用途,或者是学术单位的学术研究,否则真的很难接触到。 非但如此,早期的计算机架构还很难使用,除了指令周期并不快之外,操作接口也很困扰的! 因为那个时候的输入设备只有卡片阅读机、输出设备只有打印机, 用户也无法与操作系统互动(批次型操作系统)。
在那个时候,写程序是件很可怜的事情,因为程序设计者,必须要将程序相关的信息在读卡纸上面打洞, 然后再将读卡纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了,如果程序有个小地方写错, 哈哈!光是重新打卡就很惨,加上主机少,用户众多,光是等待,就耗去很多的时间了!
在那之后,由于硬件与操作系统的改良,使得后来可以使用键盘来进行信息的输入。 不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办?大家还是得要等待啊! 好在1960年代初期麻省理工学院(MIT)发展了所谓的: 『兼容分时系统(Compatible Time-Sharing System, CTSS)』, 它可以让大型主机透过提供数个终端机(terminal)以联机进入主机,来利用主机的资源进行运算工作。 架构有点像这样:
如此一来,无论主机在哪里,只要在终端机前面进行输入输出的作业,就可利用主机提供的功能了。 不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具任何运算或者软件安装的能力。 而且,比较先进的主机大概也只能提供30个不到的终端机而已。
为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,所以在1965年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE, 或称为通用电器)共同发起了Multics的计划, Multics计划的目的是想要让大型主机可以达成提供300个以上的终端机联机使用的目标。 不过,到了1969年前后,计划进度落后,资金也短缺,所以该计划虽然继续在研究,但贝尔实验室还是退出了该计划的研究工作。 (注:Multics有复杂、多数的意思存在。)
1969年:Ken Thompson的小型file server system
在认为Multics计划不可能成功之后,贝尔研究室就退出该计划。不过,原本参与Multics计划的人员中,已经从该计划当中获得一些点子, Ken Thompson 就是其中一位!
Thompson因为自己的需要,希望开发一个小小的操作系统以提供自己的需求。 在开发时,有一部DEC(Digital Equipment Corporation)公司推出的PDP-7刚好没人使用, 于是他就准备针对这部主机进行操作系统核心程序的撰写。
经过四个星期的奋斗,他终于以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是Unix的原型! 当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。(当时尚未有Unix的名称)
Thompson 的这个文件系统有两个重要的概念,分别是:
1973年:Unix的正式诞生,Ritchie等人以C语言写出第一个正式Unix核心
由于Thompson写的那个操作系统实在太好用了,所以在贝尔实验室内部广为流传,并且数度经过改版。 但是因为Unics本来是以汇编语言写成的,汇编语言具有专一性,加上当时的计算机机器架构都不太相同,所以每次要安装到不同的机器都得要重新编写汇编语言,真不方便!
后来Thompson与Ritchie合作想将Unics改以高阶程序语言来撰写。当时现成的高阶程序语言有B语言。 但是由B语言所编译出来的核心效能不是很好。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心, 最后正名与发行出Unix的正式版本!
1977年:重要的Unix分支--BSD的诞生
虽然贝尔属于AT&T,但是AT&T此时对于Unix是采取较开放的态度,此外,Unix是以高阶的C语言写成的, 理论上是具有可移植性的!亦即只要取得Unix的原始码,并且针对大型主机的特性加以修订原有的原始码(Source Code), 就可能将Unix移植到另一部不同的主机上头了。所以在1973年以后,Unix便得以与学术界合作开发! 最重要的接触就是与加州柏克莱(Berkeley)大学的合作了。
柏克莱大学的Bill Joy在取得了Unix的核心原始码后,着手修改成适合自己机器的版本, 并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution (BSD)。这个BSD是Unix很重要的一个分支,Bill Joy也是Unix业者『Sun(升阳)』这家公司的创办者! Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。 (后来可以安装在x86硬件架构上面FreeBSD即是BSD改版而来!)
1979年:重要的 System V 架构与版权宣告
由于Unix的高度可移植性与强大的效能,加上当时并没有版权的纠纷, 所以让很多商业公司开始了Unix操作系统的发展,例如AT&T自家的System V、IBM的AIX以及HP与DEC等公司, 都有推出自家的主机搭配自己的Unix操作系统。
但是,如同我们前面提到的,操作系统的核心(Kernel)必须要跟硬件配合, 以提供及控制硬件的资源进行良好的工作!而在早期每一家生产计算机硬件的公司还没有所谓的『协议』的概念, 所以每一个计算机公司出产的硬件自然就不相同啰!因此他们必须要为自己的计算机硬件开发合适的Unix系统。 例如在学术机构相当有名的Sun、Cray与HP就是这一种情况。 他们开发出来的Unix操作系统以及内含的相关软件并没有办法在其他的硬件架构下工作的! 另外,由于没有厂商针对个人计算机设计Unix系统,因此,在早期并没有支持个人计算机的Unix操作系统的出现。
每一家公司自己出的Unix虽然在架构上面大同小异,但是却真的仅能支持自身的硬件, 所以啰,早先的Unix只能与服务器(Server)或者是大型工作站(Workstation)划上等号! 但到了 1979 年时,AT&T推出 System V 第七版 Unix 后,这个情况就有点改善了。 这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说 System V 可以在个人计算机上面安装与运作了。
不过因为AT&T由于商业的考虑,以及在当时现实环境下的思考,于是想将Unix的版权收回去。因此, AT&T在1979年发行的第七版Unix中,特别提到了 『不可对学生提供原始码』的严格限制! 同时,也造成Unix业界之间的紧张气氛,并且也引爆了很多的商业纠纷~
1984年之一:x86架构的Minix操作系统诞生
关于1979年的版权声明中,影响最大的当然就是学校教Unix核心原始码相关学问的教授了! 想一想,如果没有核心原始码,那么如何教导学生认识Unix呢?这问题对于Andrew Tanenbaum(谭宁邦)教授来说,实在是很伤脑筋的!不过,学校的课程还是得继续啊!那怎么办?
既然1979年的Unix第七版可以在Intel的x86架构上面进行移植, 那么是否意味着可以将Unix改写并移植到x86上面了呢?在这个想法上, 谭宁邦教授于是乎自己动手写了Minix这个Unix Like的核心程序! 在撰写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心原始码! 并且强调他的Minix必须能够与Unix兼容才行!谭宁邦在1984年开始撰写核心程序, 到了1986年终于完成,并于次年出版Minix相关书籍,同时与新闻组(BBS及News)相结合~
这个Minix版本比较有趣的地方是,他并不是完全免费的,无法在网络上提供下载! 必须要透过磁盘/磁带购买才行!虽然真的很便宜~不过,毕竟因为没有在网络上流传, 所以Minix的传递速度并没有很快速!此外,购买时,随磁盘还会附上Minix的原始码! 这意味着使用者可以学习Minix的核心程序设计概念喔! (这个特色对于Linux的启始开发阶段,可是有很大的关系喔!)
此外,Minix操作系统的开发者仅有谭宁邦教授,因为学者很忙啊!加上谭宁邦始终认为Minix主要用在教育用途上面, 所以对于Minix是点到为止!没错,Minix是很受欢迎,不过,使用者的要求/需求的声音可能就比较没有办法上升到比较高的地方
1984年之二:GNU计划与FSF基金会的成立
Richard Mathew Stallman(史托曼)在1984年发起的GNU计划,对于现今的自由软件风潮, 真有不可磨灭的地位!目前我们所使用得很多自由软件,几乎均直接或间接受益于GNU这个计划呢! 那么史托曼是何许人也?为何他会发起这个GNU计划呢?
1988年:图形接口XFree86计划
有鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重,在1984年由MIT与其他第三方首次发表了X Window System ,并且更在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是 X Window System + Free + x86的整合名称呢! 而这个XFree86的GUI界面更在Linux的核心1.0版于1994年释出时,整合于Linux操作系统当中!
1991年:芬兰大学生Linus Torvalds的一则简讯
到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上面运作, 让很多人很感兴趣!从此开始了Linux不平凡的路程!
三.关于GNU计划
自由软件的版权GNU GPL:
为了避免自己的开发出来的Open source自由软件被拿去做成专利软件, 于是Stallman同时将GNU与FSF发展出来的软件,都挂上GPL的版权宣告
那么这个GPL(GNU General Public License, GPL)是什么? 为什么要将自由软件挂上GPL的『版权宣告』?这个版权宣告对于作者有何好处? 首先,Stallman对GPL一直是强调Free的,这个Free的意思是这样的
大意是说,Free Software(自由软件)是一种自由的权力,并非是『价格!』 举例来说,你可以拥有自由呼吸的权力、你拥有自由发表言论的权力, 但是,这并不代表你可以到处喝『免费的啤酒!(free beer)』,也就是说, 自由软件的重点并不是指『免费』的,而是指具有『自由度, freedom』的软件, 史托曼进一步说明了自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件。
这无疑是个好消息!因为如此一来,你所拿到的软件可能原先只能在Unix上面跑, 但是经过原始码的修改之后,你将可以拿他在Linux或者是Windows上面来跑!总之, 一个软件挂上了GPL版权宣告之后,他自然就成了自由软件!这个软件就具有底下的特色:
但请特别留意,你所修改的任何一个自由软件都不应该也不能这样:
也就是说,既然GPL是站在互助互利的角度上去开发的,你自然不应该将大家的成果占为己有, 对吧!因此你当然不可以将一个GPL软件的授权取消,即使你已经对该软件进行大幅度的修改! 那么自由软件也不能贩卖吗?当然不是!还记得上一个小节里面, 我们提到史托曼藉由贩卖Emacs取得一些经费,让自己生活不至于匮乏吧?是的! 自由软件是可以贩卖的,不过,不可仅贩卖该软件,应同时搭配售后服务与相关手册~
自由软件与商业行为:
很多人还是有疑问,目前不是有很多Linux开发商吗?为何他们可以贩卖Linux这个GPL授权的软件? 原因很简单,因为他们大多都是贩卖『售后服务!』所以,他们所使用的自由软件, 都可以在他们的网站上面下载!(当然,每个厂商他们自己开发的工具软件就不是GPL的授权软件了!) 但是,你可以购买他们的Linux光盘,如果你购买了光盘,他们会提供相关的手册说明文件, 同时也会提供你数年不等的咨询、售后服务、软件升级与其他协力工作等等的附加价值!
7.云计算&大数据_linux基础知识(8)什么是linux(2019-10-27 00:34)
标签:因特网 rmi 优秀 现在 lisp 等等 支持 新闻 order
原文地址:https://www.cnblogs.com/zhimahu/p/11747057.html