diff --git a/操作系统/题目8.py b/操作系统/题目8.py new file mode 100644 index 0000000..7fe78ae --- /dev/null +++ b/操作系统/题目8.py @@ -0,0 +1,50 @@ +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__": + 主函数()