একটি অচলাবস্থা দেখা দেয় যখন দুই বা ততোধিক প্রসেসকে তাদের এক্সিকিউশন সম্পূর্ণ করার জন্য কিছু রিসোর্সের প্রয়োজন হয় যা অন্য প্রক্রিয়ার দ্বারা অনুষ্ঠিত হয়।
উপরের চিত্রে, প্রসেস 1 এর রিসোর্স 1 আছে এবং রিসোর্স 2 এর প্রয়োজন। একইভাবে প্রসেস 2 এর রিসোর্স 2 আছে এবং রিসোর্স 1 এর প্রয়োজন। এই প্রসেসগুলির প্রত্যেকটি সম্পূর্ণ করার জন্য অন্যের রিসোর্স প্রয়োজন কিন্তু তাদের কেউই তাদের রিসোর্স ত্যাগ করতে ইচ্ছুক নয়। সুতরাং, প্রক্রিয়া 1 এবং প্রক্রিয়া 2 অচলাবস্থায় রয়েছে৷
কফম্যান শর্তাবলী
একটি অচলাবস্থা তখনই ঘটবে যদি চারটি কফম্যান শর্ত সত্য হয়। এই শর্তগুলি অগত্যা পারস্পরিক একচেটিয়া নয়। তারা হল:
পারস্পরিক বর্জন
এমন একটি সংস্থান থাকা উচিত যা একবারে শুধুমাত্র একটি প্রক্রিয়ার মাধ্যমে রাখা যেতে পারে। নীচের চিত্রে, রিসোর্স R1-এর একটি একক দৃষ্টান্ত রয়েছে এবং এটি শুধুমাত্র P1 প্রক্রিয়া দ্বারা ধারণ করা হয়েছে৷
ধরুন এবং অপেক্ষা করুন
একটি প্রক্রিয়া একাধিক সংস্থান ধারণ করতে পারে এবং এখনও অন্যান্য প্রক্রিয়াগুলি থেকে আরও সংস্থানগুলির অনুরোধ করতে পারে যা সেগুলিকে ধরে রেখেছে। নিচের চিত্রে, প্রসেস P1 রিসোর্স R1 এবং R2 ধারণ করে এবং রিসোর্স R3 কে অনুরোধ করছে যা প্রসেস P2 দ্বারা ধারণ করা হয়।
কোন প্রিম্পশন নেই
একটি সম্পদ জোর করে একটি প্রক্রিয়া থেকে preempted করা যাবে না. একটি প্রক্রিয়া শুধুমাত্র স্বেচ্ছায় সম্পদ প্রকাশ করতে পারে। নীচের চিত্রে, প্রসেস P1 প্রসেস P2 থেকে রিসোর্স R3 কে অগ্রিম করতে পারে না। এটি শুধুমাত্র তখনই মুক্তি পাবে যখন P2 এটির সম্পাদন সম্পূর্ণ হওয়ার পরে স্বেচ্ছায় এটি পরিত্যাগ করবে৷
বৃত্তাকার অপেক্ষা
একটি প্রক্রিয়া দ্বিতীয় প্রক্রিয়ার দ্বারা ধারণকৃত সম্পদের জন্য অপেক্ষা করছে, যা তৃতীয় প্রক্রিয়া দ্বারা ধারণকৃত সম্পদের জন্য অপেক্ষা করছে এবং শেষ প্রক্রিয়াটি প্রথম প্রক্রিয়ার দ্বারা ধারণকৃত একটি সম্পদের জন্য অপেক্ষা করা পর্যন্ত। এটি একটি বৃত্তাকার চেইন গঠন করে। উদাহরণস্বরূপ:প্রসেস P1 রিসোর্স R1 বরাদ্দ করা হয়েছে এবং এটি রিসোর্স R2 এর জন্য অনুরোধ করছে। একইভাবে, প্রক্রিয়া P2 রিসোর্স R2 বরাদ্দ করা হয়েছে এবং এটি রিসোর্স R1 এর জন্য অনুরোধ করছে। এটি একটি বৃত্তাকার অপেক্ষা লুপ গঠন করে৷
একটি প্রক্রিয়া দ্বিতীয় প্রক্রিয়ার দ্বারা ধারণকৃত সম্পদের জন্য অপেক্ষা করছে, যা তৃতীয় প্রক্রিয়া দ্বারা ধারণকৃত সম্পদের জন্য অপেক্ষা করছে এবং শেষ প্রক্রিয়াটি প্রথম প্রক্রিয়ার দ্বারা ধারণকৃত একটি সম্পদের জন্য অপেক্ষা করা পর্যন্ত। এটি একটি বৃত্তাকার চেইন গঠন করে। উদাহরণস্বরূপ:প্রসেস P1 রিসোর্স R1 বরাদ্দ করা হয়েছে এবং এটি রিসোর্স R2 এর জন্য অনুরোধ করছে। একইভাবে, প্রক্রিয়া P2 রিসোর্স R2 বরাদ্দ করা হয়েছে এবং এটি রিসোর্স R1 এর জন্য অনুরোধ করছে। এটি একটি বৃত্তাকার অপেক্ষা লুপ গঠন করে৷
ডেডলক সনাক্তকরণ
রিসোর্স সিডিউলার একটি অচলাবস্থা সনাক্ত করতে পারে কারণ এটি বিভিন্ন প্রক্রিয়ার জন্য বরাদ্দ করা সমস্ত সংস্থানগুলির ট্র্যাক রাখে। একটি অচলাবস্থা সনাক্ত হওয়ার পরে, নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করে এটি সমাধান করা যেতে পারে:
- অচলাবস্থার সাথে জড়িত সমস্ত প্রক্রিয়া বন্ধ হয়ে গেছে। এটি একটি ভাল পদ্ধতি নয় কারণ প্রক্রিয়াগুলির দ্বারা তৈরি সমস্ত অগ্রগতি ধ্বংস হয়ে গেছে৷ ৷
- অচলাবস্থার সমাধান না হওয়া পর্যন্ত কিছু প্রসেস থেকে রিসোর্স প্রিমম্পড করা যেতে পারে এবং অন্যদের দেওয়া যেতে পারে।
ডেডলক প্রতিরোধ
একটি অচলাবস্থা ঘটার আগে এটি প্রতিরোধ করা অপরিহার্য। সুতরাং, সিস্টেমটি প্রতিটি লেনদেন কার্যকর করার আগে কঠোরভাবে পরীক্ষা করে তা নিশ্চিত করে যে এটি অচলাবস্থার দিকে নিয়ে যায় না। যদি এমন একটি সুযোগ থাকে যে কোনো লেনদেন অচলাবস্থার দিকে নিয়ে যেতে পারে, তবে এটি চালানোর অনুমতি দেওয়া হয় না।
কিছু অচলাবস্থা প্রতিরোধ স্কিম রয়েছে যা টাইমস্ট্যাম্প ব্যবহার করে যাতে অচলাবস্থা না ঘটে তা নিশ্চিত করতে। এগুলো হল -
- অপেক্ষা করুন - ডাই স্কিম
অপেক্ষায় - ডাই স্কিমে, যদি একটি লেনদেন T1 লেনদেন T2 দ্বারা ধারণ করা সম্পদের জন্য অনুরোধ করে, তাহলে নিম্নলিখিত দুটি সম্ভাবনার মধ্যে একটি ঘটতে পারে:
- TS(T1)
TS(T1)> TS(T2) - যদি T1 টি 2 এর চেয়ে ছোট হয় অর্থাৎ T2 এর পরে সিস্টেমে T1 এসেছিল, তাহলে T1 মারা হবে। এটি পরে একই টাইমস্ট্যাম্প দিয়ে পুনরায় চালু করা হয়।
- TS(T1)
- ক্ষত - অপেক্ষার পরিকল্পনা
ক্ষতস্থানে - অপেক্ষার স্কিম, যদি একটি লেনদেন T1 একটি সম্পদের জন্য অনুরোধ করে যা লেনদেন T2 দ্বারা অনুষ্ঠিত হয়, নিম্নলিখিত দুটি সম্ভাবনার মধ্যে একটি ঘটতে পারে:
- TS(T1)
TS(T1)> TS(T2) - যদি T1 টি 2 এর চেয়ে ছোট হয় অর্থাৎ T2 এর পরে সিস্টেমে T1 আসে, তাহলে এটিকে সেই সংস্থানটির জন্য অপেক্ষা করার অনুমতি দেওয়া হয় যা T2 এর কার্য সম্পাদন সম্পন্ন করার পরে বিনামূল্যে হবে৷
- TS(T1)
অচলাবস্থা এড়ানো
অচলাবস্থা সৃষ্টি হওয়ার পরে ব্যবস্থা নেওয়ার চেয়ে অচলাবস্থা এড়ানো ভাল। গ্রাফের জন্য অপেক্ষা অচলাবস্থা এড়ানোর জন্য ব্যবহার করা যেতে পারে। যদিও এটি শুধুমাত্র ছোট ডাটাবেসের জন্য উপযোগী কারণ এটি বড় ডেটাবেসে বেশ জটিল হতে পারে।
গ্রাফের জন্য অপেক্ষা করুন
গ্রাফের জন্য অপেক্ষা সম্পদ এবং লেনদেনের মধ্যে সম্পর্ক দেখায়। যদি একটি লেনদেন একটি সংস্থান অনুরোধ করে বা এটি ইতিমধ্যে একটি সম্পদ ধারণ করে, এটি গ্রাফের জন্য অপেক্ষার প্রান্ত হিসাবে দৃশ্যমান হয়৷ যদি গ্রাফের অপেক্ষায় একটি চক্র থাকে, তাহলে সিস্টেমে একটি অচলাবস্থা থাকতে পারে, অন্যথায় নয়৷
ডেডলক উপেক্ষা করুন - অস্ট্রিচ অ্যালগরিদম
উটপাখি অ্যালগরিদম মানে হল যে অচলাবস্থাকে উপেক্ষা করা হয় এবং এটা অনুমান করা হয় যে এটি কখনই ঘটবে না। এটি করা হয়েছে কারণ কিছু সিস্টেমে অচলাবস্থা পরিচালনার খরচ এটিকে উপেক্ষা করার চেয়ে অনেক বেশি কারণ এটি খুব কমই ঘটে। সুতরাং, এটা সহজভাবে অনুমান করা হয় যে অচলাবস্থা কখনই ঘটবে না এবং এটি কোনো সুযোগে ঘটলে সিস্টেমটি পুনরায় বুট করা হয়।