Skip to content

Latest commit

 

History

History
158 lines (81 loc) · 5.24 KB

04-2-spoc-discussion.md

File metadata and controls

158 lines (81 loc) · 5.24 KB

#lec9: 虚存置换算法spoc练习

视频相关思考题

9.1 页面置换算法的概念

  1. 设计置换算法时需要考虑哪些影响因素?如何评判的好坏?

  2. 全局和局部置换算法的不同?

9.2 最优算法、先进先出算法和最近最久未使用算法

  1. 最优算法、先进先出算法和LRU算法的思路?

9.3 时钟置换算法和最不常用算法

  1. 时钟置换算法的思路?

  2. 改进的时钟置换算法与时钟置换算法有什么不同?

  3. LFU算法的思路?

9.4 Belady现象和局部置换算法比较

  1. 什么是Belady现象?如何判断一种置换算法是否存在Belady现象?

  2. 请证明LRU算法不存在Belady现象。

9.5 工作集置换算法

  1. CPU利用率与并发进程数的关系是什么?

  2. 什么是工作集?

  3. 什么是常驻集?

  4. 工作集算法的思路?

9.6 缺页率置换算法

  1. 缺页率算法的思路?

9.7 抖动和负载控制

  1. 什么是虚拟内存管理的抖动现象?

  2. 操作系统负载控制的最佳状态是什么状态?

  3. 局部置换算法(如FIFO, LRU等)是否能作为全局置换算法来使用?为什么?


扩展思考题

  1. 改进时钟置换算法的极端情况: 如果所有的页面都被修改过了,这时需要分配新的页面时,算法的performance会如何?能否改进在保证正确的前提下提高缺页中断的处理时间?

  2. 如何设计改进时钟算法的写回策略?

  3. (spoc)根据你的学号 mod 4的结果值,确定选择四种页面置换算法(0:LRU置换算法,1:改进的clock 页置换算法,2:工作集页置换算法,3:缺页率置换算法)中的一种来设计一个应用程序(可基于python, ruby, C, C++,LISP等)模拟实现,并给出测试用例和测试结果。请参考如python代码或独自实现。

  1. 请判断OPT、LRU、FIFO、Clock和LFU等各页面置换算法是否存在Belady现象?如果存在,给出实例;如果不存在,给出证明。

  2. 了解LIRS页置换算法的设计思路,尝试用高级语言实现其基本思路。此算法是江松博士(导师:张晓东博士)设计完成的,非常不错!

问答题

局部置换算法

Q1:[基础] 全局和局部置换算法有何不同?分别有哪些算法?

A:

Q2:[基础] 简单描述OPT、FIFO、LRU、Clock、LFU的工作过程和特点

A:

Q3:[进阶,开放,推荐]考虑置换算法的收益和开销,综合评判在何种情境下使用何种算法比较合适呢?

A:

Q4:[基础] Clock和LFU算法存在那些问题,如何改进?

A:

Q5:[进阶-,开放] Clock算法仅仅能够记录近期是否访问过这一信息,对于访问的频度几乎没有记录,如何改进这一点?(这里针对恢复计数的LFU算法也可以提出类似问题.)

A:

Q6:[基础] LRU算法的缺页率是否总是优于FIFO算法呢?为何?

A:

Q7:[基础] 描述belady现象。[进阶] 哪些算法有belady现象?[困难]思考belady现象的成因,尝试给出说明OPT和LRU等没有belady现象的思路(仅仅是思路,大体有一个方向即可)。

A:

Q8:[进阶] 使用自映射有何优势?有何代价?

A:

Q9:[基础] 为何要使用自映射?除了自映射还可以使用什么方法?

A:

Q10:[进阶] 考虑在 32 位 x86 下使用页表自映射。为了方便用三元组 (a, b, c) 表示虚拟/物理地址 ((a<<22) +(b<<12) + c),其中 0<=a,b<1024,0<=c<4096。假设页目录的物理地址是 (A, B, 0),并且页目录的第 e 项 (0<=e<1024) 是自映射项,就是说在 (A, B, 4*e) 页目录项指向页目录自己的物理地址 (A, B, 0).

A:

全局置换算法

Q1:[基础]并发进程数和CPU利用率有何关系?为什么会是这样?

A:

Q2:[进阶-,开放] 如何理解计算机整体处于均衡的繁忙状态?请从负载均衡和各个存储层次两个方面考虑。

A:

Q3:[基础]什么是工作集?什么是常驻集?简单描述工作集算法的工作过程。

A:

Q4:[基础]简单描述缺页率算法的思路。

A:

Q5:[基础]什么是抖动?如何减少抖动的出现?

A:

Q6:[进阶-]局部置换算法和全局置换算法有何主要区别?局部置换算法是否能作为全局置换算法来使用效果如何?为什么?

A:

Q7:[基础]什么是缓存污染?它和内存抖动有何异同?

A:

Q8:[基础]面向缓存的置换算法是为了解决什么问题?解决的基本思路为何?

A:

Q9:[基础]简述FBR的思路和做法?(针对LRU-K也可以出类似题目

A:

Q10:[基础]2Q算法针对LRU-K做了那些修改?

A: