完成题目F
This commit is contained in:
parent
c593f3b0e9
commit
b6ef8f4aef
45
操作系统/题目6.py
Normal file
45
操作系统/题目6.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
def 计算空闲分区数量(进程数量, 分配信息, 回收进程):
|
||||||
|
进程映射 = {}
|
||||||
|
for i in range(进程数量):
|
||||||
|
起始地址 = 分配信息[i*2]
|
||||||
|
大小 = 分配信息[i*2+1]
|
||||||
|
进程映射[f'p{i+1}'] = (起始地址, 大小)
|
||||||
|
|
||||||
|
回收列表 = 回收进程.split()
|
||||||
|
for 进程 in 回收列表:
|
||||||
|
if 进程 not in 进程映射:
|
||||||
|
return "false"
|
||||||
|
|
||||||
|
已分配区域 = []
|
||||||
|
for i in range(进程数量):
|
||||||
|
进程 = f'p{i+1}'
|
||||||
|
if 进程 not in 回收列表:
|
||||||
|
起始地址, 大小 = 进程映射[进程]
|
||||||
|
已分配区域.append((起始地址, 起始地址 + 大小))
|
||||||
|
|
||||||
|
if not 已分配区域:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
已分配区域.sort()
|
||||||
|
|
||||||
|
空闲数量 = 1
|
||||||
|
|
||||||
|
if 已分配区域[0][0] > 0:
|
||||||
|
空闲数量 = 1
|
||||||
|
else:
|
||||||
|
空闲数量 = 0
|
||||||
|
|
||||||
|
for i in range(len(已分配区域)-1):
|
||||||
|
if 已分配区域[i+1][0] > 已分配区域[i][1]:
|
||||||
|
空闲数量 += 1
|
||||||
|
|
||||||
|
if 已分配区域[-1][1] < 512:
|
||||||
|
空闲数量 += 1
|
||||||
|
|
||||||
|
return 空闲数量
|
||||||
|
|
||||||
|
进程数量 = int(input())
|
||||||
|
分配信息 = list(map(int, input().split()))
|
||||||
|
回收进程 = input()
|
||||||
|
|
||||||
|
print(计算空闲分区数量(进程数量, 分配信息, 回收进程))
|
Loading…
x
Reference in New Issue
Block a user