
你兴冲冲地从网上下了一个软件双击之后屏幕弹出一行字指定的可执行文件不是此操作系统平台的有效应用程序。这时候你心里的第一个问题大概率不是我的电脑是不是坏了而是操作系统到底在管什么。这个看似简单的问号恰恰就是《操作系统》第一章要回答的核心问题。我见过太多人学这一章时草草翻过觉得全是名词解释背完操作系统是管理计算机硬件与软件资源的系统软件就完事了。结果学到进程管理、虚拟内存时两眼一黑回头才发现第一章里那些没考的概念其实决定了后面所有章节的底层逻辑。这篇文章就把第一章第一梯队的知识点拆开揉碎讲一遍——操作系统是怎么定义出来的、它经历了哪些阶段才长成今天的样子、它靠哪四个基本特性站稳脚跟、具体管了哪些事以及用户态与核心态、中断、系统调用这三个容易丢分却又极其关键的机制。不管你是计算机专业正在复习期末的学生还是在补基础的转行程序员或者只是想知道电脑开机之后到底发生了什么的普通用户这篇都能让你把第一章的骨架搭起来。1. 从程序无法运行说起操作系统到底是什么1.1 一个报错背后的三层话先回到开头那个报错。程序不是此操作系统平台的有效应用程序这句话信息量非常大。假设你手里确实有一个完好的程序文件报错通常来自三个层面第一文件格式不对。Windows 上可执行文件是 PE 格式Linux 是 ELF 格式macOS 是 Mach-O 格式。三种系统的包装方式完全不一样就像同样一本书中文版、英文版、日文版各印各的拿错语言版本自然读不了。第二CPU 指令集不匹配。x86 的机器码和 ARM 的机器码完全不同就算文件格式对CPU 也听不懂对方的指令。第三依赖运行库缺失。Windows 上很多程序依赖 VC 运行库、.NET 框架这类系统组件缺少了就会直接报错。这个报错之所以存在是因为操作系统本质上是一个平台——它屏蔽了底层硬件的差异给应用程序提供一套统一的运行环境。写程序的人不需要关心用户用的是哪家 CPU、哪块显卡、哪张网卡只要按操作系统规定的接口写就能在所有装了同类系统的机器上跑。反过来操作系统也是硬件和人的中间层你不会直接去操作硬盘的磁头你只会打开文件管理器点一下复制粘贴。这个翻译和调度的工作就是操作系统干的。1.2 操作系统的精确定义与目标教科书上的定义是操作系统是配置在计算机硬件上的第一层软件是管理计算机硬件与软件资源的系统软件同时也是计算机系统内核与用户之间的接口。拆开来看它有双重身份对下它是硬件的管家。CPU、内存、磁盘、网卡、打印机这些资源谁用、用多久、用完怎么收回都归它管。对上它是应用的房东。应用程序想申请内存、读文件、发网络包都得通过操作系统提供的入口来办不能直接闯进硬件里乱搞。操作系统要实现的四个目标也值得单独记一下方便性让用户不用懂硬件细节就能用电脑有效性让硬件资源尽量不闲着可扩展性支持新硬件、新功能往里面加开放性遵循标准接口让不同厂商的软件硬件能协同工作。这里有个容易混淆的点操作系统不是装系统那个安装动作。很多人把 Windows 安装盘往 U 盘里一写、装完点下一步就觉得自己了解了操作系统。那只是使用操作系统不是理解操作系统。第一章说的操作系统是那个在你点下一步之前就已经写在磁盘上、开机后被加载进内存、然后一直默默管理所有资源的软件本体。1.3 裸机、中间层与用户第一章的坐标系学第一章最重要的是建立一张层次图。最底层是裸机就是只有 CPU、内存、磁盘这些硬件没有任何软件的机器。裸机之上是第一层软件——操作系统它把所有硬件包装成资源池并提供服务接口。再往上是各种系统程序和应用程序比如编译器、数据库、浏览器。最上面才是用户。你完全可以把这个层次想象成一栋楼的物业硬件是楼体和水电管道应用程序是住户操作系统就是物业。住户不需要自己修水管、调电压只需要向物业报修物业统一调度师傅去处理。没有物业整个楼就是毛坯房每个住户都得自带发电机和水泵——这就是没有操作系统的裸机状态。为什么第一章必须先讲这个层次因为后面所有内容——进程、内存、文件、设备——本质上都是操作系统在这个层次里扮演某个具体角色。坐标系立住了后面才不会迷路。2. 从人肉排队到机器调度四个发展阶段串成一条线2.1 手工操作阶段人就是操作系统最早的计算机根本没有操作系统这个概念。程序员把程序写在纸带或卡片上然后走进机房把纸带喂给计算机按下启动按钮计算机跑完输出结果程序员拿走。下一批人再进来重复同样流程。这个阶段叫手工操作阶段。操作系统的工作全靠人自己完成装纸带、启动、取结果、排错全是人肉调度。问题很明显——人慢机器快。一个程序跑只要几秒但人来来回回可能要几分钟甚至更久。CPU 大量时间在空等利用率低得可怜。这时候根本没有并发和资源管理因为同一时刻只有一个程序在运行。现在的你可能会觉得离谱但想想看这正是第一章想让你感知到的起点操作系统是被浪费逼出来的。CPU 太贵了让它空转是最大的犯罪而解决空转的办法慢慢长成了操作系统的核心功能。2.2 批处理阶段从单道到多道的质变既然人肉操作太慢那就把一批作业攒起来由一台专门的机器统一读入磁带再交给主机依次执行。这叫单道批处理。它解决了一部分人机速度矛盾但单道批处理的致命伤在于内存里只有一个程序这个程序一旦在等待输入输出CPU 就只能干等着因为内存里没有别的事可做。真正让操作系统活起来的是引入了多道程序设计技术的多道批处理系统。核心思想是内存中同时放进多个程序当一个程序因为输入输出而暂停时CPU 立刻切换到另一个程序继续执行。听起来很简单但这里藏着一个关键前提——你必须先有中断机制CPU 才能在程序之间来回切换。没有中断程序一旦启动就会一直独占 CPU别的程序根本没机会插进来。我在带新人的时候经常问一个问题多道批处理系统最大的功臣是谁很多人答调度算法其实真正的功臣是中断机制。调度算法只是策略中断才是让策略能执行下去的底层能力。多道批处理系统还带来了一个重要的观察角度宏观上多个程序同时在内存里似乎都在跑微观上任何时刻 CPU 只执行其中一个。这其实就是后面第四章要讲的并发的第一个版本。它也直接催生了资源管理的需求——多个程序共享内存、CPU、IO就必须分配和保户否则程序之间会互相踩踏。单道批处理系统可以说是一个人干活干到完而多道批处理系统就是多个人轮流上桌吃饭谁夹菜IO的时候别人赶紧吃。机器不再等人这是操作系统走向成熟的第一个分水岭。2.3 分时与实时抢占 CPU 的两种玩法多道批处理虽然效率高但有个用户体验问题交互性极差。你把作业提交上去可能几个小时后才出结果中间出错了只能重新排队。于是分时系统出现了。它的做法是把 CPU 时间切成很短的时间片轮流分给每个终端用户。每个用户都感觉自己在独享一台计算机但实际上大家都在排队轮流用而且因为切换足够快人类根本感知不到延迟。分时这个名字很直白按时间分享。它的核心词包括时间片、轮转、响应时间。一个时间片用完系统就强制切换给下一个用户这种强制依赖的同样是时钟中断——CPU 上的定时器到点发一个中断操作系统趁机介入。分时系统的出现让交互成为可能你在终端敲一行命令机器立刻回复结果这个体验在今天看来稀松平常在当时却是革命性的。实时系统的目标又不一样它追求的不是每个人都有机会用而是必须在规定时间内给出结果。比如导弹控制系统、工业控制装置、自动驾驶里对传感器的响应晚了几毫秒可能就出大事。实时系统分为硬实时和软实时硬实时必须严格在截止时间前完成软实时偶尔超时还能接受。注意实时系统不一定快而是准时。这个理解偏差是期末常考陷阱。分时和实时的划分本质上是对CPU 时间怎么分配的不同策略。前者要公平响应后者要确定性。这两种需求到今天依然同时存在你电脑里的操作系统调度普通任务时用分时策略但对键盘输入、鼠标移动这类事件又要保证足够及时的响应。2.4 现代操作系统的形态网络、分布式与AI操作系统接下来课本通常还会讲网络操作系统、分布式操作系统、嵌入式操作系统、个人计算机操作系统。它们的划分维度各不相同网络操作系统强调通信与资源共享分布式操作系统强调多台机器像一个整体一样协同工作嵌入式操作系统强调裁剪、实时和可靠个人计算机操作系统强调界面友好和易用性。到了今天这个清单还可以继续往下加云操作系统管理数据中心里成千上万台虚拟机、移动操作系统Android、iOS、面向服务器和云原生的 Linux 发行版openEuler、麒麟这类面向特定场景的系统项目在生态里也越走越深、以及常被提到的 AI 操作系统。AI 操作系统这个词现在有点热度但不同场合意思完全不同。一种含义是用 AI 技术去优化操作系统本身比如用机器学习做资源调度预测、磁盘故障检测、安全异常感知另一种含义是操作系统为 AI 应用提供运行环境比如管理 GPU、NPU 等异构算力。考试时如果遇到这个概念先看清题目说的是哪一层再判断它在讲调度优化还是算力管理。这一块课本上着墨不多但作为第一章的延伸了解能让你理解操作系统演进的动力硬件环境变了、用户需求变了操作系统就得跟着变。3. 并发、共享、虚拟、异步操作系统的四大立身之本3.1 并发与并行别再把两个词混着用这是第一章最容易被混淆的一对概念也是面试和笔试的老熟人。并发指的是两个或多个事件在同一时间间隔内发生。注意这个词的精细之处——同一时间间隔不是同一时刻。在单 CPU 环境下并发靠的是快速交替执行程序 A 跑一小会儿切到 B 跑一小会儿再切回 A。宏观上它们都在往前推进好像同时在跑微观上任何一瞬间 CPU 只服务一个程序。并行指的是两个或多个事件在同一时刻同时发生。这需要多核 CPU 或者多台机器。四核 CPU 上同时跑四个线程那是真的并行。我给新手打的比方是你一个人同时烧三壶水一会儿看看这壶、一会儿看看那壶这叫并发三个人一人烧一壶叫并行。操作系统的核心挑战之一就是如何让 100 个程序在一个 CPU 上看起来像同时运行这是纯并发问题。多道程序设计是并发的实现基础没有多道程序在内存里等待想切换都没对象可切。所以要记住没有并发操作系统就只能是个批处理执行器没有并发共享、虚拟、异步全都无从谈起。并发是四大特性里最核心的一个也是后续进程管理这一大章的引子。3.2 共享互斥共享与同时共享共享是指系统中的资源可供多个并发执行的进程共同使用。但共同有两种完全不同的方式。第一种叫互斥共享。有些资源在一段时间内只能由一个进程使用用完才能给下一个典型的就是打印机。如果两个进程同时往打印机输出打印出来的东西会交错成一团乱麻。必须等一个进程用完了、释放了另一个进程才能拿到。这类资源也叫临界资源。第二种叫同时访问。不是说真的同一瞬间读写同一个字节而是宏观上多个进程可以同时使用。比如磁盘进程 A 在读写盘片的一个区域进程 B 同时读写另一个区域互不干扰。再比如可重入代码、共享内存多个进程可以同时读同一个文件。这里的同时本质上还是通过微观交错或硬件并行实现的但在用户和进程的视角里是同时可用的。互斥共享和同时访问反映的是操作系统对资源的不同调度策略。资源能不能共享取决于资源本身的物理性质以及操作系统有没有能力把它切开分配。共享和并发是一对共生关系没有并发资源共享就不存在竞争没有共享机制并发程序就会互相破坏。3.3 虚拟把一个 CPU 变成很多个虚拟可能是四大特性里最反直觉的一个。它指操作系统通过某种技术把一个物理实体变成若干个逻辑上的对应物。最经典的例子是时分复用。一个物理 CPU通过快速切换让每个用户觉得自己有一整台机器——这就是分时系统实现虚拟 CPU的过程。你在终端开着好几个窗口每个窗口里跑着一个程序每个程序都感觉 CPU 是它一个人在用实际上都是虚拟出来的。第二个例子是空分复用。最典型的场景是虚拟内存物理内存只有 8GB但操作系统可以让每个进程以为自己拥有独立的、接近无限大的地址空间。做法是把暂时用不到的数据换到磁盘上用到再换回来。每个进程看到的是一个连续的、私有的虚拟地址空间感觉自己在独占内存。再往外延伸一步虚拟机技术就是把一台物理服务器虚拟成多台虚拟机每台虚拟机里装自己的操作系统。你在 VirtualBox 或 VMware 里装 Linux、Windows、鸿蒙虚拟机时虚拟机里的系统并不知道自己其实只占了宿主机的一部分资源。这是虚拟特性在今天的纯粹体现。为什么要强调虚拟因为虚拟的核心价值在于隔离和幻觉——让每个程序都拥有一套完整的、互不干扰的资源视图。程序不需要知道其他程序的存在也不需要处理硬件细节这种幻觉极大降低了编程复杂度。3.4 异步不确定性才是常态异步是指进程的运行不是一气呵成的而是走走停停、以不可预知的速度向前推进。在多道环境下一个程序在内存里等待着什么时刻能获得 CPU、什么时刻需要等待 IO、每次切换要停多久都是不确定的。关于异步初学者最容易产生的一个错误观念是程序运行得忽快忽慢是不是说明系统出问题了。恰恰相反异步是并发系统的正常状态。程序 A 和程序 B 交替运行谁快谁慢取决于调度策略、外部中断、IO 完成时刻这些都不在程序的掌控之中。但这里有个非常重要的前提尽管速度不可预知只要初始条件相同程序运行的最终结果应该是确定的。如果因为异步就导致结果不稳定那就是系统同步机制出问题了而不是异步本身有错。要保证异步但结果一致操作系统后续章节会引入进程同步、互斥、信号量等机制。第一章只需要你建立认知异步是并发系统的固有属性管理异步是操作系统的责任之一。四大特性放在一起看其实就是一个信任状操作系统向应用程序承诺——你可以并发地运行可以共享资源可以拥有虚拟的完整资源视图哪怕运行节奏不可预测我最终保证结果正确。这四条承诺撑起了整个学科的框架。4. 操作系统到底干了哪些活四大管理功能4.1 处理机管理谁用 CPU谁先等处理机管理的核心对象是 CPU 和承载它的进程。第一章不用深入到调度算法细节但要建立处理机管理的四大职责概念进程控制、进程同步、进程通信、进程调度。进程控制负责进程的创建、撤销、状态转换。一个程序从双击运行到弹出窗口背后就是操作系统创建进程、分配资源、把控制权交给入口点的完整链路。进程同步解决并发进程之间的协作和互斥问题——比如生产者往缓冲区放数据消费者从缓冲区取数据两者节奏必须匹配否则要么覆盖数据要么拿到空数据。进程通信解决进程之间交换信息的问题管道、消息队列、共享内存这些后续都会逐个展开。进程调度则是决定下一个轮到谁上 CPU。这是第一章里最值得画图理解的部分进程从创建、就绪、运行到阻塞每一步都有状态变换状态变换是后面几章的骨架。可以把处理机管理想成餐厅后厨的排单系统菜单进程进来哪些已经做好就绪哪些正在炒运行哪些在等食材阻塞厨师CPU下一份炒哪个菜调度。餐厅要高效这套排单逻辑必须严密。4.2 存储器管理从内存编址到虚拟内存存储器管理的对象是内存。它的职责可以拆成四块内存分配与回收、内存保护、地址映射、内存扩充。内存分配与回收是给新建的进程分配一块内存空间用完后回收避免内存碎片越来越碎。内存保护是防止一个进程越界访问另一个进程的内存——所以操作系统的地址机制天然需要隔离。地址映射是把程序里的逻辑地址转换成物理地址这背后涉及到编译、链接、装载和运行时重定位。内存扩充是借助虚拟存储技术把内存变大让比物理内存还大的程序也能运行。初学者常在这里犯一个误区以为内存管理就是给程序分一块内存。实际远不止如此。现代操作系统里每个进程都活在自己的虚拟地址空间里逻辑地址和物理地址不能混为一谈。第一章只要先理解操作系统必须管理好内存这件有限的资源同时让每个进程感觉内存是无限且私有的即可。这个观念会在后面虚拟存储管理章节被反复验证。顺带提一个和现实相关的例子虚拟机软件报客户机操作系统已禁用 CPU这类错误本质上就与内存和 CPU 虚拟化的硬件支持有关。现代 CPU 提供的内存管理单元MMU和虚拟化扩展指令让虚拟机可以安全地把物理内存隔离给客户系统。遇到虚拟机启动失败常见的处理方向之一就是检查 CPU 虚拟化功能VT-x/AMD-V在 BIOS 中是否开启。这是第一章存储器管理和虚拟特性在真实排错中的体现。4.3 设备管理与文件管理把乱七八糟的硬件变成整齐的文件设备管理管的是键盘、鼠标、显示器、磁盘、网卡、打印机这些五花八门的 IO 设备。它要做的事包括缓冲管理用缓冲区化解 CPU 与设备之间的速度差异设备分配决定设备给哪个进程用设备处理即驱动设备完成实际的数据传输虚拟设备通过技术手段把独占设备改造成可共享设备。设备管理的难点在于设备种类太多、差异太大。操作系统的应对策略是抽象和统一在用户和应用程序眼里设备被包装成文件——串口是文件打印机是文件磁盘分区也是文件。打开、读、写、关闭这套文件操作对设备同样适用。这就是一切皆文件的设计哲学也是你能在 Linux 下用 cat 命令去读设备文件内容的原因。文件管理则是管理磁盘上的数据。它负责文件存储空间的管理——文件放在磁盘哪个块目录管理——文件名怎么映射到物理位置文件读写与保护——谁能读、谁能写以及文件共享让多个进程安全地访问同一份文件。文件系统把磁盘这个庞大的存储空间变成了层次清晰的文件夹树用户看到的是我的文档C 盘D 盘而不是一串串柱面号、磁道号和扇区号。把设备管理和文件管理放在一起理解能看出操作系统的统一思路硬件细节是混乱的、复杂的、千奇百怪的操作系统通过一层抽象把它们包装成整齐、统一、好用的接口。这个思路贯穿全书。4.4 用户接口命令、图形、程序三种入口操作系统还要提供与用户的接口。通常分成三类。联机命令接口是用户在终端上敲命令、系统立即执行。Windows 的 CMD、PowerShellLinux 的 Shell都算联机命令接口。脱机命令接口是用户把命令写进脚本或作业说明书系统自动依次执行适合批量处理。程序接口是为应用程序提供的编程入口也就是系统调用应用程序通过它请求操作系统服务。图形用户界面GUI严格来说不是独立的一类接口它是联机命令接口的图形化包装——你点击复制文件按钮底层还是调用了对应的文件操作命令或系统调用。这里有一个几乎所有学生都会忽略的细节API 和系统调用不是一回事。应用开发者接触的是库函数和 API比如 C 语言的 printf()、Windows API 的 CreateFile()。API 是系统调用之上再封装的一层一个 API 背后可能包含多个系统调用也可能只是纯计算不需要进内核。系统调用才是真正进入操作系统内部的门。这个区别弄清楚第五章的内容理解会顺畅很多。5. 内核态与用户态这一章最容易考也最容易懵的部分5.1 CPU 的两个身份和特权指令操作系统要保护自己就不能让任何程序都能为所欲为。CPU 为此设计了两种运行状态核心态也叫管态、内核态和用户态也叫目态、用户态。处于核心态时CPU 可以执行一切指令包括特权指令处于用户态时只能执行非特权指令。什么是特权指令比如修改 PSW程序状态字、设置中断屏蔽、发起 IO 操作、加载内存界限寄存器、切换运行状态。这些指令一旦被普通程序滥用系统立刻崩溃或失控。所以操作系统运行在核心态应用程序运行在用户态。用户程序想干特权事自己动手是不行的只能请求操作系统代办。这个设计看似简单却是整门课的安全基石。没有用户态和核心态之分任何一个普通程序都能篡改内存、关闭中断、直接操作磁盘那系统根本没机会做多道并发——程序互相破坏就够受的了。关于这个机制一个很容易踩的理解误区是核心态是不是一种权限很高的模式 更准确的说法是核心态是操作系统代码运行时的 CPU 状态与权限高低无关而是与这段代码是否可信有关。操作系统的关键代码可信所以给它核心态用户代码不可信所以限制在用户态。国产操作系统、Linux、Windows 在内核设计上都有这套状态的影子只是具体叫法和实现略有差异。5.2 中断操作系统从被动变主动的开关在学习多道批处理时我提过中断是让系统得以切换的基础。这里要系统地说清楚。中断可以分为两大类。外中断来自 CPU 执行指令之外的事件比如 IO 设备完成任务发出的信号、时钟中断、键盘鼠标事件。这类中断是异步的——CPU 不知道它什么时候来。内中断又称异常来自 CPU 执行指令本身产生的事件比如除数为零、缺页、非法指令、系统调用指令。这类中断是同步的是程序执行到某条指令时必然或可能触发的。按异常性质还可以细分出故障fault、自陷trap和终止abort。除零、缺页属于故障可以修复int 指令、syscall 指令属于自陷是程序主动请求系统服务严重硬件错误属于终止系统直接终止进程。为什么说中断让操作系统从被动走向主动因为如果没有中断操作系统调度程序没法插进正在执行的程序里去——CPU 被当前程序占着谁也没办法让位。有了时钟中断每隔一小段时间 CPU 就自动暂停当前程序跳到操作系统的中断处理程序里操作系统借此机会检查下一个该谁跑了从而实现了进程切换。这就是抢占式调度的物理基础也是多道、分时系统真正能落地的原因。很多在头歌这类平台上做过int 指令除零异常实验的同学会在调试时看到异常或中断触发的瞬间CPU 进入核心态并按中断向量跳转。那些实验本质就是在验证这一节的内容中断是用户态进入核心态的重要途径也是操作系统接管控制权的开关。5.3 系统调用应用程序唯一合法的走后门方式应用程序在用户态做不了特权操作又要获得服务于是操作系统开了一个专门的门——系统调用。程序通过执行陷入指令如 x86 的 int 80、syscallARM 的 svc/ecall主动触发一次内中断CPU 从用户态切换到核心态跳转到操作系统内核预设的入口在内核中执行对应服务完成后返回用户态。我习惯把系统调用理解为合法走后门规则是普通程序不能进仓库但你需要仓库里的东西于是你按正规流程按下对讲机陷入指令门卫操作系统核验请求后帮你把东西拿出来。关键在于这个过程是受控的、可审计的做什么操作、访问什么资源操作系统全部登记在案并且做了权限检查。系统调用的典型例子包括进程控制类的 fork()、exec()文件操作类的 open()、read()、write()、close()设备管理类的 request()、release()内存管理类的申请和释放内存以及通信类的 pipe()、shmget() 等。日常编程中你敲的文件读写最后几乎都会落到系统调用上。这一节还有一个重要考点CPU 状态切换的开销。用户态到核心态的切换不是免费的它要保存现场、改变状态、恢复现场这也解释了为什么高性能场景下要减少系统调用次数。你可以通过把多次小读写合并成一次大读写来降低系统调用的频次。这种优化思想在很多网络服务、数据库引擎里都能见到。6. 第一章常见的学习误区与复习建议6.1 背概念和做题之间的差距期末复习时最常见的失败模式是把定义背得滚瓜烂熟做选择题时依然翻车。因为第一章的题目特别喜欢换皮考概念。举个例子题干说在单 CPU 环境下两个进程在同一时间间隔内交替执行称为——答案是并发。但很多人会在并发和并行之间犹豫原因就是只背了定义没有真正理解时间间隔和时刻的差别。再比如系统调用是操作系统提供给用户的什么接口——答案应该是程序接口而不是命令接口或 GUI。题干稍微绕一下死背概念的人就会掉坑。还有一个常被忽视的点很多人会拿装系统、调分辨率、定时关机这类日常使用经验来理解操作系统课程然后觉得第一章太抽象。这正是定位错了。你在桌面环境里点定时关机那是图形界面和系统服务的配合属于操作系统的应用表现而课程第一章关心的是定时关机功能在内核里如何用定时器、如何创建延迟任务、如何处理唤醒——这是同一件事的两个层次。所以复习时一定要做两件事一是画图把层次关系、状态转换、中断流程亲手画出来二是做题尤其是判断题和概念辨析题做错不要紧关键是搞清楚题目里哪个词干扰了你。如果用的教材是汤小丹老师的《计算机操作系统》可以重点对照第一章的习题那些题就是为你避坑设计的。6.2 我在复习和带新人时反复强调的三个抓手第一用一个程序运行流程把所有知识点串起来。从双击开始操作系统创建进程进程管理为它分配内存内存管理把可执行文件从磁盘读出来文件管理、设备管理CPU 开始执行用户态指令用户态程序请求读文件系统调用切换到核心态设备完成传输后发出中断外中断操作系统处理中断返回。这一个流程走通第一章几乎全部核心概念都覆盖了。第二把所有为什么问到底。为什么要有中断因为要让 CPU 能被接管。为什么 CPU 要区分两个状态因为要保护系统不受用户程序破坏。为什么程序不能直接发 IO 命令因为那是特权指令。我见过学得好的人不是记性好而是每个知识点都能往下追问一层追到最后所有概念就都连成了网。这种追问的习惯比背十遍定义都好使。第三把第一章当地图而不是名词表。第一章出现的每个概念几乎都是后面章节的标题进程、调度、内存、文件、设备、系统调用。你甚至可以把这一章的目录抄下来学完后面的章节再回来看一遍会发现自己对第一章的理解又深了一层。这是我从自己复习考研和后来工作中的体会——操作系统这门课的知识是螺旋上升的第一遍只需要种下种子但一定要种对方向。第一章第一部分的内容到这儿就梳理完了。下次如果继续往下写我会把重心放在进程的描述、状态转换和调度策略上那是操作系统真正展示调度艺术的地方。学习操作系统没有捷径但如果你能把四个特性、四大功能、两个状态、一条中断链路这四根主线抓在手里后面无论多复杂的机制都只是在这些主线上加细节而已。