<操作系统导论>第二十二章

1.使用以下参数生成随机地址:-s 0 -n 10,-s 1 -n 10 和-s 2 -n 10。将策略从 FIFO 更改
为 LRU,并将其更改OPT。计算所述地址追踪中的每个访问是否命中或未命中。

FIFO:

<操作系统导论>第二十二章_第1张图片
这里可以看出cache是三位

<操作系统导论>第二十二章_第2张图片
查看结果:

<操作系统导论>第二十二章_第3张图片
后面两个随机种子同上,只看结果。

<操作系统导论>第二十二章_第4张图片
<操作系统导论>第二十二章_第5张图片
LRU:LRU策略决定替换哪个页将基于“局部性原则”,根据历史近期访问决定替换哪个页

<操作系统导论>第二十二章_第6张图片
<操作系统导论>第二十二章_第7张图片
<操作系统导论>第二十二章_第8张图片
查看答案:

<操作系统导论>第二十二章_第9张图片
后面两个随机种子同上:

<操作系统导论>第二十二章_第10张图片
<操作系统导论>第二十二章_第11张图片
OPT:OPT最优策略决定替换哪个页将基于未来的访问情况,将未来最远访问的页替换掉

<操作系统导论>第二十二章_第12张图片
在这里插入图片描述
<操作系统导论>第二十二章_第13张图片
查看答案:

<操作系统导论>第二十二章_第14张图片
后面两个随机种子同上:

<操作系统导论>第二十二章_第15张图片
<操作系统导论>第二十二章_第16张图片
2.对于大小为 5 的高速缓存,为以下每个策略生成最差情况的地址引用序列:FIFO、
LRU 和 MRU(最差情况下的引用序列导致尽可能多的未命中)。对于最差情况下的引用序列,需要的缓存增大多少,才能大幅提高性能,并接近 OPT?

序列为:1,2,3,4,5,6 即可。
像这种会造成抖动的序列,需要至少增大到序列个数才行。

3.生成一个随机追踪序列(使用 Python 或 Perl)。你预计不同的策略在这样的追踪序
列上的表现如何?

<操作系统导论>第二十二章_第17张图片
<操作系统导论>第二十二章_第18张图片
写的python代码需要给权限才能运行(绿色可以运行)

在这里插入图片描述
使用如下命令:
./paging-policy.py -f 1.txt -p FIFO -c
./paging-policy.py -f 1.txt -p LRU -c
./paging-policy.py -f 1.txt -p OPT -c

FIFO:

<操作系统导论>第二十二章_第19张图片
LRU:

<操作系统导论>第二十二章_第20张图片
OPT:

<操作系统导论>第二十二章_第21张图片
OPT的命中率会高一点,预计随着数据数量的增加,这种差距会变得更大

4.现在生成一些局部性追踪序列。如何能够产生这样的追踪序列?LRU 表现如何?RAND
比 LRU 好多少?CLOCK 表现如何?CLOCK 使用不同数量的时钟位,表现如何?

<操作系统导论>第二十二章_第22张图片
测试命令:

./paging-policy.py -f 1.txt -p LRU -c
./paging-policy.py -f 1.txt -p RAND -c
./paging-policy.py -f 1.txt -p CLOCK -c

类似于第三小题,LRU的表现略好于RAND。

经过不完全测试,CLOCK bit为1时表现差于LRU,提高bit时出现好于LRU的情况,且在一定数值内bit越高表现越好。

你可能感兴趣的:(操作系统,操作系统,linux,ubuntu)