Exp 7
Exp 7
shared_queue = queue.Queue()
def producer():
for i in range(5):
item = f"Item {i}"
print(f"Producing {item}")
shared_queue.put(item)
time.sleep(1)
def consumer():
for i in range(5):
item = shared_queue.get()
print(f"Consuming {item}")
shared_queue.task_done()
time.sleep(1)
producer_thread = threading.Thread(target=producer)
consumer_thread = threading.Thread(target=consumer)
producer_thread.start()
consumer_thread.start()
producer_thread.join()
consumer_thread.join()
class BankersAlgorithm:
def __init__(self, n, m):
self.n = n
self.m = m
self.available = []
self.max_claim = []
self.allocation = []
self.need = []
def input_data(self):
print("Enter available resources:")
self.available = list(map(int, input().split()))
for i in range(self.n):
need = [self.max_claim[i][j] - self.allocation[i][j]
for j in range(self.m)]
for j in range(self.m)]
self.need.append(need)
def is_safe(self):
work = self.available.copy()
finish = [False] * self.n
sequence = []
while True:
found = False
for i in range(self.n):
if not finish[i]:
if all(self.need[i][j] <= work[j] for j in range(self.m)):
for j in range(self.m):
work[j] += self.allocation[i][j]
finish[i] = True
sequence.append(i)
found = True
if not found:
break
if all(finish):
print("Safe sequence:", sequence)
return True
else:
print("Unsafe state, no safe sequence exists.")
return False
if __name__ == "__main__":
n = int(input("Enter the number of processes: "))
m = int(input("Enter the number of resources: "))
banker = BankersAlgorithm(n, m)
banker.input_data()
banker.is_safe()
safe state