Process & CPU Scheduling
প্রসেস ও CPU শিডিউলিং
CPU Scheduling অ্যালগরিদম ও Deadlock প্রতিকার
পড়তে প্রায় ১৩ মিনিট
এই পাঠ শেষে আপনি পারবেন
- Turnaround Time, Waiting Time ও Response Time-এর সূত্র দিয়ে অংক সমাধান করা
- FCFS, SJF, Round Robin ও Priority Scheduling-এর সুবিধা ও অসুবিধা তুলনা করা
- Deadlock ঘটার ৪টি আবশ্যিক শর্ত এবং প্রতিরোধের উপায় ব্যাখ্যা করা
CPU Scheduling-এর মৌলিক সূত্র
যেকোনো শিডিউলিং অংকে এই দুটি সূত্র সরাসরি ব্যবহৃত হয়:
- Turnaround Time (TAT) =
Completion Time (CT) − Arrival Time (AT) - Waiting Time (WT) =
Turnaround Time (TAT) − Burst Time (BT)
প্রধান Scheduling অ্যালগরিদমসমূহ
- FCFS (First-Come, First-Served): Non-preemptive। বড় প্রসেস আগে এলে ছোট প্রসেসগুলো আটকে থাকে, যাকে Convoy Effect বলে।
- SJF (Shortest Job First) / SRTF (Preemptive SJF): সর্বনিম্ন গড় Waiting Time দেয় (Optimal)। কিন্তু বড় প্রসেসগুলোর Starvation হতে পারে।
- Priority Scheduling: অগ্রাধিকার অনুযায়ী চলে। Starvation সমস্যা হয়, যার সমাধান হলো Aging (অপেক্ষমাণ প্রসেসের অগ্রাধিকার ধীরে ধীরে বাড়ানো)।
- Round Robin (RR): Preemptive; নির্দিষ্ট Time Quantum (q) পরপর প্রসেস সুইচ হয়। Time-sharing সিস্টেমের জন্য আদর্শ (No starvation)।
qখুব ছোট হলে Context Switch overhead বেড়ে যায়, আর খুব বড় হলে FCFS-এর মতো আচরণ করে।
উদাহরণ: ৩টি প্রসেস P1(BT=5), P2(BT=2), P3(BT=4) সবাই AT=0 সময়ে এলে SJF ক্রম হবে:
P2 (0..2) -> P3 (2..6) -> P1 (6..11)
Waiting Time: P2 = 0, P3 = 2, P1 = 6; Average WT = (0 + 2 + 6) / 3 = 2.67Deadlock ও Coffman-এর ৪টি আবশ্যিক শর্ত
একসাথে নিচের ৪টি শর্ত পূরণ হলে তবেই কেবল Deadlock হতে পারে:
- Mutual Exclusion: রিসোর্স একসাথে কেবল একটি প্রসেসই ব্যবহার করতে পারবে (non-shareable)।
- Hold and Wait: প্রসেস অন্তত একটি রিসোর্স ধরে রেখে অন্য রিসোর্সের জন্য অপেক্ষা করবে।
- No Preemption: প্রসেস স্বেচ্ছায় না ছাড়া পর্যন্ত রিসোর্স জোর করে ছিনিয়ে নেওয়া যাবে না।
- Circular Wait: প্রসেসগুলোর মধ্যে বৃত্তাকার অপেক্ষার চেইন তৈরি হবে (
P0 → P1 → ... → P0)।
Deadlock মোকাবিলার উপায়
- Prevention: উপরের ৪টি শর্তের যেকোনো একটি ভেঙে দেওয়া (যেমন রিসোর্সগুলোর ক্রমিক নম্বর নির্ধারণ করে Circular Wait বন্ধ করা)।
- Avoidance: Banker's Algorithm ব্যবহার করে সিস্টেম Safe State-এ থাকবে কি না তা আগে থেকেই পরীক্ষা করে রিসোর্স বরাদ্দ দেওয়া।
সংস্করণ ১ · সর্বশেষ হালনাগাদ ২১ অক্টোবর, ২০২৬