fork download
  1. import random # র‌্যান্ডম নাম্বার বা ডাটা জেনারেট করতে ব্যবহৃত হবে
  2.  
  3.  
  4.  
  5.  
  6.  
  7. # প্রক্রিয়া (process) কে রিপ্রেজেন্ট করার জন্য একটি ক্লাস তৈরি করা হয়েছে
  8. class process:
  9.  
  10. def __init__(self, pid, priority, bursttime):
  11.  
  12. self.pid = pid # প্রক্রিয়াটির আইডেন্টিফায়ার (সংখ্যা বা নাম হতে পারে)
  13.  
  14. self.priority = priority # প্রক্রিয়ার প্রায়োরিটি (যত ছোট সংখ্যা, তত বেশি গুরুত্বপূর্ণ)
  15.  
  16. self.bursttime = bursttime # প্রক্রিয়াটি সম্পন্ন করতে কত সময় লাগবে
  17.  
  18. self.waitingtime = 0 # ওয়েটিং টাইম (শুরুতে ০)
  19.  
  20. self.turnaroundtime = 0 # টার্নঅ্যারাউন্ড টাইম (শুরুতে ০)
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27. # ফাংশন যা প্রায়োরিটি অনুযায়ী শিডিউলিং করবে
  28. def priorityscheduling(processes):
  29.  
  30. # প্রক্রিয়াগুলিকে তাদের প্রায়োরিটি অনুসারে সর্ট করা হচ্ছে (ছোট সংখ্যা = বেশি প্রায়োরিটি)
  31. processes.sort(key=lambda x: x.priority)
  32.  
  33. waitingtime = 0 # শুরুতে অপেক্ষার সময় ০
  34.  
  35. for i, p in enumerate(processes):
  36.  
  37. p.waitingtime = waitingtime # বর্তমান প্রক্রিয়ার অপেক্ষার সময় সেট করা হচ্ছে
  38.  
  39. p.turnaroundtime = p.waitingtime + p.bursttime # টার্নঅ্যারাউন্ড টাইম = অপেক্ষার সময় + এক্সিকিউশন সময়
  40.  
  41. waitingtime += p.bursttime # পরবর্তী প্রক্রিয়ার জন্য অপেক্ষার সময় আপডেট করা হচ্ছে
  42.  
  43.  
  44. return processes # প্রক্রিয়াগুলিকে প্রসেসিং শেষে রিটার্ন করা হচ্ছে
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. # কিছু প্রক্রিয়ার তালিকা তৈরি করা হচ্ছে (প্রক্রিয়ার আইডি, প্রায়োরিটি, এবং এক্সিকিউশন সময়)
  53. processlist = [
  54.  
  55. process(1, 2, 6),
  56.  
  57. process(2, 1, 8),
  58.  
  59. process(3, 3, 7),
  60.  
  61. process(4, 2, 3)
  62.  
  63. ]
  64.  
  65.  
  66.  
  67.  
  68.  
  69. # শিডিউলিং ফাংশনটি কল করা হচ্ছে
  70. scheduledprocesses = priorityscheduling(processlist)
  71.  
  72.  
  73.  
  74.  
  75.  
  76. # শিরোনাম প্রিন্ট করা হচ্ছে
  77. print(f"{'PID':<5}{'Priority':<10}{'Burst Time':<12}{'Waiting Time':<15}{'Turnaround Time'}")
  78.  
  79.  
  80.  
  81.  
  82. # প্রতিটি প্রসেসের তথ্য প্রিন্ট করা হচ্ছে
  83. for p in scheduledprocesses:
  84.  
  85. print(f"{p.pid:<5}{p.priority:<10}{p.bursttime:<12}{p.waitingtime:<15}{p.turnaroundtime}")
Success #stdin #stdout 0.12s 14212KB
stdin
processlist = [
    process(1, 2, 6),   # Process 1 → Priority 2 → Burst Time 6
    process(2, 1, 8),   # Process 2 → Priority 1 → Burst Time 8
    process(3, 3, 7),   # Process 3 → Priority 3 → Burst Time 7
    process(4, 2, 3)    # Process 4 → Priority 2 → Burst Time 3
]
stdout
PID  Priority  Burst Time  Waiting Time   Turnaround Time
2    1         8           0              8
1    2         6           8              14
4    2         3           14             17
3    3         7           17             24