操作系统-绪论(1)

本blog考研操作系统主体内容由小白兔友情提供

1.1 操作系统的基本概念


1.1.1 操作系统的定义

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。

1.1.2 操作系统的功能和目标

资源的管理者(四大管理功能)

  • 处理机管理:管理 $CPU$,负责进程调度、分配处理器资源
  • 存储器管理:管理内存,负责内存分配、地址映射、内存保护与扩充
  • 文件管理:管理文件,负责文件的存取、共享、保护,管理外存
  • 设备管理:管理 $(I/O)$ 外设,负责设备分配、缓冲管理等

向上层提供服务(接口分类)

操作系统向上提供三类接口,供不同对象使用:

给普通用户使用:用户接口(命令接口)

  1. 联机命令接口(交互式命令接口) 实例:$Windows$ 系统的 $cmd$ 命令提示符。 特点:用户输入一条命令,操作系统立刻执行、给出反馈,交互式实时操作。
  2. 脱机命令接口(批处理命令接口) 实例:$Windows$ 批处理 .bat 脚本文件。 特点:提前把多条命令写在脚本中,一次性提交给操作系统,系统自动批量执行,不需要用户逐条交互。

补充:$GUI$ 图形用户界面,也属于面向普通用户的接口,依托鼠标、窗口可视化操作。

给软件/程序员使用:程序接口

程序接口,由一系列系统调用组成。

程序接口,可以在程序中进行系统调用来使用程序接口。

普通用户不能直接使用程序接口,只能通过程序代码间接使用。

调用流程示例: 程序员 → $C$ 语言库函数(如 $printf$) → 系统调用(操作系统程序接口) → 操作系统内核 → 硬件(显示器) 举例:$C$ 语言 $Hello World$ 的 $printf$ 底层,就调用操作系统显示相关的系统调用。

重点:系统调用是应用程序请求操作系统服务的唯一方式,类似函数调用,是用户态进入内核态的途径。

屏幕截图 2026-09-22 164154

对硬件机器的扩展:扩充机器

操作系统把裸机(只有硬件的计算机)改造为功能更强、使用更方便的扩充机器(虚拟机),屏蔽硬件底层复杂细节,向上提供易用服务。

屏幕截图 2026-09-22 163758

1.1.3 操作系统的特征

操作系统有四大特征:并发、共享、虚拟、异步;其中并发、共享是操作系统两个最基本的特征。

并发

并发性指计算机系统中同时存在着多个运行着的程序。
操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。

注意:
单核 $CPU$ 同一时刻只能执行一个程序,各个程序只能并发地执行
多核 $CPU$ 同一时刻可以同时执行多个程序,多个程序可以并行地执行比如 $4$ 核 $CPU$,可以并行地执行 $4$ 个程序。

区分:

  • 并发:宏观同时,微观交替
  • 并行:同一时刻同时执行

共享

共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

资源共享分为两种方式:

  1. 互斥共享方式
    系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
    实例:使用 $QQ$ 和微信视频。同一时间段内摄像头只能分配给其中一个进程。

  2. 同时共享方式
    系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。
    所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)。
    实例:使用 $QQ$ 发送文件 $A$,同时使用微信发送文件 $B$。宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。

并发与共享的关系

例子:使用 $QQ$ 发送文件 $A$,同时使用微信发送文件 $B$。

  1. 两个进程正在并发执行(并发性)
  2. 需要共享地访问硬盘资源(共享性)
  • 如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义
  • 如果失去共享性,则 $QQ$ 和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发

结论:并发与共享互为存在条件。

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

虚拟技术分为两类:

  • 时分复用技术(如虚拟处理器技术)
  • 空分复用技术(如虚拟存储技术)

实例:单核 $CPU$ 上运行多个进程,用户会感觉有多个独立的处理器在运行程序,这就是时分复用带来的虚拟;物理内存通过虚拟存储技术,让程序感知到更大的逻辑内存空间,属于空分复用。

异步

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

image-20260922204348457

1.2操作系统发展与分类

手工操作阶段

特点:用户独占整机,人工装取纸带完成输入输出
缺点:人机速度矛盾,$CPU$ 大量空闲,资源利用率极低

批处理阶段

1. 单道批处理系统

引入脱机输入/输出技术,监督程序管理作业 $(I/O)$

  • 优点:一定程度缓解人机速度矛盾,资源利用率有所提升
  • 缺点:内存同一时刻只有一道程序运行;$CPU$ 等待 $(I/O)$,资源利用率依然很低

2. 多道批处理系统(操作系统正式诞生)

内存同时载入多道程序,程序并发执行

  • 优点:多道程序并发、资源共享,$CPU$ 利用率、系统吞吐量大幅提高
  • 缺点:无交互能力,提交作业后用户无法干预程序运行,响应时间长

分时操作系统

以时间片轮转的方式轮流为多个终端用户服务

  • 优点:支持人机交互;多用户同时使用一台主机,相互独立,用户感觉独占计算机
  • 缺点:公平分配时间片,不能优先处理紧急任务

实时操作系统

核心特征:及时性、可靠性,可优先响应紧急任务,紧急任务不需要排队等时间片

  • 硬实时系统:必须在绝对严格时限内完成处理,超时会造成严重后果
    例:导弹控制系统、自动驾驶系统
  • 软实时系统:允许偶尔违反时间规定,超时不会造成灾难性后果
    例:$12306$ 火车订票系统

其他操作系统

  • 网络操作系统:实现网络中多机通信、资源共享
  • 分布式操作系统:多台计算机协同,对外像一台机器
  • 个人计算机操作系统:面向单用户,如 $Windows$、$macOS$

屏幕截图 2026-09-22 205123

1.3操作系统运行环境

1.3.1运行机制

程序分类

  • 内核程序:操作系统内核使用的程序
  • 应用程序:普通用户/程序员编写的程序

两种指令

$CPU$ 在出厂时就划分了特权指令与非特权指令,$CPU$ 执行指令前可判断指令类型

  • 特权指令:影响重大,仅允许操作系统内核使用,如内存清零指令
  • 非特权指令:应用程序可使用,如加法指令、减法指令

两种处理器状态($CPU$ 状态)

别名:内核态=核心态=管态;用户态=目态

  • 内核态:正在运行内核程序,可执行特权指令与非特权指令

  • 用户态:正在运行应用程序,只能执行非特权指令

    内核是操作系统最重要最核心最接近硬件的部分,由大量内核程序组成。 $CPU$ 中有程序状态字寄存器($PSW$),用其中一位标记状态,$1$ 表示“内核态”,$0$ 表示“用户态”

状态转换(变态)

  1. 内核态 $\boldsymbol{\rightarrow}$ 用户态 执行一条特权指令——修改 $PSW$ 的标志位为“用户态”,这个动作意味着操作系统将主动让出 $CPU$ 使用权。

    操作系统内核在让出 $CPU$ 之前,会用一条特权指令把 $PSW$ 的标志位设置为“用户态”

  2. 用户态 $\boldsymbol{\rightarrow}$ 内核态 由中断引发,硬件自动完成变态过程;触发中断信号意味着操作系统将强行夺回 $CPU$ 的使用权。

    共性:但凡需要操作系统介入的地方,都会触发中断信号。 $CPU$ 检测到中断信号后,会立即变为“内核态”,停止运行当前应用程序,转而运行处理中断信号的内核程序?

屏幕截图 2026-09-22 210557

1.3.2中断和异常

中断的作用

“中断”是让操作系统内核夺回 $CPU$ 使用权的唯一途径。

  • 让操作系统内核强行夺回 $CPU$ 的控制权
  • 使 $CPU$ 从用户态变为内核态

补充: 内核态 $\rightarrow$ 用户态:执行一条特权指令,修改 $PSW$ 的标志位为“用户态”,操作系统主动让出 $CPU$ 使用权。 用户态 $\rightarrow$ 内核态:由中断引发,硬件自动完成状态切换,操作系统强行夺回 $CPU$ 使用权。 如果没有中断机制,一旦应用程序占用 $CPU$,$CPU$ 会一直运行该应用程序,无法实现并发。

中断的分类(广义中断)

大多数教材、试卷中,“中断”特指狭义的中断(外中断),内中断一般称为异常。

1. 内中断(异常)

信号来自 $CPU$ 内部,与当前执行指令有关

  1. 陷阱、陷入(trap):由陷入指令引发,是应用程序主动触发。 例:系统调用,应用程序请求操作系统内核服务,主动交出 $CPU$ 控制权。
  2. 故障(fault):由错误条件引起,内核有可能修复;修复完成后将 $CPU$ 交回应用程序继续执行。 例:缺页故障。
  3. 终止(abort):由致命错误引起,内核无法修复,一般不再交还 $CPU$,直接终止应用程序。 例:整数除 $0$、用户态非法执行特权指令。

2. 外中断(狭义的中断)

信号来自 $CPU$ 外部,与当前执行指令无关,每条指令周期末尾 $CPU$ 才检查外中断信号

  • 时钟中断:时钟部件每隔固定时间(如 $50\mathrm{ms}$)发送中断信号,用于时间片轮转。
  • $(I/O)$ 中断请求:输入输出设备完成任务后,向 $CPU$ 发送中断信号。

中断机制的基本实现原理

  1. 检查中断信号

    • 内中断:$CPU$ 在执行指令时检查是否有异常发生
    • 外中断:在每个指令周期末尾,$CPU$ 检查是否有外中断信号
  2. 找到相应的中断处理程序 通过中断向量表实现:不同中断信号对应不同中断处理程序;$CPU$ 检测中断信号后,查询中断向量表,找到中断处理程序在内存中的位置。

    中断处理程序属于内核程序,运行在内核态。

屏幕截图 2026-09-22 212444

1.3.3 系统调用

系统调用的定义

系统调用是操作系统内核提供给应用程序使用的接口。凡是涉及系统共享资源的操作,必须通过系统调用向内核发起请求,由操作系统代为完成,是用户程序请求内核服务的唯一入口。

系统资源由操作系统统一管控,不允许用户程序直接操作硬件、内存等共享资源,以此保障系统安全稳定。

系统调用与库函数

层次从底层到上层:裸机 $\rightarrow$ 操作系统 $\rightarrow$ 编程语言库函数 $\rightarrow$ 普通应用程序

  • 系统调用:操作系统内核提供,运行于内核态,完成资源相关操作。

  • 库函数:编程语言提供,运行于用户态。一部分库函数封装系统调用,隐藏底层细节;一部分库函数完全不涉及系统调用。

    例:$abs()$ 取绝对值库函数,不需要系统调用;$fopen()$ 文件打开库函数,底层会调用文件相关系统调用。

为什么必须要有系统调用?

计算机里的硬件、文件、内存、进程都属于系统共享资源,多个进程会竞争使用。 如果允许用户程序直接操作硬件 / 内存,会产生冲突、破坏系统,不安全、不稳定。

规则:凡是和共享资源有关、会影响其他进程的操作,必须交给操作系统内核完成,必须通过系统调用。
例子:$Word$ 和 $WPS$ 同时向打印机发打印请求,由内核统一调度打印机资源。

系统调用的分类

  1. 设备管理:设备请求、释放、启动读写外设
  2. 文件管理:文件创建、删除、读、写
  3. 进程控制:进程创建、撤销、阻塞、唤醒
  4. 进程通信:进程之间消息、信号传递
  5. 内存管理:内存分配、内存回收

系统调用的处理过程

  1. 传递参数:应用程序处于用户态,将系统调用所需要的参数放到通用寄存器。

  2. 执行陷入指令(访管指令)

    陷入指令在用户态执行,执行后触发内中断,$CPU$ 完成用户态向内核态的切换。

  3. 内核执行对应服务程序:$CPU$ 切换至内核态,操作系统内核执行对应的系统调用服务子程序,完成资源操作。

  4. 返回用户程序:内核处理完毕,将 $CPU$ 从内核态切回用户态,回到应用程序继续执行。

陷入指令是用户态主动进入内核态的唯一手段;系统调用请求发出发生在用户态,真正资源操作发生在内核态。

屏幕截图 2026-09-22 213906

1.4 操作系统体系结构

操作系统内核

内核是操作系统最基本、最核心的部分。 实现操作系统内核功能的那些程序就是内核程序。

内核包含模块

  • 时钟管理:实现计时功能
  • 中断处理:负责实现中断机制
  • 原语
    • 是一种特殊的程序
    • 处于操作系统最底层,是最接近硬件的部分
    • 这种程序的运行具有原子性——其运行不可中断
    • 运行时间较短、调用频繁
  • 对系统资源进行管理的功能
    • 进程管理
    • 存储器管理
    • 设备管理

时钟管理、中断处理、原语:与硬件关联较紧密的模块 进程管理、存储器管理、设备管理:这些管理工作更多的是对数据结构的操作,不会直接涉及硬件

操作系统的两种体系结构

image-20260922220029374

大内核

将操作系统的主要功能模块都作为系统内核,运行在核心态

  • 优点:高性能
  • 缺点:内核代码庞大,结构混乱,难以维护

微内核

只把最基本的功能保留在内核

  • 优点:内核功能少,结构清晰,方便维护
  • 缺点:需要频繁地在核心态和用户态之间切换,性能低

典型的大内核/宏内核/单内核操作系统:$Linux$、$UNIX$ 典型的微内核操作系统:$Windows\ NT$

大内核与微内核的对比

场景:应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理、存储管理、设备管理

  • 大内核:两次变态
  • 微内核:六次变态

注意:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能

屏幕截图 2026-09-22 215252

操作系统的体系结构补充

1. 分层结构

分层结构将操作系统按功能划分为多个层次,每层只对上一层提供服务,并隐藏底层实现细节。

  • 优点:结构清晰,便于调试和验证;每层可独立测试,便于移植;支持增量开发,可逐层实现。
  • 缺点:层次划分会增加系统开销;每层之间存在严格接口约束,跨层访问受限;效率可能低于其他结构。

分层结构的核心思想是:每一层只做有限职责,通过接口向上提供服务。

2. 模块化结构

模块化是将操作系统功能划分为若干具有一定独立性的模块,每个模块负责某一方面的管理功能,并规定模块之间的接口,使模块能通过接口通信。

例如:操作系统可划分为 进程管理模块、存储器管理模块、文件管理模块 等;每个模块内部还可进一步划分为若干子模块,如进程控制、进程调度、内存分配、内存保护、磁盘管理、目录管理等。

  • 优点:模块独立性强,便于理解和维护;可单独开发、测试和替换模块;接口清晰,有利于多人协作开发。
  • 缺点:模块之间可能存在复杂依赖;若接口设计不当,会影响系统效率;模块划分的粒度会直接影响系统结构的清晰度。

这种设计方法称为 模块-接口法,由模块、子模块和模块之间的接口共同组成模块化操作系统结构。

3. 宏内核(大内核)

宏内核将操作系统的主要功能模块都集成在内核中,运行在核心态。

  • 优点:性能高,模块间通信直接;功能完整,适合对效率要求较高的系统。
  • 缺点:内核代码庞大,结构混乱,难以维护;一个模块出错可能影响整个内核。

典型操作系统:$Linux$、$UNIX$

4. 微内核

微内核只把最基本的功能保留在内核中,如进程通信、内存管理、中断处理等,其他服务以用户态进程方式运行。

  • 优点:内核小,结构清晰;可靠性高,用户态服务出错不易影响整个系统;便于扩展和维护。
  • 缺点:需要频繁在核心态和用户态之间切换,性能较低;用户态服务之间通信成本较高。

典型操作系统:$Windows\ NT$

5. 外核($exokernel$)

外核是一种更极端的内核结构,内核只负责保护和复用硬件资源,而资源管理策略更多地由用户级软件完成。

  • 优点:减少了内核资源管理的负担,提高了系统的灵活性和并行度。
  • 缺点:降低了系统的一致性,部分管理工作需要上层软件承担。

体系结构对比总结

体系结构 核心思想 优点 缺点
分层结构 按层次组织,每层只通过接口向上层提供服务 结构清晰,便于测试、调试和移植 层次开销较大,效率可能较低
模块化结构 按功能划分为独立模块,通过接口通信 模块独立,便于开发、测试和维护 模块依赖可能复杂,接口设计影响效率
宏内核 主要功能都集成在内核中 性能高,功能完整 内核庞大,难以维护
微内核 只保留最基本功能在内核,服务运行在用户态 结构清晰,可靠性高,便于扩展 状态切换频繁,性能较低
外核 内核只做资源保护和复用,管理策略上移 灵活性高,并行度高 一致性较低,上层负担较重

1.1.5操作系统引导

说明:这是传统 $BIOS$ + $MBR$ 磁盘的开机引导流程(不是 $UEFI$)

整体流程梳理

  1. ① $CPU$ 上电,执行 $ROM$($BIOS$)里的引导程序
    计算机通电后,$CPU$ 直接从固定的主存地址取指令,运行固化在 $ROM$ 中的 $BIOS$ 程序。
    $BIOS$ 首先执行硬件自检 $POST$,检测 $CPU$、内存、硬盘等基础硬件是否正常;自检通过后,$BIOS$ 会按照启动顺序寻找可引导磁盘。

  2. ② $BIOS$ 读取磁盘的主引导记录 $MBR$,载入 $RAM$ 执行
    $BIOS$ 找到启动硬盘,读取磁盘第 $0$ 扇区(第一块),也就是**$MBR$ 主引导记录**,加载到内存。
    $MBR$ 包含两部分:磁盘引导程序 + 分区表。
    执行 $MBR$ 引导程序,扫描分区表,标记出活动分区(主分区,装系统的分区,如图里 $C$ 盘)。

  3. ③ 读取活动分区内的分区引导记录 $PBR$,载入 $RAM$ 执行
    $MBR$ 的引导程序定位到活动分区,读取该分区第一个扇区——$PBR$ 分区引导记录,调入内存运行。
    $PBR$ 的任务:在当前分区的文件系统里,找到操作系统的启动管理器。

  4. ④ $PBR$ 找到启动管理器,加载完整 $OS$ 内核,完成开机
    $PBR$ 在分区的根目录中定位到系统启动管理器,把它读入内存并执行;
    启动管理器再进一步加载操作系统内核、初始化系统,最终进入操作系统。


关键名词区分(考试常考)

名词 存放位置 核心作用
$BIOS$ 主板 $ROM$ 上电自检,找到硬盘,加载 $MBR$
$MBR$ 主引导记录 硬盘 $0$ 号扇区(不属于任何分区) 硬盘引导程序+整张磁盘的分区表,找到活动分区
$PBR$ 分区引导记录 活动分区的第一个扇区(属于分区内部) 在本分区文件系统里寻找系统启动文件

补充要点

  1. $MBR$ 是整个硬盘的第一扇区,不属于 $C$/$D$/$E$ 任何一个分区;$PBR$ 属于单个分区。
  2. 只有**标记为活动(可引导)**的分区,它里面的 $PBR$ 才会被执行,一般操作系统就安装在活动分区。
  3. 这套是老式 $BIOS$ 启动;现在新电脑多用 $UEFI$+$GPT$,流程不一样,不要混淆。
    image-20260922222818862

1.1.6虚拟机与 $VMM$(虚拟机管理程序)

虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机(Virtual Machine, $VM$),每个虚拟机都可以独立运行一个操作系统。

同义术语:虚拟机管理程序 / 虚拟机监控程序 / Virtual Machine Monitor / $Hypervisor$

$VMM$ 全称 Virtual Machine Monitor,中文叫虚拟机管理程序(虚拟机监控程序、$Hypervisor$),分为第一类 $VMM$ 和第二类 $VMM$。

1. 第一类 $VMM$

直接运行在硬件之上,没有宿主操作系统。

  • 位置:硬件之上,直接接管硬件资源,运行在最高特权级($Ring\ 0$),可以执行最高特权的指令。
  • 实例:$VMware\ ESXi$、$Xen$、$KVM$(裸金属部署场景)

2. 第二类 $VMM$

运行在**宿主操作系统($Host\ OS$)**之上,属于宿主操作系统上的软件。

  • 位置:依赖 $Host\ OS$ 获取硬件资源;部分运行在用户态、部分运行在内核态。客户操作系统($Guest\ OS$)发出的系统调用会被 $VMM$ 截获,并转化为 $VMM$ 对 $Host\ OS$ 的系统调用。
  • 实例:$VMware\ Workstation$、VirtualBox

两类虚拟机管理程序($VMM$)的对比

对比维度 第一类 $VMM$ 第二类 $VMM$
对物理资源的控制权 直接运行在硬件之上,能直接控制和分配物理资源 运行在 $Host\ OS$ 之上,依赖于 $Host\ OS$ 为其分配物理资源
资源分配方式 在安装 $Guest\ OS$ 时,$VMM$ 要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件 $Guest\ OS$ 拥有自己的虚拟磁盘,该盘实际上是 $Host\ OS$ 文件系统中的一个大文件。$Guest\ OS$ 分配到的内存是虚拟内存
性能 性能更好 性能更差,需要 $Host\ OS$ 作为“中介”
可支持的虚拟机数量 更多,不需要和 $Host\ OS$ 竞争资源,相同的硬件资源可以支持更多的虚拟机 更少,$Host\ OS$ 本身需要使用物理资源,$Host\ OS$ 上运行的其他进程也需要物理资源
虚拟机的可迁移性 更差 更好,只需导出虚拟机镜像文件即可迁移到另一台 $Host\ OS$ 上,商业化应用更广泛
运行模式 第一类 $VMM$ 运行在最高特权级($Ring\ 0$),可以执行最高特权的指令。 第二类 $VMM$ 部分运行在用户态、部分运行在内核态。$Guest\ OS$ 发出的系统调用会被 $VMM$ 截获,并转化为 $VMM$ 对 $Host\ OS$ 的系统调用

屏幕截图 2026-09-22 223339

  • $Host\ OS$:宿主操作系统,物理机上原本安装的操作系统(第二类虚拟化才有)
  • $Guest\ OS$:客户操作系统,跑在虚拟机内部的操作系统
  • $VMM$ / $Hypervisor$:虚拟机管理程序,负责隔离、调度各个虚拟机,分配硬件资源