主题
第一章 操作系统在做什么:三大抽象
1. 先破一个误区:操作系统不是"一堆名词"
很多人复习操作系统,是从背名词开始的:进程、线程、分页、信号量、死锁、SPOOLing……背了一大堆,做题时还是拿不准。原因很简单:这些名词不是孤立的知识点,而是同一套设计思路在不同资源上的反复应用。
这套思路可以用一句话概括:硬件是有限的、难用的、不安全的,操作系统把它们包装成无限的、好用的、安全的假象。这个"制造假象"的过程,教科书里叫抽象(abstraction,白话就是"把复杂细节藏起来,只露出一个简单的使用界面")。
抓住这条主线之后你会发现,整个专题其实只讲三件事:
- 虚拟化:把一块 CPU、一条内存"变出"很多份,让每个程序都以为自己独占机器。
- 并发:很多程序"同时"跑起来之后,如何避免互相踩踏。
- 持久化:断电之后数据不丢,靠文件系统把易失的内存世界接到磁盘上。
后面六章,全部挂在这三条主线上。本章先把地图画出来。
2. 操作系统的定位:硬件与应用之间的中间层
如果没有操作系统,每个应用程序都要自己直接操作硬件:自己给磁盘发命令、自己管理内存地址、自己处理键盘信号。这意味着每个程序员都要精通所有硬件型号,而且任何一个程序出错都可能毁掉整台机器上的所有数据。
操作系统的定位就是插在中间的一层"总管家":
从这张图能读出操作系统的两重身份,这也是选择题里最常考的表述:
| 视角 | 身份 | 白话解释 |
|---|---|---|
| 对下(面向硬件) | 资源的管理者 | 统一登记、分配、回收 CPU 时间、内存空间、设备使用权 |
| 对上(面向应用) | 抽象的提供者 | 把"磁盘扇区"包装成"文件",把"CPU 时间片"包装成"进程" |
一句话点透:应用程序看到的从来不是真实硬件,而是操作系统精心伪造的"虚拟机器"。文件、进程、虚拟地址,全是伪造出来的方便概念——但正是这些"假货",让编程从不可能变成了人人可为。
