تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
اريد كود لهذا السيناريو
#1
ارجوكم ساعدوني في كود لهذا السيناريو (علما تابع لكورس نظم التشغيل):
write a multithreaded program that implements bankers algorithm. several customers request and and release resources form the bank .the banker will grant a request only if it leaves the system in a safe state. Arequest that leaves the system in unsafe state will be denied
الرد }}}
تم الشكر بواسطة:
#2
تفضلوا هذا هو الكود الذي ينفذ سيناريو Banker's Algorithm المطلوب:

from threading import Thread, Lock

# تعريف دالة لإيجاد نظام آمن
def is_safe_state(available, maximum, allocation, need):
work = available.copy()
finish = [False] * len(allocation)

# الحصول على الموارد المطلوبة
while True:
can_finish = False
for i in range(len(allocation)):
if not finish[i] and all(need[i][j] <= work[j] for j in range(len(available))):
can_finish = True
finish[i] = True
for j in range(len(available)):
work[j] += allocation[i][j]
if not can_finish:
break

return all(finish)

# تعريف دالة لتنفيذ طلب المورد
def request_resources(customer_id, request, available, maximum, allocation, need, lock):
lock.acquire()

# التحقق من أن الطلب يتناسب مع الحد الأقصى والمورد المتاح
if all(request[i] <= need[customer_id][i] for i in range(len(request))) and all(request[i] <= available[i] for i in range(len(request))):
# تجربة تخصيص المورد للعميل
for i in range(len(request)):
available[i] -= request[i]
allocation[customer_id][i] += request[i]
need[customer_id][i] -= request[i]

# التحقق من أن النظام آمن بعد تخصيص المورد
if is_safe_state(available, maximum, allocation, need):
print(f"الموارد المخصصة للعميل {customer_id} هي {request}")
else:
# العودة إلى الحالة الأصلية
for i in range(len(request)):
available[i] += request[i]
allocation[customer_id][i] -= request[i]
need[customer_id][i] += request[i]
print(f"الطلب المقدم من العميل {customer_id} ليس آمناً ولم يتم تخصيص المورد")
else:
print(f"الطلب المقدم من العميل {customer_id} يتعارض مع الحد الأقصى أو المورد المتاح ولم يتم تخصيص المورد")

lock.release()

# تعريف دالة لإطلاق المورد
def release_resources(customer_id, release, available, allocation, need, lock):
lock.acquire()

# تحرير المورد والتحقق من أنه لا يتعارض مع الحد الأقصى
if all(release[i] <= allocation[customer_id][i] for i in range(len(release))):
for i in range(len(release)):
available[i] += release[i]
allocation[customer_id][i] -= release[i]
need[customer
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Lightbulb اريد كود للحفظ يوزرات وباسوردات المواقع rego2005 2 3,509 26-03-23, 02:21 PM
آخر رد: sanyor77
  اريد كود بلغة c ل file system compression المحسية بت محمد 1 2,483 26-03-23, 12:10 PM
آخر رد: sanyor77
  اريد كود لهذا السيناريو المحسية بت محمد 0 2,422 23-01-15, 03:30 PM
آخر رد: المحسية بت محمد

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم