import random as rd
buffer = [] # 初始化内存缓冲区
memoryInput = [rd.randint(0, 9) for i in range(10)] # 随机生成10个内存访问序列
print("内存访问序列为:", memoryInput)
def FIFO(memoryInput):
missingTimes = 0 # 缺页次数
index = 0 # 初始化置换索引
for i in memoryInput: # 遍历内存访问序列
isMissing = None # 初始化缺页标志
if i not in buffer: # 如果内存缓冲区中没有当前访问的内存页
if len(buffer) == 4: # 如果内存缓冲区已满
buffer[index] = i # 将当前访问的内存页加入内存缓冲区
index += 1 # 置换索引加1
missingTimes += 1 # 缺页次数加1
if index > 3: # 如果置换索引已到达内存缓冲区末尾
index = 0 # 置换索引归零
else:
buffer.append(i) # 将当前访问的内存页加入内存缓冲区
missingTimes += 1 # 缺页次数加1
isMissing = True # 缺页标志置为True
elif i in buffer: # 如果内存缓冲区中有当前访问的内存页
isMissing = False # 缺页标志置为False
print(f"当前内存缓冲区为:{buffer},是否缺页:{isMissing}", )
print("最终内存缓冲区为:", buffer)
print("缺页次数为:", missingTimes)
print("FIFO算法:")
print("-"*20)
FIFO(memoryInput)
buffer = []
def LRU(memoryInput):
missingTimes = 0 # 缺页次数
for i in range(len(memoryInput)): # 遍历内存访问序列
isMissing = None # 初始化缺页标志
if memoryInput[i] not in buffer: # 如果内存缓冲区中没有当前访问的内存页
isMissing = True # 缺页标志置为True
if len(buffer) == 4: # 如果内存缓冲区已满
for x in range(len(buffer)): # 遍历内存缓冲区
if buffer[x] not in memoryInput[i-2:i-1]: # 如果内存缓冲区中的内存页不在最近访问的内存页中
buffer[x] = memoryInput[i] # 将当前访问的内存页加入内存缓冲区
missingTimes += 1 # 缺页次数加1
break # 跳出循环
else:
buffer.append(memoryInput[i]) # 将当前访问的内存页加入内存缓冲区
missingTimes += 1 # 缺页次数加1
elif memoryInput[i] in buffer: # 如果内存缓冲区中有当前访问的内存页
isMissing = False # 缺页标志置为False
print(f"当前内存缓冲区为:{buffer},是否缺页:{isMissing}", )
print("最终内存缓冲区为:", buffer)
print("缺页次数为:", missingTimes)
print("LRU算法:")
print("-"*20)
LRU(memoryInput)
操作系统复习-LRU和FIFO的Python实现
最新推荐文章于 2024-05-09 17:51:30 发布