- 前言
- 22.1
- 题目描述
- 分析及解答
- FIFO
- LRU
- OPT
- 22.2
- 题目描述
- 分析及解答
- 22.3
- 题目描述
- 分析及解答
- 22.4
- 题目描述
- 分析及解答
内容仅作记录,解答有参考别人的地方,请谨慎参考
22.1 题目描述 分析及解答 FIFO输入命令:
./paging-policy.py -s 0 -n 10 -p FIFO
进行程序模拟,追踪策略为:FIFO
在FIFO策略决定替换哪个页面时将选择第一个进入的页进行替换
访问顺序为:8、7、4、2、5、4、7、3、4、5,cache能容纳3个页
具体访问过程如下:
输入命令:
./paging-policy.py -s 0 -n 10 -p FIFO -c查看模拟程序的结果
可以看到模拟结果与分析结果一致。
LRU输入另外两个FIFO策略命令:
./paging-policy.py -s 1 -n 10 -p FIFO -c
./paging-policy.py -s 2 -n 10 -p FIFO -c
输入命令:
./paging-policy.py -s 0 -n 10 -p LRU
进行程序模拟,追踪策略为:LRU
LRU策略决定替换哪个页将基于“局部性原则”,根据历史近期访问决定替换哪个页
访问顺序为:8、7、4、2、5、4、7、3、4、5
具体访问过程如下:
输入命令:
./paging-policy.py -s 0 -n 10 -p LRU -c查看模拟程序的结果
可以看到模拟结果与分析结果一致。
OPT输入另外两个LRU策略命令:
./paging-policy.py -s 1 -n 10 -p LRU -c
./paging-policy.py -s 2 -n 10 -p LRU -c
输入命令:
./paging-policy.py -s 0 -n 10 -p OPT
进行程序模拟,追踪策略为:OPT
OPT最优策略决定替换哪个页将基于未来的访问情况,将未来最远访问的页替换掉
访问顺序为:8、7、4、2、5、4、7、3、4、5
具体访问过程如下:
输入命令:
./paging-policy.py -s 0 -n 10 -p OPT -c查看模拟程序的结果
可以看到模拟结果与分析结果一致。
22.2 题目描述 分析及解答输入另外两个OPT策略命令:
./paging-policy.py -s 1 -n 10 -p OPT -c
./paging-policy.py -s 2 -n 10 -p OPT -c
22.3 题目描述 分析及解答最差情况的地址引用序列为:1、2、3、4、5、6这样的序列,要访问的页各不相同,且高速缓存大小不够大,每次访问都会导致未命中,要提高性能则需要将缓存大小增加到与序列的个数一样才行
该题需要编写python程序生成一个随机的序列并写入1.txt文件中
如何在linux下写python:
1、首先使用touch Random.py创建py文件
2、使用编辑器编写代码,比如:vim Random.py
[注意:第一行加上:#!/usr/bin/env python,再开始写代码]
3、写完并保存后修改Random.py的权限:chmod 777 Random.py
4、输入命令./Random.py就可以运行代码了
编写模拟程序如下:
随机生成10个从0到9的数
运行程序:
预期:OPT策略下的命中率最高,FIFO策略和LRU策略的命中率相对低一些
使用如下命令:
./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策略
LRU策略
OPT策略
22.4 题目描述 分析及解答可以看到模拟的结果与预期结果基本一致,测试数据量更大的情况下,这一结果将更加明显,三种策略的命中率差距将更大。
编写能够生成具有一定局部性序列的程序:
[注意代码缩进一致:IndentationError: unexpected indent这个错误就是缩进不一致导致]
修改程序的权限:chmod 777 Random.py
运行程序生成随机序列:
分别使用不同的策略进行测试:
./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多次测试:
从多次的测试结果可以看出,LRU的表现是比RAND略好一些的。
使用命令:
./paging-policy.py -f 1.txt -b x -p CLOCK -c测试不同时钟位的表现:
[其中x为时钟位数量]
时钟位为1:
时钟位为2:
时钟位为3:
从模拟结果可以看出,时钟位为1时CLOCK表现最差,提高时钟位,CLOCK的表现好于RAND。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)