"计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。"
关于接口:
- 为什么要用到接口?这个就和系统软件体系结构有关。(系统软件体系结构相关看下面的内容)
- 计算机系统软件体系结构采用了层的结构,每个层次之间要相互通信才能使其运行良好。而为了使层次之间进行相互通信(比如函数或模块的调用),那么就必须要有一个通信的协议,这就是接口的由来。
- 下层是接口的提供层,用于定义接口;上层是接口的使用者,它可以使用接口来完成所需要的一些功能。
- 接口设计的合理(也就是说它尽可能的保持稳定不变)时,只要遵循这个接口,任何一个层都可以被修改或替换,而不引起太大的问题。
-在系统软件体系结构中,除了硬件和应用程序,其他的都是"中间层",中间层是对它下面的那层进行包装和扩展,使得应用程序和硬件之间保持相对独立。并且,由于硬件和操作系统本身就具有的向后兼容性和体系结构的层次结构的设计方式,使得应用程序也具有较好的兼容性。
-
计算机软件体系结构和接口的关系如图:
从图中可以看出来,从整个的层次结构上看:最上层包括应用程序和开发工具,因为它们都使用同一个接口,应用程序编程接口(API);应用程序接口的提供者是运行库,也就是说第二层是运行库,运行库不同,它提供的API也就不同(最常见的是32位windows提供的Win32),运行库使用的是系统调用接口;系统调用接口是由操作系统提供的,接口的实现往往是以软件中断的方式提供(Linux使用0x80,Windows使用0x2E中断作为系统调用接口),操作系统内核和硬件的通信是通过硬件规格这个接口完成的。
系统软件
传统意义上一般将用于管理计算机本身的软件称为系统软件。
-其实这样说起来还是比较模糊,就直接举例子说明常见的类型好了。
- 系统本身有的(平台性的),比如操作系统内核、驱动程序、运行库、数以千计的系统工具等。
- 用于程序开发的,比如编译器、汇编器、链接器等开发工具和开发库。
计算机系统软件体系结构
它采用了层的结构,原因是为了使硬件和应用程序相对独立,并且对某些共性问题做了处理,并提供一个处理这个问题的接口给它上层出现这个问题的时候使用,使上层不需要考虑解决的具体方法。
- 最上层:应用程序、开发工具
- 接口:应用程序编程接口
- 中间层:运行库
- 接口:系统调用接口
- 中间层:操作系统内核
- 接口:硬件规格
- 最底层:硬件