1.分层法

1.1 概述

将OS划分为多层,最底层为硬件,最高层为用户接口。每层只能调用紧邻它的低层的功能和服务(单向依赖)。

1.2 优点

  1. 便于系统的调试和验证,简化系统的设计和实现。
  2. 易扩充&易维护。

1.3 缺点

  1. 合理定义各层比较困难。若各层之间的关系确定下来后,往往就显得不够灵活。
  2. 效率较低。OS每执行一个功能,都需要穿越多层,层与层之间通信会带来额外的开销,进而导致系统效率低下。

2.模块化

2.1 概述

将OS划分成多个独立的模块,并规定好各模块间的接口,使模块间可进行相互通信,当然模块之下还可以继续划分多个子模块。

2.2 评估

  • 若模块划分太小,那么模块之间的联系过多,导致系统较为混乱。
  • 若模块划分太大,那么模块自身的复杂性。
  • 划分模块的两个标准:
    • 内聚性:模块内部的各部分的联系程度。该指标越高,模块独立性越好。
    • 耦合度:模块之间相互联系和影响的程度。该指标越低,模块独立性越好。

2.3 优点

  1. 提高了OS的正确性、可理解性和可维护性。
  2. 增强了OS的可适应性。
  3. 加速了OS的开发过程。

2.4 缺点

  1. 模块间的接口规定很难满足对接口的实际需求。
  2. 各模块设计者齐头并进,每个决定都无法建立在上一个已验证的正确决定的基础上,因此无法找到一个可靠的决定顺序。

3.宏内核/单内核/大内核

3.1 概述

将系统的主要功能模块都融合为一个紧密联系的整体,然后运行在核心态,为用户高性能的系统服务。
由于各模块之间共享信息,因而能够充分利用彼此之间的优势,进而发挥出不可比拟的性能优势。

目前主流的OS如Windows、MacOS、Linux、Android、IOS都是基于宏内核的架构。


4.微内核

4.1 概述

将内核中最基本的功能保留在内核,将那些不需要在核心态执行的功能代码转移到用户态执行,并通过分层原则划分成多个服务程序,彼此之间执行互不影响,通信借助微内核。
微内核架构将OS划分为微内核+多个服务器两部分。其中微内核通常包括:与硬件处理紧密相关的部分;一些较基本的功能;客户和服务器之间的通信。而其他大部分功能都是存放在微内核之外的服务器(本质上是一个个的进程)中实现。客户与服务器的交互是通过微内核提供的消息传递机制实现的。
微内核架构下,一个模块产生的错误只会导致这个模块崩溃,并不会波及整个系统;宏内核则直接down掉。

4.2 功能

  1. 进程管理。如进程通信、进程切换、进程调度等。
  2. 低级存储器管理。逻辑地址到物理地址的变换工作是借助硬件实现的,这部分存在于微内核中,而存储器管理策略的制定,采用何种页面置换算法才是存储器管理服务器该干的事情。
  3. 中断和陷入处理。

微内核OS能将进程管理、存储器管理I/O管理这些功能一分为二,只将很少一部分放入微内核,剩余的放入微内核以外的服务器中实现。

4.3 特点

  1. 扩展性&灵活性。若想修改一个功能,仅需修改对应的服务器即可;若想增加一个功能,则仅需增加一个专用的服务器即可而无需修改微内核。
  2. 可靠性&安全性。
  3. 可移植性。仅将与CPU和硬件有关的代码放入微内核,位于服务器中的大多与硬件无关,因此进行移植时改动会很小。
  4. 分布式计算。客户与服务器、服务器与服务器之间的通信均采用消息传递机制,这就为分布式系统和网络系统的支持奠定了基础。

4.4 问题

主要是性能问题。因为需要在用户态和核心态之间频繁切换,导致系统执行开销偏大,但将这部分涉及到频繁切换运行状态的代码移回微内核中又会增加微内核的体积。。。


5.外核

5.1 概述

该架构下,一种称为外核(Exohernal)的程序在内核态中运行,它将为虚拟机分配资源,同时也将检查它们使用资源的意图以确保没有虚拟机会错误地使用其他虚拟机的资源。

5.2 优点

  1. 不同于以往的设计,外核无需针对每个虚拟机记录其相应的磁盘地址映射表,而是只需要记录哪个虚拟机被分配的有关资源即可。
  2. 能够将多道程序(位于外核中)与用户OS代码(位于用户空间中)分离开来,使各自的负载不重。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐