ভির্চুয়াল মেমোরি (Virtual Memory) এবং ডিমান্ড পেজিং (Demand Paging) হলো কম্পিউটার সিস্টেমের মেমোরি ব্যবস্থাপনার গুরুত্বপূর্ণ ধারণা, যা প্রোগ্রামগুলোর কার্যক্ষমতা এবং সিস্টেমের কার্যকারিতা বাড়ায়। এই দুটি ধারণা মেমোরির কার্যকর ব্যবস্থাপনা নিশ্চিত করে এবং মাল্টিপ্রোগ্রামিংয়ের জন্য সহায়ক হয়।
ভির্চুয়াল মেমোরি (Virtual Memory)
সংজ্ঞা: ভির্চুয়াল মেমোরি হলো একটি মেমোরি ম্যানেজমেন্ট কৌশল যা ব্যবহারকারীদেরকে একটি বৃহৎ লজিক্যাল মেমোরি স্পেস ব্যবহার করার অনুমতি দেয়, যা প্রকৃত ফিজিক্যাল মেমোরির চেয়ে বড় হতে পারে। এটি সিস্টেমের মেমোরি ব্যবহারের কার্যকারিতা বাড়ায় এবং মাল্টিটাস্কিং এবং বড় প্রোগ্রাম পরিচালনায় সহায়ক হয়।
বৈশিষ্ট্য:
- অ্যাড্রেস স্পেস: ভির্চুয়াল মেমোরি লজিক্যাল অ্যাড্রেস স্পেস ব্যবহার করে, যা ব্যবহারকারীর দৃষ্টিতে একটানা মেমোরি হিসেবে প্রদর্শিত হয়।
- পেজিং বা সেগমেন্টেশন: ভির্চুয়াল মেমোরি বাস্তবায়নে পেজিং এবং সেগমেন্টেশন ব্যবহার করা হয়।
- মেমোরি ওভারলোড প্রতিরোধ: প্রোগ্রামের বিভিন্ন অংশ প্রয়োজন অনুযায়ী ফিজিক্যাল মেমোরিতে লোড করা হয়, যা ফিজিক্যাল মেমোরির সীমাবদ্ধতা কাটিয়ে ওঠে।
সুবিধা:
- একাধিক প্রোগ্রাম সমান্তরালে চালানো যায়।
- বড় আকারের প্রোগ্রাম চলতে পারে যা ফিজিক্যাল মেমোরির তুলনায় বড়।
অসুবিধা:
- পেজ ফল্ট: ফিজিক্যাল মেমোরিতে প্রয়োজনীয় পেজ না থাকলে পেজ ফল্ট হতে পারে, যা সিস্টেমের পারফরম্যান্স কমিয়ে দিতে পারে।
- মেমোরি ম্যানেজমেন্ট ওভারহেড বেশি হতে পারে।
ডিমান্ড পেজিং (Demand Paging)
সংজ্ঞা: ডিমান্ড পেজিং হলো একটি পেজিং কৌশল, যেখানে প্রোগ্রামের পেজগুলো শুধুমাত্র প্রয়োজনের সময় ফিজিক্যাল মেমোরিতে লোড করা হয়। যখন কোনো প্রোগ্রাম চলতে শুরু করে, তখন তার সব পেজ মেমোরিতে লোড করা হয় না; বরং প্রয়োজনীয় পেজগুলোই মেমোরিতে আনা হয়।
কাজ করার পদ্ধতি:
- প্রথমে পেজ অনুপস্থিত: যখন প্রোগ্রামের কোনো অংশ প্রথমবার এক্সিকিউট হতে চায়, তখন তা যদি ফিজিক্যাল মেমোরিতে না থাকে, তবে একটি পেজ ফল্ট ঘটে।
- পেজ ফল্ট হ্যান্ডলার: পেজ ফল্ট ঘটলে অপারেটিং সিস্টেমের পেজ ফল্ট হ্যান্ডলার ফিজিক্যাল মেমোরিতে সেই পেজ লোড করে।
- ফ্রেম বরাদ্দ: মেমোরির খালি ফ্রেমে পেজটি লোড করা হয়।
- প্রোগ্রাম পুনরায় শুরু: পেজ লোডের পরে প্রোগ্রামটি পুনরায় শুরু হয় এবং চলতে থাকে।
সুবিধা:
- ফিজিক্যাল মেমোরির সঠিক ব্যবহার নিশ্চিত করে।
- কম প্রয়োজনীয় পেজগুলোকে মেমোরিতে না রাখায় মেমোরির অপচয় কম হয়।
- প্রোগ্রাম লোডিং দ্রুত হয়, কারণ পুরো প্রোগ্রাম একবারে মেমোরিতে লোড করার প্রয়োজন হয় না।
অসুবিধা:
- বারবার পেজ ফল্ট ঘটলে থ্রাশিং (Thrashing) হতে পারে, যা সিস্টেমের পারফরম্যান্স মারাত্মকভাবে কমিয়ে দেয়।
- পেজ ফল্ট হ্যান্ডলিংয়ের কারণে কিছুটা মেমোরি ম্যানেজমেন্ট ওভারহেড হয়।
পেজ ফল্ট (Page Fault) এবং থ্রাশিং (Thrashing)
পেজ ফল্ট হলো একটি ইভেন্ট যখন প্রয়োজনীয় পেজ ফিজিক্যাল মেমোরিতে পাওয়া যায় না এবং অপারেটিং সিস্টেমকে তা ডিস্ক থেকে এনে লোড করতে হয়। এটি স্বাভাবিক ঘটনা, তবে বেশি পেজ ফল্ট সিস্টেমের কার্যক্ষমতা কমিয়ে দিতে পারে।
থ্রাশিং হলো এমন একটি অবস্থা যেখানে সিস্টেমে পেজ ফল্টের হার এত বেশি হয়ে যায় যে CPU সময়ের অধিকাংশই পেজ লোড করার কাজে ব্যয় হয় এবং কার্যকর কাজ কম হয়। এর ফলে সিস্টেম ধীর হয়ে যায় বা সম্পূর্ণ অচল হতে পারে।
থ্রাশিং প্রতিরোধের উপায়:
- ওয়ার্কিং সেট মডেল ব্যবহার করে একটি প্রোগ্রামের কার্যকরী পেজ সংখ্যা নির্ধারণ করা।
- পেজ রিপ্লেসমেন্ট অ্যালগরিদম যেমন LRU (Least Recently Used) বা FIFO (First In First Out) ব্যবহার করা, যা সঠিক পেজ লোড নিশ্চিত করে।
উপসংহার
ভির্চুয়াল মেমোরি এবং ডিমান্ড পেজিং সিস্টেমের কার্যক্ষমতা উন্নত করতে এবং বড় আকারের প্রোগ্রাম পরিচালনায় সহায়তা করে। ভির্চুয়াল মেমোরি ব্যবহারকারীর দৃষ্টিতে বড় মেমোরি স্পেস প্রদান করে, যেখানে ডিমান্ড পেজিং শুধুমাত্র প্রয়োজনীয় পেজ লোড করে ফিজিক্যাল মেমোরির ব্যবহার অপটিমাইজ করে। পেজ ফল্ট হ্যান্ডলিং সঠিকভাবে না হলে থ্রাশিং-এর মতো সমস্যা হতে পারে, যা সঠিক পেজ রিপ্লেসমেন্ট কৌশল এবং ওয়ার্কিং সেট মডেল ব্যবহার করে সমাধান করা যায়।
Read more