Deadlock এবং তার প্রতিরোধ কৌশল

Synchronization Techniques (সিঙ্ক্রোনাইজেশন টেকনিকস) - প্যারালাল কম্পিউটার আর্কিটেকচার (Parallel Computer Architecture) - Computer Science

442

Deadlock এবং তার প্রতিরোধ কৌশল

Deadlock একটি অবস্থা যেখানে একাধিক প্রসেস বা থ্রেড একে অপরের জন্য অপেক্ষা করে, এবং কোনোটিই কাজ শেষ করতে পারে না। Deadlock সাধারণত মাল্টি-প্রসেসিং এবং মাল্টি-থ্রেডেড সিস্টেমে ঘটে, যেখানে একাধিক প্রসেস একই রিসোর্স অ্যাক্সেস করতে চায়। যখন একটি প্রসেস তার কাজ সম্পন্ন করতে একটি রিসোর্সের জন্য অপেক্ষা করতে থাকে, এবং সেই রিসোর্সটি অন্য একটি প্রসেস দখল করে আছে যা নিজেও অপেক্ষা করছে, তখন একটি Deadlock ঘটে। এটি সিস্টেমের কর্মক্ষমতা হ্রাস করে এবং সম্পদের অপচয় ঘটায়।


Deadlock এর শর্তসমূহ

Deadlock ঘটার জন্য চারটি শর্ত পূরণ হতে হয়, যা Coffman Conditions নামে পরিচিত:

  1. Mutual Exclusion (মিউচুয়াল এক্সক্লুসন):
    • প্রতিটি রিসোর্স একসাথে একাধিক প্রসেস দ্বারা ব্যবহৃত হতে পারে না। অর্থাৎ একটি সময়ে একটি প্রসেসই একটি নির্দিষ্ট রিসোর্স ব্যবহার করতে পারে।
  2. Hold and Wait (হোল্ড এবং ওয়েট):
    • একটি প্রসেস কিছু রিসোর্স দখল করে আছে এবং অন্য রিসোর্সের জন্য অপেক্ষা করছে। এতে যে রিসোর্সগুলি প্রসেসটি দখল করে আছে তা অন্য প্রসেসের জন্য উপলব্ধ নয়।
  3. No Preemption (নো প্রিঅ্যাম্পশন):
    • কোন প্রসেস তার দখলকৃত রিসোর্সকে জোরপূর্বক মুক্ত করতে পারে না; এটি তখনই রিলিজ হবে যখন প্রসেসটি নিজেই রিসোর্স ছেড়ে দেয়।
  4. Circular Wait (সার্কুলার ওয়েট):
    • একাধিক প্রসেস একটি চক্রে একে অপরের জন্য অপেক্ষা করে। উদাহরণস্বরূপ, প্রসেস 1 প্রসেস 2 এর জন্য অপেক্ষা করছে, প্রসেস 2 প্রসেস 3 এর জন্য, এবং প্রসেস 3 প্রসেস 1 এর জন্য অপেক্ষা করছে।

Deadlock প্রতিরোধ কৌশল

Deadlock প্রতিরোধের জন্য বিভিন্ন কৌশল ব্যবহার করা যায়, যা মূলত উপরের চারটি শর্ত পূরণের থেকে সিস্টেমকে বিরত রাখে। নিচে Deadlock প্রতিরোধের প্রধান কৌশলগুলি আলোচনা করা হলো:

  1. Mutual Exclusion প্রতিরোধ:
    • কিছু রিসোর্সকে শেয়ারড রিসোর্স হিসেবে ব্যবহার করা যায় যাতে একাধিক প্রসেস একসাথে রিসোর্সটি অ্যাক্সেস করতে পারে। উদাহরণস্বরূপ, Read-Only রিসোর্স শেয়ার করা যায়।
    • তবে এটি সব ক্ষেত্রে সম্ভব নয়, যেমন প্রিন্টার বা হার্ডওয়্যার ডিভাইসের ক্ষেত্রে।
  2. Hold and Wait প্রতিরোধ:
    • All-or-Nothing Allocation: এই পদ্ধতিতে, একটি প্রসেস শুরু করার আগে তার প্রয়োজনীয় সমস্ত রিসোর্স অর্জন করতে হয়। যদি সমস্ত রিসোর্স পাওয়া যায়, তবে প্রসেস কাজ শুরু করে। অন্যথায়, এটি সমস্ত রিসোর্স ছেড়ে দেয় এবং পরে আবার চেষ্টা করে।
    • Request All Resources At Once: একটি প্রসেস তার প্রয়োজনীয় সমস্ত রিসোর্স একবারে দাবি করে। এতে Hold and Wait অবস্থা এড়ানো যায়।
    • Increase Resource Availability: বিভিন্ন প্রসেসের জন্য প্রয়োজনীয় অতিরিক্ত রিসোর্স যোগ করা, যাতে একই রিসোর্সের জন্য অপেক্ষা না করতে হয়।
  3. No Preemption প্রতিরোধ:
    • Preemptive Resource Allocation: একটি প্রসেস যদি কিছু রিসোর্স দখল করে আছে এবং অন্য রিসোর্সের জন্য অপেক্ষা করছে, তাহলে তার দখলকৃত রিসোর্সকে মুক্ত করে দেওয়া হয়। পরে যখন প্রয়োজনীয় রিসোর্স পাওয়া যায়, তখন প্রসেসটি আবার কাজ শুরু করে।
    • Priority-Based Preemption: উচ্চ প্রাধান্যসম্পন্ন প্রসেসের জন্য নিম্ন প্রাধান্যসম্পন্ন প্রসেসের রিসোর্সগুলো পুনরায় বরাদ্দ করা যায়।
  4. Circular Wait প্রতিরোধ:
    • Resource Ordering: প্রতিটি রিসোর্সের জন্য একটি নির্দিষ্ট অর্ডার বা ক্রম নির্ধারণ করা হয়, এবং প্রসেসগুলো সেই ক্রম অনুসারে রিসোর্স দাবি করতে পারে। এটি Circular Wait প্রতিরোধ করতে কার্যকর।
    • উদাহরণস্বরূপ, সমস্ত রিসোর্সকে একটি ক্রমে সাজিয়ে রাখা এবং সেই ক্রম অনুসারে রিসোর্স বরাদ্দ করা Deadlock প্রতিরোধ করতে সহায়ক।

Deadlock প্রতিরোধের উদাহরণ

  1. ব্যাংকিং অ্যালগরিদম (Banker's Algorithm):
    • Banker’s Algorithm প্রাথমিকভাবে একটি Deadlock prevention algorithm হিসেবে ব্যবহৃত হয়, যা প্রসেসগুলোকে রিসোর্স বরাদ্দ করার আগে অনুমোদন চেক করে। যদি এটি নিশ্চিত করতে পারে যে রিসোর্স বরাদ্দের পরে Deadlock হবে না, তাহলে শুধুমাত্র সেই রিসোর্স বরাদ্দ করা হয়।
  2. Timeout Mechanism:
    • যদি কোনো প্রসেস নির্দিষ্ট সময়ের মধ্যে তার প্রয়োজনীয় রিসোর্স না পায়, তবে তা টাইমআউট হয়ে যায় এবং আবার রিসোর্স চেয়ে চেষ্টা করে।
  3. Wait-Die এবং Wound-Wait Scheme:
    • এই স্কিমগুলোতে প্রসেসগুলির বয়স বা প্রাধান্য (Priority) অনুযায়ী অপেক্ষা বা প্রি-এম্পশন করা হয়।
    • Wait-Die: কম বয়সী প্রসেস যদি কোন বয়স্ক প্রসেসের রিসোর্সের জন্য অপেক্ষা করে, তাহলে সেটি অপেক্ষা করে (Wait), অন্যথায় তা মরে যায় (Die)।
    • Wound-Wait: উল্টোভাবে, বয়স্ক প্রসেস যদি কম বয়সী প্রসেসের রিসোর্স চায়, তাহলে কম বয়সী প্রসেসকে মেরে ফেলে।

Deadlock Avoidance কৌশল

Deadlock Avoidance Deadlock প্রতিরোধের একটি ভিন্ন উপায়, যা ভবিষ্যতে Deadlock হবে কিনা তা পূর্বাভাস দেয় এবং Deadlock এড়াতে চেষ্টা করে। এর জন্য বিভিন্ন অ্যালগরিদম রয়েছে:

  1. Banker's Algorithm:
    • Banker’s Algorithm ব্যবহার করে Deadlock হওয়ার সম্ভাবনা পরীক্ষা করা হয়। এই অ্যালগরিদম প্রতিটি রিসোর্স বরাদ্দের সময় Deadlock এর সম্ভাব্যতা যাচাই করে এবং সম্ভাবনা থাকলে বরাদ্দ বন্ধ করে।
  2. Resource Allocation Graph (RAG):
    • Resource Allocation Graph একটি গ্রাফ ভিত্তিক পদ্ধতি, যেখানে Deadlock সম্ভাবনা চিহ্নিত করা হয়। যদি গ্রাফে একটি সার্কুলার ওয়েট থাকে, তাহলে Deadlock হওয়ার সম্ভাবনা থাকে। গ্রাফ বিশ্লেষণ করে Deadlock এড়ানো যায়।

সারসংক্ষেপ

Deadlock একটি অবস্থা যেখানে একাধিক প্রসেস একে অপরের জন্য অপেক্ষা করে, যা তাদের সম্পূর্ণভাবে থামিয়ে দেয়। Deadlock প্রতিরোধের কৌশলগুলির মাধ্যমে এটি এড়ানো যায়। Mutual Exclusion, Hold and Wait, No Preemption, এবং Circular Wait এর মতো শর্তগুলো পূরণ হওয়া রোধ করার মাধ্যমে Deadlock প্রতিরোধ করা সম্ভব। প্রতিরোধ কৌশলের মধ্যে Resource Ordering, Preemptive Allocation, এবং Banker’s Algorithm ইত্যাদি Deadlock প্রতিরোধে কার্যকর ভূমিকা পালন করে।

Content added By
Promotion

Are you sure to start over?

Loading...