51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
def 初始化位示图():
|
|
bitmap = [0] * 64
|
|
已占用 = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
|
|
for 块 in 已占用:
|
|
bitmap[块] = 1
|
|
return bitmap
|
|
|
|
def 分配内存(bitmap, 进程大小):
|
|
进程块 = {}
|
|
|
|
for 进程ID, 大小 in enumerate(进程大小, 1):
|
|
if 大小 > 54:
|
|
continue
|
|
|
|
块列表 = []
|
|
计数 = 0
|
|
|
|
for i in range(64):
|
|
if len(块列表) == 大小:
|
|
break
|
|
if bitmap[i] == 0:
|
|
块列表.append(i)
|
|
bitmap[i] = 1
|
|
计数 += 1
|
|
|
|
if 计数 < 大小:
|
|
for 块 in 块列表:
|
|
bitmap[块] = 0
|
|
else:
|
|
进程块[进程ID] = 块列表
|
|
|
|
return 进程块
|
|
|
|
def 主函数():
|
|
进程大小 = list(map(int, input().split()))
|
|
查询进程, 查询页面 = map(int, input().split())
|
|
|
|
bitmap = 初始化位示图()
|
|
|
|
进程块 = 分配内存(bitmap, 进程大小)
|
|
|
|
if 查询进程 not in 进程块:
|
|
print("wait")
|
|
elif 查询页面 >= 进程大小[查询进程-1] or 查询页面 < 0:
|
|
print("error")
|
|
else:
|
|
print(进程块[查询进程][查询页面])
|
|
|
|
if __name__ == "__main__":
|
|
主函数()
|