计算机操作系统演化(续)
80年代末,System V Unix与BSD之间打起了官司,Windows在此期间茁壮成长。
1990年,BSD把含有的Unix代码清除殆尽,团队感到使命完成,项目终止。Bill Jolitz 尝试将BSD移植到X86系统。
1991年,由于BSD移植X86支持方为商业公司,项目被希望闭源开发,Bill Jolitz相当不满,怒删一年多的研究成果,并退出项目。
1991年8月:linus torvalds宣布成立Linux。
由于Linux遵循GPL协定,Linux得到各路技术大咖支持。
Larry wall开发的diff/patch使得接下来的互联网协同开发工作成为可能。
Linux得到迅猛发展,1994年时,0.99和1.0版本诞生,仅三年一个系统就能够在生产环境中使用。
没有任何商业组织支撑,Linux自我迭代完全靠爱好者们业余时间共同协作研发。
Windows的程序员开发环境被称作大教堂式,Linux的程序员开发环境被称为集市。
而BUG在集市环境中无所遁形并得到了最高效的更新。1992年中期,BSD移植386项目重启
程序基本结构
所谓的多任务操作系统实际指的是,工作在底层硬件之上的,负责驱动底层硬件,分割硬件资源,
并监控多个任务启动与关闭的一个硬件虚拟化程序,也叫做通用程序或Kernel。包括BSD,Unix,Linux,等。
广义上一个完整的OS由Kernel和Application组成,狭义上OS仅指Kernel。
GNU提供了Application,Linux提供了Kernel,这样一个完整的OS诞生了—— GNU/Linux。
OS的接口有两类:
GUI(图形界面):Graphic User Interface
GNome:C语言研发,开发环境为gtk
KDE:C++开发,开发环境为qtCLI(命令行界面):Command Line Interface
TUI(文本接口):Text User Interface
纯命令行接口
程序有bash,zsh,sh,csh,tcsh,ksh,等
操作系统的功能:
驱动程序,进程管理,安全,网络功能,内存管理,文件系统,等等
Kelnel接口的调用程序需要一定的编译知识,用户门槛比较高,接口调用称为syscall,调用速度快。
针对syscall的封装程序,称为libraries(库),接口调用称为libcall,速度比syscall慢,但用户门槛较低。
API:Application Program Interface
程序员面对的编程接口- POSIX:Portable Operating System
兼容接口,用于各API接口的兼容标准。API兼容,ABI不兼容
- POSIX:Portable Operating System
ABI:Application Binary Interface
程序应用者面对允许程序的接口
Linux发行版
开始的Linux只有源码形式提供开源,源码要编译成二进制格式才能被运行,编译过程非常复杂。
一些组织或个人,把Linux系统自己编译成二进制格式并打包给用户,成为Linux发行版,这些组织或个人称为发行商,发行版种类达数百种之多。
*图片 GNU/Linux Distribution Timeline Version 12.10
三大分支
Debian
Ubunt
Mint
Knopix
Slackware
S.u.S.E
OpenSUSE
SLES
RedHat
RedHat 9.0
RedHat Enterprise Linux : RHEL
CentOS : Community ENTerprise OS
Fedora Core(每6个月更新一个版本)
RedHat能够下载到的更新包是未经编译过的程序,用户需要够买软件才能得到服务。
CentOS把RedHat的更新包重新编译并作为发行版本发布。
CentOS服务器需要运维人员管理,RedHat为付费用户提供维护服务。
其它比较流行的发行版本
Gentoo
ArchLinux
版本号
major . minor . release
- major:主版本号,一般主程序有大变动才会更新。
- minor:次版本号,分支变化时才会更新。
- release:发行号或者修正号,一般BUG修正更新。
*GNU/Linux 资源下载网站及最新版本查询
Linux发行版和软件也有自己的版本号,但其变化与kernel无关,彼此没有继承性。
每三行代码便可能有BUG,而修复BUG将带来更多的代码。
所以,并不是版本越新越好,作为服务器未必也不应该追求最新版本。