文章目录
- 一、操作系统基本概念
- 1.1 基本概念
- 1.2 四大特征
- 1.3 目标和功能
- 二、操作系统的分类与发展
- 三、操作系统的运行环境
- 3.1 运行机制
- 3.2 中断和异常
- 3.3 系统调用
- 四、操作系统的体系结构
- 4.1 宏内核与微内核
- 4.2 分层结构
- 4.3 模块化
- 4.4 外核
- 五、操作系统引导
- 六、虚拟机
一、操作系统基本概念
1.1 基本概念
操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
1.2 四大特征
并发、共享、虚拟、异步。
1. 并发只在同时发生,微观上是交替发生。
2. 并发 是指 同一时间间隔 内发生,并行 是指 同一时刻 发生。
3. 单核cpu同一时刻只能执行一个程序,各程序只能并发执行。
多核cpu同一时刻可同时执行多个程序,多个程序可并行执行。
4. 并发与共享是两个 最基本的特征,二者互为存在条件。
1. 共享分为:互斥共享方式和同时共享方式:
互斥共享方式:在一段时间内只允许一个进程访问该资源。
同时共享方式:允许在一段时间内有多个进程同时访问。
2. 虚拟技术分为:空分复用技术(如虚拟存储器技术)和时分复用技术(如虚拟处理器技术)
1.3 目标和功能
-
作为系统资源的管理者
提供功能:处理机管理、存储器管理、文件管理、设备管理
目标:安全、高效 -
向上层提供方便易用的服务
给 一般用户 直接 使用的接口:
图形接口:如 GUI
命令接口:联机命令接口、脱机命令接口(区别在于一行和一堆)给 应用程序/编程人员 使用的接口:
程序接口(系统调用),即通过程序 间接 使用。 -
最接近硬件的软件
二、操作系统的分类与发展
单道批处理与多道批处理的区别:
注:多道批处理的并行,对于单核cpu指的是I/O与CPU并行。
三、操作系统的运行环境
3.1 运行机制
-
两种指令:特权指令 和 非特权指令
操作系统内核作为 “管理者”,有时会让CPU执行一些特权指令,这些指令只允许 “管理者” 来执行。常见的特权指令:
① 开中断指令、关中断指令
② 写时钟指令(置时钟指令)
③ 写入/输出指令(I/O指令)
④ 写 PSW 寄存器指令(访问程序状态指令)
⑤ 内存清零指令 -
两种处理器状态:内核态 和 用户态
处于内核态时,说明正在运行的是内核程序,即可执行特权指令,又可执行非特权指令。
处于用户态时,说明正在运行的是应用程序,只能执行非特权指令。
其中,内核态又称目态,内核态又称管态。内核态→用户态: 一条修改 PSW 的特权指令。
用户态→内核态: 由中断引起,硬件自动完成。触发中断信号意味着 OS 将强行夺回CPU的使用权。
如:① 请求系统内核服务,CPU在用户态下执行陷入指令,引发中断,意味着应用程序主动将 CPU 控制权还给操作系统。
② 试图在用户态下执行特权指令,引发 OS 变成内核态,夺回 CPU 使用权等注:陷入指令 = 访管指令 = trap指令
-
两种程序:内核程序 和 应用程序
-
三者关系:操作系统的内核程序,即可运行特权指令,又可运行非特权指令,程序运行在核心态。普通应用程序只能运行非特权指令,运行在用户态。
注:中断处理程序一定是内核程序,其运行在内核态。
3.2 中断和异常
中断是让操作系统夺回CPU使用权的唯一途径。
-
中断的分类:
注:故障(Fault)和自陷(Trap)统称为 软件中断,终止(Abort)是 硬件中断。 -
中断机制的基本实现原理:
1. 检查中断信号:
内中断:CPU在执行指令时,会检查是否有异常发生。
外中断:每个指令周期末尾,CPU都会检查是否有外中断信号需处理。
2. 找到相应的中断处理程序:
硬件向量法(中断向量法)、软件查询法 -
中断处理时保存的数据:
1. 硬件负责:PC、PSW
2. OS负责:其他有 “必要” 保存的数据(如:通用寄存器)、中断屏蔽字
若此类寄存器在中断处理中不使用,则不用保存。 -
中断处理完整流程:
① 当 CPU 检测到中断信号后,由硬件自动保存被中断程序的断点(即程序计数器 PC)。
② 硬件找到该中断信号对应的中断向量,中断向量指明中断服务程序入口地址(各中断向量统一存放在中断向量表中,该表由操作系统初始化)。
③ 开始执行中断服务程序,保存 PSW、中断屏蔽字、各通用寄存器的值,并提供与中断信号对应的中断服务,中断服务程序属于操作系统的内核。操作系统完成: 提供中断服务、初始化中断向量表、保存中断屏蔽字(来源:20年408第25题)
3.3 系统调用
系统调用是操作系统给 编程人员/应用程序 使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
-
系统调用与库函数的区别:
库函数有时会对系统调用进行封装,以隐藏系统调用的一些细节,如“创建一个新文件”的函数。但也存在不涉及系统调用的库函数,如“取绝对值”的函数。编程人员调用库函数,会使得编程更加方便。 -
涉及系统调用的功能:
应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。 -
系统调用过程:
过程: 传递系统调用参数 → 执行陷入指令(用户态)→ 执行相应的内请求核程序处理系统调用(内核态)→ 返回应用程序
注意: ① 陷入指令 是在 用户态 执行的,执行陷入指令之后立即引发一个 内中断,使CPU进入 核心态
② 发出系统调用请求是在 用户态,而对系统调用的相应处理在 核心态 下进行
③ 陷入指令 = 访管指令 = trap指令
四、操作系统的体系结构
4.1 宏内核与微内核
-
操作系统的内核
注:① 宏内核,又名:大内核、单内核
② 操作系统内核需要运行在内核态
③ 操作系统的非内核功能运行在用户态 -
操作系统内核功能
- 宏内核与微内核对比
若应用程序的一个服务处理同时涉及进程管理、存储管理、设备管理,宏内核需要 2 次 “变态”,而微内核需要 6 次 “变态”。
注:处理器两种状态之间的转换是有成本的。
- 宏内核与微内核对比
4.2 分层结构
分层法是将操作系统分为若干层,最底层是硬件,最高层是用户接口,煤层智能调用紧邻它的低层的功能和服务(单向依赖)。
优点: ① 便于调试和验证,自底向上逐层调试验证。
② 易扩充和易维护,各层之间调用接口清晰固定。
缺点: ① 仅可调用相邻低层,难以合理定义各层的边界。
② 效率低,不可跨层调用,系统调用执行时间长。
4.3 模块化
模块化是将操作系统按功能划分为若干个具有 一定独立性的模块,各模块之间相互协作。
内核 = 主模块 + 可加载内核模块
主模块:只负责核心功能,如:进程调度、内存管理等
可加载内核模块:可以动态加载新模块到内核而无需重新编译整个内核,如:设备驱动程序
优点: ① 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发。
② 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性。
③ 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点: ① 模块间的接口定义未必合理、实用。
② 模块间相互依赖,更难调试和验证。
4.4 外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
优点: ① 外核可直接给用户进程分配 “不虚拟、不抽象” 的硬件资源,使用户进程可以更灵活的使用硬件资源。
② 减少了虚拟硬件资源的 “映射层”,提升效率。
缺点: ① 降低了系统的一致性。
② 使系统变得更加复杂。
五、操作系统引导
引导流程:
① 激活的 CPU 读取 ROM 中的自举程序,开始执行 BIOS 程序中的指令,并开始进行硬件自检。
② 将磁盘的第一块,主引导记录 MBR 读入内存,执行磁盘引导程序,其会扫描分区表,得知活动分区位置。
③ 从活动分区(又称主分区,即安装了操作系统的分区 C盘)读入分区引导记录 PBR,执行其中的程序,负责找到 “启动管理器”。
④ 从根目录下找到完整的操作系统初始化程序(即 启动管理器)并执行,完成开机的一系列动作。
注:操作系统最终被加载到 RAM 中。
六、虚拟机
理解: 第一类操作系统直接运行在硬件之上,第二类操作系统类似在 win 系统下安装的 VMware 软件。