资讯动态

操作系统第一章核心考点:并发与并行、中断与系统调用边界解析

发布时间:2026/10/5 3:09:23 来源:尧图企业网站定制
如果你刚开始啃王道操作系统的第1集也就是1.1.1到1.3.3这七个小节大概率会有一种错觉这些东西好像都听说过不用太仔细。操作系统的概念、特征、发展史、中断、系统调用听上去都很“常识”。但等你做真题就会发现第一章的选择题正确率经常比第三章还低因为第一章考的不是记忆而是概念之间的边界。比如“并发”和“并行”“中断”和“异常”“系统调用”和“库函数”每一对都长得像但考法完全不同。下面我就顺着王道第1集的目录把这七个小节里的核心考点、易错点以及我当年复习时踩过的坑一次性说清楚。1. 1.1.1节的价值不在“背定义”而在于看懂操作系统的三重角色1.1 官方定义拆开看资源管理、资源分配、接口环境王道教材对操作系统的定义是操作系统是指控制和管理整个计算机系统的硬件与软件资源合理地组织调度计算机的工作和资源的分配进而为用户和其他软件提供方便接口与环境的程序集合。这句话至少透出三层意思。第一“控制和管理硬件与软件资源”对应的是资源管理者视角CPU、内存、磁盘、文件、设备全都归操作系统管。第二“合理地组织调度计算机的工作和资源的分配”强调的是操作系统作为资源分配者要决定“哪个进程用CPU、哪个进程拿内存、哪个进程先访问磁盘”。第三“为用户和其他软件提供方便接口与环境”对应的是接口视角用户和应用程序靠操作系统提供的接口来使用硬件资源。真题里最喜欢拿“接口”做文章。请记住一句准确的话操作系统是用户和计算机硬件系统之间的接口。有人会改写成“操作系统是硬件和软件之间的接口”这是错的。为什么错因为从层次结构看操作系统是覆盖在裸机上的第一层软件其他所有的系统软件和应用软件都建立在操作系统之上。硬件和软件之间确实是靠操作系统来衔接的但“接口”这个术语在教材里有严格指向——命令接口和程序接口是面向用户的不是面向“软件”的。这里还要区分三个容易搞混的概念命令接口用户直接使用。分联机命令接口交互式终端里敲命令和脱机命令接口用作业控制语言写说明书。程序接口也就是系统调用供用户程序在代码中请求操作系统服务。图形用户界面GUI严格说它不属于操作系统内核的必要组成更像一种基于命令接口或程序接口实现的交互外壳。选择题如果问“哪些属于操作系统提供的用户接口”通常答命令接口和程序接口如果问“操作系统是软件还是硬件”答案很明确——操作系统是最基本的系统软件不是应用软件。QQ、浏览器、Office是应用软件编译器、数据库管理系统虽然也归在系统软件大类里但它们本身不是操作系统。真题偶尔会出归类题比如“下列哪些属于操作系统的主要功能”处理机管理、存储器管理、文件管理、设备管理、接口这五块都要能对上。1.2 目标与功能的区别考功能题要按照框架展开操作系统的设计目标有四个方便性、有效性、可扩充性、开放性。选择题偶尔考“下列哪个不是操作系统的设计目标”比如混入“安全性”——安全性当然重要但它不在这个目标清单里属于后面的章节内容。功能部分要注意别只记一个词。存储器管理不只是“做内存分配”还包括地址映射、内存保护与共享、内存扩充文件管理不只是“读文件”还包括文件存储空间管理、目录管理、文件读写管理与保护设备管理包括缓冲管理、设备分配、设备处理、虚拟设备。现在不需要展开细节但记忆这个框架很有用因为后面第四章、第五章、第六章会反复用到这套分类。我当年复习时在这一页画了一张六宫格框架三重视角、四大目标、五大功能。后来越复习越觉得第一章那页纸几乎就是整本操作系统的目录。先把地图记住再往里填充内容效率高很多。2. 1.1.2节的四个特征并发与共享互为条件虚拟与异步都是引申产物2.1 并发和并行一字之差至少值一道真题并发和并行是这门课第一个真正的“坑点”。并发的定义是两个或多个事件在同一时间间隔内发生。注意是“时间间隔”不是一个时间点。并行才是“同一时刻”真正同时发生。为什么操作系统天天讲并发而不是并行因为传统单核CPU上任何时刻只能执行一条指令。程序之间只能交替运行A跑一会儿B跑一会儿宏观上它们同时存在、同时推进微观上彼此轮流占用CPU。只有多核处理器上两个进程才能分别在不同核对上同时执行那才是并行。这个考点的题目一般长这样单核CPU上有进程A、B交替执行问A和B的关系。答案当然是并发。408里还会出现更绕的描述比如“多核环境下两个进程在不同核上同时运行”答案就是并行。本质都是考这两个词的定义。我见过不少同学在这里栽跟头不是不会是粗心。题目故意写“同一时间间隔内”选项说这是并行一眼看过去觉得对就选了。做题时把“间隔”和“时刻”圈出来能少丢好多分。2.2 互斥共享与同时访问别被“同时”两个字骗了共享的定义是系统中的资源可供多个并发执行的进程共同使用。它分两种方式互斥共享资源在一段时间内只能由一个进程访问用完后释放另一个进程才能用。打印机、磁带机这类临界资源都属于互斥共享。同时访问资源允许在宏观上被多个进程“同时”使用但微观上它们可能是交替访问或分时使用。磁盘、可重入代码、共享文件、内存中的共享数据段都属于这一类。注意“同时访问”并不是真正的同一瞬间读写同一个物理位置。磁盘请求在硬件层面就是排队、寻道、交错处理可重入代码是只读的多个进程可以各自执行同一份代码段互相不干扰。所以如果选项说“同时访问意味着多个进程在同一时刻访问同一资源的同一数据区”这个说法是错的。这也是选择题的经典陷阱。2.3 虚拟和异步一个靠复用一个靠不确定性虚拟通过时分复用或空分复用把一个物理实体变成若干个逻辑上的对应物。CPU通过时分复用被虚拟成多个虚拟处理器每个进程都觉得自己独占一个CPU内存通过空分复用被虚拟成大内存一个物理内存条在逻辑上可以容纳远大于实际物理内存的地址空间。虚拟技术的本质是“掩盖资源数量的不足”但代价是增加系统开销。异步在多道程序环境下进程以不可预知的速度向前推进走走停停。为什么会这样因为进程之间要竞争CPU、内存、I/O资源谁先谁后由调度策略和当前资源状态决定执行序列无法事先确定。这里有个易错结论“异步导致进程的执行结果不可预知”是错的。结果由程序和输入决定可变的只是推进速度和执行顺序。这个点经常作为迷惑项出现。2.4 四个特征的关系怎么答才不丢分并发和共享是操作系统最基本的两个特征二者互为存在条件。并发需要共享多个进程同时推进必然要访问同一批硬件资源。共享需要并发如果系统没有并发一个进程独占全部资源共享就没有意义。虚拟是并发和共享的产物资源不够分只好把物理资源虚拟成多份来满足各方需求。异步也是并发和共享的必然结果多个进程抢资源推进速度自然不可预知。简答题如果问“操作系统的四个特征及其关系”标准答法就是先写四个特征的定义再写这条逻辑链。别漏异步也别把虚拟和异步的关系搞反。提示做题时看到“下列哪项不是操作系统的特征”先背出“并发、共享、虚拟、异步”四个词再逐项排除基本不会错。3. 1.1.3节发展史怎么背按“痛点→方案→新痛点”推导别硬记时间线3.1 从手工操作到单道批处理核心矛盾是人机速度不匹配最早的程序员在纸带上打孔把纸带通过读卡机装入内存然后在控制台拨开关、按按键。这时候没有操作系统整个机器一个时刻只能被一个人占用CPU大部分时间在等人工操作利用率低得可怜。人机速度不匹配是所有矛盾的开端。解决方案是批处理。最先出现的是脱机输入/输出技术先用一台外围机把慢速设备上的数据读到磁带上再把磁带交给主机处理主机处理完把结果写回磁带再由外围机负责打印输出。脱机的核心思路是把慢速I/O和高速计算在时间上错开主机不必等读卡机一张一张地读纸带。单道批处理时期内存里只有一道程序。监督程序负责把一个作业读入、运行、算出结果、再读入下一个作业。问题是程序一旦请求I/OCPU就只能空等内存里又没有其他程序可以切换上去运行所以CPU仍然大量空闲。3.2 单道到多道批处理为什么必须引入中断多道批处理的改进很直观把多道程序同时装入内存当一道程序等待I/O时CPU立即切换去执行另一道程序。A进程在等磁盘B进程就用CPU做计算CPU和I/O得以并行工作资源利用率大幅提升系统吞吐量也上去了。但这件事不是白来的它有两个重要前提一是计算机必须具备中断和通道技术否则操作系统没有机会在程序执行到一半时重新夺回CPU二是系统中出现了复杂的调度算法要决定哪道程序先用CPU、用多久。多道批处理的致命缺点是没有交互性。用户把作业交上去之后只能等结果中途不能修改、不能调试作业平均周转时间长得离谱。正是这个痛点催生了下一阶段的分时系统。所以学习发展史关键不是记年份而是理解“上一代解决了什么问题、又暴露了什么新问题”。3.3 分时与实时一个保交互一个保可靠分时系统解决的是交互性问题把CPU时间切成很短的时间片轮流分配给各个终端用户。时间片一到不管当前程序执行到哪一步都强制切换到下一个用户。于是多个用户感觉自己是“独占”终端响应速度也足够快。分时系统的四个特性多路性多个用户同时在线、独立性用户之间互不感知、及时性时间片短响应及时、交互性用户可以会话式地调试程序。注意分时系统的及时性是“用户能接受的程度”不是严格的截止期限。实时系统的目标是另一回事它要在规定时间内对外部事件做出响应并可靠地完成处理。实时系统分硬实时和软实时硬实时必须保证任务在截止时间前完成比如导弹飞行控制、工业过程控制软实时允许偶尔超时比如视频通话、订票系统。平时做比较题记住这一组对立关系对比维度分时系统实时系统首要目标交互性和多路性及时性和可靠性时间约束用户可接受的响应时间必须在截止时间内完成交互要求强交互不强调丰富交互典型例子多用户终端UNIX工业控制、导弹系统3.4 网络OS、分布式OS、嵌入式OS各记一个鉴别点网络操作系统把多台独立计算机连接成网络每台机器有自己的操作系统可以相互通信、共享资源但各自独立管理自己。分布式操作系统多台机器在用户看来就是一台统一的计算机。资源调度、文件管理都是全局透明的。和网络OS的区别就是“整体是否对用户透明”。嵌入式操作系统运行在嵌入式设备上小型、可裁剪、实时性要求高比如车机、机顶盒、工业控制器里的系统。选择题遇到“下列哪种操作系统将多台机器组织成一个对用户透明的统一系统”答案就是分布式操作系统。这类题不算难关键是别被网络OS干扰。4. 1.3.1节运行机制用户态和内核态之间的那道门只有三种方式能打开4.1 为什么要隔离机长室不能对乘客开放如果用户程序可以随意执行所有指令那它可以随便改写内存里的操作系统代码、随时关闭中断、直接指挥硬件做奇怪的事系统很快就会崩溃更不用说防病毒之类的问题了。所以CPU被划分成两种状态内核态也叫管态、核心态和用户态也叫目态。内核态能执行特权指令和非特权指令用户态只能执行非特权指令。我用一个生活化类比内核态相当于机长室只有机组人员能进用户态是乘客舱乘客不能进驾驶舱动操纵杆。用户程序要“动操纵杆”比如发一条I/O指令只能按铃呼叫机组人员——也就是发起系统调用由内核替他操作。4.2 特权指令和非特权指令怎么判断需要重点区分几组特权指令I/O指令、关中断指令、停机指令、修改程序状态字PSW、设置时钟、内存保护、状态切换等。非特权指令算术运算、逻辑运算、取数、访存访问自己的合法地址空间、普通寄存器读写等。判断技巧很简单一条指令如果会影响整个系统的全局控制、外部设备或中断状态那它一定是特权指令如果只影响当前程序自身的数据计算和逻辑流程就是非特权指令。这里有一个高频易错点“访管指令”也叫陷入指令trap它是特殊的。访管指令在用户态可以执行它本身不是特权指令但它执行后会产生一个内部异常从而把CPU切换到内核态。它相当于乘客舱里的“呼叫按钮”按下去不是自己操作飞机而是把机组人员叫过来。用户态下执行特权指令会怎样CPU会拒绝执行并触发一个异常一般归为非法指令类故障然后操作系统捕获这个异常进入内核态做处理。这正好衔接下一节内容异常是切换状态的大门之一。4.3 内核到底包含什么操作系统内核是运行在内核态的核心部分主要包含四块时钟管理给进程计时、提供时间片、维护系统时间是分时和调度的重要基础。中断机制检测中断信号、响应中断、调用中断处理程序。原语原子操作执行期间不可被中断。“阻塞”“唤醒”“进程切换”这些最敏感的操作必须以原语形式实现防止并发环境下数据被撕成两半。系统控制的数据结构及处理进程控制块、内存管理表、设备管理表等核心数据以及针对这些数据的处理逻辑。“原语”是王道第一章的常考名词之一重点记住它“一气呵成、不可分割”的特点。4.4 状态切换的唯一路径从用户态进入内核态唯一途径是中断、异常或陷入。这三者可以概括为“广义中断”系统调用属于陷入的一种。所以“只有系统调用才能进入内核态”这个说法是错的——硬件中断、时钟中断、除零异常也都能进入内核态。从内核态回到用户态则是通过中断返回指令等机制恢复现场的PSW和PC把CPU状态字切回用户态。整个过程在下一节的中断处理流程里会完整出现。提示做题时只要看到“用户态切换到内核态的唯一途径”就选“中断/异常/陷入”看到“唯一途径是系统调用”直接判错。5. 1.3.2节中断与异常为什么分类题总做错以及处理流程的套路5.1 先分清“中断”和“异常”这对名字在考研教材里广义的中断包括外中断和内中断。外中断通常直接叫“中断”内中断也叫“异常”。我建议用三个维度区分看来源外中断来自CPU外部比如I/O设备完成信号、时钟脉冲内中断来自CPU内部是执行指令时发现的问题。看是否异步外中断是异步的它随时可能来跟当前执行的指令没有固定关系内中断是同步的由某条具体指令触发同样的条件下可以复现。看是否可屏蔽外中断里有可屏蔽中断INTR和不可屏蔽中断NMI内中断一般不可屏蔽因为它是CPU自身运行状态的直接反应。内中断还能再细分三类陷入trap用户程序主动请求最具代表性的是系统调用。它是有意为之相当于主动按铃。故障fault程序执行中出现的可修复问题比如缺页、除零、非法操作码。CPU转入内核处理后如果修复成功就继续执行修复不了就终止进程。终止abort不可修复的严重错误比如硬件故障、CRC校验错只能终止进程。这里要特别强调缺页是故障属于内中断不是外中断。很多同学看到“缺页”里带个“页”字就以为和磁盘有关想当然归成外中断每年都有人丢分。5.2 分类题的实战判断顺序我的做题方法是三步走。第一步看信号来自CPU外部还是内部外部一律归外中断。第二步内部信号里用户主动按铃的是陷入被动发现错误的是故障或终止。第三步判断程序能不能修复能修复是故障不能修复是终止。把常见考点整理成表事件类型关键理由I/O完成外中断来自设备异步可屏蔽时钟中断外中断来自定时器异步电源掉电外中断NMI不可屏蔽必须立即处理系统调用内中断陷入用户主动请求内核服务除零内中断故障指令执行时错误缺页内中断故障可修复处理完重新执行指令非法指令内中断故障可捕获并终止进程校验错/硬件故障内中断终止不可修复这张表如果能自己默写出来1.3.2的选择题基本稳了。5.3 中断处理流程顺序不能被口糊中断处理流程王道教材一般写为关中断、保存现场、中断服务程序、恢复现场、开中断、中断返回。为什么要先关中断因为中断处理过程本身不能再被另一个中断打断否则现场一团乱。高优先级中断可以打断低优先级处理这属于中断优先级和中断嵌套第一章先不用展开。保存现场保存的是程序状态字PSW、程序计数器PC可能还包括通用寄存器这些数据压入内核栈。执行完服务程序后从栈里恢复现场再开中断最后通过中断返回指令回到用户态继续执行。选择题喜欢考顺序比如“中断处理的第一步是什么”答案是关中断。也有题问“哪一项不是中断处理必需的环节”比如“检查时间片是否用完”这种就不算。5.4 为什么说中断是并发的基础操作系统能实现并发全依赖中断赋予它“控制权回收”的能力。设想没有中断一个死循环程序就能永久霸占CPU操作系统永远等不到机会介入。有了时钟中断操作系统每过一个时间片就被唤醒一次强制切换进程——这是分时和并发的前提。有了I/O中断进程等待的磁盘数据一到OS马上知道并唤醒它——这是资源共享和异步机制成立的基础。所以1.1.2的并发、共享、异步最终都指向1.3.2的中断机制。6. 1.3.3节系统调用它和普通函数调用的本质差别以及完整调用路径6.1 库函数与系统调用别用“用了库函数就是系统调用”来理解系统调用是操作系统提供给用户的程序接口是运行在用户态的程序请求内核服务的正规方式。很多人以为“库函数就是系统调用”这是错的。库函数是运行库提供的封装可能在内部调用系统调用也可能完全不调用。拿C语言举例printf是库函数它内部会调用write系统调用把数据输出malloc分配大块内存时可能调用brk或mmap但malloc本身是库函数strlen、strcmp、memcpy这些字符串和内存操作纯在用户态完成不触发系统调用。所以判断标准不是“它是不是库函数”而是“它是否请求了内核服务”。经典选择题里read、write、open、close、fork、exit、getpid一般算系统调用printf、scanf、strlen不算。注意printf在真正执行时底层会触发write但题目问“下列哪个是系统调用”时通常不会把printf作为正确选项。6.2 调用路径拆成七步一次系统调用的完整旅程大致是这样用户程序把系统调用号和参数准备好放入寄存器或内存指定位置。执行陷入指令访管指令。这是用户态程序请求进入内核态的方式。CPU切换到内核态保存用户程序现场。内核根据系统调用号查系统调用表找到对应的内核处理函数。在内核态执行真正的服务程序比如读写文件、创建进程、分配内存。把结果写入返回值寄存器或指定内存位置。恢复现场切回用户态程序继续执行下一条指令。这里有个易错点陷入指令本身不是特权指令它能在用户态执行。真正在内核态执行的是特权操作。陷入指令的作用是主动触发一次异常把CPU带进内核态。Linux里常见的系统调用有read、write、open、close、fork、exit、wait、mmap这些在第四章进程管理之后会反复出现。现在不用硬记但要建立意识每一个进程管理操作、每一个文件读写背后几乎都对应一个系统调用。6.3 参数传递的三种方式系统调用需要把参数从用户态传给内核有三种常用方式寄存器传参把参数直接放进寄存器简单快速适合参数较少的情况。内存块传参参数很多时先放在用户内存的一个表或结构体里再把表地址传给内核。大数据量I/O场景很常见。栈传参通过用户栈压栈传递内核从栈里取参数。选择题如果考“系统调用怎么传参”这三种方式都能选。实际Linux里往往混合使用普通参数放寄存器大规模数据传地址。6.4 为什么系统调用开销远大于普通函数调用普通函数调用就是一条call指令、压栈、跳转、返回全程留在用户态。系统调用则有明显额外成本执行陷入指令CPU要从用户态切到内核态要保存和恢复完整现场要查系统调用表还可能涉及上下文切换。所以系统调用虽然安全、功能强大但不能当普通函数频繁使用。这也是为什么很多高性能程序会把多次小规模I/O合并成一次大块I/O目的就是减少系统调用次数。7. 把1.1.1~1.3.3串成考场得分能力典型题解法与后续复习衔接7.1 第一章选题最容易出题的位置把整章考点压缩成一张清单平时复习按着自检操作系统的定义里“接口”指用户和硬件之间的接口命令接口和程序接口要分清。并发和并行一个看时间间隔一个看时间点单核只能并发。互斥共享和同时访问的区分“同时访问”不等于同一瞬间同址访问同一数据。四个特征之间的逻辑链并发和共享互为条件虚拟与异步是产物。发展史多道批处理无交互性、分时系统强交互、实时系统保可靠。特权指令判断I/O、停机、关中断、改PSW是特权算术运算和访管指令不是。中断异常分类表缺页是故障系统调用是陷入I/O完成是外中断。用户态到内核态的唯一路径是广义中断不是只有系统调用。中断处理流程的第一步是关中断。系统调用vs库函数printf是库函数write是系统调用。这些点几乎每一条都能在真题或模拟题里找到对应选项。我建议把它们抄成卡片零散时间刷一遍比反复翻教材效率高得多。7.2 简答题想拿满分关键是“框架完整再补血”很多同学答简答题喜欢想到哪写到哪分数低不是因为不会而是漏了要点。操作系统阅卷通常按点给分所以要先写框架。以“简述操作系统的特征及相互关系”为例标准答题结构第一层写出操作系统的四个特征并发、共享、虚拟、异步。第二层分别用一句话定义每个特征。第三层指出并发和共享互为存在条件虚拟和异步是引申结果。第四层有余力就补一个具体例子比如CPU时分复用实现虚拟处理器。这样答出来即使定义写得不完美框架也拿到了大半分数。第一章简答题虽然不多但“特征及关系”“为什么要分用户态和内核态”“系统调用过程”是反复出现的考点值得提前写好标准模板。7.3 这讲学完应该能自问自答的三个问题学完1.1.1到1.3.3可以拿这三个问题自测操作系统在计算机系统中的位置和角色是什么——覆盖裸机的第一层系统软件既是资源管理者又是用户接口。为什么中断是并发得以实现的基础——没有中断操作系统永远无法夺回CPU无法切换进程。从用户态进入内核态的路径有哪些——外中断、异常含系统调用三者广义上都是中断。这三个问题能用自己的话讲明白这一讲就算过关可以放心进入第二章进程管理了。第二章的进程概念、状态转换、调度算法本质上都是在第一章的运行机制和中断机制之上盖楼。7.4 一个个人经验二刷这一讲时我干过一件蠢事把发展史的时间节点背得滚瓜烂熟结果考到“多道批处理系统的缺点”反而愣住了。后来我总结出规律第一章凡是能回答“为什么”的内容都不需要硬背必须背的基本只有定义和分类。所以复习策略应该是“理解推导为主表格整理为辅”。中断异常分类表、发展阶段对比表、特征关系链这三张表做完比把教材抄三遍都管用。最后再分享一个小技巧做题遇到“下列哪项不是操作系统特征”先想“并发、共享、虚拟、异步”再逐项排除遇到“用户态不能执行哪条指令”先判断这条指令是否影响全局。这套思路在后续进程、内存章节同样适用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑