File tree Expand file tree Collapse file tree 1 file changed +25
-1
lines changed Expand file tree Collapse file tree 1 file changed +25
-1
lines changed Original file line number Diff line number Diff line change 5151
52527. `* ` 全局和局部置换算法有何不同?分别有哪些算法?
5353
54+ 全局页面置换算法:可动态调整某任务拥有的物理内存大小;影响其他任务拥有的物理内存大小。例如:工作集置换算法,缺页率置换算法。
55+
56+ 局部页面置换算法:每个任务分配固定大小的物理页,不会动态调整任务拥有的物理页数量;只考虑单个任务的内存访问情况,不影响其他任务拥有的物理内存。例如:最优置换算法、FIFO置换算法、LRU置换算法、Clock置换算法。
57+
54588. `* ` 简单描述OPT、FIFO、LRU、Clock、LFU的工作过程和特点 (不用写太多字,简明扼要即可)
5559
60+ OPT:选择一个应用程序在随后最长时间内不会被访问的虚拟页进行换出。性能最佳但无法实现。
61+
62+ FIFO:由操作系统维护一个所有当前在内存中的虚拟页的链表,从交换区最新换入的虚拟页放在表尾,最久换入的虚拟页放在表头。当发生缺页中断时,淘汰/换出表头的虚拟页并把从交换区新换入的虚拟页加到表尾。实现简单,对页访问的局部性感知不够。
63+
64+ LRU:替换的是最近最少使用的虚拟页。实现相对复杂,但考虑了访存的局部性,效果接近最优置换算法。
65+
66+ Clock:将所有有效页放在一个环形循环列表中,指针根据页表项的使用位(0或1)寻找被替换的页面。考虑历史访问,性能略差于但接近LRU。
67+
68+ LFU:当发生缺页中断时,替换访问次数最少的页面。只考虑访问频率,不考虑程序动态运行。
69+
56709. `** ` 综合考虑置换算法的收益和开销,综合评判在哪种程序执行环境下使用何种算法比较合适?
5771
72+ FIFO算法:在内存较小的系统中,FIFO 算法可能是一个不错的选择,因为它的实现简单,开销较小,但是会存在 Belady 异常。
73+
74+ LRU算法:在内存容量较大、应用程序具有较强的局部性时,LRU 算法可能是更好的选择,因为它可以充分利用页面的访问局部性,且具有较好的性能。
75+
76+ Clock算法:当应用程序中存在一些特殊的内存访问模式时,例如存在循环引用或者访问模式具有周期性时,Clock 算法可能会比较适用,因为它能够处理页面的访问频率。
77+
78+ LFU算法:对于一些需要对内存访问进行优先级调度的应用程序,例如多媒体应用程序,LFU 算法可能是更好的选择,因为它可以充分考虑页面的访问频率,对重要性较高的页面进行保护,但是实现比较复杂。
79+
588010. `** ` Clock算法仅仅能够记录近期是否访问过这一信息,对于访问的频度几乎没有记录,如何改进这一点?
5981
82+ 如果想要改进这一点,可以将Clock算法和计数器结合使用。具体做法是为每个页面设置一个计数器,记录页面在一段时间内的访问次数,然后在置换页面时,既考虑页面最近的访问时间,也考虑其访问频度。当待缓存对象在缓存中时,把其计数器的值加1。同时,指针指向该对象的下一个对象。若不在缓存中时,检查指针指向对象的计数器。如果是0,则用待缓存对象替换该对象;否则,把计数器的值减1,指针指向下一个对象。如此直到淘汰一个对象为止。由于计数器的值允许大于1,所以指针可能循环多遍才淘汰一个对象。
83+
608411. `*** ` 哪些算法有belady现象?思考belady现象的成因,尝试给出说明OPT和LRU等为何没有belady现象。
6185
6286 FIFO算法、Clock算法。
@@ -198,4 +222,4 @@ challenge: 支持多核。
198222* 简单总结本次实验与上个实验相比你增加的东西。(控制在5行以内,不要贴代码)
199223* 完成问答问题。
200224* (optional) 你对本次实验设计及难度的看法。
201-
225+
You can’t perform that action at this time.
0 commit comments