欢迎来到操作系统的世界!

你有没有想过,电脑是如何同时播放音乐、下载文件并让你撰写论文的呢?这就是操作系统 (Operating System, OS) 的魔法。你可以把操作系统想象成忙碌餐厅的经理。它虽然不亲自下厨,但它确保厨师(CPU)有足够的食材(数据),服务生(输入/输出)知道该做什么,而顾客(用户)也能获得满意的服务。

在这些笔记中,我们将详细拆解这位“经理”是如何让一切顺畅运作的。如果有些部分看起来很复杂也不用担心,我们一步一步来!

1. 操作系统的目的与功能

操作系统是一种介于用户与硬件之间的系统软件 (system software)。没有它,你连移动鼠标都必须撰写复杂的代码!

操作系统主要有四项工作:
资源管理 (Resource Management): 决定哪些程序可以使用 CPU,以及分配多少内存给它们。
用户界面 (User Interface, UI): 提供与电脑互动的方式(例如窗口、图标或命令行)。
外设管理 (Peripheral Management): 处理输入(键盘)和输出(打印机)设备。
安全与文件管理 (Security and File Management): 整理你的文件,并通过密码保护它们。

快速回顾: 操作系统是用户与硬件之间的“桥梁”。

2. 内存管理

你的电脑 RAM 容量有限。操作系统必须小心地管理这些空间,以防止程序之间发生“冲突”。它主要通过两种方式来达成:

分页 (Paging)

内存会被划分为固定大小的物理区块,称为页 (pages)。当一个程序需要载入 RAM 时,它会被切分成这些页面。
类比:想象一本有固定页数的笔记本。你可以将你的故事写在多页上,即使它们在书中并非相连。

分段 (Segmentation)

内存会被划分为大小不一的逻辑区域,称为段 (segments)。这些区段代表程序的组成部分(如特定的函数或数据结构)。
类比:就像书中的章节。根据内容长度,有些章节很长,有些则很短。

虚拟内存 (Virtual Memory)

当 RAM 完全用尽时,操作系统会将硬盘的一部份当作额外的 RAM 使用,这就是虚拟内存。它会将暂时不用的页面从 RAM 移到硬盘,为活跃的程序腾出空间。
常见误区: 学生常以为虚拟内存能让电脑变快。事实上,它反而会让电脑变慢,因为读取硬盘的速度远比读取 RAM 慢得多!

重点总结: 分页使用固定大小;分段使用逻辑大小;虚拟内存则是 RAM 满载时的“备援”空间。

3. 中断与中断服务例程 (ISR)

中断 (interrupt) 是一个发送给 CPU 的信号,意思是:“嘿!有重要的事情发生了!”这可能是打印机纸张用完了,或是你点击了鼠标。

CPU 处理中断的方式:
1. 在每次 Fetch-Decode-Execute (提取-解码-执行) 周期结束时,CPU 会检查是否有中断信号。
2. 如果有中断,CPU 会暂停 (suspends) 当前的任务。
3. 它会保存当前的状态(寄存器内容),以便稍后能回来继续处理。
4. 它会执行一小段称为中断服务例程 (Interrupt Service Routine, ISR) 的代码来处理该问题。
5. 完成后,它会载入旧的状态,并从中断的地方继续执行。

记忆小撇步:把中断想象成写作业时接到的电话。你会书里夹个书签(保存状态),去讲电话(执行 ISR),然后回到书中同一行继续阅读(恢复状态)。

4. 调度 (Scheduling)

由于 CPU 通常一次只能做一件事情,操作系统会使用调度来决定哪个进程 (process) 获得 CPU 的使用时间。这创造了“多任务处理”的错觉。

常见的调度算法:
轮转调度 (Round Robin): 每个进程获得平等的“时间片”。如果没处理完,它就必须回到队列的最后面。(非常公平!)
先来先服务 (First Come First Served, FCFS): 最先到达的工作最先被处理。(简单,但长工作可能会阻塞所有后续程序)。
最短工作优先 (Shortest Job First, SJF): 所需时间最短的工作优先处理。(对速度有利,但长工作可能永远无法获得执行机会——这称为饥饿状态 (starvation))。
最短剩余时间 (Shortest Remaining Time, SRT): 类似 SJF,但如果有更新、更短的工作进来,它会抢占当前正在执行中的工作。
多层反馈队列 (Multi-level Feedback Queues): 使用多个具有不同优先级的队列。工作可以根据它们使用的 CPU 时间长短在队列间移动。

快速回顾: 调度确保了 CPU 的高效使用,并且没有任何进程会被无限期搁置。

5. 操作系统的类型

并非所有操作系统都一样!你需要了解以下几种:
分布式 (Distributed): 将任务分摊到多台电脑上。它们像是一台单一且强大的机器般协同工作。
嵌入式 (Embedded): 内建在特定设备中(如微波炉或汽车仪表板)。它通常只高效执行单一任务。
多任务 (Multi-tasking): 允许用户同时执行多个应用程序(如 Windows 或 macOS)。
多用户 (Multi-user): 允许多个用户同时操作同一台电脑(如强大的服务器)。
实时 (Real-Time): 保证在特定时间限制内做出反应。用于关键系统,例如飞机自动驾驶医院监护仪

你知道吗?“实时”操作系统并不一定代表“速度快”。它代表的是“一致性”。如果它需要在 2 毫秒内响应,它就必须每一次都在 2 毫秒内做出响应。

6. BIOS、驱动程序与虚拟机

BIOS (基本输入/输出系统)

当你开启电脑时,BIOS 是第一个执行的程序。它会执行 POST (开机自检) 来检查你的硬件是否运作正常,然后寻找并启动操作系统。

设备驱动程序 (Device Drivers)

驱动程序是一个小型程序,充当翻译官。它告诉操作系统如何与特定的硬件(如新款电竞鼠标或打印机)沟通。

虚拟机 (Virtual Machines, VM)

虚拟机是指使用软件来模拟一台物理电脑。
示例 1: 在 Mac 上的窗口中执行 Windows。
示例 2:中间代码。 像 Java 这类的语言不会立即转为机器码,而是转为“字节码 (Bytecode)”,并在“Java 虚拟机”上执行。这意味着相同的代码可以在任何设备上运行!

重点总结: BIOS 启动电脑;驱动程序为硬件进行翻译;虚拟机则是“假装”是一台电脑。

摘要核对表

你能解释吗...
分页 (Paging)分段 (Segmentation) 的区别?
• 当中断 (interrupt) 发生时会发生什么事?
• 为什么维生设备使用实时 (Real-Time) 操作系统?
虚拟内存 (Virtual Memory) 的用途?

如果一开始觉得困难也不要担心!操作系统同时处理成千上万个任务,内容确实很多。多读几次这些比喻,你很快就会成为专家!