diff --git a/OperatingSystem/ch1/assets/image-20230318174239025.png b/OperatingSystem/ch1/assets/image-20230318174239025.png new file mode 100644 index 0000000..659a76d Binary files /dev/null and b/OperatingSystem/ch1/assets/image-20230318174239025.png differ diff --git a/OperatingSystem/ch1/assets/image-20230318174400336.png b/OperatingSystem/ch1/assets/image-20230318174400336.png new file mode 100644 index 0000000..1c0f20f Binary files /dev/null and b/OperatingSystem/ch1/assets/image-20230318174400336.png differ diff --git a/OperatingSystem/ch1/note.md b/OperatingSystem/ch1/note.md index 1c14867..4b7458b 100644 --- a/OperatingSystem/ch1/note.md +++ b/OperatingSystem/ch1/note.md @@ -405,8 +405,106 @@ CPU 通常执行两种不同性质的程序:一种是**操作系统内核程 **共享库**:该区域用于存放公共的共享库代码和数据。 -用户栈:该区域用来存放局部变量、返回地址、函数调用参数等信息。 +**用户栈**:该区域用来存放局部变量、返回地址、函数调用参数等信息。 **操作系统内核区**:该区域是操作系统内核使用的地址空间,包括内核程序、代码、内核栈等信息,这些信息对用户程序不可见。 ## 1.4 操作系统的体系结构 + +### 1.4.1 分层结构 + +特性:内核分多层,每层可单向调用更低一层提供的接口。 + +优点: + +- 便于调试和验证,自底向上逐层调试验证。 +- 易扩充和易维护,各层之间调用接口清晰固定。 + +缺点: + +- 仅可调用相邻低层,难以合理定义各层的边界。 +- 效率低,不可跨层调用,系统调用执行时间长。 + +### 1.4.2 模块化 + +特性:将内核划分为多个模块,各模块之间相互协作。 + +- 内核 = 主模块 + 可加载内核模块 +- 主模块:只负责核心功能。 +- 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。 + +优点: + +- 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发。 +- 支持动态加载新的内核模块,增强OS适应性。 +- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。 + +缺点: + +- 模块间的接口定义未必合理、实用。 +- 模块间相互依赖,更难调试和验证。 + +### 1.4.3 宏内核(大内核) + +特性:所有的系统功能都放在内核里。 + +优点:性能高,内核内部各种功能都可以直接相互调用。 + +缺点: + +- 内核庞大功能复杂,难以维护。 +- 大内核中某个功能模块出错,就可能导致整个系统崩溃。 + +### 1.4.4 微内核 + +特性: + +- 只把中断、原语、进程通信等最核心的功能放入内核。 +- 进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态。 + +优点: + +- 内核小功能少、易于维护,内核可靠性高。 +- 内核外的某个功能模块出错不会导致整个系统崩溃。 + +缺点: + +- 性能低,需要频繁切换用户态和核心态。 +- 用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。 + +### 1.4.5 外核 + +特性:内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。 + +优点: + +- 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。 +- 减少了虚拟硬件资源的“映射层”,提升效率。 + +缺点: + +- 降低了系统的一致性。 +- 使系统变得更复杂。 + +## 1.5 操作系统引导 + +基本输入输出系统BIOS是一种固化到计算机内主板上的一个只读存储器芯片内的一种固件。 + +常见操作系统的引导过程: + +![image-20230318174400336](./assets/image-20230318174400336.png) + +## 1.6 虚拟机 + +**基本概念**:虚拟机是一台逻辑计算机,是指利用特殊的虚拟化技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境。 + +#### 两类虚拟机管理程序(VMM)的对比 + +| | 第一类VMM | 第二类VMM | +| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在Host OS之上,依赖于Host OS为其分配物理资源 | +| 资源分配方式 | 安装Guest OS时,VMM在原本的硬盘上自行分配存储空间。
类似于外核,分配未经抽象的物理硬件。 | GuestOS拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统中的一个大文件。
GuestOS分配到的内存是虚拟内存。 | +| 性能 | 性能更好 | 性能更差,需要HostOS作为中介 | +| 可支持的虚拟机数量 | 更多,不需要和HostOS竞争支援,相同的硬件资源可以支持更多的虚拟机 | 更少,HostOS本身需要使用物理资源,HostOS上运行的其他进程也需要物理资源 | +| 虚拟机的可迁移性 | 更差 | 更好 | +| 运行模式 | 运行在最高特权级(Ring0),可以执行最高特权的指令 | 部分运行在用户态,部分运行在内核态。 |