操作系统结构
简单结构
- 定义:没有 ==模块化== 的设计,利用最小的空间尽可能提供操作系统所有功能
- 优点 & 缺点:
- 优点:操作系统所有功能之间可以 ==任意== 通信 -> 效率相对较高
- 缺点:(1) 操作系统理解维护非常困难 (2) 单个功能的崩溃会影响整个操作系统
- 细节:
- 早期的 MS-DOS 操作系统就是采用 ==简单结构== -> 没有明确的区分功能的接口和层次
- 早期的 MS-DOS 操作系统允许应用程序 ==直接访问== 底层硬件的驱动 -> 对于操作系统来说是非常危险的
- 原因(1):设计之初确实没有想过采用分层的思想
- 原因(2):Intel 提供的处理器不支持双模式的切换和硬件保护

分层结构
定义:将操作系统的所有功能分为若干层;最高层为用户接口;最低层为硬件设备
优点 & 缺点
优点:(1) 构造调试每层的功能是非常容易的 (2) 向上可以屏蔽底层具体实现
缺点:(1) 精确定义每层功能非常困难 (2) 分层越细致会导致操作系统性能越低
细节:
现代操作系统通常采用的是 ==简单的单片结构==(分层结构 + 简单结构)
简单分层结构:用户层 + 系统程序 + 内核 + 底层硬件 / 系统程序 + 内核
现代操作系统大多数仍然采用这种简单的分层结构

微内核
定义:删除内核中所有不必要的功能,将其当做 ==系统级== 或者说 ==用户级== 的功能实现
优点 & 缺点
优点:
操作系统易于扩展
操作系统可以非常轻易的实现跨平台
解释:删除了内核中非常多的不必要的功能之后导致内核是非常小的
操作系统具有很好的 ==可靠性== 和 ==安全性==
解释:原来的运行在内核中的功能现在被迁移到内核之外运行,即使发生故障也不会影响操作系统
缺点:操作系统效率相对较低
细节:
保留的必要功能:==进程管理== + ==内存管理== + ==通信功能==
客户端程序和用户级的功能之间的通信采用的是 ==消息传递== 的方式
MacOS 部分采用微内核设计实现
运行过程:
- 应用程序需要使用 I/O 设备 -> 应用程序发送系统调用
- 系统找到相应的驱动程序然后通知驱动程序完成指令
- 驱动程序找到相应的控制器 -> 控制器操控相应的设备完成指令
- 微内核最后将结果返回给应用程序

虚拟机
定义:运行在 ==操作系统之上== 的具有真实计算机拥有的 ==全部硬件功能== 的计算机
优点 & 缺点
优点:
虚拟机系统故障不会影响到 ==宿主操作系统== 和 ==真实的底层硬件==
虚拟机为开发人员提供了非常大的便利
<a style="color:red;">虚拟机具备真实计算机拥有的全部硬件功能,虚拟机可以安装任何操作系统</a> -> 程序员可以利用虚拟机安装各式各样的操作系统进行使用
缺点:虚拟化技术相对比较难以实现
常用虚拟机:Virtual Box & VMware
细节:
宿主操作系统上可以运行多个不同的虚拟机 -> 类似于多道程序系统
宿主操作系统:真实计算机所运行的操作系统
虚拟机系统调用的执行:
- 虚拟机中的应用程序发出系统调用 -> 系统调用陷入虚拟机中
- 虚拟机再发出普通的硬件指令到宿主操作系统中
- 宿主操作系统再调用真实的硬件
虚拟化:
