সেমফোর বনাম মনিটর - পার্থক্য কী?


233

একটি মনিটর এবং একটি সেমফোরের মধ্যে প্রধান পার্থক্যগুলি কী কী ?


8
আপনি মনিটরটিকে বাইনারি সেমফোর হিসাবে ভাবতে পারেন।
ম্যাক্সিম এগারুশকিন


1
দয়া করে এই albahari.com/threading/part2.aspx এর মাধ্যমে যান । আমি এই নিবন্ধটি পড়েছি, থ্রেডিংয়ের উপরে আমি যা পড়েছি তার মধ্যে সেরা
শান্তনু গুপ্ত

5
আমি ঠিক মনে করি না, ম্যাক্সিম। একটি সেমফোর হ'ল "নিম্ন-স্তরের" কাঠামো, যদি আমার ভুল না হয় তবে অন্যদিকে মনিটর হ'ল একটি সম্পূর্ণ বিকাশযুক্ত বস্তু। আমার মনে আছে যে আমরা কলেজটিতে আমার অপারেটিং সিস্টেমের ক্লাসে সংক্ষিপ্তভাবে মনিটরে গিয়েছিলাম, তবে আমি মনে করি না যে কোনও মনিটর কীভাবে একটি মুটেক্সের থেকে পৃথক হয়েছিলেন, সেটিকে বাদ দিয়ে বিষয়টিকে কেন্দ্রিক করে তোলা হয়েছে। আমার মনে আছে মনিটর ব্যবহার করে একটি সমস্যা করা যেতে পারে, তবে আমরা সি ভাষার সীমাবদ্ধতার কারণে ক্লাসে এই একই পদ্ধতিটি ব্যবহার করতে পারি নি।
ব্যবহারকারী 919860

1
সেম্যাফোর এবং মনিটর হ'ল অত্যন্ত পার্থক্যযুক্ত, তবুও ক্ষমতার সমান, এই অর্থে যে আপনি একে অপরের কাছ থেকে বাস্তবায়ন করতে পারেন। আপনি হোয়ারের মূল কাগজটি পড়তে পারেন যা এখান
থানাহ ডি কে

উত্তর:


529

একটি মনিটর হ'ল একাধিক থ্রেড থেকে অ্যাক্সেস করার জন্য ডিজাইন করা অবজেক্ট। মনিটর অবজেক্টের সদস্য ক্রিয়াকলাপগুলি বা পদ্ধতিগুলি পারস্পরিক বর্জনকে কার্যকর করবে, সুতরাং কেবলমাত্র একটি থ্রেড নির্দিষ্ট সময়ে অবজেক্টটিতে কোনও ক্রিয়াকলাপ সম্পাদন করতে পারে। যদি একটি থ্রেড বর্তমানে অবজেক্টটির সদস্য ফাংশনটি চালাচ্ছে তবে অন্য যে কোনও থ্রেড যা object অবজেক্টের সদস্য ফাংশনটি কল করতে চেষ্টা করে সেটি প্রথম শেষ হওয়া পর্যন্ত অপেক্ষা করতে হবে।

একটি সেমফোর একটি নিম্ন-স্তরের অবজেক্ট। আপনি একটি মনিটর বাস্তবায়ন করতে ভাল একটি semaphore ব্যবহার করতে পারেন। একটি semaphore মূলত একটি পাল্টা। যখন কাউন্টারটি ইতিবাচক হয়, যদি কোনও থ্রেড সেমফোরটি অর্জন করার চেষ্টা করে তবে এটি অনুমোদিত হয় এবং কাউন্টারটি হ্রাস পায়। যখন কোনও থ্রেড হয়ে যায় তখন এটি সেমফোরটি প্রকাশ করে এবং কাউন্টারকে বাড়িয়ে দেয়।

যদি থ্রেডটি সেমফোরটি অর্জন করার চেষ্টা করে তবে যদি কাউন্টারটি ইতিমধ্যে শূন্য থাকে তবে অন্য থ্রেডটি সেমফোরটি প্রকাশ না হওয়া পর্যন্ত অপেক্ষা করতে হবে। কোনও থ্রেড যখন একটি সেমফোর প্রকাশ করে তখন একাধিক থ্রেড অপেক্ষা করে থাকে তবে তার মধ্যে একটি এটি পায়। যে থ্রেডটি সেমফোরটি প্রকাশ করে সেগুলির একই থ্রেড হওয়া উচিত নয় যা এটি অর্জন করেছিল।

একজন মনিটর পাবলিক টয়লেটের মতো। একসাথে কেবল একজন ব্যক্তি প্রবেশ করতে পারবেন। অন্য কারও যাতে আসতে না পারে, তাদের জিনিসগুলি করতে, এবং যখন তারা চলে যায় তখন এটিকে আনলক করার জন্য তারা দরজাটি লক করে দেয়।

একটি semaphore বাইক ভাড়া জায়গা মত। তাদের একটি নির্দিষ্ট সংখ্যক বাইক রয়েছে। যদি আপনি একটি বাইক চেষ্টা করে ভাড়া করেন এবং তাদের কাছে একটি বিনামূল্যে থাকে তবে আপনি এটি নিতে পারেন, অন্যথায় আপনাকে অবশ্যই অপেক্ষা করতে হবে। যখন কেউ তাদের বাইকটি ফিরিয়ে দেয় তখন অন্য কেউ এটি নিতে পারে। আপনার যদি বাইক থাকে তবে আপনি এটি অন্য কাউকে ফেরত দিতে দিতে পারেন --- বাইক ভাড়া রাখার জায়গাগুলি কে সে ফিরিয়ে দেয় সেদিকে খেয়াল নেই, যতক্ষণ না তারা তাদের বাইকটি ফিরে পায়।


162
+1 সর্বজনীন বাথরুম এবং বাইক ভাড়া দেওয়ার জায়গার সাথে দুর্দান্ত উপমা। দুজনের মধ্যে পার্থক্য এখন আর ভুলব না forget
দ্রৌপদ পঞ্চাল

4
আপনার উত্তরটি স্ট্যাকওভারফ্লো . com/a/7336799/632951 এর বিরোধিতা করছে বলে মনে হচ্ছে .. সুতরাং কে সঠিক?
পেসারিয়ার

6
@ পেসার: আমি :-) কেবলমাত্র বৈপরীত্য হ'ল উচ্চ-স্তরের / নিম্ন স্তরের জিনিস। আপনি semaphores থেকে একটি মনিটর তৈরি করতে পারেন , এটি খুব পরিষ্কার পরিচ্ছন্ন নয়, অবশ্যই কারণ একটি মনিটর একটি semaphore চেয়ে উচ্চ স্তরের কাঠামো। একটি semaphore অপেক্ষা সঙ্গে একটি পাল্টা। আমি "দ্য লিটল বুক অফ সেম্যাফোর্স" পড়ার পরামর্শ দিচ্ছি Greenteapress.com/semaphores
অ্যান্টনি উইলিয়ামস

3
@ অ্যান্থনিউইলিয়ামস: আমি সম্ভবত এই ধারণাটিকে সন্দেহ করি যে আপনি কেবলমাত্র সেমোফোরগুলি থেকে মনিটর তৈরি করতে পারবেন। অন্য উপায়টিও সম্ভব এবং এর কারণেই আমরা অধিকভাবে বলতে পারি না যে মনিটরটি সেমোফোরের চেয়ে উচ্চ স্তরের সত্তা।
কবিশ দ্বিবেদী

5
হ্যাঁ, আপনি একটি মনিটর থেকে একটি সেমফোর তৈরি করতে পারেন। আপনি সর্বদা উচ্চ স্তরের থেকে নিম্ন স্তরের অবজেক্ট তৈরি করতে পারেন। উচ্চ / নিম্ন স্তরের স্টাফগুলি ক্ষমতা এবং অপারেশনের সুযোগ সম্পর্কে, অন্যটি তৈরিতে ব্যবহৃত হতে পারে এমন নয়।
অ্যান্টনি উইলিয়ামস

11

ব্যাখ্যার পরে নিম্নলিখিতটি ব্যাখ্যা করে যে মনিটরের ওয়েট () এবং সিগন্যাল () সিমাফোরের পি এবং ভি থেকে কীভাবে আলাদা হয়।

অপেক্ষার () এবং সংকেত () একটি শর্ত ভেরিয়েবল উপর অপারেশন মনিটর মতই পি এবং ভী কাউন্টিং অপারেশন semaphores

একটি অপেক্ষার বিবৃতিটি কোনও প্রক্রিয়াটির কার্য সম্পাদনকে অবরুদ্ধ করতে পারে , যখন একটি সংকেত বিবৃতি অন্য প্রক্রিয়াটিকে অবরুদ্ধ করে দিতে পারে। তবে কিছু পার্থক্য রয়েছেতাদের মধ্যে. যখন কোনও প্রক্রিয়া একটি পি অপারেশন চালায়, এটি প্রয়োজনীয়ভাবে সেই প্রক্রিয়াটিকে অবরুদ্ধ করে না কারণ গণনা সেমফোর শূন্যের চেয়ে বেশি হতে পারে। বিপরীতে, যখন একটি অপেক্ষার বিবৃতি কার্যকর করা হয়, এটি সর্বদা প্রক্রিয়াটিকে অবরুদ্ধ করে। কোনও কাজ যখন একটি সেমফোরে ভি ভি অপারেশন চালায়, এটি হয় সেম্যাফোরে অপেক্ষা করা কোনও কাজকে অবরোধ করে বা আনলক করার কোনও কাজ না থাকলে সেম্যাফোর্ডের কাউন্টারকে বাড়িয়ে তোলে। অন্যদিকে, কোনও প্রক্রিয়া যদি আনব্লক করার জন্য অন্য কোনও প্রক্রিয়া না থাকে তখন কোনও সংকেত বিবৃতি কার্যকর করে, শর্ত ভেরিয়েবলের কোনও প্রভাব নেই। Semaphores এবং মনিটরের মধ্যে আরেকটি পার্থক্য হ'ল কোনও ভি অপারেশন দ্বারা জাগ্রত ব্যবহারকারীরা দেরি না করে মৃত্যুদণ্ড পুনরায় শুরু করতে পারেন। বিপরীতে, সিগন্যাল অপারেশন দ্বারা ব্যবহারকারীদের জাগ্রত করা কেবল তখনই মনিটরটি আনলক করা থাকে arted এছাড়াও,

লিঙ্ক: আরও পড়ার জন্য এখানে । আশা করি এটা সাহায্য করবে.


6

এক লাইনের উত্তর:

মনিটর: মনিটরে এক সময় কেবলমাত্র একটি থ্রেড চালায় controls (একক থ্রেড কার্যকর করতে লক অর্জন করা দরকার)

সেমফোর: একটি লক যা একটি ভাগ করা সংস্থান রক্ষা করে। (সংস্থান অ্যাক্সেস করতে লক অর্জন করা প্রয়োজন)


5

Semaphore একাধিক থ্রেড (একটি সেট সংখ্যা পর্যন্ত) একটি ভাগ করা অবজেক্ট অ্যাক্সেসের অনুমতি দেয়। মনিটররা একটি ভাগ করা অবজেক্টে পারস্পরিক একচেটিয়া অ্যাক্সেসের অনুমতি দেয়।

মনিটর

সেমফোর্


10
তবে, তাহলে কোনও মনিটর কীভাবে মিটেক্স থেকে আলাদা হবে? মিউচুয়াল এক্সক্লুশন লক আ আ সেমফোরের মতো একই জিনিসটি করে তবে কেবল একবারে একটি থ্রেডকে সমালোচনামূলক অঞ্চলে অ্যাক্সেসের অনুমতি দেয়।
ব্যবহারকারী 919860

2
হ্যাঁ মনিটর এবং মিউটেক্সের মধ্যে পার্থক্য কী?
পেসারিয়ার

2
লক্ষণীয় যে সেমফোরসগুলি একটি ভাগ করা অবজেক্টের অ্যাক্সেসকে নিয়ন্ত্রণ করে না, বরং একটি ভাগ করা সংস্থান (এতে একাধিক অবজেক্ট থাকবে)।
xbonez

@ এক্সবোনজ: আমরা যদি দেখি: java.util.ArrayListএটি কি একাধিক বস্তুর কোনও বস্তু বা ধারক? ঠিক আছে, এটি একই সাথে উভয়ই। তাহলে কি সেমফোর এটির অ্যাক্সেস নিয়ন্ত্রণ করতে উপযুক্ত? আমি বলব: না।
dma_k

স্বীকৃত উত্তরে নিজেই উল্লেখ করা হয়েছে যে মনিটর মিউচুয়াল বর্জন বাস্তবায়ন করছে। দয়া করে দেখুন "মনিটর অবজেক্টের সদস্য ফাংশন বা পদ্ধতিগুলি পারস্পরিক বর্জনকে কার্যকর করবে, সুতরাং কেবলমাত্র একটি থ্রেড একটি নির্দিষ্ট সময়ে অবজেক্টের উপর কোনও ক্রিয়া সম্পাদন করতে পারে"
আচুরা

2

যখন একটি সমুদ্রের অঞ্চলটি একটি সমালোচনামূলক অঞ্চল রক্ষার জন্য ব্যবহৃত হয়, তখন সেমফোর এবং ডেটা সুরক্ষিত হওয়ার মধ্যে কোনও সরাসরি সম্পর্ক নেই। এই কারণেই কেন কোডটির চারপাশে সেমফোরগুলি বিচ্ছুরিত হতে পারে এবং অপেক্ষারত বা অবহিত করা কল করা কেন ভুলে যাওয়া সহজ , যার ফলস্বরূপ যথাক্রমে পারস্পরিক বর্জনীয়তা লঙ্ঘন করা বা স্থায়ীভাবে সংস্থানটি লক করা যেতে পারে।

বিপরীতে, এই খারাপ জিনিসগুলির একটি খুব ভাল একটি মনিটরের সাথে ঘটতে পারে। একটি মনিটর সরাসরি ডেটাতে ক্লান্ত হয়ে পড়ে (এটি ডেটা encapsulates) এবং, কারণ মনিটরের ক্রিয়াকলাপগুলি পারমাণবিক ক্রিয়াকলাপ, এন্ট্রি প্রোটোকলকে কল না করে ডেটা অ্যাক্সেস করতে পারে এমন কোড লেখা অসম্ভব। মনিটরের কাজ শেষ হয়ে গেলে প্রস্থান প্রোটোকলটিকে স্বয়ংক্রিয়ভাবে ডাকা হয় called

এগিয়ে যাওয়ার আগে কন্ডিশন ভেরিয়েবল আকারে কন্ডিশন সিঙ্ক্রোনাইজেশনের জন্য একটি মনিটরের একটি অন্তর্নির্মিত প্রক্রিয়া থাকে। যদি শর্তটি সন্তুষ্ট না হয় তবে শর্তটি পরিবর্তনের বিষয়ে অবহিত না হওয়া পর্যন্ত প্রক্রিয়াটি অপেক্ষা করতে হবে। যখন কোনও প্রক্রিয়া শর্তের সিঙ্ক্রোনাইজেশনের জন্য অপেক্ষা করে, মনিটরের প্রয়োগটি পারস্পরিক বর্জনীয় ইস্যুটির যত্ন নেয় এবং অন্য প্রক্রিয়াটিকে মনিটরে অ্যাক্সেস পেতে দেয়।

মুক্ত বিশ্ববিদ্যালয় এম 362 ইউনিট 3 "ইন্টারেক্টিং প্রক্রিয়া" কোর্স উপাদান থেকে নেওয়া।


এটি বাদে, যদিও সেমফোরগুলি বেশিরভাগ ভাষায় উপলব্ধ হয়ে থাকে এবং পাঠ্যপুস্তকে সীমিত পারমাণবিক অপারেটরগুলির সাথে এক ধরণের ভেরিয়েবল হিসাবে উপস্থাপন করা হয়, তবে সেমফোর একটি মনিটরের একটি বিশেষ ক্ষেত্রে - কারণ এটি সীমিত পারমাণবিক অপারেটরগুলির সাথে এক ধরণের পরিবর্তনশীল, কারণ এটি একটি মনিটর কি। উপরের যুক্তিগুলি যে সেমোফোরগুলি "নিম্ন স্তরের" তা বিশিষ্ট।
ফিলিপ্সি

2

সেমফোর:

সাম্প্রতিক সিস্টেমে কিছু ভাগ করা সংস্থানগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করতে একটি কাউন্টার বা পতাকা ব্যবহার করা হচ্ছে সেমফোরের ব্যবহার বোঝায় ।

উদাহরণ:

  1. কোনও থিয়েটার / বাস / ট্রেন / ফান রাইড / ক্লাসরুমের 50 টি আসন (ভাগ করা রিসোর্স) অর্জনের জন্য কেবল 50 জন যাত্রীকে অনুমতি দেওয়ার এক পাল্টা। এবং নতুন যাত্রীর অনুমতি দেওয়া কেবলমাত্র যদি কেউ আসন খালি করে।
  2. যে কোনও বাথরুমের মুক্ত / অধিকৃত স্থিতি নির্দেশ করে এমন একটি বাইনারি পতাকা।
  3. ট্র্যাফিক লাইট পতাকাগুলির ভাল উদাহরণ। তারা রাস্তায় যানবাহন (ভাগ করা সংস্থান) নিয়ন্ত্রণ করে প্রবাহ নিয়ন্ত্রণ করে

পতাকাগুলি কেবলমাত্র রিসোর্সের বর্তমান অবস্থা, কোনও গণনা বা উত্সের অপেক্ষায় বা চলমান অবজেক্টগুলির বিষয়ে অন্য কোনও তথ্য প্রকাশ করে।

মনিটর:

একটি মনিটর অবজেক্টে আগ্রহী থ্রেডগুলির সাথে যোগাযোগ করে, অ্যাক্সেস অর্জন করতে বা কিছু শর্তটি সত্য হওয়ার জন্য অপেক্ষা করতে বলে কোনও অবজেক্টে অ্যাক্সেসকে সিঙ্ক্রোনাইজ করে।

উদাহরণ:

  1. একজন বাবা তার মেয়ের জন্য একজন মনিটরের কাজ করতে পারেন, যা তাকে একবারে কেবলমাত্র একজনকে ডেট করতে দেয়।
  2. ক্লাসে কেবলমাত্র একটি শিশুকে কথা বলতে দেওয়ার জন্য লাঠি ব্যবহার করছেন একজন স্কুল শিক্ষক।
  3. সর্বশেষে প্রযুক্তিগত এক, অ্যাকাউন্ট অ্যাকাউন্টে লেনদেন (থ্রেডের মাধ্যমে) সততা বজায় রাখতে সিঙ্ক্রোনাইজ করা।

আমি মনে করি যে রাস্তা ক্রসের ট্র্যাফিক লাইটটিও বাইনারি পতাকা: একটি রাস্তায় বা অর্থোথোনাল রাস্তায় গাড়ি চালাতে পারে (পারস্পরিক একচেটিয়া) সুতরাং উদাহরণ (3) (2) এর মতোই। এছাড়াও আমি মনে করি যে সেগুলি উদাহরণগুলি হ'ল সেমোফোরেসের (তুচ্ছ ঘটনা) জন্য কর্নার কেস, যা মনিটর ব্যবহার করে প্রয়োগ করা যেতে পারে। উইকিপিডিয়ায় আরও সাধারণ উদাহরণ রয়েছে ।
dma_k
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.