第 9 章 · 01 操作系统:它到底在管什么


文档摘要

第 9 章 · 01 操作系统:它到底在管什么 本节摘要:本章是全书的登顶章——「造轮子的天花板」。操作系统和编译器,一个统治硬件,一个统治软件。本节先讲操作系统:它的三大职责(管理硬件、提供抽象、调度与隔离),以及它如何在你和裸机之间架起一层「让多任务成为可能」的桥梁。理解 OS 的职责,你才知道后续几节(引导、中断、调度、内存)在解决什么问题。 内容来源:基于「Build your own X」Operating System 域整理的导读,呼应姊妹篇《Linux 命令》第 5、6、8 章。 学习目标 说清操作系统的三大职责:管理硬件、提供抽象、调度与隔离。 理解 OS 如何让你「同时」跑多个程序(时分复用)。 解释「用户态/内核态」与系统调用的存在意义。

第 9 章 · 01 操作系统:它到底在管什么

本节摘要:本章是全书的登顶章——「造轮子的天花板」。操作系统和编译器,一个统治硬件,一个统治软件。本节先讲操作系统:它的三大职责(管理硬件、提供抽象、调度与隔离),以及它如何在你和裸机之间架起一层「让多任务成为可能」的桥梁。理解 OS 的职责,你才知道后续几节(引导、中断、调度、内存)在解决什么问题。

内容来源:基于「Build your own X」Operating System 域整理的导读,呼应姊妹篇《Linux 命令》第 5、6、8 章。

学习目标

  1. 说清操作系统的三大职责:管理硬件、提供抽象、调度与隔离。
  2. 理解 OS 如何让你「同时」跑多个程序(时分复用)。
  3. 解释「用户态/内核态」与系统调用的存在意义。
  4. 建立后续四节(引导/中断/调度/内存)的全局认知。

一、学习价值:理解「计算机怎么运转」

没有操作系统,你面对的是一块裸机——CPU 只会执行指令、内存只是一片字节、磁盘只是一堆扇区。你能跑一个程序,但不能同时跑两个;任何程序能直接读写任何硬件,互相干扰;一个程序崩溃,整个机器死掉。

操作系统就是来解决这些问题的。它管理硬件(CPU 时间、内存、磁盘)、提供抽象(进程、虚拟内存、文件、套接字)、调度与隔离(不让一个程序搞崩别人)。你天天用的所有 Linux 命令(姊妹篇全书),都是基于操作系统提供的抽象。理解 OS,你就理解了「计算机怎么从裸机变成能跑你代码的环境」。

二、认知拆解:三大职责

1. 管理硬件

裸机硬件:CPU(几个核的计算能力)、内存(若干 GB)、磁盘(若干 TB)、网卡、显卡、键鼠。OS 是「硬件管家」,决定谁什么时候用什么资源:

  • CPU:时分复用——给每个进程「似乎独占 CPU」的错觉(靠调度轮转)。
  • 内存:分页虚拟内存——给每个进程「似乎独占整片内存」的错觉(靠页表映射)。
  • 磁盘:文件系统——把块设备抽象成「文件与目录树」。
  • 外设:设备驱动——统一接口访问各种硬件。

2. 提供抽象

OS 在硬件上提供「方便用的抽象」:

  • 进程:运行中程序的封装(让它以为自己独占机器)。
  • 虚拟内存:每进程独立的地址空间(隔离 + 错觉)。
  • 文件:把磁盘块/设备/网络统一成「读写字节流」。
  • 套接字:把网络统一成「类似文件的接口」。

这些抽象让你不用关心硬件细节——你写 open/read/write,OS 替你翻译成磁盘操作。

3. 调度与隔离

  • 调度:哪个进程此刻用 CPU?OS 的调度器决定(轮转/优先级)。
  • 隔离:进程 A 不能读写进程 B 的内存、不能搞崩系统。靠特权级与内存保护。
  • 用户态/内核态:CPU 有特权级。普通程序跑在用户态(受限),关键操作(读写 IO、改页表)只能在内核态,通过系统调用(system call)请求内核代劳。呼应姊妹篇《Linux 命令》第 6 章 strace 看到的那些 open/read/connect 都是系统调用。

三、上手第一步:建立全局观

本章后续四节讲 OS 的具体子系统(引导、中断、调度、内存、文件系统)。动手前,先建立全局观:OS 是「硬件管家 + 抽象提供者 + 调度隔离者」。带着这个框架,后续每节都是它的展开。

造完整 OS 是年级工程(本章给路线图,不强求完成)。第一步可以读 xv6(MIT 教学内核,源码很短)或 OSDev wiki,从「让裸机打印 Hello」开始。

本节要点回顾

  1. OS 三大职责:管理硬件、提供抽象(进程/虚拟内存/文件/套接字)、调度与隔离。
  2. 时分复用制造独占错觉:CPU 调度让每进程以为独占 CPU,虚拟内存让每进程以为独占内存。
  3. 用户态/内核态 + 系统调用:普通程序受限运行,关键操作通过系统调用请求内核。
  4. 本章给路线图:完整 OS 是年级工程,从 xv6/OSDev 起步。

推荐上手顺序

  1. 读 xv6 源码(很短,几千行 C),对照本节理解每部分对应 OS 的哪个职责。
  2. 跟本章后续四节(引导/中断/调度/内存)理解子系统。
  3. 动手从「裸机打印 Hello」(写引导扇区)起步。
  4. 参考经典书单(第 08 节)。

下一节讲引导链路——从上电到内核启动。


发布者: 作者: 灏天文库 转发
评论区 (0)
U