OS-1 OS简述
1.1 操作系统OS概念
定义
OS 是 计算机资源(硬件和软件) 的管理者
提供给用户/软件接口和环境 →向上层提供方便的服务
cs系统中最基本的**==系统软件== ** →是最接近硬件的一层软件

功能
==一.OS是系统资源的管理者==
文件管理(U4)
存储器管理(U3):为(多道)程序提供内存运行环境
处理机管理(U2):处理机的分配和运行都以进程/线程为单位,所以本质上是对进程的管理。
设备管理(U5):处理用户IO请求。

二.向上(下)层提供接口
A. 用户接口
- GUI(图形用户界面)
- 命令接口
联机命令接口(交互式命令接口)【用户说一句,系统做一句】
脱机命令接口(批处理接口)【用户说一堆,系统做一一堆】
B. 程序接口:本质是 系统调用。
- 普通用户无法直接调用,通过运行包含系统调用的程序来间接使用系统功能。
- 应用程序,使用系统调用,请求内核为其服务。间接使用系统资源。

三.最接近硬件的一层软件
- 没有任何软件支持的计算机称为裸机
- OS实现对硬件机器的扩展,把计算机变成虚拟机。

特征
并发
并发:同一时间间隔发生。(宏观同时发生,微观上交替发生。)
并行:同时发生。
多核CPU可以实现真正意义上的并行。单核CPU只能并发。
共享
互斥共享:一个时间段只允许一个进程访问资源。
同时共享:一个时间段允许多个进程 “同时” 访问资源【此处的 “同时” 依旧是 并发,而不是并行,即分时共享】。

并发和共享互为前提条件⭐

虚拟
空分复用
eg虚拟存储器

时分复用
eg虚拟处理器(把一个时间单位细分为多个,交替进行各个进程)
- 不同于超线。超线程是硬件层面的。虚拟处理器是软件层面的。

异步
一种不阻塞的等待策略。
和并发不是因果关系。(一个单核CPU、单线程的操作系统,能否实现异步?可以的,通过中断。)

小结⭐
共享和并发是OS系统的最基本的特征。
并发和共享互为存在条件。
虚拟和异步的前提是并发性和共享性。
1.2 发展与分类

手工操作阶段
人工操作模式:低效。
脱机IO模式:①减少CPU空闲。②CPU可以直接从高速磁带读写,提升IO效率。
- IO操作由 外围机 控制,脱离主机控制。
- 数据-磁带-CPU-磁带-外设

批处理阶段 – 单道批处理系统
实现:脱机方式 + 一个监督程序。
特点:自动,顺序,单道。
优点:成批处理数据
缺点:内存中只能有一道程序运行,CPU有空闲(资源利用率低)

批处理阶段 – 多道批处理系统
有中断功能:有程序中断时,CPU切换到另一就绪程序运行。
特点:①多道。②宏观上并行,微观上串行。
优点:高效利用CPU,CPU不空闲了(多道程序像流水线一样并发执行,实现方式是用算法安排)
缺点:没有人机交互功能。

分时操作系统
计算机以时间片为单位==轮流==为多个用户服务,多个远程用户可以通过终端和计算机交互。**==(即多用户系统)==**
核心目标:有人机==交互==功能。
- 单人单电脑本身就是人机交互的。
- 但是多人用同一台电脑,就需要os轮流处理不同用户的请求,所以此处的人机交互更应该来说是==多人可以与同一台机器交互==
缺点:不能处理紧急任务。
实时操作系统
优点:①能处理紧急事件。(紧急任务不需时间片排队)②能在规定的时间内完成。
特点:确定性(响应时间可预测),及时性(强时效),可靠性。
硬实时操作系统:必须在严格的规定时间完成处理(eg导弹)
软实时操作系统:可以偶尔的违反时间规定。
其他操作系统
网络操作系统:
- 让多台独立的计算机能互相通信和共享资源。
- 是在单机操作系统(如 Windows)的基础上,增加了网络通信和资源共享的功能。
分布式系统:
- 它把一群计算机虚拟成一台计算机。(比如bing搜索时几千台服务器同时工作,瞬间完成)
- 特点:分布性,并行性,透明性(用户无需感知,使用体验如同使用一台计算机)。
微机操作系统:
- 单用户单任务操作系统(IMB-PC)
- 单用户多任务操作系统(windows)
- 多用户多任务操作系统(Linux服务器版)
Note:
OS三种基本类型:批处理OS,分时OS,实时OS。
小结

1.3 运行机制⭐
运行机制
1.内核程序 和 应用程序
OS中最核心的是内核(Kernel)
内核由多个内核程序构成。(写操作系统的人完成的)
应用程序:普通人用到的程序
2.特权指令 和 非特权指令
特权指令,只能在内核态执行,用户态执行会触发异常。
非特权指令,用户态和内核态都能执行。
用户程序如何执行特权指令?
- 不能直接执行。必须通过访管指令主动陷入内核,由操作系统内核代码执行特权指令。
==特权指令:==①输入输出指令。②开/关中断指令。③I/O指令。④系统调用内部的特权指令。
==非特权指令:==①陷入指令Trap。

==3.内核态 和 用户态==
内核态=核心态=管态,用户态=目态
CPU怎么区分运行的指令是关于内核程序还是应用程序的呢?
内核态 → 用户态 :修改==PSW的标志位==为“用户态”(是一条特权指令),操作系统让出CPU使用权。
用户态 → 内核态 :由“中断”引发,OS拿回CPU的使用权(from 用户)
- tips:触发“中断”的时候,一般也是需要操作系统介入的时候。
注意==发生==和==执行==两个不同的字眼。(有的事件发生和执行不在一个态上,例如系统调用)
**==在内核态执行:==**①中断相关的处理。②中断屏蔽字设置指令(属于io指令)。③进程调度④系统调用指令。⑤时钟中断。
**==在用户态执行:==**①Trap指令。②压栈、跳转/转移指令。③命令解释程序
**==用户态转向内核态:==**系统调用。外中断。异常。用户程序执行特权指令发生异常。

4.小结
Notes:
- 编译器是OS上层的软件,不是OS需要提供的
- 管理员是权限最高的用户,不等同于OS。

中断和异常
– 用户程序进入内核态的唯一合法途径
==中断==
内中断(异常):与当前的指令有关。中断信号来源于CPU内部。
如果发现当前执行的指令是非法的,会引发中断信号。OS此时拿到CPU控制权,执行中断服务程序。
==EG:== 访管Trap中断。缺页异常。存储保护错。用户试图执行特权指令。
通常在完成后返回第i条指令执行。
外中断:与当前执行的指令无关。中断信号来源于CPU外部。
- ==EG:== IO中断 。控制器出错。时钟中断。DMA传送结束。存储器校验错。
- 外中断也可以分为可屏蔽中断和非可屏蔽中断。
- 通常在完成后返回第i+1条指令执行。
陷入和故障属于软件中断。终止和外中断属于硬件中断。

中断机制的原理
- 检测:异常是指令执行中一直检测;中断是指令周期后有专门的中断周期检测。
- ==硬件响应:==
- CPU 检测到中断信号后,自动关中断。
- 硬件保存断点( PC 和 PSW 压入内核栈),并将 CPU 切换为内核态。【PSW的作用,修改CPU模式:为内核态还是用户态】
- 根据中断号查询中断向量表,找到对应中断服务程序的入口地址。
- ==软件处理:==
- 保存现场:中断服务程序首先保存所有通用寄存器(压栈)。
- (可选)保存旧的中断屏蔽字,设置新的屏蔽字。
- 执行中断服务:提供相应的中断处理(如读写设备)。
- 恢复现场:恢复通用寄存器和中断屏蔽字。
- 中断返回:执行
iret等指令,硬件恢复 PC 和 PSW,切回用户态。
所以显然中断程序是内核程序。需要在”内核态”中运行。
小结
Note:
通道技术:小CPU。
系统调用
**==系统调用:是程序接口的本质==**。
程序接口:OS提供给应用程序/程序员,来请求获得OS内核服务的接口。
OS不同,设计不同,为应用程序提供的系统调用接口也不同。

1.库函数:
有的库函数涉及系统调用,有的库函数不涉及系统调用。
涉及系统调用的库函数:把一些 系统调用封装成库函数 ,提供给程序员方便编程。
应用程序可以进行系统调用,也可以使用库函数。
2.系统调用的原因
OS对==共享资源==进行统一的管理,向上提供“系统调用”,保证系统的稳定性安全性。(否则会出现像打印的文件内容混杂的情况)
与共享资源有关的操作:存储分配,IO操作,文件管理等。
==3.系统调用的过程==
用户使用系统调用命令,该命令编译后形成参数和陷入指令。
- 具体步骤:传参 – Trap/陷入指令(用户态) –→ 由操作系统内核程序,处理系统调用请求(内核态) – 返回应用程序,恢复现场。
系统调用发起前(调用过程)在用户态
系统调用执行时(==被 调用过程==)在内核态。
Notes:
系统调用需要保存PSW和PC的值。
一般过程调用只需要保存PC的值。
4.小结
1.4 操作系统体系结构
整体结构设计
| 分层法 | 模块化 | |
|---|---|---|
| 优点 | ①调试和验证。②扩充(某一层)(因为接口规定相同)和维护 | ①支持并行 开发。 |
| 缺点 | ①层次划分难。②运行效率低。③不灵活(各层依赖关系确定了) | ①模块间的接口不符合要求。②模块并列,找不到合适执行顺序。 |
操作系统的内核⭐
内核是OS最核心的部分。
大内核:橙色和黄色两部分。
微内核:只有黄色一行。(加上进程/线程管理,低级存储器管理。就是创建之类的)

内核的功能:
①支撑功能:(与硬件关系紧密)
时钟管理,负责计时
中断处理,现代OS运行的基础(实现“并行”)
原语,是一种特殊的程序。在os的最底层。运行只能一气呵成不能中断。
②对系统资源进行管理的功能:进程管理,存储器管理,设备管理。(更多是对数据结构的操作,不会涉及硬件)

大内核和微内核
大内核(宏内核/单内核):高性能。但内核难以维护(代码庞大)。【Linux,UNIX】
微内核:内核功能少,结构清晰,易于维护。但频繁在用户态/内核态切换会影响性能。【Windows NT】
| ==微内核== | 大内核 | 外核 | |
|---|---|---|---|
| 优点 | ①易于维护。②扩展灵活同时可移植(各服务器)。③安全可靠(内核内容少)。 | 高性能。 | ①减少抽象开销。②分离保护(外核)与实现(用户)。③提升/灵活(用户管理资源)性能。 |
| 缺点 | 频繁切态影响性能。 | ①代码多,难以维护。②扩展不灵活不可移植。 | |
| 机制 | ①消息传递机制。:微内核移除的功能被组织为若干独立服务程序,运行于用户态,彼此之间 及与客户进程 通过微内核提供的消息传递机制进行交互 【所以适合做分布式!】 | 将物理资源直接暴露给用户级系统,自身仅负责底层==物理资源==的安全分配与隔离。 | |
| 机制 | ②机制与策略分离:进程管理,存储器管理,IO管理等功能被分为两部分,机制(核心的)保存在微内核中,策略则由外部服务器实现。 | ||
| 机制 | ③基于客户/服务器模式。④采用面向对象技术 |
OS系统不同结构的对比
分层结构 , 模块化 , 大内核 , 微内核 , 外核

1.5 操作系统引导
– 开机的时候,操作系统怎么运行起来的?
1 | CPU激活,从ROM中读取并执行BIOS。 |
(ROM断电数据不消失,所以引导程序放在ROM里面)
(C盘是活动分区,因为安装了wins操作系统)
(PBR和MBR都是程序,都是在执行前被加载到内存中的。)

1 | 加电 |
1.6 虚拟机
VMM(虚拟机监视器)
第一类VMM:①分配的是物理内存(类似外核)。②本身就是操作系统,运行在最高特权级,直接管理硬件。③优点是支持更多的虚拟机。且性能更好。
第二类VMM:①分配是虚拟内存。②主体作为应用程序运行在用户态;当需要执行特权指令时,通过加载的内核模块协助完成。③优点是可迁移性更好,导出镜像文件就可以迁移。
| 第一类(Type-1) | 第二类(Type-2) | |
|---|---|---|
| 异常处理路径 | 硬件 → VMM | 硬件 → 宿主机OS → VMM |

