এই নিবন্ধে, আমরা রাউন্ড-রবিন শিডিয়ুলিং অ্যালগরিদম বলে শিডিউলিং অ্যালগরিদম সম্পর্কে শিখব, রাউন্ড-রবিন কী? কিভাবে প্রোগ্রাম লিখবেন? ইত্যাদি চলুন শুরু করা যাক।
রাউন্ড রবিন শিডিউলিং কি?
রাউন্ড রবিন শিডিউলিং সিডিইউ ব্যবহারের সময়সূচী করার জন্য সিস্টেম দ্বারা ব্যবহৃত একটি শিডিয়ুলিং অ্যালগরিদম। এটি একটি প্রিমিটিভ অ্যালগরিদম। কোয়ান্টাম নামক প্রতিটি অনুরোধের সাথে যুক্ত একটি নির্দিষ্ট সময়ের স্লাইস রয়েছে। কাজের সময়সূচী বর্তমানে নির্বাহ করা কাজের অগ্রগতি সংরক্ষণ করে এবং নির্দিষ্ট সময় কোয়ান্টামের জন্য যখন একটি নির্দিষ্ট প্রক্রিয়া সম্পাদন করা হয় তখন সারিটিতে উপস্থিত পরবর্তী কাজের দিকে চলে যায়।
কোনও প্রক্রিয়া সিপিইউকে দীর্ঘ সময়ের জন্য ধরে রাখবে না। স্যুইচিংকে প্রসঙ্গের সুইচ বলা হয়। এটি সম্ভবত সেরা সময়সূচী অ্যালগরিদমগুলির মধ্যে একটি। এই অ্যালগরিদমের দক্ষতা কোয়ান্টাম মানের উপর নির্ভর করে।
স্নাতকোত্তর সার্টিফিকেট বনাম মাস্টার্স
রাউন্ড রবিন স্কুল অ্যালগরিথম
- আমাদের প্রথমে একটি সারি রয়েছে যেখানে প্রথমে প্রথমে পরিবেশন অর্ডার প্রসেসগুলি সাজানো হয়।
- প্রতিটি প্রক্রিয়া চালানোর জন্য একটি কোয়ান্টাম মান বরাদ্দ করা হয়।
- প্রথম প্রক্রিয়া কোয়ান্টাম মান শেষ হওয়া পর্যন্ত কার্যকর করা হয়। এর পরে, একটি বাধা তৈরি করা হয় এবং রাষ্ট্রটি সংরক্ষণ করা হয়।
- এরপরে সিপিইউ পরবর্তী প্রক্রিয়াতে চলে আসে এবং একই পদ্ধতি অনুসরণ করা হয়।
- সমস্ত প্রক্রিয়া শেষ না হওয়া পর্যন্ত একই পদক্ষেপগুলি পুনরাবৃত্তি করা হয়।
উদাহরণ কোড বিবেচনা করুন
# অন্তর্নির্মিত মেইন () i ইন্টি আই, সীমা, মোট = 0, এক্স, কাউন্টার = 0, সময়_কোয়ান্টাম ওয়েট_টাইম = 0, টার্নআউন্ড_টাইম = 0, আগমন_টাইম [10], বিস্ফোরিত সময় [10], অস্থায়ী [10] ভাসা গড়_উইট_টাইম, গড়_সত্তার_আর_কাল printf ('প্রসেসের মোট সংখ্যা: টি') স্ক্যানফ ('% d', এবং সীমা) x = সীমা (i = 0 i) এর জন্য0) {টেম্প [i] = টেম্প [i] - সময়_ কোয়ান্টাম টোটাল = মোট + সময়_কোয়ান্টাম} যদি (অস্থায়ী [আমি] == 0 && কাউন্টার == 1) {x-- প্রিন্টফ ('এন প্রসেস [% ডি] টিটি% ডিটিটি % dttt% d ', i + 1, বার্স্টটাইম [i], মোট - আগমন_কাল [i], মোট - আগমন_কাল [i] - বিস্ফোরিত সময় [i]) অপেক্ষা_টাইম = ওয়েটটাইম + মোট - আগমন_কাল [i] - বিস্ফোরিত_আর = টার্নআরউন্ড_টাইম + মোট - আগমন_কাল [i] কাউন্টার = 0} যদি (i == সীমা - 1) {i = 0} অন্যথায় যদি (আগমন_কাল [আমি + 1]<= total) { i++ } else { i = 0 } } average_wait_time = wait_time * 1.0 / limit average_turnaround_time = turnaround_time * 1.0 / limit printf('nnAverage Waiting Time:t%f', average_wait_time) printf('nAvg Turnaround Time:t%fn', average_turnaround_time) return 0 }
আউটপুট:
ব্যাখ্যা:
উপরের কোডে, আমরা ব্যবহারকারীকে প্রসেসের সংখ্যা এবং আগমনের সময় এবং প্রতিটি প্রক্রিয়াটির জন্য সময় ফেটে দিতে বলি। তারপরে আমরা রাউন্ড-রবিন অ্যালগরিদম ব্যবহার করে অপেক্ষার সময় এবং ঘুরার সময় গণনা করি।
এখানে মূল অংশটি সময় এবং অপেক্ষার সময়টির ঘুরে গণনা করছে। ঘুরতে ঘুরতে মোট সময় নেওয়া এবং আগমনের সময়কে বিয়োগ করে গণনা করা হয়।
অপেক্ষার সময়টি গণনা করা হয় আগমনের সময়কে বিয়োগ করে মোটের থেকে সময় ফেটে এবং অপেক্ষার সময়টিকে t0 যোগ করে। এভাবেই রাউন্ড-রবিন শিডিয়ুলিং হয়।
সুবিধাদি:
- সিদ্ধান্ত নেওয়ার জন্য লো ওভারহেড।
- অন্যান্য অ্যালগরিদম থেকে পৃথক, এটি সমস্ত প্রক্রিয়া সমান অগ্রাধিকার দেয়।
- এই প্রক্রিয়াতে অনাহার খুব কমই ঘটে।
অসন্তুষ্টি:
- ঘন ঘন স্যুইচিংয়ের কারণে কোয়ান্টামের মান কম থাকলে সিস্টেমের দক্ষতা হ্রাস পায়।
- কোয়ান্টাম মান বেশি হলে সিস্টেমটি প্রতিক্রিয়াহীন হয়ে উঠতে পারে।
এটির সাথে আমরা এই নিবন্ধটির শেষ করছি।
আমি আশা করি আপনি এই তথ্যবহুল এবং সহায়ক খুঁজে পেয়েছেন, অনুরূপ বিষয়ে আরও টিউটোরিয়াল জন্য থাকুন। আপনি আমাদের প্রশিক্ষণ প্রোগ্রাম টি পরীক্ষা করতে পারেনo jQuery এর বিভিন্ন অ্যাপ্লিকেশন সহ গভীরতর জ্ঞান পান, আপনি পারেন 24/7 সমর্থন এবং আজীবন অ্যাক্সেস সহ লাইভ অনলাইন প্রশিক্ষণের জন্য।উপরের কোডটি বিভিন্ন স্ট্রিং এবং পরিবর্তনগুলি প্রয়োগ করুন। এখন, আমরা পয়েন্টার সম্পর্কিত সমস্ত মূল ধারণা সম্পর্কে ভাল ধারণা পেয়েছি।
আমাদের জন্য একটি প্রশ্ন আছে? এই ব্লগের মন্তব্য বিভাগে তাদের উল্লেখ করুন এবং আমরা আপনার কাছে ফিরে আসব।