1.4 操作系统的体系结构

1.4.1 架构

1、分层式架构

将操作系统划分为若干层,层与层之间单向依赖

操作系统的层次结构
  • 优点

    • 便于系统的调试和验证

    • 易于扩充和维护

  • 缺点

    • 合理定义各层较为困难

    • 效率较差,执行一个指令需要自上而下穿越多层

2、模块化架构

将操作系统分为多个具有独立性的子模块,规定好模块之间的接口使得模块之间可以相互通信

  • 独立性:模块的独立性越高,各模块之间的交互越少,系统结构越清晰

  • 衡量独立性的指标

    • 内聚性:模块内部联系的紧密程度,内聚性越高,独立性越好

    • 耦合度:模块间相互联系与影响的程度,耦合度越低,独立性越好

  • 优点

    • 提高了操作系统设计的正确性,可理解性和可维护性

    • 增强了操作系统的可适应性

    • 加速了操作系统的开发过程

  • 缺点

    • 模块间的接口规定很难满足实际需求

    • 各模块设计者齐头并进,没有可靠的决定顺序

1.4.2 内核

一般来说,底层的时钟管理、中断处理、原语等与硬件关系紧密;而上层的进程管理、存储器管理、设备管理等处理数据结构等相关,与硬件关系不大。

转变CPU状态的过程是有成本的,要消耗不少时间,频繁地转变CPU状态会降低系统性能

1、大内核

这两层都在内核态下运行

  • 优点

    • 性能高

  • 缺点

    • 代码庞大

    • 结构混乱

2、微内核

只有底层保留在内核态下运行,运行时不断切换CPU状态

  • 微内核的基本功能:与硬件处理有关的部分、基本功能、客户与服务器之间的通信

    • 进程(线程)管理

    • 低级存储器管理

    • 中断和陷入处理

  • 特点

    • 内核足够小

    • 基于客户/服务器模式

    • 应用“机制与策略分离”原理

    • 采用面向对象技术

  • 优点

    • 扩展性和灵活性

    • 可靠性和安全性

    • 可移植性

    • 分布式计算

  • 缺点

    • 需要频繁的切换CPU状态,性能低

1.4.3 操作系统引导

  1. 激活CPU

  2. 读取ROM中的boot指令,开始执行BIOS程序

  3. 硬件自检

  4. 加载带有操作系统的硬盘,将引导扇区的内容加载进内存

  5. 加载主引导记录MBR

  6. 扫描硬盘分区表,并加载硬盘活动分区

  7. 加载分区引导记录PBR:活动分区的第一个扇区,用于寻找根目录下的引导程序(启动管理器)

  8. 加载启动管理器

  9. 加载操作系统

1.4.5 虚拟机

运用虚拟化技术,将一台物理机虚拟化为多台虚拟机

1、第一类虚拟机

虚拟机直接运行在硬件上,虚拟机管理程序将计算机的硬件分配给多个虚拟机

  • 只有虚拟机管理程序运行在内核态

  • 虚拟机处于虚拟内核态,实际上是用户态

  • 特点

    • 直接运行在硬件上,直接控制和分配硬件资源

    • 性能更好

    • 可支持的虚拟机数量更多

    • 虚拟机的可迁移性差

2、第二类虚拟机

虚拟机运行在宿主操作系统上,例如常用的VMware

  • 特点

    • 分配到的内存是虚拟内存

    • 性能更差

    • 可以支持的虚拟机数量少,需要和宿主OS争夺资源

    • 虚拟机迁移性更好

Last updated