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和IO设备是真正的并行==
优点:高效利用CPU,CPU不空闲了(多道程序像==流水线一样==并发执行,实现方式是用算法安排)
==缺点:==没有人机交互功能。
注:相比于单道批处理,失去了封闭性和顺序性,多了制约性。

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

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

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

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

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

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

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

内核的功能:
①支撑功能:(与硬件关系紧密)
时钟管理,负责计时。
中断处理,现代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:==①分配是虚拟内存==。②==主体作为应用程序运行在用户态==;当需要执行特权指令时,通过加载的内核模块协助完成。③优点是==可迁移==性更好,导出镜像文件就可以迁移。
异常处理路径
- 第一类:硬件 → VMM
- 第二类:硬件 → 宿主机OS → VMM

