操作系统复习-LRU和FIFO的Python实现

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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Day(AKA Elin)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值