操作系统结构
了解操作系统结构的多个概念,可能在选择题中考察。
分层和模块化
操作系统的设计和结构在历史上经历了多种不同的方法和技巧,为了增加可维护性、灵活性和可扩展性。分层和模块化是操作系统设计中两种主要的技术方法。
- 分层结构:
- 概念:在分层的操作系统中,系统被划分为多个层次或“层”,每层都为其上的层提供服务,并依赖于其下的层。
- 优点:
- 每层只需与其直接的上下层进行交互,简化了设计和调试。
- 提高了灵活性,因为改变某一层的实现不会影响到其他层。
- 有助于保护和安全性,因为较低的层(如硬件访问层)被封装起来,上层代码不能直接访问。
- 模块化结构:
- 概念:模块化操作系统基于模块的概念,每个模块都有一个特定的功能,各个模块之间的交互通过定义良好的接口进行。模块化与面向对象编程中的封装和抽象概念类似。
- 优点:
- 易于维护和更新。如果某个模块需要更改或修复,可以独立于其他模块进行。
- 提高了可扩展性。新的功能或模块可以相对容易地添加到系统中。
- 增加了系统的可靠性和稳定性,因为每个模块的功能都被限定在明确的边界内。
微内核和宏内核
- 宏内核(Monolithic Kernel):
- 特点:
- 在单一的地址空间中运行大部分系统服务,如设备驱动、文件系统、网络协议等。
- 所有的内核服务都运行在内核态。
- 优点:
- 由于所有的服务都在同一个地址空间中运行,因此服务间的通信较快。
- 传统上,宏内核系统比微内核系统性能更高。
- 缺点:
- 如果内核中的一个部分失败,整个系统都可能崩溃。
- 随着功能的增加,内核可能会变得臃肿,导致维护困难。
- 示例:传统的UNIX系统、Linux都是基于宏内核的。
- 特点:
- 微内核(Microkernel):
- 特点:
- 只有最基本的服务(如基本的进程和线程管理、地址空间和IPC)运行在内核态。
- 其他服务,如设备驱动、文件系统等,作为用户空间的独立进程运行。
- 内核和服务间通过消息传递进行通信。
- 优点:
- 更高的系统稳定性。用户空间的服务(如驱动程序)如果崩溃,不会影响整个系统。
- 更加灵活,允许在运行时更改或添加服务。
- 更容易扩展和维护。
- 缺点:
- 由于需要频繁的上下文切换和消息传递,通常性能会稍逊于宏内核。
- 示例:IOS是基于微内核的系统。
- 特点:
虚拟机
虚拟机(Virtual Machine, VM)是一种模拟真实计算机的软件实现,能够在物理机上模拟出多个和真实硬件环境相似的独立的虚拟计算机环境。每个虚拟计算机环境都可以运行独立的操作系统并运行应用程序,就好像它们在真实的物理机上一样。
Hypervisor,也称为虚拟机监视器(Virtual Machine Monitor, VMM),是一种在主机操作系统和虚拟机之间的中间软件层,它允许多个操作系统同时在同一台物理硬件上运行。Hypervisor的主要职责是创建、运行和管理虚拟机,同时提供硬件资源的抽象,从而使每个虚拟机都认为自己是唯一运行在物理硬件上的操作系统。