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

মাইগ্রেশন অ্যালগরিদম
নাম অনুযায়ী, মাইগ্রেশন অ্যালগরিদম ডেটা এলিমেন্টের মাইগ্রেশন করে। প্রতিটি রিকোয়েস্ট সার্ভ করার জন্য একটি সেন্ট্রাল সার্ভার ব্যবহার না করে, সিস্টেম tarafından রিকোয়েস্ট করা ডেটা যেই ব্লকে থাকে সেটি সেই সিস্টেমে মাইগ্রেট করা হয় подальше অ্যাক্সেস ও প্রসেসিং-এর জন্য। এটি অনুরোধে ডেটা মাইগ্রেট করে।
এই অ্যালগরিদম ভালো যদি কোনো সিস্টেম একই ব্লকে ডেটা একাধিকবার অ্যাক্সেস করে এবং ভার্চুয়াল মেমরি কনসেপ্ট ইন্টিগ্রেট করার ক্ষমতা থাকে, তবে কিছু শর্টকামিং রয়েছে যেগুলো সমাধান করতে হবে।
শুধু একটি নোড একবারে শেয়ারড ডেটা এলিমেন্ট অ্যাক্সেস করতে পারে এবং পুরো ব্লকটি ঐ নোডে মাইগ্রেট হয়। এছাড়া, এই অ্যালগরিদম নোডের রিকোয়েস্টে ডেটা আইটেম মাইগ্রেশনের কারণে থ্র্যাশিং-এর জন্য অধিক প্রবণ।

রিড রেপ্লিকেশন অ্যালগরিদম
রিড রেপ্লিকেশন অ্যালগরিদমে, অ্যাক্সেস করা ডেটা ব্লকটি রেপ্লিকেট করা হয় এবং সব কপিতে শুধু পড়ার অনুমতি দেয়া হয়। যদি রাইট অপারেশন করতে হয়, তবে সব রিড অ্যাক্সেস হোল্ডে রাখা হয় যতক্ষণ না সব কপি আপডেট হয়।
কনকারেন্ট অ্যাক্সেস অনুমোদিত रहने caras/System পারফরম্যান্স উন্নত হয়। কিন্তু রাইট অপারেশন ব্যয়বহুল কারণ কনকারেন্সি মেইনটেইন করার জন্য শেয়ার করা সব ব্লক আপডেট করতে হয়। ডেটা এলিমেন্টের সব কপি ট্র্যাক করতে হয় কনসিস্টেন্সি মেইনটেইন করতে।

ফুল রেপ্লিকেশন অ্যালগরিদম
রিড রেপ্লিকেশন অ্যালগরিদমের একটি এক্সটেনশন যা নোডগুলোক একই সময় শেয়ার করা ব্লকে পড়া এবং লেখা উভয় অপারেশন করার অনুমতি দেয়। কিন্তু এই নোড অ্যাক্সেস কনসিস্টেন্সি মেইনটেইন করার জন্য নিয়ন্ত্রিত।
সব নোডের কনকারেন্ট অ্যাক্সেসে ডেটার কনসিস্টেন্সি মেইনটেইন করতে সিকোয়েন্স মেইনটেইন করা হয় এবং ডেটায় যেকোনো মডিফিকেশন করার পর একটি মাল্টিকাস্ট দিয়ে সব ডেটা কপিতে পরিবর্তনগুলো রিফ্লেক্ট করা হয়।
