Lecture 1: Welcome to CS111! / 操作系统导论
Lecture 1: Welcome to CS111! / 操作系统导论
概述
本讲回答”什么是操作系统”,并采用历史视角:操作系统是为了解决真实问题而演化出来的。通过回顾 1940 年代至今的硬件与软件变迁,理解内核(kernel)为何存在、它管理哪些资源,以及为什么操作系统是计算机科学中最有趣、最综合的领域之一。
核心概念与系统机制图解
操作系统(Operating System)
- 定义:管理共享资源(CPU、内存、I/O 设备、文件、网络)并保护参与者互不干扰的软件集合;实现这些功能的内核代码运行在特权模式下,占据内存中的保留区域,对整个系统有完全控制权。
- 直观解释:操作系统是”资源大管家”——它决定谁在什么时候能用 CPU、能用哪块内存、能读写哪个文件,同时保证一个坏应用不能拖垮整个机器。
- 为什么值得学:操作系统是”魔法”,学完后你能理解计算机真正的工作方式;它整合了并发、虚拟内存等有趣概念,并引出哲学问题(如”公平比整体满意度更重要吗?”)。
操作系统演化简史(三阶段)
1940s–1960s: 硬件贵、人便宜 → 目标:最大化机器利用率
├─ 简单批处理监控器(batch monitor): 读入一叠卡片作业, 顺序执行
├─ 1960s: 数据通道与中断 → I/O 与计算重叠
└─ 1962 IBM 7094: 内存重定位 + 内存保护 → 多任务(multitasking)与内核(kernel)出现
1960s–1980s: 硬件便宜、人贵 → 目标:最大化人的效率
├─ 分时系统(timesharing): 交互式使用, 文件系统, 响应时间与抖动问题
└─ 个人电脑: 一人一机
1990s–今天: 网络与无处不在的计算
├─ 1993 WWW → 网络: 机器间共享与通信
├─ 手机、电视、智能设备
└─ 现代系统: 极小(设备)到极大(数据中心/云)
- 批处理监控器的问题(推动演化的动力):
- 一次只能跑一个作业——作业等待 I/O 时 CPU 闲置,利用率差;
- 没有保护——坏作业能破坏监控器本身;
- 短作业被长作业堵住——理想情况应能重排作业。
现代操作系统做什么(Lecture 1 清单)
- CPU:并发——让多个任务共享处理器;
- 内存:在进程间共享内存;
- I/O 设备:高效管理设备操作;
- 文件:跨用户共享存储;
- 网络:让多台计算机协作;
- 安全:保护参与者互不干扰。
计算机系统分层结构
+--------------------------------------+
| Application Application App |
+--------------------------------------+
| Operating System Kernel |
| (进程管理 / 内存管理 / 文件管理) |
+--------------------------------------+
| Hardware: CPU, DRAM, Disks |
+--------------------------------------+
代码示例与系统调用解说
操作系统课的代码从 hello world 开始——但本讲的”代码”其实是课程地图。以 Assign0 的典型流程为例:
# 登录 myth 集群
ssh myth.stanford.edu
# 克隆作业起始代码
git clone /afs/ir/class/cs111/repos/assign0/$USER assign0
# 构建
make
# 运行测试
./sanitycheck
# 调试
gdb ./myprogram
# 提交
./submit
【代码做了什么?】 建立从”源码 → 编译 → 测试 → 调试 → 提交”的完整作业流水线;make 调用 gcc/g++,gdb 提供断点/单步调试,valgrind 检测内存错误。
【系统机制透视】 这条流水线本身就是操作系统的缩影:ssh 创建一个远程进程并通过网络与它通信;git clone 走文件系统与网络协议栈;make 依赖进程创建(fork/exec)与文件系统;gdb 用 ptrace 系统调用观察和控制另一个进程——你在第一周就已经在使用进程、文件、网络和虚拟内存四大抽象了。
关键要点
- 操作系统是历史演化的产物:先解决机器利用率(批处理),再解决人的效率(分时),再解决连接(网络)。
- 内核 = 运行在特权模式、管理全部硬件资源的代码;用户应用代码受到限制。
- 现代 OS 的核心职责可归纳为:CPU 并发、内存共享、I/O 管理、文件共享、网络安全。
- 课程三大板块:并发(4 个作业)、内存管理(2 个作业)、文件系统(2 个作业)。
- 虚拟化(一个物理资源伪装成多个逻辑资源)是本课程贯穿始终的主题。
常见陷阱与注意事项
- 把”操作系统”与”内核”混为一谈:内核是 OS 的核心部分;广义的 OS 还包括 shell、系统工具、库等。
- 以为 OS 只是”调度器”:现代 OS 同时是资源管理器、保护者、抽象提供者。
- 忽视历史:不理解批处理/分时的痛点,就很难理解为何需要虚拟内存和并发抽象。
思考题
- 问题:为什么说”内存保护 + 重定位”是内核出现的先决条件?
- 答案:没有保护,一个作业就能破坏其他作业或监控器代码,无法安全地让多个作业同时驻留内存;没有重定位,多个程序无法加载到各自的内存区域。二者齐备后,多任务才成为可能,而管理多任务的特权代码就是内核。
- 问题:虚拟化思想在”线程”和”文件”两个抽象中分别体现在哪里?
- 答案:线程把一个物理 CPU 虚拟化成多个可并发执行的逻辑执行流;文件把磁盘上物理的块集合虚拟化成命名的字节序列,用户无需关心数据在磁盘上的物理布局。
