Skip to content

Commit 955aeb4

Browse files
authored
Merge pull request #168 from os-lecture/main
add answer for questions
2 parents 43a0df9 + 14f7860 commit 955aeb4

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

source/chapter4/9answer.rst

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,36 @@
5151

5252
7. `*` 全局和局部置换算法有何不同?分别有哪些算法?
5353

54+
全局页面置换算法:可动态调整某任务拥有的物理内存大小;影响其他任务拥有的物理内存大小。例如:工作集置换算法,缺页率置换算法。
55+
56+
局部页面置换算法:每个任务分配固定大小的物理页,不会动态调整任务拥有的物理页数量;只考虑单个任务的内存访问情况,不影响其他任务拥有的物理内存。例如:最优置换算法、FIFO置换算法、LRU置换算法、Clock置换算法。
57+
5458
8. `*` 简单描述OPT、FIFO、LRU、Clock、LFU的工作过程和特点 (不用写太多字,简明扼要即可)
5559

60+
OPT:选择一个应用程序在随后最长时间内不会被访问的虚拟页进行换出。性能最佳但无法实现。
61+
62+
FIFO:由操作系统维护一个所有当前在内存中的虚拟页的链表,从交换区最新换入的虚拟页放在表尾,最久换入的虚拟页放在表头。当发生缺页中断时,淘汰/换出表头的虚拟页并把从交换区新换入的虚拟页加到表尾。实现简单,对页访问的局部性感知不够。
63+
64+
LRU:替换的是最近最少使用的虚拟页。实现相对复杂,但考虑了访存的局部性,效果接近最优置换算法。
65+
66+
Clock:将所有有效页放在一个环形循环列表中,指针根据页表项的使用位(0或1)寻找被替换的页面。考虑历史访问,性能略差于但接近LRU。
67+
68+
LFU:当发生缺页中断时,替换访问次数最少的页面。只考虑访问频率,不考虑程序动态运行。
69+
5670
9. `**` 综合考虑置换算法的收益和开销,综合评判在哪种程序执行环境下使用何种算法比较合适?
5771

72+
FIFO算法:在内存较小的系统中,FIFO 算法可能是一个不错的选择,因为它的实现简单,开销较小,但是会存在 Belady 异常。
73+
74+
LRU算法:在内存容量较大、应用程序具有较强的局部性时,LRU 算法可能是更好的选择,因为它可以充分利用页面的访问局部性,且具有较好的性能。
75+
76+
Clock算法:当应用程序中存在一些特殊的内存访问模式时,例如存在循环引用或者访问模式具有周期性时,Clock 算法可能会比较适用,因为它能够处理页面的访问频率。
77+
78+
LFU算法:对于一些需要对内存访问进行优先级调度的应用程序,例如多媒体应用程序,LFU 算法可能是更好的选择,因为它可以充分考虑页面的访问频率,对重要性较高的页面进行保护,但是实现比较复杂。
79+
5880
10. `**` Clock算法仅仅能够记录近期是否访问过这一信息,对于访问的频度几乎没有记录,如何改进这一点?
5981

82+
如果想要改进这一点,可以将Clock算法和计数器结合使用。具体做法是为每个页面设置一个计数器,记录页面在一段时间内的访问次数,然后在置换页面时,既考虑页面最近的访问时间,也考虑其访问频度。当待缓存对象在缓存中时,把其计数器的值加1。同时,指针指向该对象的下一个对象。若不在缓存中时,检查指针指向对象的计数器。如果是0,则用待缓存对象替换该对象;否则,把计数器的值减1,指针指向下一个对象。如此直到淘汰一个对象为止。由于计数器的值允许大于1,所以指针可能循环多遍才淘汰一个对象。
83+
6084
11. `***` 哪些算法有belady现象?思考belady现象的成因,尝试给出说明OPT和LRU等为何没有belady现象。
6185

6286
FIFO算法、Clock算法。
@@ -198,4 +222,4 @@ challenge: 支持多核。
198222
* 简单总结本次实验与上个实验相比你增加的东西。(控制在5行以内,不要贴代码)
199223
* 完成问答问题。
200224
* (optional) 你对本次实验设计及难度的看法。
201-
225+

0 commit comments

Comments
 (0)