主要内容:
- 用互斥锁搞定临界区
- 死锁
主要内容:
主要内容:
主要内容:
第7讲因为升级到Ubuntu 10.10的原因,没录上。
主要内容:
主要内容:
主要内容:
主要内容:
第2讲没设好麦克风音量,导致全是爆音,就不放出了。
第3讲主要内容:
非常偶然的机会搞了一下0成本自拍课程录像,然后就每次课都拍了(至少试图拍了)。拍的时候只是觉得好玩,也没想什么。起初只是放到课程网站上,供没去上课,或偶尔想回味一下的同学看看。现在觉得,可以考虑公开一下,因为:
下面是第一讲,第一次录,因操作问题,只录了一多半。主要内容:
操作系统教学中,我经常向学生灌输一个观点,就是不要对操作系统的知识太“较真”,因为这东西本身就完全是人造的,没有任何自然定律支配它,所以什么是对,什么是错,咋说都有道理。学操作系统的关键在于要领会精神,了解细节,但不要纠缠细节。比如,我们都知道操作系统提供给应用程序的接口是“系统调用”,这个貌似没有争议。但如果硬找麻烦的话,对于像DOS和一些嵌入式OS等不区分用户态、内核态的,应用程序除了系统调用,还可以直接读写内核空间里的数据,直接调用甚至修改内核里任意一条指令;对于Java OS(别讨论它是不是OS,因为OS压根没有精确的定义),应用程序和系统之间的接口是Java API,根本到不了系统调用的级别。
所以,我认为机械的选择、判断题根本不适合操作系统这个博大精深的东西,很难经得起推敲。甚至于说,操作系统根本不适合被考试,不适合用简单的“对”和“错”来评价一个学生对这门学问的理解。最近拿到了2010年考研统考题的真题和官方标准答案,从中找到了不少刺,再次证明了我的观点。摘录几个:
23题:
下列选项中,操作系统提供给应用程序的接口是
A. 系统调用 B. 中断 C.库函数 D. 原语
标准答案是A。
挑刺:
24题:
下列选项中,导致创建新进程的操作是
I. 用户登录成功 II. 设备分配 III. 启动程序执行
A. 仅I和II B. 仅II和III C. 仅I和III D. I、II和III
标准答案是C,仅I和III。
I.的挑刺:
II.的挑刺:
III.的挑刺:
45题:
题目太长,不敲了,是关于C-SCAN算法的。这道题刚考完试的时候,就有考生提出了质疑。这个考生能在高压力的考试情况下看到这一点,很厉害。这个争议的根源在于对C-SCAN算法描述的差异。统考的事实标准参考书(汤子瀛编著)里,说C-SCAN扫描的最远点是有访问请求的点,还有些资料(我查阅了《Operating System Concepts》,wikipedia)里说C-SCAN扫描的最远点是磁盘边界。汤式C-SCAN在这些资料里叫C-LOOK。虽然描述不同,但他们都是对的,思想上是一致的。46题涉及的Clock算法也有类似问题。这并不是问题,因为真正研究操作系统的人都不是学究,不会追求与教科书保持一致,会根据自己的需要去改造、创造算法。但在考试中,这就是问题了。不看汤本的学生,在这道题上会多少遇到一些杯具,至少得多费点儿时间。这很糟糕,有点儿颠倒。
说这些,不针对任何人,任何组织。我本科时学的就是汤老师的教材,对我的帮助很大。命题人的工作做得已经相当好了,能明显看出来他们在费尽心力地精确题目描述,避免各种意外。但没办法,操作系统这门学问的本质决定了,它不可能被机械地考核。考试形式不改,统考的制度不打破,就不可能真正地考查出学生的实际水平。