ভার্চুয়াল মেমোরি (Virtual Memory) কি?
আজকে ভার্চুয়াল মেমোরি নিয়ে আলোচনা করবো ইনশাআল্লাহ। অপারেটিং সিস্টেমে একটা খুব গুরুত্বপূর্ণ বিষয় হচ্ছে মেমোরি ম্যানেজমেন্ট।
আমরা হয়তো কমবেশি সবাই জানি একটা প্রোগ্রাম যখন আমরা ডবল ক্লিক করি উইন্ডোজে তখন সেই প্রোগ্রামটা র্যামে (যাকে মেইন মেমোরি বা প্রাইমারি মেমোরিও বলে) লোড হয়।
এমনকি আপনি কম্পিউটার স্টার্ট দেয়ার পর উইন্ডোজ যে আস্তে আস্তে চালু হয় সেটাও কিন্তু আপনার র্যামেই লোড হতে হয়।
কারণ আসলে কম্পিউটারের যে সিপিউ সেটা যাই এক্সিকিউট করুক না কেন সেটা সে র্যাম থেকেই করে। আপনার ১ টেরাবাইট, ২ টেরাবাইট হার্ডডিস্ক নিয়ে তার বিন্দুমাত্রও কোনো মাথাব্যথা বা ইন্টারেস্ট নাই।
তার সংসার শুধু আপনার ঐ ৪ জিবি, ৮ জিবি কিংবা ১২ জিবি সাইজের (আপনার বা আপনার বাবার পকেটের উপর ডিপেন্ড করে) ছোট্ট ঐ র্যামটাকে নিয়েই।
এখন যেটা বলছিলাম যে এই যে আপনি ধরেন বেশ বড় বড় সাইজের সফটওয়্যার চালান আপনার পিসিতে (হাই গ্রাফিক্সের গেমস, গুগল ক্রোম, অটোক্যাড, মুভি ইত্যাদি ইত্যাদি) একসাথে, আপনার ছোট্ট র্যামটাতে এগুলো আঁটে কিভাবে?
আঁটার তো কথা না। কিন্তু এদিকে আপনার প্রোগ্রামগুলো চালাতেও কিন্তু সিপিউর কোনো সমস্যা হয় না। এটা
আসলে সম্ভব হয় ভার্চুয়াল মেমোরি -র কারণে।
ভার্চুয়াল মেমোরি (
Virtual Memory) - বেসিক আইডিয়া হলো প্রত্যেকটা সফটওয়্যারের (Running) র্যামে সম্পূর্ণ নিজস্ব একটা এরিয়া (যাকে Address space বলে) থাকবে; যেগুলোকে আবার ছোট ছোট চাঙকে (Chunk) ভাগ করা হবে।
এই ছোট ছোট ভাগগুলোকে অপারেটিং সিস্টেমের পরিভাষায় এক একটা Page বলা হয়। আপনার যে র্যাম আছে, সেই র্যাম এর ক্ষুদ্রতম ইউনিট হলো বাইট (Byte)। ১০২৪ বাইটে হয় ১ কিলোবাইট, ১০২৪ কিলোবাইটে হয় ১ মেগাবাইট এরকম।
এগুলো আমরা মোটামুটি সবাই জানি। তো এই যে বাইটগুলা হয় এগুলি নাম্বারিং করা হয়; যাকে অ্যাড্রেস বলা হয়। এখন এই পেইজগুলা র্যামে ম্যাপ করা হয়; কিন্তু একটা প্রোগ্রামের সবগুলা পেইজ আপনার একসাথে র্যামে থাকতে হবে এমন কোনো কথা নেই।
কারণ তাহলে যেটা বললাম আপনি একসাথে কয়েকটা প্রোগ্রাম আপনার পিসিতে চালালে আপনার র্যাম ওভারলোডেড হয়ে যাবে, আর এটার প্রয়োজনও নেই। তাহলে ব্যাপারটা কি দাঁড়ালো?
ধরেন আপনি
Microsoft Office PowerPoint চালাইলেন। এখন এই প্রোগ্রামটা তো র্যামে লোড হবে। এখন এই প্রোগ্রামটার
Address space কতগুলা page এ ভাগ করা হবে।
অর্থাৎ কতগুলা page নিয়ে PowerPoint র্যামে থাকবে। কিন্তু এখানে PowerPoint এর মূল প্রোগ্রামের সবগুলো পেইজ থাকবে না।
আপনার সিপিউ যখন PowerPoint এর নির্দিষ্ট একটা ফাংশন নিয়ে কাজ করবে তখন যদি তা র্যামে থাকে তাহলে তো হলোই; না হলে আপনার Windows কে Alert করা হবে যেন সে কাঙ্ক্ষিত page টা আপনার হার্ডডিস্ক থেকে নিয়ে আসে আর তারপর আবার ঐ ফাংশনটা নিয়ে কাজ শুরু করে।
ভার্চুয়াল মেমোরি (Virtual Memory) কিভাবে কাজ করে?
আচ্ছা প্রোগ্রাম লিখে কিভাবে? কোডিং করে, তাই তো?