最近在学习《程序员的自我修养:链接、装载与库》一书,看到这觉得受益较大,故摘录下来以供后续温习以及分享。
“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”
这句话几乎概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本身,很多应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的。系统软件体系结构中,各种软件的位置如图所示。
每个层次之间都要相互通信,既然需要通信就必须有一个通信协议,我们一般将其称为接口(Interface),接口的下面那层是借口的提供者,由它定义接口;接口的上面那层是接口的使用者,它使用接口来实现所需要的功能。在层次体系中,接口是被精心设计过的,尽量保持稳定不变,那么理论上层次之间只要遵循这个接口,任何一个层都可以被修改或是替换。除了硬件和应用程序,其他都是所谓的中间层,每个中间层都是对它下面的那层的包装和扩展。使得应用程序和硬件之间保持相对的独立,比如硬件和操作系统都在日新月异的发展,但是最初为80386芯片和DOS系统设计的软件在最新的多核处理器Windows Vista下还是能够运行的,这方面硬件和操作系统本身保持了向后兼容性,另一方面不得不归功于这种层