রাউন্ড রবিন (RR) একটি প্রি-এম্পটিভ CPU শিডিউলিং অ্যালগরিদম যেখানে প্রতিটি প্রসেসের জন্য একটি ফিক্সড টাইম স্লাইস অ্যালোকেট করা হয় যাকে কোয়ান্টাম বলা হয়। স্ট্যান্ডার্ড রাউন্ড রবিনের মতো শূন্য আরাইভাল টাইমের বিপরীতে, এই ভেরিয়েন্ট ভিন্ন-भিন্ন সময়ে আরাইভ करने वाले প্রসেসগুলো হ্যান্ডেল করে, যা শিডিউলিংকে আরও জটিল করে তোলে কারণ রেডি কিউ ডাইনামিক্যালি চেঞ্জ হয়।
প্রি-এম্পটিভ শিডিউলিং-এ, একটি রানিং প্রসেস ইন্টারাপ্ট হয়ে রেডি কিউতে ফিরে যেতে পারে। রাউন্ড রবিন নিশ্চিত করে প্রতিটি প্রসেসের সমান শেয়ার CPU টাইম দিয়ে ফেয়ারনেস, স্টারভেশন প্রিভেন্ট করে ইন্টারঅ্যাক্টিভ সিস্টেমের জন্য ভালো রেসপন্স টাইম মেইনটেইন করে।
ভিন্ন আরাইভাল টাইমের সাথে রাউন্ড রবিন কীভাবে কাজ করে
যখন প্রসেসগুলোর ভিন্ন আরাইভাল টাইম থাকে, অ্যালগরিদম এই স্টেপগুলো ফলো করে:
- প্রসেসগুলো তাদের আরাইভাল টাইমের ভিত্তিতে রেডি কিউতে প্রবেশ করে
- CPU প্রথম উপলব্ধ প্রসেসকে কোয়ান্টাম ডিউরেশনের জন্য সার্ভ করে
- যদি প্রসেস কোয়ান্টামের মধ্যে কমপ্লিট হয়, এটি টার্মিনেট হয়
- যদি না হয়, এটি রেডি কিউর শেষে মুভ করে
- নতুন আরাইভাল রেডি কিউতে যোগ হয় এবং তাদের টার্ন এর জন্য অপেক্ষা করে
- কনটেক্সট সুইচিং প্রি-এম্পটেড প্রসেসের স্টেট সেভ করে
কি ফিচারগুলো
- স্টারভেশন প্রিভেন্ট করে—প্রতিটি প্রসেস যেকোনো সময় CPU টাইম পায়
- ফেয়ার শিডিউলিং—সব প্রসেসের জন্য সমান টাইম কোয়ান্টাম
- ভালো রেসপন্স টাইম—ইন্টারঅ্যাক্টিভ এবং রিয়েল-টাইম সিস্টেমের জন্য উপযুক্ত
- কনটেক্সট সুইচিং ওভারহেড—ছোট কোয়ান্টাম সুইচিং কস্ট বাড়ায়
উদাহরণ ১: কোয়ান্টাম টাইম = ২
তিনটি প্রসেস বিবেচনা করুন ভিন্ন আরাইভাল এবং বার্স্ট টাইমের সাথে:
| প্রসেস | আরাইভাল টাইম | বার্স্ট টাইম |
|---|---|---|
| P1 | 0 | 4 |
| P2 | 1 | 3 |
| P3 | 2 | 7 |
গ্যান্ট চার্ট — রাউন্ড রবিন (কোয়ান্টাম = ২)
P1 P2 P3 P1 P2 P3
0 2 4 6 8 9 14
স্টেপ-বাই-স্টেপ এক্সিকিউশন
| টাইম | প্রসেস | রেডি কিউ | অ্যাকশন |
|---|---|---|---|
| 0-2 | P1 | P1 | P1 ২ ইউনিট রান করে, P2 t=1-এ আরাইভ |
| 2-4 | P2 | P2, P1 | P2 ২ ইউনিট রান করে, P3 t=2-এ আরাইভ |
| 4-6 | P3 | P3, P1 | P3 ২ ইউনিট রান করে |
| 6-8 | P1 | P1, P2, P3 | P1 বাকি ২ ইউনিট কমপ্লিট করে |
| 8-9 | P2 | P2, P3 | P2 বাকি ১ ইউনিট কমপ্লিট করে |
| 9-14 | P3 | P3 | P3 বাকি ৫ ইউনিট কমপ্লিট করে |
গড় টাইম ক্যালকুলেশন
| প্রসেস | আরাইভাল | বার্স্ট | কমপ্লিশন | টার্নঅরাউন্ড | ওয়েইটিং |
|---|---|---|---|---|---|
| P1 | 0 | 4 | 8 | 8 | 4 |
| P2 | 1 | 3 | 9 | 8 | 5 |
| P3 | 2 | 7 | 14 | 12 | 5 |
গড় টার্নঅরাউন্ড টাইম = (8 + 8 + 12) / 3 = 9.33 ইউনিট
গড় ওয়েইটিং টাইম = (4 + 5 + 5) / 3 = 4.67 ইউনিট
উদাহরণ ২: কোয়ান্টাম টাইম = ৪
বড় কোয়ান্টাম সাইজের সাথে:
| প্রসেস | আরাইভাল টাইম | বার্স্ট টাইম |
|---|---|---|
| P1 | 2 | 8 |
| P2 | 0 | 7 |
| P3 | 1 | 9 |
গ্যান্ট চার্ট — রাউন্ড রবিন (কোয়ান্টাম = ৪)
P2 P3 P1 P2 P3 P1
0 4 8 12 15 20 24
| প্রসেস | আরাইভাল | বার্স্ট | কমপ্লিশন | টার্নঅরাউন্ড | ওয়েইটিং |
|---|---|---|---|---|---|
| P1 | 2 | 8 | 24 | 22 | 14 |
| P2 | 0 | 7 | 15 | 15 | 8 |
| P3 | 1 | 9 | 20 | 19 | 10 |
গড় টার্নঅরাউন্ড টাইম = (22 + 15 + 19) / 3 = 18.67 ইউনিট
গড় ওয়েইটিং টাইম = (14 + 8 + 10) / 3 = 10.67 ইউনিট
উপসংহার
ভিন্ন আরাইভাল টাইমের সাথে রাউন্ড রবিন শিডিউলিং ফেয়ার CPU অ্যালোকেশন প্রদান করে ডাইনামিক প্রসেস আরাইভাল হ্যান্ডল করার সময়। কোয়ান্টাম সাইজ উল্লেখযোগ্যভাবে পারফরম্যান্সকে এফেক্ট করে—ছোট কোয়ান্টাম রেসপন্স টাইম উন্নত করে কিন্তু কনটেক্সট সুইচিং ওভারহেড বাড়ায়, যেখানে বড় কোয়ান্টাম ফেয়ারনেস কমাতে পারে কিন্তু থ্রুপুট উন্নত করে।