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

目录

  • 前言
  • 22.1
    • 题目描述
    • 分析及解答
      • FIFO
      • LRU
      • OPT
  • 22.2
    • 题目描述
    • 分析及解答
  • 22.3
    • 题目描述
    • 分析及解答
  • 22.4
    • 题目描述
    • 分析及解答

前言

内容仅作记录,解答有参考别人的地方,请谨慎参考

22.1

题目描述

在这里插入图片描述

分析及解答

FIFO

输入命令:
./paging-policy.py -s 0 -n 10 -p FIFO
进行程序模拟,追踪策略为:FIFO
【操作系统导论】第22章课后习题解答_第1张图片
在FIFO策略决定替换哪个页面时将选择第一个进入的页进行替换
访问顺序为:8、7、4、2、5、4、7、3、4、5,cache能容纳3个页
具体访问过程如下:
【操作系统导论】第22章课后习题解答_第2张图片

输入命令:
./paging-policy.py -s 0 -n 10 -p FIFO -c查看模拟程序的结果
【操作系统导论】第22章课后习题解答_第3张图片
可以看到模拟结果与分析结果一致。

输入另外两个FIFO策略命令:
./paging-policy.py -s 1 -n 10 -p FIFO -c
./paging-policy.py -s 2 -n 10 -p FIFO -c
【操作系统导论】第22章课后习题解答_第4张图片
【操作系统导论】第22章课后习题解答_第5张图片

LRU

输入命令:
./paging-policy.py -s 0 -n 10 -p LRU
进行程序模拟,追踪策略为:LRU
【操作系统导论】第22章课后习题解答_第6张图片
LRU策略决定替换哪个页将基于“局部性原则”,根据历史近期访问决定替换哪个页
访问顺序为:8、7、4、2、5、4、7、3、4、5
具体访问过程如下:
【操作系统导论】第22章课后习题解答_第7张图片

输入命令:
./paging-policy.py -s 0 -n 10 -p LRU -c查看模拟程序的结果
【操作系统导论】第22章课后习题解答_第8张图片
可以看到模拟结果与分析结果一致。

输入另外两个LRU策略命令:
./paging-policy.py -s 1 -n 10 -p LRU -c
./paging-policy.py -s 2 -n 10 -p LRU -c
【操作系统导论】第22章课后习题解答_第9张图片
【操作系统导论】第22章课后习题解答_第10张图片

OPT

输入命令:
./paging-policy.py -s 0 -n 10 -p OPT
进行程序模拟,追踪策略为:OPT
【操作系统导论】第22章课后习题解答_第11张图片
OPT最优策略决定替换哪个页将基于未来的访问情况,将未来最远访问的页替换掉
访问顺序为:8、7、4、2、5、4、7、3、4、5
具体访问过程如下:
【操作系统导论】第22章课后习题解答_第12张图片

输入命令:
./paging-policy.py -s 0 -n 10 -p OPT -c查看模拟程序的结果
【操作系统导论】第22章课后习题解答_第13张图片
可以看到模拟结果与分析结果一致。

输入另外两个OPT策略命令:
./paging-policy.py -s 1 -n 10 -p OPT -c
./paging-policy.py -s 2 -n 10 -p OPT -c
【操作系统导论】第22章课后习题解答_第14张图片
【操作系统导论】第22章课后习题解答_第15张图片

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就可以运行代码了

编写模拟程序如下:
【操作系统导论】第22章课后习题解答_第16张图片
随机生成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策略
【操作系统导论】第22章课后习题解答_第17张图片
LRU策略
【操作系统导论】第22章课后习题解答_第18张图片
OPT策略
【操作系统导论】第22章课后习题解答_第19张图片

可以看到模拟的结果与预期结果基本一致,测试数据量更大的情况下,这一结果将更加明显,三种策略的命中率差距将更大。

22.4

题目描述

在这里插入图片描述

分析及解答

编写能够生成具有一定局部性序列的程序:
【操作系统导论】第22章课后习题解答_第20张图片
[注意代码缩进一致: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多次测试:
【操作系统导论】第22章课后习题解答_第21张图片
RAND多次测试:
【操作系统导论】第22章课后习题解答_第22张图片
CLOCK多次测试:
【操作系统导论】第22章课后习题解答_第23张图片
从多次的测试结果可以看出,LRU的表现是比RAND略好一些的。

使用命令:
./paging-policy.py -f 1.txt -b x -p CLOCK -c测试不同时钟位的表现:
[其中x为时钟位数量]
时钟位为1:
【操作系统导论】第22章课后习题解答_第24张图片
时钟位为2:
【操作系统导论】第22章课后习题解答_第25张图片
时钟位为3:
【操作系统导论】第22章课后习题解答_第26张图片
从模拟结果可以看出,时钟位为1时CLOCK表现最差,提高时钟位,CLOCK的表现好于RAND。

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