学习Linux的人都知道网上很多人在区别Linux和Unix。Unix和Linux一样是操作系统,但是在比较两者的时候,你们有想过去好好了解Unix吗?今天我们就来说说什么是Unix?
在现在我们普遍用到的操作系统大致被分为两大类,一类是微软的基于Windows NT的操作系统,另一类就是Unix。不管是Linux、Android,还是苹果家族的Mac OS X、iOS,都是属于类Unix操作系统。
因为Unix的流行和在市场的占有率,已经有了属于Unix的文化,你知道有些什么吗?
多用户分时共用一台主机的文化:UNIX发明的年代计算机是如此昂贵,以至于唯一合理的利用方式就是多用户分时共享一台机器。这就解释了为什么UNIX一开始就支持多进程、多用户、用户组和权限管理。同时,还催生了一批允许同时登录一台机器的用户“单机聊天”的工具:write / talk / wall / mesg 以及后来的Telnet BBS。
面向行的输入、输出格式:UNIX推崇在CLI Shell下通过管道组合多个进程协同完成工作,因此所有的程序都面临如何在读完标准输入流之前(谁也不知道会有多长)就要干活并输出的问题。理论上需要实现一个状态机来解析输入流,实际上为了省事基本上所有的程序都是以行为基本分割符来切割数据;这样做上游程序也省事:面向行的输出基本上都可以直接屏显给用户。因此,导致的后果是UNIX程序很少采用高度可靠的自分隔格式(如XML、JSON)作为标准输出,而是靠用户临时用sed / awk这样的工具来适配上下游程序的行内格式,造成了无穷无尽的(微妙的)解析bug。
把文件操作利用到极致的文化:UNIX有极其丰富的文件操作API,还有mmap,因此允许用户以最小的CPU/内存开销管理极其复杂的文件。这样导致的后果就是UNIX用户不爱用传统的数据库技术来保存数据,而是更偏向于自己管理索引、玩手工优化到极致的“文件API杂技”。
UNIX操作系统结构由三大部分组成:
(1)Kernel(内核)
(2)Shell(外壳)
(3) 工具及应用程序
Unix的开发使用经历了很长一段时间,甚至是现在,很多关于Unix的应用都还在使用。第一个是“Unix哲学”,建立小的模块化的应用,只做一件事情并把它做好。系统提供了大量的应用,可以通过管道或其他特性形成不同的组合来完成更复杂的任务。这个应用的优势是让建立终端脚本更为简单,可以把复杂的事情用简单工具去完成。第二个是设计了一个单一的文件系统,程序可以通过它互相通讯。这就把一切都变成了文件。
Unix的影响很大,以至于后来被很多公司借用,形成了更多的操作系统。其中一些还是很有发展特点。
SunOS
Sun是最早的工作站厂商,但一直在Unix工作站领域不断发展。Sun的工作站产品和Internet服务器产品在ChinaNet中应用非常广泛。
IRIX 6.x
IRIX 6.x是SGI公司的Unix,这也是一种基于Unix System V的产品。SGI的Unix图形工作站是图形图象处理领域内的顶级产品,这一方面是由于SGI的硬件性能相当优秀,另一方面在软件方面,SGI开发了工作站下的图形图象处理软件,成为这个领域的领先者。而SGI在图形图象领域的领先地位掩盖了他作为一家Unix厂商在操作系统领域内的努力,事实上在他们还生产超级计算机,在多处理器和并行计算等大负荷计算方面都有独到的研究。
Linux
Unix已经非常开放,但是其内核代码也不是随意就可以得到的。最容易得到的代码是Minix,用于教学目的而编写的一个系统,这远不是一个成熟的系统。所以后来就有了Linux,Linux和其他Unix的源码完全无关,严格来讲只能算仿制品。但Linux的开发者来自整个Internet,具有各种Unix系统的背景,因此Linux也集中了各种Unix的优点,从性能上与商业产品毫不逊色。
虽然Unix现在使用不是最多的,但是它曾经带给操作系统的影响是不可忽视的,在接下来的时候它还会继续影响着以后的操作系统。所以学习Linux的同学们也应该对于Unix有一些了解。