মূল কনটেন্টে যান
অনুশীলন (৯)
Operating SystemsProcess & CPU Scheduling

CPU Scheduling অ্যালগরিদম ও Deadlock প্রতিকার

পড়তে প্রায় ১৩ মিনিটসংস্করণ ১সর্বশেষ আপডেট: ২১ অক্টোবর, ২০২৬৯টি অনুশীলন প্রশ্ন

সংক্ষেপে মনে রাখুন

দ্রুত রিভিশনের জন্য মূল কথা

মূল কথা
  • Turnaround Time, Waiting Time ও Response Time-এর সূত্র দিয়ে অংক সমাধান করা
  • FCFS, SJF, Round Robin ও Priority Scheduling-এর সুবিধা ও অসুবিধা তুলনা করা
  • Deadlock ঘটার ৪টি আবশ্যিক শর্ত এবং প্রতিরোধের উপায় ব্যাখ্যা করা
সূত্র ও নিয়ম
Turnaround Time (TAT) = Completion Time (CT) - Arrival Time (AT). Waiting Time (WT) = Turnaround Time (TAT) - Burst Time (BT). Response Time (RT) = First CPU Allocation Time - Arrival Time (AT).

শিডিউলিং অংক দ্রুত নির্ভুল করার সিকোয়েন্স: ১. প্রথমে Gantt Chart আঁকুন এবং প্রতিটি প্রসেসের সমাপ্তি সময় (CT)…

যেখানে ভুল হয়

Waiting Time বের করার সময় অনেকেই Arrival Time বিয়োগ করতে ভুলে যায়। সরাসরি `CT - BT` দিলে ভুল হবে! সঠিক হলো `WT = (CT - AT) - BT`। প্রসেস যদি দেরিতে আসে (AT > 0), তবে তা অবশ্যই বিবেচনা করতে হবে।

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-এর মতো আচরণ করে।
code
উদাহরণ: ৩টি প্রসেস 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.67

Deadlock ও Coffman-এর ৪টি আবশ্যিক শর্ত

একসাথে নিচের ৪টি শর্ত পূরণ হলে তবেই কেবল Deadlock হতে পারে:

  1. Mutual Exclusion: রিসোর্স একসাথে কেবল একটি প্রসেসই ব্যবহার করতে পারবে (non-shareable)।
  2. Hold and Wait: প্রসেস অন্তত একটি রিসোর্স ধরে রেখে অন্য রিসোর্সের জন্য অপেক্ষা করবে।
  3. No Preemption: প্রসেস স্বেচ্ছায় না ছাড়া পর্যন্ত রিসোর্স জোর করে ছিনিয়ে নেওয়া যাবে না।
  4. Circular Wait: প্রসেসগুলোর মধ্যে বৃত্তাকার অপেক্ষার চেইন তৈরি হবে (P0 → P1 → ... → P0)।

Deadlock মোকাবিলার উপায়

  • Prevention: উপরের ৪টি শর্তের যেকোনো একটি ভেঙে দেওয়া (যেমন রিসোর্সগুলোর ক্রমিক নম্বর নির্ধারণ করে Circular Wait বন্ধ করা)।
  • Avoidance: Banker's Algorithm ব্যবহার করে সিস্টেম Safe State-এ থাকবে কি না তা আগে থেকেই পরীক্ষা করে রিসোর্স বরাদ্দ দেওয়া।

পরের ধাপ

এই টপিকে ৫টি প্রশ্ন অনুশীলন করুন

পড়া মনে আছে কি না, ছোট একটি সেটে দেখে নিন। প্রতিটি উত্তরের সাথে ব্যাখ্যা থাকবে, আর ভুল প্রশ্নগুলো রিভিশনের তালিকায় যাবে