পদক্ষেপে স্পিন লক এবং সেমফোরের মধ্যে মৌলিক পার্থক্যগুলি কী কী?
পদক্ষেপে স্পিন লক এবং সেমফোরের মধ্যে মৌলিক পার্থক্যগুলি কী কী?
উত্তর:
উভয়ই একটি সীমিত সংস্থান পরিচালনা করে। আমি প্রথমে বাইনারি সেম্যাফোর (মিটেক্স) এবং স্পিন লকের মধ্যে পার্থক্য বর্ণনা করব।
স্পিন লকগুলি একটি ব্যস্ত সময় অপেক্ষা করে - অর্থাত এটি লুপটি চালিয়ে যায়:
while (try_acquire_resource ());
...
release();
এটি খুব লাইটওয়েট লকিং / আনলকিং সম্পাদন করে তবে যদি লকিং থ্রেডটি অন্যের দ্বারা প্রিম্প্ট হয়ে যায় যা একই পুনরায় স্থানটি অ্যাক্সেস করার চেষ্টা করবে তবে দ্বিতীয়টি কেবল সিপিইউ কোয়ান্টায় চালিত না হওয়া অবধি রিসোর্সটি খালাস করার চেষ্টা করবে।
অন্যদিকে মিটেক্স আরও বেশি আচরণ করে:
if (!try_lock()) {
add_to_waiting_queue ();
wait();
}
...
process *p = get_next_process_from_waiting_queue ();
p->wakeUp ();
সুতরাং থ্রেড যদি অবরুদ্ধ সম্পদ অর্জনের চেষ্টা করে তবে এটি তার জন্য উপলব্ধ না হওয়া অবধি স্থগিত থাকবে। লক করা / আনলক করা অনেক বেশি ভারী তবে অপেক্ষারটি 'ফ্রি' এবং 'ফেয়ার'।
সেম্যাফোর এমন একটি লক যা একাধিকবার (ইনিশিয়েশন থেকে জানা যায়) ব্যবহারের অনুমতি দেওয়া হয় - উদাহরণস্বরূপ 3 টি থ্রেড একসাথে সংস্থানটি ধরে রাখার অনুমতি দেওয়া হয় তবে আরও কিছু হয় না। এটি উদাহরণস্বরূপ উত্পাদক / গ্রাহক সমস্যা বা সাধারণভাবে সারিতে ব্যবহৃত হয়:
P(resources_sem)
resource = resources.pop()
...
resources.push(resources)
V(resources_sem)
স্পিনলকগুলি একটি বাধাপ্রাপ্ত প্রসঙ্গে ব্যবহৃত হয়, যেখানে ঘুমানোর অনুমতি নেই। তারা শক্ত লুপে পোল করে, সংস্থান প্রাপ্ত না হওয়া পর্যন্ত অন্য কিছুই করে না। বেশিরভাগ আইএসআরগুলিতে ব্যবহৃত হয় এবং আরও সুরক্ষিত এবং দক্ষ।
Semaphores একটি প্রক্রিয়া প্রসঙ্গে ব্যবহার করা যেতে পারে, যেখানে ঘুম ঠিক আছে।
এখানে একটি উত্তরে আমার দ্রুত শট দেওয়া হয়েছে: একটি স্পিন লক এবং একটি বাইনারি সেম্যাফোর (যা একটি উত্স পরিচালনা করে যা কেবলমাত্র একটি জিনিস দ্বারা ব্যবহৃত হতে পারে) প্রায় অভিন্ন। তাদের পার্থক্য হ'ল স্পিন লকগুলি চালনার জন্য কোড পরিচালনা করে যখন বাইনারি সেমফোরগুলি একক একক একক সংস্থান (যেমন সিপিইউ সময়, প্রদর্শন আউটপুট) পরিচালনা করে
একটি নিয়মিত সেমফোর যাইহোক, এমন একটি উত্স অ্যাক্সেসের মাধ্যমে কয়েকটি থ্রেড পরিচালনা করতে সক্ষম যা বেশ কয়েকটিতে বিভক্ত হতে পারে তবে সীমাবদ্ধ (যেমন মেমরি, নেটওয়ার্ক ব্যান্ডউইথ)
সংক্ষেপে, একটি স্পিন-লক সম্ভবত কোনও সেমফোরটি জিজ্ঞাসা করে যদি এটি কোনও সংস্থান ব্যবহার করতে পারে তবে জিজ্ঞাসা করতে পারে। (কল্পনা করুন যে কোনও শিশু বাথরুমটি ব্যবহার করতে হবে এবং অন্য কারও জন্য অপেক্ষা করছে))
উত্স: সিস্টেমস প্রোগ্রামিং, অপারেটিং সিস্টেম এবং উইকিপিডিয়া পরিচিতি