class page: def __init__(self,num,time): self.num = num self.time = time class main: #初始化内存单元,缓冲区 def __init__(self): # 初始化内存单元 self.b = [page(-1,M-i-1) for i in range(0,M)] #初始化内存当前状态,缓冲区 self.c = [[-1 for i in range(0,N)] for j in range(0,M)] #记录调入队列 def get_max(self,b): max=-1 flag = 0 for i in range(0,M): if b[i].time >max: max = b[i].time flag = i return flag def equation(self,fold,b): for i in range(0,M): if fold==b[i].num: return i return -1 # FIFO算法 def fifo(self, fold, b): val = self.equation(fold, b) if val >= 0: pass else: self.queue.append(fold) self.k += 1 self.flag += 1 self.flag %= 4 self.b[self.flag].num = fold #打印内存状态 def Myprint(self,a): self.print_string() for j in range(0, N): print("|%2d" % (a[j]), end="") print("|") self.print_string() for i in range(0, M): for j in range(0, N): if self.c[i][j] == -1: print("|%2c" % (32), end=" ") else: print("|%2d" % (self.c[i][j]), end=" ") print("|") self.print_string() print("调入队列为") for i in range(0, self.k + 1): print("%2d"% (self.queue[i]), end=" ") print("\n缺页次数为:%6d\n缺页率:%16.6f"%(self.k +1,(float)(self.k+1)/N))补全fifo算法代码
时间: 2023-07-16 09:15:33 浏览: 85
Python RuntimeError: thread.__init__() not called解决方法
根据给出的代码,`fifo`算法的代码如下:
```
# FIFO算法
def fifo(self, fold, b):
val = self.equation(fold, b)
if val >= 0:
pass
else:
self.queue.append(fold)
self.k += 1
self.flag += 1
self.flag %= 4
self.b[self.flag].num = fold
if self.c[self.flag][fold] == -1:
self.c[self.flag][fold] = 1
```
在这个代码中,我们首先调用了 `equation` 函数,以查找当前页是否在内存中。如果页已经在内存中,则不需要进行任何操作。否则,我们将当前页添加到调入队列中,并且我们将缺页次数 `k` 增加1。然后,我们使用 `flag` 变量来确定在哪个内存块中插入当前页。我们将 `flag` 增加1,然后对4取模,以便在四个内存块之间循环轮换。然后,我们将当前页插入到相应的内存块中,并将其标记为存在于内存中。
最后,我们还添加了一行代码来记录页是否在内存中。我们使用 `c` 数组来跟踪每个内存块中的每个页面是否存在。如果页面不存在,则我们将相应的条目设置为-1。如果页面存在,则我们将相应的条目设置为1。在这个代码中,我们将这个值设置为1,以表明当前页已经在内存中。
阅读全文