02 - 操作系统到底是什么
上一章我们知道了操作系统是那个「管家」。这一章给它一个更清晰的画像。记住三个身份就够了:管理者、翻译官、保安。
一句话定义
操作系统是一个特殊的软件,它管理计算机的全部硬件资源,并给上层程序提供统一、方便、安全的使用方式。
它夹在硬件和你的程序中间:
你写的程序(微信、浏览器、你的 FastAPI 服务……)
│ 通过统一接口调用
▼
┌──────────────┐
│ 操作系统 │ ← 管家
└──────────────┘
│ 直接指挥硬件
▼
硬件(CPU、内存、硬盘、网卡、键盘、屏幕……)
身份一:资源管理者
计算机的资源是有限的——CPU 就那么几个核、内存就那么几个 G。但你同时开着几十个程序,它们都想用。谁来分?操作系统。
- CPU 时间:这一刻让哪个程序用 CPU,下一刻切给谁(这就是「调度」,第 05 章讲)。
- 内存空间:每个程序分多少内存、分在哪里,由 OS 记账(第 07、08 章讲)。
- 硬盘、网络等设备:谁在什么时候能用,排好队。
就像酒店经理分配房间:客人(程序)只管提需求,怎么分、分哪间,经理(OS)统一安排,避免两拨人住进同一间。
身份二:翻译官(隐藏硬件差异)
硬盘有机械硬盘、固态硬盘,网卡有几百种型号,各说各的「方言」。如果每个程序都要针对每种硬件单独适配,没法活。
操作系统把这些差异抹平,对上提供一套统一的操作方式。你写程序时只要说「帮我打开这个文件」「帮我发这段数据」,至于底下是什么牌子的硬盘、什么型号的网卡,你完全不用管。
负责跟具体硬件「对方言」的那段代码,叫驱动程序(driver)。装打印机要装驱动,就是这个道理。
身份三:保安(隔离与保护)
操作系统必须保证:一个程序出问题,不能连累别人,更不能搞垮整台机器。
- 每个程序被关在自己的地盘里,不能随便读写别人的内存(靠第 08 章的虚拟内存实现)。
- 危险的操作(比如直接操控硬件、格式化硬盘)程序不能自己干,必须向操作系统申请,由 OS 审核后代劳。
为此,CPU 设计了两种运行模式:
- 用户态:你的程序平时待的地方,权限受限,只能干「安全」的事。
- 内核态:操作系统核心(叫内核 / Kernel)待的地方,权限最高,能直接操控硬件。
当你的程序需要干「越权」的事(比如读文件),它就发起一次系统调用(System Call),礼貌地请操作系统帮忙。这一瞬间,CPU 从用户态切到内核态,OS 帮你办完,再切回来。
好比银行:普通客户(用户态)不能自己进金库,只能在柜台提需求;柜员(内核态)核实后进金库帮你取钱。这道墙,就是安全的关键。
内核(Kernel)是什么
你可能常听到「内核」这个词。它就是操作系统最核心的那部分代码,负责最关键的管理工作:进程调度、内存管理、文件系统、设备驱动等。我们常说的 Linux,严格说指的就是它的内核。
小结
- 操作系统 = 管理者 + 翻译官 + 保安,夹在硬件和你的程序之间。
- 管理者:分配 CPU、内存、设备等有限资源。
- 翻译官:用驱动隐藏硬件差异,给程序统一好用的接口。
- 保安:用「用户态 / 内核态」两种模式做隔离;程序想干越权的事,得通过系统调用请 OS 代劳。
- 干这些核心活儿的那部分代码,叫内核(Kernel)。
下一章 → 03 - 程序 vs 进程 vs 线程 | 回到 README 目录