From 5676194e148df7138551f05b61a6ac75f8157c02 Mon Sep 17 00:00:00 2001 From: GuanM <30427262+sxhoio@users.noreply.github.com.> Date: Thu, 7 Nov 2024 18:03:57 +0800 Subject: [PATCH] =?UTF-8?q?H=E9=A2=98=E7=9B=AE=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 操作系统/题目8.py | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 操作系统/题目8.py 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__": + 主函数()