📄 一句话概括
操作系统不是一开始就有的,它是被【机器贵、人慢】这个矛盾逼出来的:最早的使命只有一条——别让人和机器互相等。
📝 本节和前面几节的关系
第八章讲完了【程序是怎么造出来的】,这一章换成【程序站在什么之上】。
一、没有操作系统的时候
最早用计算机的方式跟用机床差不多:人工装纸带、拨开关,一人独占整台机器。 算一次一分钟,装带卸带五分钟——机器有六分之五的时间在等人。 而且换个人要用,得从头再来一遍,前面做的准备全白费。 所以最早的问题不是【机器算得慢】,而是【机器老在闲着】。
二、批处理:把作业串起来
第一个解法很朴素:别让机器停下来等人。 做法是把一批作业按顺序排好,写在一盘带上,让机器一个接一个自动往下跑。 这就是批处理——人只管准备,机器只管执行。 它把【切换的开销】从每次作业摊薄到了一批作业上,利用率一下就上来了。
三、分时:让多个人一起用
批处理还是有毛病:你交上去的活,要等一整批跑完才拿到结果。 于是有了分时——把时间切成很短的片,轮流分给每个终端。 因为切得够快,每个人感觉都像自己在独占这台机器。 这一招一直用到现在:你电脑上同时开着的那些程序,就是这么轮流跑的。
四、图形界面、以及操作系统今天的职责
再往后就是图形界面——不必背命令,点鼠标就能用,使用门槛一下子降下来了。 一路走下来,操作系统的职责越攒越多,但核心始终是这几件: 分配资源(谁先用 CPU、谁能占多少内存)、提供统一接口(让程序不用管硬件差别)、保护与隔离(不让一个程序搞垮整台机器)。 所以回头看:操作系统的每一块功能,都是为了解决某个具体的麻烦才长出来的。
五、动手 Demo:从历史发展看操作系统的功能
操作系统不是一开始就有的,它是一步步被【逼】出来的。 算一笔【没有操作系统】时的账就明白了。
compute_min = 1.0
manual_min = 5.0
util = compute_min / (compute_min + manual_min)
print("利用率 %.1f%%" % (util * 100))
print("8 小时里真正在算的 %d 分钟" % (480 * util))
实跑输出:
--------------------------------------------------------------------
从历史发展看操作系统的功能
--------------------------------------------------------------------
**操作系统不是一开始就有的**,它是一步步被【逼】出来的。
阶段 怎么用机器 机器利用率
-----------------------------------------------------------------
没有操作系统 人工装纸带、拨开关,一人独占 很低(约 17%)
批处理 把一批作业串起来自动跑 明显提高
分时 多个终端轮流用同一台机器 接近满负荷
图形界面 点鼠标就能用,不必背命令 人和机器都省事
算一笔【没有操作系统】时的账:
机器算一次 1 分钟
人工装卸纸带 5 分钟
利用率 16.7%(6 分钟里只有 1 分钟在算)
连跑 8 小时,真正干活的时间只有 80 分钟
**机器贵、人便宜,所以才要让它自动转起来。**
操作系统最早的使命就是这一条:**别让人和机器互相等。**
实测:机器算 1 分钟、人工装卸 5 分钟 → 利用率只有 16.7%,8 小时里真正干活的只有 80 分钟。 操作系统最早的使命就是这一条:别让人和机器互相等。
30 秒实验
- 算一算:如果人工开销降到 1 分钟,利用率会变成多少。
- 想一想你电脑上同时开着的东西,谁在决定它们怎么轮流用 CPU。
常见误区
- 以为操作系统是为了【功能多】才出现的。它是为了不让机器闲着。
- 以为分时是【同时真的在跑】。它切得够快,是【看起来同时】。
自测三问(点开对答案)
1. 没有操作系统时最大的浪费是什么? —— 机器等人:人工装卸的时间远多于计算时间,利用率很低。 2. 批处理解决了什么问题? —— 把一批作业串起来自动跑,省掉每次手工切换的开销。 3. 分时是怎么回事? —— 把时间切成很短的片轮流分配给各终端,让每个使用者感觉像独占机器。- ☐ 下一节(9.2 关注操作系统的存在)
相关笔记
- 关注操作系统的存在 — 它今天在替你做什么
- 操作系统和高级编程语言对硬件进行了抽象化 — 三条职责里最常被忽略的那条
- BIOS与引导装入程序 — 操作系统是怎么被启动起来的
- 🖥️ 服务器工作原理 · 索引 — 服务器怎么攒出来的
- ⚙️ 程序是怎样跑起来的 · 索引