Python实现操作系统的页面置换算法

import copy
print("内存块个数为:",end='')
a = int(input())
print("请输入页面串(按空格分隔):",end='')
b = input().split()
c = len(b)*[a*[' ']]
e = copy.copy(c)
d = copy.copy(c)
n = 0
for i in range(len(b)):
    if b[i] not in d[i]:
        d[i][n%a] = b[i]
        n += 1
    if len(b) > i+1:
        d[i + 1] = copy.copy(d[i])
print("FIFO算法:")
print(*b,sep='  ')
print()
for i in range(a):
    for j in range(len(b)):
        print(d[j][i],end='  ')
    print()
print("缺页中断率为:{}".format(n/len(b)))
n = 0
e = len(b)*[a*[' ']]
x = 0
for i in range(len(b)):
    if b[i] not in e[i]:
        if e[i][-1] == ' ':
            e[i][x] = b[i]
            x += 1
            n += 1
        else:
            p = b[i:]
            q = 0
            for j in range(1,a):
                if e[i][q] not in p:
                    break
                if e[i][j] not in p:
                    q = j
                    break
                if p.index(e[i][j]) > p.index(e[i][q]):
                    q = j
            e[i][q] = b[i]
            n += 1
    if len(b) > i+1:
        e[i + 1] = copy.copy(e[i])
print("OPT算法:")
print(*b,sep='  ')
print()
for i in range(a):
    for j in range(len(b)):
        print(e[j][i],end='  ')
    print()
print("缺页中断率为:{}".format(n/len(b)))
n = 0
f = len(b)*[a*[' ']]
x = 0
ui = []
for i in range(len(b)):
    if b[i] not in f[i]:
        if f[i][-1] == ' ':
            f[i][x] = b[i]
            x += 1
            n += 1
            ui.append(b[i])
        else:
            yu = f[i].index(ui[0])
            f[i][yu] = b[i]
            ui = ui[1:]
            ui.append(b[i])
            n += 1
    else:
        ui.remove(b[i])
        ui.append(b[i])
    if len(b) > i+1:
        f[i + 1] = copy.copy(f[i])
print("LRU算法:")
print(*b,sep='  ')
print()
for i in range(a):
    for j in range(len(b)):
        print(f[j][i],end='  ')
    print()
print("缺页中断率为:{}".format(n/len(b)))

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值