-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFFBF.py
More file actions
76 lines (59 loc) · 2.02 KB
/
FFBF.py
File metadata and controls
76 lines (59 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import math
def firstFit(blockSize, m, processSize, n):
allocation = [-1] * n
for i in range(n):
for j in range(m):
if blockSize[j] >= processSize[i]:
allocation[i] = j
blockSize[j] -= processSize[i]
break
print(" Process No. Process Size Block no.")
for i in range(n):
print(" ", i + 1, " ", processSize[i],
" ", end=" ")
if allocation[i] != -1:
print(allocation[i] + 1)
else:
print("Not Allocated")
def bestFit(blockSize, m, processSize, n):
allocation = [-1] * n
for i in range(n):
bestIdx = -1
for j in range(m):
if blockSize[j] >= processSize[i]:
if bestIdx == -1:
bestIdx = j
elif blockSize[bestIdx] > blockSize[j]:
bestIdx = j
if bestIdx != -1:
allocation[i] = bestIdx
blockSize[bestIdx] -= processSize[i]
print("Process No. Process Size Block no.")
for i in range(n):
print(i + 1, " ", processSize[i],
end=" ")
if allocation[i] != -1:
print(allocation[i] + 1)
else:
print("Not Allocated")
if __name__ == '__main__':
BlockValue = 900
processSize = [379, 395, 760, 379, 241, 200, 105, 40, 395, 105]
m = math.ceil((sum(processSize))/BlockValue)
blockSize =[]
for x in range(m):
blockSize.append(BlockValue)
#m = len(blockSize)
n = len(processSize)
firstFit(blockSize, m, processSize, n)
print("Кол-во процессов:", m, "\n")
processSize = [379, 395, 760, 379, 241, 200, 105, 40, 395, 105]
m = math.ceil((sum(processSize)) / BlockValue)
processSize.sort(reverse=True)
blockSize = []
for x in range(m):
blockSize.append(BlockValue)
# m = len(blockSize)
n = len(processSize)
bestFit(blockSize, m, processSize, n)
print("Кол-во процессов:", m)