একটি মনিটর এবং একটি সেমফোরের মধ্যে প্রধান পার্থক্যগুলি কী কী ?
একটি মনিটর এবং একটি সেমফোরের মধ্যে প্রধান পার্থক্যগুলি কী কী ?
উত্তর:
একটি মনিটর হ'ল একাধিক থ্রেড থেকে অ্যাক্সেস করার জন্য ডিজাইন করা অবজেক্ট। মনিটর অবজেক্টের সদস্য ক্রিয়াকলাপগুলি বা পদ্ধতিগুলি পারস্পরিক বর্জনকে কার্যকর করবে, সুতরাং কেবলমাত্র একটি থ্রেড নির্দিষ্ট সময়ে অবজেক্টটিতে কোনও ক্রিয়াকলাপ সম্পাদন করতে পারে। যদি একটি থ্রেড বর্তমানে অবজেক্টটির সদস্য ফাংশনটি চালাচ্ছে তবে অন্য যে কোনও থ্রেড যা object অবজেক্টের সদস্য ফাংশনটি কল করতে চেষ্টা করে সেটি প্রথম শেষ হওয়া পর্যন্ত অপেক্ষা করতে হবে।
একটি সেমফোর একটি নিম্ন-স্তরের অবজেক্ট। আপনি একটি মনিটর বাস্তবায়ন করতে ভাল একটি semaphore ব্যবহার করতে পারেন। একটি semaphore মূলত একটি পাল্টা। যখন কাউন্টারটি ইতিবাচক হয়, যদি কোনও থ্রেড সেমফোরটি অর্জন করার চেষ্টা করে তবে এটি অনুমোদিত হয় এবং কাউন্টারটি হ্রাস পায়। যখন কোনও থ্রেড হয়ে যায় তখন এটি সেমফোরটি প্রকাশ করে এবং কাউন্টারকে বাড়িয়ে দেয়।
যদি থ্রেডটি সেমফোরটি অর্জন করার চেষ্টা করে তবে যদি কাউন্টারটি ইতিমধ্যে শূন্য থাকে তবে অন্য থ্রেডটি সেমফোরটি প্রকাশ না হওয়া পর্যন্ত অপেক্ষা করতে হবে। কোনও থ্রেড যখন একটি সেমফোর প্রকাশ করে তখন একাধিক থ্রেড অপেক্ষা করে থাকে তবে তার মধ্যে একটি এটি পায়। যে থ্রেডটি সেমফোরটি প্রকাশ করে সেগুলির একই থ্রেড হওয়া উচিত নয় যা এটি অর্জন করেছিল।
একজন মনিটর পাবলিক টয়লেটের মতো। একসাথে কেবল একজন ব্যক্তি প্রবেশ করতে পারবেন। অন্য কারও যাতে আসতে না পারে, তাদের জিনিসগুলি করতে, এবং যখন তারা চলে যায় তখন এটিকে আনলক করার জন্য তারা দরজাটি লক করে দেয়।
একটি semaphore বাইক ভাড়া জায়গা মত। তাদের একটি নির্দিষ্ট সংখ্যক বাইক রয়েছে। যদি আপনি একটি বাইক চেষ্টা করে ভাড়া করেন এবং তাদের কাছে একটি বিনামূল্যে থাকে তবে আপনি এটি নিতে পারেন, অন্যথায় আপনাকে অবশ্যই অপেক্ষা করতে হবে। যখন কেউ তাদের বাইকটি ফিরিয়ে দেয় তখন অন্য কেউ এটি নিতে পারে। আপনার যদি বাইক থাকে তবে আপনি এটি অন্য কাউকে ফেরত দিতে দিতে পারেন --- বাইক ভাড়া রাখার জায়গাগুলি কে সে ফিরিয়ে দেয় সেদিকে খেয়াল নেই, যতক্ষণ না তারা তাদের বাইকটি ফিরে পায়।
ব্যাখ্যার পরে নিম্নলিখিতটি ব্যাখ্যা করে যে মনিটরের ওয়েট () এবং সিগন্যাল () সিমাফোরের পি এবং ভি থেকে কীভাবে আলাদা হয়।
অপেক্ষার () এবং সংকেত () একটি শর্ত ভেরিয়েবল উপর অপারেশন মনিটর মতই পি এবং ভী কাউন্টিং অপারেশন semaphores ।
একটি অপেক্ষার বিবৃতিটি কোনও প্রক্রিয়াটির কার্য সম্পাদনকে অবরুদ্ধ করতে পারে , যখন একটি সংকেত বিবৃতি অন্য প্রক্রিয়াটিকে অবরুদ্ধ করে দিতে পারে। তবে কিছু পার্থক্য রয়েছেতাদের মধ্যে. যখন কোনও প্রক্রিয়া একটি পি অপারেশন চালায়, এটি প্রয়োজনীয়ভাবে সেই প্রক্রিয়াটিকে অবরুদ্ধ করে না কারণ গণনা সেমফোর শূন্যের চেয়ে বেশি হতে পারে। বিপরীতে, যখন একটি অপেক্ষার বিবৃতি কার্যকর করা হয়, এটি সর্বদা প্রক্রিয়াটিকে অবরুদ্ধ করে। কোনও কাজ যখন একটি সেমফোরে ভি ভি অপারেশন চালায়, এটি হয় সেম্যাফোরে অপেক্ষা করা কোনও কাজকে অবরোধ করে বা আনলক করার কোনও কাজ না থাকলে সেম্যাফোর্ডের কাউন্টারকে বাড়িয়ে তোলে। অন্যদিকে, কোনও প্রক্রিয়া যদি আনব্লক করার জন্য অন্য কোনও প্রক্রিয়া না থাকে তখন কোনও সংকেত বিবৃতি কার্যকর করে, শর্ত ভেরিয়েবলের কোনও প্রভাব নেই। Semaphores এবং মনিটরের মধ্যে আরেকটি পার্থক্য হ'ল কোনও ভি অপারেশন দ্বারা জাগ্রত ব্যবহারকারীরা দেরি না করে মৃত্যুদণ্ড পুনরায় শুরু করতে পারেন। বিপরীতে, সিগন্যাল অপারেশন দ্বারা ব্যবহারকারীদের জাগ্রত করা কেবল তখনই মনিটরটি আনলক করা থাকে arted এছাড়াও,
লিঙ্ক: আরও পড়ার জন্য এখানে । আশা করি এটা সাহায্য করবে.
Semaphore একাধিক থ্রেড (একটি সেট সংখ্যা পর্যন্ত) একটি ভাগ করা অবজেক্ট অ্যাক্সেসের অনুমতি দেয়। মনিটররা একটি ভাগ করা অবজেক্টে পারস্পরিক একচেটিয়া অ্যাক্সেসের অনুমতি দেয়।
java.util.ArrayList
এটি কি একাধিক বস্তুর কোনও বস্তু বা ধারক? ঠিক আছে, এটি একই সাথে উভয়ই। তাহলে কি সেমফোর এটির অ্যাক্সেস নিয়ন্ত্রণ করতে উপযুক্ত? আমি বলব: না।
যখন একটি সমুদ্রের অঞ্চলটি একটি সমালোচনামূলক অঞ্চল রক্ষার জন্য ব্যবহৃত হয়, তখন সেমফোর এবং ডেটা সুরক্ষিত হওয়ার মধ্যে কোনও সরাসরি সম্পর্ক নেই। এই কারণেই কেন কোডটির চারপাশে সেমফোরগুলি বিচ্ছুরিত হতে পারে এবং অপেক্ষারত বা অবহিত করা কল করা কেন ভুলে যাওয়া সহজ , যার ফলস্বরূপ যথাক্রমে পারস্পরিক বর্জনীয়তা লঙ্ঘন করা বা স্থায়ীভাবে সংস্থানটি লক করা যেতে পারে।
বিপরীতে, এই খারাপ জিনিসগুলির একটি খুব ভাল একটি মনিটরের সাথে ঘটতে পারে। একটি মনিটর সরাসরি ডেটাতে ক্লান্ত হয়ে পড়ে (এটি ডেটা encapsulates) এবং, কারণ মনিটরের ক্রিয়াকলাপগুলি পারমাণবিক ক্রিয়াকলাপ, এন্ট্রি প্রোটোকলকে কল না করে ডেটা অ্যাক্সেস করতে পারে এমন কোড লেখা অসম্ভব। মনিটরের কাজ শেষ হয়ে গেলে প্রস্থান প্রোটোকলটিকে স্বয়ংক্রিয়ভাবে ডাকা হয় called
এগিয়ে যাওয়ার আগে কন্ডিশন ভেরিয়েবল আকারে কন্ডিশন সিঙ্ক্রোনাইজেশনের জন্য একটি মনিটরের একটি অন্তর্নির্মিত প্রক্রিয়া থাকে। যদি শর্তটি সন্তুষ্ট না হয় তবে শর্তটি পরিবর্তনের বিষয়ে অবহিত না হওয়া পর্যন্ত প্রক্রিয়াটি অপেক্ষা করতে হবে। যখন কোনও প্রক্রিয়া শর্তের সিঙ্ক্রোনাইজেশনের জন্য অপেক্ষা করে, মনিটরের প্রয়োগটি পারস্পরিক বর্জনীয় ইস্যুটির যত্ন নেয় এবং অন্য প্রক্রিয়াটিকে মনিটরে অ্যাক্সেস পেতে দেয়।
মুক্ত বিশ্ববিদ্যালয় এম 362 ইউনিট 3 "ইন্টারেক্টিং প্রক্রিয়া" কোর্স উপাদান থেকে নেওয়া।
সেমফোর:
সাম্প্রতিক সিস্টেমে কিছু ভাগ করা সংস্থানগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করতে একটি কাউন্টার বা পতাকা ব্যবহার করা হচ্ছে সেমফোরের ব্যবহার বোঝায় ।
উদাহরণ:
পতাকাগুলি কেবলমাত্র রিসোর্সের বর্তমান অবস্থা, কোনও গণনা বা উত্সের অপেক্ষায় বা চলমান অবজেক্টগুলির বিষয়ে অন্য কোনও তথ্য প্রকাশ করে।
মনিটর:
একটি মনিটর অবজেক্টে আগ্রহী থ্রেডগুলির সাথে যোগাযোগ করে, অ্যাক্সেস অর্জন করতে বা কিছু শর্তটি সত্য হওয়ার জন্য অপেক্ষা করতে বলে কোনও অবজেক্টে অ্যাক্সেসকে সিঙ্ক্রোনাইজ করে।
উদাহরণ: