Alex_McAvoy

想要成为渔夫的猎手

操作系统的体系结构

【无结构操作系统】

在早期,操作系统的开发者只是将注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想

此时 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 模式

微内核包含的基本功能有:进程管理、低级存储管理、中断和陷入处理等,调度算法、虚拟内存的页面置换算法等都放入外部服务器中实现

对于微内核操作系统来说,只有内核能访问硬件,服务器在用户态出错时绝不会导致系统瘫痪,同时其可移植性强,尤适用于分布式系统

感谢您对我的支持,让我继续努力分享有用的技术与知识点!