今天来聊聊linux的发展历程
以前看视频的时候每次到这一部分基本都是跳过的,但是这次还是老老实实地看完了hh。
大致了解了计算机的硬件之后,才知道作者真是用心良苦。承接上篇的操作系统的功能,linux包括了核心和系统呼叫这两个层面。不同硬件上的功能函数不同,若是想要在不同的架构上操作,需要对操作系统进行改版。
在讲linux之前,是无论如何都绕不开unix的。
在计算机还未普及的60/70年代,主机少,用户多,因此发展了所谓的“兼容分时系统”,也就是主机提供了多个终端机以联机的方式进入主机。但是这时分机其实并不具备计算的功能,而只是依次使用主机的CPU(注意是CPU在多个使用者之间切换,不是同时使用)。但是即使是这样,所能使用的终端数也很少。所以兴起了一个叫做“Multics”的计划,试图扩大终端机的数量。
结果就是Multics计划并没有成功,anyway这个计划培养了很多优秀的人才。比如Ken Thomposon以汇编语言写了Unix原型。但是汇编语言对于硬件的依赖性比较强,再加上之前的计算机的架构多种多样不统一,所以每次在不同的计算机上使用都得重新编写汇编语言。所以Ritchie用了高阶程序语言C语言重新编写了Unix的核心,标志着Unix的正式诞生(其实最初是用B语言写的,但是B语言所编译的核心效能太差,为了实现最终的目的,Ritchie先将B语言改写成了C语言)。在这之后延伸出了BSD和System V两大分支。其中System V支持x86架构,可以在个人计算机上使用,因此称为纯种的Unix系统目前只包含了BSD和System V两个系统。但在这个时候AT&T不再对学生提供原始码。
【穿插一下对于不同语言的理解
高级语言——编译器——汇编语言——汇编器—机器语言
所以其实汇编语言对于硬件的以来大于高级语言。】
为了教学使用,Andrew Tanenbaum在x86架构上开发了Minix,Minix可以买到,也提供源代码,但是只限于教育用途,使用者的其他需求得不到满足。
现在关于自由软件的风潮得益于之前的GNU计划,旨在推行免费开源的软件。后来撰写了C语言的编译程序,也就是GNU C compiler(gcc)。还完成了可以用来检测用户语法的Emacs编辑器以及系统呼叫的C函式库。为了避免这样的自由软件去被做成专利软件,将所有的软件都加上了GPL版权宣言。这样的软件能够得到软件和原始码,可以自由复制该软件,对其进行修改和在发行,并且应该将修改的程序代码分享到社群。再修改后也得挂上GPL授权,且不能单纯贩卖自由软件,可以加上售后的服务仪器售卖。
后来加入了图形用户接口(Graphical User Interface,GUI),成立了x86free计划。所以其实在linux正式出现之前,就已经有了图像界面的存在了。
Linux系统最初是由Linux Torvalds创造的,早期的个人计算机的x86架构对于多任务的处理性能不佳,后来推出了386芯片,改善了这种状态。linux的初代就是基于386的架构产生的,基于Minix的设计理念,用gcc等编译程序将386的功能函数等写进了核心程序里,并且将它放在网上来获得修改意见。后来为了使得Linux能够兼容Unix,修改了linux,使之符合POSIX规范。linux的维护也就经历了单人维护和虚拟团队维护的过程,使得linux能够适应不同的硬件。
linux的核心版本主要有奇数和偶数两种版本,奇数版本表示这种核心正处在测试中,比较适合核心开发工程师。而偶数版本适合企业、个人,更加稳定。而linux distribution指的是包含了linux kernel,software以及tools的可完全安装版本。linux也运用了许多GNU软件,所以也可以称为GNU/linux。distribution的版本很多,主要是安装软件的方式不同,一种是采用PRM方式安装,例如Fedora,RedHat,另一种是采用了dpkg方式,比如Debian,Ubuntu。一般个人使用的话推荐Fedora,ubuntu,而企业使用需要软件更加稳定,例如RedHat。