【无结构操作系统】
在早期,操作系统的开发者只是将注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想
此时 OS 是为数众多的一组过程的集合,每个过程可以任意地调用其他过程,使得操作系统内部结构混乱又复杂
因此,这种 OS 是无结构的,也有人将其称为整体系统结构
【模块化操作系统】
20 世纪 60 年代,随着模块化程序设计技术的出现,操作系统的编写也开始利用该技术
该技术是基于分解与模块化的原则来控制大型软件的复杂度
为使 OS 具有较清晰的结构,OS 的设计按照模块-接口法来进行,即按其功能精心地划分为若干具有一定独立性的模块,每个模块具有某方面的管理功能,各模块间能通过接口实现交互
同时,进一步将各个模块分为若干具有一定功能的子模块,同样也规定好他们之间的接口
该方法不仅提高设计的正确性、可理解性、可维护性,还增强了 OS 的可适应性,通过对相应功能模块增减和修补,可以满足新需求,同时还加速了开发过程
但该方法同样存在不少问题,在设计初期,模块划分和接口规定是十分不精确的,并且很难保证其完全正确,这会使得接口规定与实际完成的模块需求不匹配,而出现装配困难
此外,各模块的设计齐头并进,没有决策顺序,是一种 “无序” 模块,模块间仍会有复杂依赖关系,这反而可能会使 OS 结构不清晰
【分层式操作系统】
为将模块-接口法中决定顺序的无序性变为有序性,引入了有序分层法,即在目标系统 $A_n$ 和逻辑系统 $A_0$ 间,铺设若干层次的软件 $A_1,A_2,…,A_{n-1}$,使得 $A_n$ 通过 $A_{n-1},…,A_2,A_1$ 层后,最终能在 $A_0$ 上运行
在分层式操作系统中,采用自底向上的有序分层法,每一步设计都建立在可靠基础上,每一次仅能使用其底层所提供的功能与服务,由此使得系统的调试与验证变得十分容易
由于各层之间只存在单向的依赖关系,即高层仅依赖紧邻的低层,这保证了系统正确性,使得系统容易维护与扩充
但由于分层单向依赖,当执行一个功能时,总要自下而上地穿越多层,这增加系统通信开销,降低了效率
【微内核操作系统】
微内核操作系统,即实现了一个可在其上构建通用 OS 的基础内核,该内核程序运行在核心态,开机常驻内存
当前微内核操作系统结构仍没有一致公认的定义,但可从以下 4 方面进行描述:
- 足够小的内核:微内核并非一个完整的 OS,其与硬件紧密相关,实现较基本功能,复杂客户和服务器通信
- 应用机制与策略分离原理:机制用于实现某一功能的具体执行机构,位于基层;策略借助某些参数和算法实现功能优化或达到不同功能目标,位于高层
- 采用面向对象技术
- 基于 C/S 模式
微内核包含的基本功能有:进程管理、低级存储管理、中断和陷入处理等,调度算法、虚拟内存的页面置换算法等都放入外部服务器中实现
对于微内核操作系统来说,只有内核能访问硬件,服务器在用户态出错时绝不会导致系统瘫痪,同时其可移植性强,尤适用于分布式系统