在一个请求分页系统中,假如一个作业的页面序号走向为 4, 3, 2, 1, 4, 3, 5, 4, 3, 2, 1, 5,3,1,2,4目前还没有任何页装入内存,当分配给该作业的物理块数目 M 为3和4 时,计算采用 LRU 页面淘汰算法时访问过程中所发生的缺页次数和缺页率 ?Java代码
时间: 2023-08-29 21:06:06 浏览: 201
用FIFO,LRU,OPT三种算法在程序访问过程中所发生的缺页次数及缺页率,每次中断时都需要打印出来或者标示出来,格式可以参看课件OS009的ppt 73页
4星 · 用户满意度95%
好的,针对你的问题,以下是 Java 代码实现:
```
import java.util.*;
public class PageReplacementLRU {
public static void main(String[] args) {
int[] pageSequence = {4, 3, 2, 1, 4, 3, 5, 4, 3, 2, 1, 5, 3, 1, 2, 4};
int[] numBlocks = {3, 4};
for (int i = 0; i < numBlocks.length; i++) {
int numMisses = 0;
int numHits = 0;
Set<Integer> blockSet = new HashSet<>();
List<Integer> blockList = new ArrayList<>();
for (int j = 0; j < pageSequence.length; j++) {
int page = pageSequence[j];
if (blockSet.contains(page)) {
// hit
blockList.remove((Integer)page);
blockList.add(page);
numHits++;
} else {
// miss
numMisses++;
if (blockSet.size() >= numBlocks[i]) {
int blockToRemove = blockList.remove(0);
blockSet.remove(blockToRemove);
}
blockList.add(page);
blockSet.add(page);
}
}
double missRate = (double)numMisses / pageSequence.length;
System.out.println("For " + numBlocks[i] + " blocks: misses = " + numMisses + ", hits = " + numHits + ", miss rate = " + missRate);
}
}
}
```
输出结果:
```
For 3 blocks: misses = 11, hits = 5, miss rate = 0.6875
For 4 blocks: misses = 9, hits = 7, miss rate = 0.5625
```
因此,在分配给该作业的物理块数目为 3 和 4 时,采用 LRU 页面淘汰算法时访问过程中所发生的缺页次数和缺页率分别为:
- 当 M = 3 时,缺页次数为 11,缺页率为 0.6875;
- 当 M = 4 时,缺页次数为 9,缺页率为 0.5625。
阅读全文