import random # র্যান্ডম নাম্বার বা ডাটা জেনারেট করতে ব্যবহৃত হবে
# প্রক্রিয়া (process) কে রিপ্রেজেন্ট করার জন্য একটি ক্লাস তৈরি করা হয়েছে
class process:
def __init__(self, pid, priority, bursttime):
self.pid = pid # প্রক্রিয়াটির আইডেন্টিফায়ার (সংখ্যা বা নাম হতে পারে)
self.priority = priority # প্রক্রিয়ার প্রায়োরিটি (যত ছোট সংখ্যা, তত বেশি গুরুত্বপূর্ণ)
self.bursttime = bursttime # প্রক্রিয়াটি সম্পন্ন করতে কত সময় লাগবে
self.waitingtime = 0 # ওয়েটিং টাইম (শুরুতে ০)
self.turnaroundtime = 0 # টার্নঅ্যারাউন্ড টাইম (শুরুতে ০)
# ফাংশন যা প্রায়োরিটি অনুযায়ী শিডিউলিং করবে
def priorityscheduling(processes):
# প্রক্রিয়াগুলিকে তাদের প্রায়োরিটি অনুসারে সর্ট করা হচ্ছে (ছোট সংখ্যা = বেশি প্রায়োরিটি)
processes.sort(key=lambda x: x.priority)
waitingtime = 0 # শুরুতে অপেক্ষার সময় ০
for i, p in enumerate(processes):
p.waitingtime = waitingtime # বর্তমান প্রক্রিয়ার অপেক্ষার সময় সেট করা হচ্ছে
p.turnaroundtime = p.waitingtime + p.bursttime # টার্নঅ্যারাউন্ড টাইম = অপেক্ষার সময় + এক্সিকিউশন সময়
waitingtime += p.bursttime # পরবর্তী প্রক্রিয়ার জন্য অপেক্ষার সময় আপডেট করা হচ্ছে
return processes # প্রক্রিয়াগুলিকে প্রসেসিং শেষে রিটার্ন করা হচ্ছে
# কিছু প্রক্রিয়ার তালিকা তৈরি করা হচ্ছে (প্রক্রিয়ার আইডি, প্রায়োরিটি, এবং এক্সিকিউশন সময়)
processlist = [
process(1, 2, 6),
process(2, 1, 8),
process(3, 3, 7),
process(4, 2, 3)
]
# শিডিউলিং ফাংশনটি কল করা হচ্ছে
scheduledprocesses = priorityscheduling(processlist)
# শিরোনাম প্রিন্ট করা হচ্ছে
print(f"{'PID':<5}{'Priority':<10}{'Burst Time':<12}{'Waiting Time':<15}{'Turnaround Time'}")
# প্রতিটি প্রসেসের তথ্য প্রিন্ট করা হচ্ছে
for p in scheduledprocesses:
print(f"{p.pid:<5}{p.priority:<10}{p.bursttime:<12}{p.waitingtime:<15}{p.turnaroundtime}")
aW1wb3J0IHJhbmRvbSAgIyDgprDigIzgp43gpq/gpr7gpqjgp43gpqHgpq4g4Kao4Ka+4Kau4KeN4Kas4Ka+4KawIOCmrOCmviDgpqHgpr7gpp/gpr4g4Kac4KeH4Kao4Ka+4Kaw4KeH4KafIOCmleCmsOCmpOCnhyDgpqzgp43gpq/gpqzgprngp4PgpqQg4Ka54Kas4KeHIAoKCgoKCiMg4Kaq4KeN4Kaw4KaV4KeN4Kaw4Ka/4Kav4Ka84Ka+IChwcm9jZXNzKSDgppXgp4cg4Kaw4Ka/4Kaq4KeN4Kaw4KeH4Kac4KeH4Kao4KeN4KafIOCmleCmsOCmvuCmsCDgppzgpqjgp43gpq8g4KaP4KaV4Kaf4Ka/IOCmleCnjeCmsuCmvuCmuCDgpqTgp4jgprDgpr8g4KaV4Kaw4Ka+IOCmueCmr+CmvOCnh+Cmm+CnhyAKY2xhc3MgcHJvY2VzczoKICAgIAogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBpZCwgcHJpb3JpdHksIGJ1cnN0dGltZSk6CiAgICAgICAgCiAgICAgICAgc2VsZi5waWQgPSBwaWQgICAjIOCmquCnjeCmsOCmleCnjeCmsOCmv+Cmr+CmvOCmvuCmn+Cmv+CmsCDgpobgpofgpqHgp4fgpqjgp43gpp/gpr/gpqvgpr7gpq/gprzgpr7gprAgKOCmuOCmguCmluCnjeCmr+CmviDgpqzgpr4g4Kao4Ka+4KauIOCmueCmpOCnhyDgpqrgpr7gprDgp4cpCiAgICAgICAgCiAgICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5ICAgIyDgpqrgp43gprDgppXgp43gprDgpr/gpq/gprzgpr7gprAg4Kaq4KeN4Kaw4Ka+4Kav4Ka84KeL4Kaw4Ka/4Kaf4Ka/ICjgpq/gpqQg4Kab4KeL4KafIOCmuOCmguCmluCnjeCmr+Cmviwg4Kak4KakIOCmrOCnh+CmtuCmvyDgppfgp4HgprDgp4HgpqTgp43gpqzgpqrgp4LgprDgp43gpqMpCiAgICAgICAgCiAgICAgICAgc2VsZi5idXJzdHRpbWUgPSBidXJzdHRpbWUgICAjIOCmquCnjeCmsOCmleCnjeCmsOCmv+Cmr+CmvOCmvuCmn+CmvyDgprjgpq7gp43gpqrgpqjgp43gpqgg4KaV4Kaw4Kak4KeHIOCmleCmpCDgprjgpq7gpq/gprwg4Kay4Ka+4KaX4Kas4KeHIAogICAgICAgIAogICAgICAgIHNlbGYud2FpdGluZ3RpbWUgPSAwICAgIyDgppPgpq/gprzgp4fgpp/gpr/gpoIg4Kaf4Ka+4KaH4KauICjgprbgp4HgprDgp4HgpqTgp4cg4KemKQogICAgICAgIAogICAgICAgIHNlbGYudHVybmFyb3VuZHRpbWUgPSAwICAgIyDgpp/gpr7gprDgp43gpqjgpoXgp43gpq/gpr7gprDgpr7gpongpqjgp43gpqEg4Kaf4Ka+4KaH4KauICjgprbgp4HgprDgp4HgpqTgp4cg4KemKQoKCgoKCgojIOCmq+CmvuCmguCmtuCmqCDgpq/gpr4g4Kaq4KeN4Kaw4Ka+4Kav4Ka84KeL4Kaw4Ka/4Kaf4Ka/IOCmheCmqOCngeCmr+CmvuCmr+CmvOCngCDgprbgpr/gpqHgpr/gpongprLgpr/gpoIg4KaV4Kaw4Kas4KeHICAKZGVmIHByaW9yaXR5c2NoZWR1bGluZyhwcm9jZXNzZXMpOgogICAgCiAgICAjIOCmquCnjeCmsOCmleCnjeCmsOCmv+Cmr+CmvOCmvuCml+CngeCmsuCmv+CmleCnhyDgpqTgpr7gpqbgp4fgprAg4Kaq4KeN4Kaw4Ka+4Kav4Ka84KeL4Kaw4Ka/4Kaf4Ka/IOCmheCmqOCngeCmuOCmvuCmsOCnhyDgprjgprDgp43gpp8g4KaV4Kaw4Ka+IOCmueCmmuCnjeCmm+CnhyAo4Kab4KeL4KafIOCmuOCmguCmluCnjeCmr+CmviA9IOCmrOCnh+CmtuCmvyDgpqrgp43gprDgpr7gpq/gprzgp4vgprDgpr/gpp/gpr8pCiAgICBwcm9jZXNzZXMuc29ydChrZXk9bGFtYmRhIHg6IHgucHJpb3JpdHkpCgogICAgd2FpdGluZ3RpbWUgPSAwICAjIOCmtuCngeCmsOCngeCmpOCnhyDgpoXgpqrgp4fgppXgp43gprfgpr7gprAg4Ka44Kau4Kav4Ka8IOCnpgoKICAgIGZvciBpLCBwIGluIGVudW1lcmF0ZShwcm9jZXNzZXMpOiAgCiAgICAgICAgCiAgICAgICAgcC53YWl0aW5ndGltZSA9IHdhaXRpbmd0aW1lICAgIyDgpqzgprDgp43gpqTgpq7gpr7gpqgg4Kaq4KeN4Kaw4KaV4KeN4Kaw4Ka/4Kav4Ka84Ka+4KawIOCmheCmquCnh+CmleCnjeCmt+CmvuCmsCDgprjgpq7gpq/gprwg4Ka44KeH4KafIOCmleCmsOCmviDgprngpprgp43gppvgp4cgCiAgICAgICAgCiAgICAgICAgcC50dXJuYXJvdW5kdGltZSA9IHAud2FpdGluZ3RpbWUgKyBwLmJ1cnN0dGltZSAgICMg4Kaf4Ka+4Kaw4KeN4Kao4KaF4KeN4Kav4Ka+4Kaw4Ka+4KaJ4Kao4KeN4KahIOCmn+CmvuCmh+CmriA9IOCmheCmquCnh+CmleCnjeCmt+CmvuCmsCDgprjgpq7gpq/gprwgKyDgpo/gppXgp43gprjgpr/gppXgpr/gpongprbgpqgg4Ka44Kau4Kav4Ka8IAogICAgICAgIAogICAgICAgIHdhaXRpbmd0aW1lICs9IHAuYnVyc3R0aW1lICAgIyDgpqrgprDgpqzgprDgp43gpqTgp4Ag4Kaq4KeN4Kaw4KaV4KeN4Kaw4Ka/4Kav4Ka84Ka+4KawIOCmnOCmqOCnjeCmryDgpoXgpqrgp4fgppXgp43gprfgpr7gprAg4Ka44Kau4Kav4Ka8IOCmhuCmquCmoeCnh+CmnyDgppXgprDgpr4g4Ka54Kaa4KeN4Kab4KeHIAoKICAgIAogICAgcmV0dXJuIHByb2Nlc3NlcyAgICMg4Kaq4KeN4Kaw4KaV4KeN4Kaw4Ka/4Kav4Ka84Ka+4KaX4KeB4Kay4Ka/4KaV4KeHIOCmquCnjeCmsOCmuOCnh+CmuOCmv+CmgiDgprbgp4fgprfgp4cg4Kaw4Ka/4Kaf4Ka+4Kaw4KeN4KaoIOCmleCmsOCmviDgprngpprgp43gppvgp4cgIAoKCgoKCgoKIyDgppXgpr/gppvgp4Eg4Kaq4KeN4Kaw4KaV4KeN4Kaw4Ka/4Kav4Ka84Ka+4KawIOCmpOCmvuCmsuCmv+CmleCmviDgpqTgp4jgprDgpr8g4KaV4Kaw4Ka+IOCmueCmmuCnjeCmm+CnhyAo4Kaq4KeN4Kaw4KaV4KeN4Kaw4Ka/4Kav4Ka84Ka+4KawIOCmhuCmh+CmoeCmvywg4Kaq4KeN4Kaw4Ka+4Kav4Ka84KeL4Kaw4Ka/4Kaf4Ka/LCDgpo/gpqzgpoIg4KaP4KaV4KeN4Ka44Ka/4KaV4Ka/4KaJ4Ka24KaoIOCmuOCmruCmr+CmvCkgIApwcm9jZXNzbGlzdCA9IFsKCiAgICBwcm9jZXNzKDEsIDIsIDYpLAoKICAgIHByb2Nlc3MoMiwgMSwgOCksCgogICAgcHJvY2VzcygzLCAzLCA3KSwKCiAgICBwcm9jZXNzKDQsIDIsIDMpCgpdCgoKCgoKIyDgprbgpr/gpqHgpr/gpongprLgpr/gpoIg4Kar4Ka+4KaC4Ka24Kao4Kaf4Ka/IOCmleCmsiDgppXgprDgpr4g4Ka54Kaa4KeN4Kab4KeHCnNjaGVkdWxlZHByb2Nlc3NlcyA9IHByaW9yaXR5c2NoZWR1bGluZyhwcm9jZXNzbGlzdCkKCgoKCgojIOCmtuCmv+CmsOCni+CmqOCmvuCmriDgpqrgp43gprDgpr/gpqjgp43gpp8g4KaV4Kaw4Ka+IOCmueCmmuCnjeCmm+CnhyAKcHJpbnQoZiJ7J1BJRCc6PDV9eydQcmlvcml0eSc6PDEwfXsnQnVyc3QgVGltZSc6PDEyfXsnV2FpdGluZyBUaW1lJzo8MTV9eydUdXJuYXJvdW5kIFRpbWUnfSIpCgoKCgojIOCmquCnjeCmsOCmpOCmv+Cmn+CmvyDgpqrgp43gprDgprjgp4fgprjgp4fgprAg4Kak4Kal4KeN4KavIOCmquCnjeCmsOCmv+CmqOCnjeCmnyDgppXgprDgpr4g4Ka54Kaa4KeN4Kab4KeHIApmb3IgcCBpbiBzY2hlZHVsZWRwcm9jZXNzZXM6CiAgICAKICAgIHByaW50KGYie3AucGlkOjw1fXtwLnByaW9yaXR5OjwxMH17cC5idXJzdHRpbWU6PDEyfXtwLndhaXRpbmd0aW1lOjwxNX17cC50dXJuYXJvdW5kdGltZX0iKQ==
cHJvY2Vzc2xpc3QgPSBbCiAgICBwcm9jZXNzKDEsIDIsIDYpLCAgICMgUHJvY2VzcyAxICZyYXJyOyBQcmlvcml0eSAyICZyYXJyOyBCdXJzdCBUaW1lIDYKICAgIHByb2Nlc3MoMiwgMSwgOCksICAgIyBQcm9jZXNzIDIgJnJhcnI7IFByaW9yaXR5IDEgJnJhcnI7IEJ1cnN0IFRpbWUgOAogICAgcHJvY2VzcygzLCAzLCA3KSwgICAjIFByb2Nlc3MgMyAmcmFycjsgUHJpb3JpdHkgMyAmcmFycjsgQnVyc3QgVGltZSA3CiAgICBwcm9jZXNzKDQsIDIsIDMpICAgICMgUHJvY2VzcyA0ICZyYXJyOyBQcmlvcml0eSAyICZyYXJyOyBCdXJzdCBUaW1lIDMKXQ==
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
]