本次课回答的问题
本次课主要内容
努力成为卷王的临时工✖️ (计算机软件研究所✔)
Co-Founder of Project-N
JSOI/南京大学 ICPC 集训队教练
所有课程信息都在课程主页发布 (请 RTFM)!
成绩构成
不强制要求到课
Academic integrity 不是底线,而是 “自发的要求”
只在 “绝对可以求助” 的时候才寻求帮助
四周目表现平稳
.dl
二进制文件格式与动态加载器第五周目
充满热情而且相当聪明的学生...早就听说过物理学如何有趣...相对论、量子力学……但是,当他们学完两年以前那种课程后,许多人就泄气了……学的还是斜面、静电这样的内容
——《The Feynman Lectures on Physics, 1963》
我学《操作系统》的时候 (2009),大家都说操作系统很难教
Operating System: A body of software, in fact, that is responsible for making it easy to run programs (even allowing you to seemingly run many at the same time), allowing programs to share memory, enabling programs to interact with devices, and other fun stuff like that. (OSTEP)
很多疑点
“管理软/硬件资源、为程序提供服务” 的程序?
“精准” 的定义毫无意义
本课程讨论
跨时代、非凡的天才设计,但很简单 (还不如我们数电实验课做的 CPU 复杂呢):
ENIAC 程序是用物理线路 “hard-wire” 的
最早成功运行的一系列程序:打印平方数、素数表、计算弹道……
没有操作系统。
能把程序放上去就很了不起了
更快更小的逻辑门 (晶体管)、更大的内存 (磁芯)、丰富的 I/O 设备
可以执行更复杂的任务,包括通用的计算任务
C---- THIS PROGRAM READS INPUT FROM THE CARD READER,
C---- 3 INTEGERS IN EACH CARD, CALCULATE AND OUTPUT
C---- THE SUM OF THEM.
100 READ(5,10) I1, I2, I3
10 FORMAT(3I5)
IF (I1.EQ.0 .AND. I2.EQ.0 .AND. I3.EQ.0) GOTO 200
ISUM = I1 + I2 + I3
WRITE(6,20) I1, I2, I3, ISUM
20 FORMAT(7HSUM OF , I5, 2H, , I5, 5H AND , I5,
* 4H IS , I6)
GOTO 100
200 STOP
END
一行代码,一张卡片
管理多个程序依次排队运行的库函数和调度器。
写程序、跑程序都是非常费事的 (比如你写了个死循环……)
集成电路、总线出现
更多的高级语言和编译器出现
计算机科学家们已经在今天难以想象的计算力下开发惊奇的程序
能载入多个程序到内存且灵活调度它们的管理程序,包括程序可以调用的 API。
操作系统中自然地增加进程管理 API
既然操作系统已经可以在程序之间
切换 ,为什么不让它们定时切换 呢?
基于中断 (例如时钟) 机制
集成电路空前发展,个人电脑兴起,“计算机” 已与今日无大异
PASCAL (1970), C (1972), …
分时系统走向成熟,UNIX 诞生并走向完善,奠定了现代操作系统的形态。
通过 “虚拟化” 硬件资源为程序运行提供服务的软件。
空前复杂的系统之一
操作系统服务谁?
(设计/应用视角) 操作系统为程序提供什么服务?
(实现/硬件视角) 如何实现操作系统提供的服务?
计算机专业学生必须具备的核心素质 。
给 “学渣” 们的贴心提示:补基础、补基础、补基础
感到 Linux/PowerShell/... 很难用?
写代码 = 创造有趣的东西
应用视角/操作系统设计:操作系统 = 对象 + API
硬件视角/操作系统实现:操作系统 = C 程序
听课看书都不重要。独立完成编程作业即可理解操作系统。
应用视角 (设计):Mini Labs x 6
硬件视角 (实现):OS Labs x 5
全部 Online Judge
-Wall -Werror
编译出错int x = (int)&y;
open("/home/a/b", ...)
本次课回答的问题
Take-away message