【 *** 作系统导论】第22章课后习题解答

【 *** 作系统导论】第22章课后习题解答,第1张

目录
  • 前言
  • 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查看模拟程序的结果

可以看到模拟结果与分析结果一致。

输入另外两个FIFO策略命令:
./paging-policy.py -s 1 -n 10 -p FIFO -c
./paging-policy.py -s 2 -n 10 -p FIFO -c

LRU

输入命令:
./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查看模拟程序的结果

可以看到模拟结果与分析结果一致。

输入另外两个LRU策略命令:
./paging-policy.py -s 1 -n 10 -p LRU -c
./paging-policy.py -s 2 -n 10 -p LRU -c

OPT

输入命令:
./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查看模拟程序的结果

可以看到模拟结果与分析结果一致。

输入另外两个OPT策略命令:
./paging-policy.py -s 1 -n 10 -p OPT -c
./paging-policy.py -s 2 -n 10 -p OPT -c

22.2 题目描述

分析及解答

最差情况的地址引用序列为:1、2、3、4、5、6这样的序列,要访问的页各不相同,且高速缓存大小不够大,每次访问都会导致未命中,要提高性能则需要将缓存大小增加到与序列的个数一样才行

22.3 题目描述

分析及解答

该题需要编写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。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/724870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存