Linus 当初山寨 Unix 的目的,除了好玩、初试锋芒之外,还有一个目的就是要在 PC 上建立一个类似于 Unix 的操作系统,而且是自由 (free as freedom, 我的理解,主要包括开源、免费、容许修改代码和一定程度上的商业化这几大方面)。这些目的在今天都被 Linux 实现了。
前面说到 Unix 的硬件要求很高,软件费用也很高。从 1980 年代开始,还有苹果公司的 Macintosh,运行于 PC 机上。这是当时风靡全球的“苹果机”。但是苹果公司是软硬件一体出售的。比尔·盖茨就购买了 DOS 操作系统,修改之后运行在 IBM 兼容(也就是遵循 IBM 的标准)的 PC 上,由此造就了微软公司。DOS 是一个非图形化的操作系统,而 Windows 系统则是微软更新换代之后的产品,有一个图形化的界面。微软早期的成功主要是瞄准了低端的 PC,同时对硬件没有专一性(只要是 IBM 兼容的即可),所以顺利地抢占了 PC 市场,造成了今天 Windows 在 PC 上独大的局面。
Unix 系统(包括 Linux 系统)在设计上是层次化的,从物理硬件、内核、库函数、应用程序、用户界面逐次升高,用户所接触的就是用户界面以及输入输出设备。用户界面可以是非图形化的,也可以是图形化的。粗略地理解,用户界面(不管是图形化的 sh, bash, csh, tcsh 等等,还是非图形化的 Gnome, KDE, Xface, Enlightenment 等等)好比操作系统的衣服(这些衣服下面还有内衣,叫做 X Window,注意:Window 是单数的,微软的 Windows 是复数的),用户可以轻松地任意更换。微软的 Windows 则不是这样的,它的图形化界面与操作系统是一体的,好比人的皮肤,硬换的话就是一场大手术。
这些任务在 Unix 系统中被称作“进程”(process)。一台计算机可能有多个 CPU(工作站通常有很多个 CPU),在每一个瞬间,一个 CPU 最多运行一个进程,所以,从本质上,一个 CPU 只能支持一个进程。但是操作系统的功能之一就是进程管理:在第一个微小的时间段内运行进程 A ,然后把它的状态存储起来(把进程 A “挂起来”),在下一个微小的时间段内再运行进程 B,随后“挂起来”,再去运行进程 C……,之后再回头把进程 A 的运行状态读进来,运行一小段时间再挂起来,就这样不停地循环。由于这种进程间的切换在用户和终端(例如打印机、光驱、显示器、网卡、声卡)看来非常快,所以就造成了多个进程在“同时”运行的错觉。这就是分时系统的特点。分时系统的核心之一就是进程管理,它不一定按照固定的次序在各个进程间循环,而是要给不同的进程以不同的优先级(优先级高的首先运行),同时还要响应各种硬件、软件的中断。