1.1 操作系统OS概念

定义

OS计算机资源(硬件和软件) 的管理者

提供给用户/软件接口和环境 →向上层提供方便的服务

cs系统中最基本的**==系统软件== ** →是最接近硬件的一层软件

image-20260317090534216

功能

==一.OS是系统资源的管理者==

文件管理(U4)

存储器管理(U3):为(多道)程序提供内存运行环境

处理机管理(U2):处理机的分配和运行都以进程/线程为单位,所以本质上是对进程的管理。

设备管理(U5):处理用户IO请求。

image-20260317090725251

二.向上(下)层提供接口

A. 用户接口

  • GUI(图形用户界面)
  • 命令接口
    • 联机命令接口(交互式命令接口)【用户说一句,系统做一句】

    • 脱机命令接口(批处理接口)【用户说一堆,系统做一一堆】

B. 程序接口:本质是 系统调用

  • 普通用户无法直接调用,通过运行包含系统调用的程序来间接使用系统功能。
  • 应用程序,使用系统调用,请求内核为其服务。间接使用系统资源。

image-20260317091221257

三.最接近硬件的一层软件

  • 没有任何软件支持的计算机称为裸机
  • OS实现对硬件机器的扩展,把计算机变成虚拟机。

image-20260317092101296

特征

并发

  • 并发:同一时间间隔发生。(宏观同时发生,微观上交替发生。)

  • 并行:同时发生。

  • 多核CPU可以实现真正意义上的并行。单核CPU只能并发。

共享

互斥共享:一个时间段只允许一个进程访问资源。

同时共享:一个时间段允许多个进程 “同时” 访问资源【此处的 “同时” 依旧是 并发,而不是并行,即分时共享】。

image-20260317094541901

并发和共享互为前提条件

image-20260317093335463

虚拟

空分复用

eg虚拟存储器

image-20260317094718173

时分复用

eg虚拟处理器(把一个时间单位细分为多个,交替进行各个进程)

  • 不同于超线。超线程是硬件层面的。虚拟处理器是软件层面的。

image-20260317095119432

异步

一种不阻塞的等待策略。

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

image-20260317093834827

小结⭐

共享和并发是OS系统的最基本的特征。

并发和共享互为存在条件。

虚拟和异步的前提是并发性和共享性。

1.2 发展与分类

image-20260317102229283

手工操作阶段

人工操作模式:低效。

脱机IO模式:①减少CPU空闲。②CPU可以直接从高速磁带读写,提升IO效率。

  • IO操作由 外围机 控制,脱离主机控制。
  • 数据-磁带-CPU-磁带-外设

image-20260317102529104

批处理阶段 – 单道批处理系统

实现:脱机方式 + 一个监督程序。

特点:自动,顺序,单道。

优点:成批处理数据

缺点:内存中只能有一道程序运行,CPU有空闲(资源利用率低)

image-20260423152711645

批处理阶段 – 多道批处理系统

有中断功能:有程序中断时,CPU切换到另一就绪程序运行。

特点:①多道。②宏观上并行,微观上串行。

优点:高效利用CPU,CPU不空闲了(多道程序像流水线一样并发执行,实现方式是用算法安排)

缺点:没有人机交互功能。

image-20260423152959414

分时操作系统

计算机以时间片为单位==轮流==为多个用户服务,多个远程用户可以通过终端和计算机交互。**==(即多用户系统)==**

核心目标:有人机==交互==功能。

  • 单人单电脑本身就是人机交互的。
  • 但是多人用同一台电脑,就需要os轮流处理不同用户的请求,所以此处的人机交互更应该来说是==多人可以与同一台机器交互==

缺点:不能处理紧急任务。

实时操作系统

优点:①能处理紧急事件。(紧急任务不需时间片排队)②能在规定的时间内完成。

特点:确定性(响应时间可预测),及时性(强时效),可靠性。

硬实时操作系统:必须在严格的规定时间完成处理(eg导弹)

软实时操作系统:可以偶尔的违反时间规定。

其他操作系统

网络操作系统:

  • 让多台独立的计算机能互相通信和共享资源。
  • 是在单机操作系统(如 Windows)的基础上,增加了网络通信资源共享的功能。

分布式系统:

  • 它把一群计算机虚拟成一台计算机。(比如bing搜索时几千台服务器同时工作,瞬间完成)
  • 特点:分布性,并行性,透明性(用户无需感知,使用体验如同使用一台计算机)。

微机操作系统:

  • 单用户单任务操作系统(IMB-PC)
  • 单用户多任务操作系统(windows)
  • 多用户多任务操作系统(Linux服务器版)

Note:

OS三种基本类型:批处理OS,分时OS,实时OS。

小结

image-20260317103602462

1.3 运行机制⭐

运行机制

1.内核程序 和 应用程序

OS中最核心的是内核(Kernel)

内核由多个内核程序构成。(写操作系统的人完成的)

应用程序:普通人用到的程序

2.特权指令 和 非特权指令

特权指令,只能在内核态执行,用户态执行会触发异常。

非特权指令,用户态和内核态都能执行。

用户程序如何执行特权指令?

  • 不能直接执行。必须通过访管指令主动陷入内核,由操作系统内核代码执行特权指令。

==特权指令:==①输入输出指令。②开/关中断指令。③I/O指令。④系统调用内部的特权指令。

==非特权指令:==①陷入指令Trap。

image-20260317104945090

==3.内核态 和 用户态==

内核态=核心态=管态,用户态=目态

CPU怎么区分运行的指令是关于内核程序还是应用程序的呢?

内核态 → 用户态 :修改==PSW的标志位==为“用户态”(是一条特权指令),操作系统让出CPU使用权。

用户态 → 内核态 :由“中断”引发,OS拿回CPU的使用权(from 用户)

  • tips:触发“中断”的时候,一般也是需要操作系统介入的时候。

注意==发生==和==执行==两个不同的字眼。(有的事件发生和执行不在一个态上,例如系统调用)

**==在内核态执行:==**①中断相关的处理。②中断屏蔽字设置指令(属于io指令)。③进程调度④系统调用指令。⑤时钟中断。

**==在用户态执行:==**①Trap指令。②压栈、跳转/转移指令。③命令解释程序

**==用户态转向内核态:==**系统调用。外中断。异常。用户程序执行特权指令发生异常。

image-20260317154741951

4.小结

Notes:

  • 编译器是OS上层的软件,不是OS需要提供的
  • 管理员是权限最高的用户,不等同于OS。

image-20260317105702370

中断和异常

– 用户程序进入内核态的唯一合法途径

==中断==

内中断(异常)与当前的指令有关。中断信号来源于CPU内部。

  • 如果发现当前执行的指令是非法的,会引发中断信号。OS此时拿到CPU控制权,执行中断服务程序。

  • ==EG:== 访管Trap中断。缺页异常。存储保护错。用户试图执行特权指令。

  • 通常在完成后返回第i条指令执行。

外中断:与当前执行的指令无关。中断信号来源于CPU外部。

  • ==EG:== IO中断 。控制器出错。时钟中断。DMA传送结束。存储器校验错。
  • 外中断也可以分为可屏蔽中断和非可屏蔽中断。
  • 通常在完成后返回第i+1条指令执行。

陷入和故障属于软件中断。终止和外中断属于硬件中断。

image-20260317161321168

中断机制的原理

  1. 检测:异常是指令执行中一直检测;中断是指令周期后有专门的中断周期检测。
  2. ==硬件响应:==
    • CPU 检测到中断信号后,自动关中断
    • 硬件保存断点PCPSW 压入内核栈),并将 CPU 切换为内核态。【PSW的作用,修改CPU模式:为内核态还是用户态】
    • 根据中断号查询中断向量表,找到对应中断服务程序的入口地址。
  3. ==软件处理:==
    • 保存现场:中断服务程序首先保存所有通用寄存器(压栈)。
    • (可选)保存旧的中断屏蔽字,设置新的屏蔽字。
    • 执行中断服务:提供相应的中断处理(如读写设备)。
    • 恢复现场:恢复通用寄存器和中断屏蔽字。
    • 中断返回:执行 iret 等指令,硬件恢复 PC 和 PSW,切回用户态。

所以显然中断程序是内核程序。需要在”内核态”中运行。

image-20260318162418455

小结

Note:

通道技术:小CPU。

image-20260317161514988

系统调用

**==系统调用:是程序接口的本质==**。

程序接口:OS提供给应用程序/程序员,来请求获得OS内核服务的接口。

OS不同,设计不同,为应用程序提供的系统调用接口也不同。

image-20260318163000584

1.库函数:

有的库函数涉及系统调用,有的库函数不涉及系统调用。

涉及系统调用的库函数:把一些 系统调用封装成库函数 ,提供给程序员方便编程。

应用程序可以进行系统调用,也可以使用库函数。

image-20260318163608975

2.系统调用的原因

OS对==共享资源==进行统一的管理,向上提供“系统调用”,保证系统的稳定性安全性。(否则会出现像打印的文件内容混杂的情况)

与共享资源有关的操作:存储分配,IO操作,文件管理等。image-20260318171421203

==3.系统调用的过程==

用户使用系统调用命令,该命令编译后形成参数和陷入指令。

  • 具体步骤:传参 – Trap/陷入指令(用户态) –→ 由操作系统内核程序,处理系统调用请求(内核态) – 返回应用程序,恢复现场。

系统调用发起前(调用过程)在用户态

系统调用执行时(==被 调用过程==)在内核态。

image-20260317162515899 image-20260318172241437

Notes:

系统调用需要保存PSW和PC的值。

一般过程调用只需要保存PC的值。

4.小结

image-20260317162950897

1.4 操作系统体系结构

整体结构设计

分层法 模块化
优点 ①调试和验证。②扩充(某一层)(因为接口规定相同)和维护 ①支持并行 开发
缺点 ①层次划分难。②运行效率低。③不灵活(各层依赖关系确定了) ①模块间的接口不符合要求。②模块并列,找不到合适执行顺序。
image-20260317165029385

操作系统的内核⭐

内核是OS最核心的部分。

大内核:橙色和黄色两部分。

微内核:只有黄色一行。(加上进程/线程管理,低级存储器管理。就是创建之类的)

image-20260317163217192

内核的功能:

①支撑功能:(与硬件关系紧密)

  • 时钟管理,负责计时

  • 中断处理,现代OS运行的基础(实现“并行”)

  • 原语,是一种特殊的程序。在os的最底层。运行只能一气呵成不能中断。

②对系统资源进行管理的功能:进程管理,存储器管理,设备管理。(更多是对数据结构的操作,不会涉及硬件)

image-20260318172514811

大内核和微内核

大内核(宏内核/单内核):高性能。但内核难以维护(代码庞大)。【Linux,UNIX】

微内核:内核功能少,结构清晰,易于维护。但频繁在用户态/内核态切换会影响性能。【Windows NT】

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

OS系统不同结构的对比

分层结构 , 模块化 , 大内核 , 微内核 , 外核

image-20260317164214912

1.5 操作系统引导

– 开机的时候,操作系统怎么运行起来的?

1
2
3
4
5
CPU激活,从ROM中读取并执行BIOS。
BIOS执行通电自检,并把(磁盘第一块)MBR主引导记录加载到内存中。
MBR包含:引导代码和磁盘分区表。MBR定位活动分区(egC盘),并加载PBR分区引导记录到内存中。
PBR找到启动管理器,启动管理器加载OS内核到内存RAM。
内核初始化:初始化设备驱动,初始化进程相关的数据结构,创建第一个内核进程

(ROM断电数据不消失,所以引导程序放在ROM里面)

(C盘是活动分区,因为安装了wins操作系统)

(PBR和MBR都是程序,都是在执行前被加载到内存中的。)

image-20260318175119665

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
加电

CPU跳转到ROM

┌─────────────────────────────────────┐
│ BIOS/UEFI ⭐ │
│ • 硬件自检 │
│ • 查找启动设备 │
│ • 加载MBR到内存 │
└─────────────────────────────────────┘
↓ 跳转
┌─────────────────────────────────────┐
│ MBR(主引导记录) ⭐ │
│ • 扫描分区表 │
│ • 找到活动分区 │
│ • 加载活动分区的第一个扇区 │
└─────────────────────────────────────┘
↓ 跳转
┌─────────────────────────────────────┐
│ PBR(分区引导记录) ⭐ │
│ • 识别文件系统类型 │
│ • 在根目录查找启动管理器 │
│ • 加载启动管理器文件 │
└─────────────────────────────────────┘
↓ 跳转
┌─────────────────────────────────────┐
│ 启动管理器(如GRUB、bootmgr) ⭐ │
│ • 显示菜单(可选) │
│ • 加载操作系统内核到内存 │
│ • 跳转到内核入口 │
└─────────────────────────────────────┘
↓ 跳转
┌─────────────────────────────────────┐
│ 操作系统内核 ⭐ │
│ • 初始化各子系统 │
│ • 启动第一个用户进程(init/systemd) │
│ • 进入用户态,显示登录界面 │
└─────────────────────────────────────┘

1.6 虚拟机

VMM(虚拟机监视器)

第一类VMM:①分配的是物理内存(类似外核)。②本身就是操作系统,运行在最高特权级,直接管理硬件。③优点是支持更多的虚拟机。且性能更好。

第二类VMM:①分配是虚拟内存。②主体作为应用程序运行在用户态;当需要执行特权指令时,通过加载的内核模块协助完成。③优点是可迁移性更好,导出镜像文件就可以迁移。

第一类(Type-1) 第二类(Type-2)
异常处理路径 硬件 → VMM 硬件 → 宿主机OS → VMM

image-20260318180523370