Memory Management
মেমোরি ম্যানেজমেন্ট অপারেটিং সিস্টেমের অন্যতম গুরুত্বপূর্ণ কাজ। এটি নিশ্চিত করে যে প্রতিটি প্রসেস প্রয়োজনীয় মেমোরি পায় এবং একে অপরের মেমোরিতে হস্তক্ষেপ না করে।
1. Physical & Virtual Memory
Physical Memory (RAM)
কম্পিউটারে যে আসল হার্ডওয়্যার মেমোরি থাকে (যেমন ৮GB RAM)।
Virtual Memory
প্রতিটি প্রসেসকে মনে হয় যে তার নিজস্ব বিশাল মেমোরি স্পেস আছে। আসলে OS হার্ড ডিস্কের একটি অংশ (Swap Space) ব্যবহার করে ভার্চুয়াল মেমোরি তৈরি করে।
Real-life Example: একটি লাইব্রেরিতে হাজার হাজার বই আছে কিন্তু আপনার ডেস্কে মাত্র ৫টা বই রাখার জায়গা। আপনি যে বইটা পড়ছেন না সেটা শেল্ফে রেখে দিয়ে নতুন বই আনছেন। এখানে ডেস্ক = RAM, শেল্ফ = Disk।
2. Paging & Segmentation
Paging
মেমোরিকে ছোট ছোট Fixed-size ব্লকে ভাগ করা হয় যাকে Page বলে (সাধারণত ৪KB)। Physical মেমোরির ব্লককে বলে Frame।
সুবিধা: External Fragmentation নেই।
Segmentation
মেমোরিকে Variable-size লজিক্যাল ইউনিটে ভাগ করা (যেমন Code Segment, Data Segment, Stack Segment)।
সুবিধা: লজিক্যালি অর্গানাইজড। অসুবিধা: External Fragmentation হতে পারে।
3. Page Replacement Algorithms
যখন RAM পূর্ণ হয়ে যায় এবং নতুন পেজ লোড করতে হয়, তখন কোন পুরনো পেজটি ডিস্কে পাঠানো হবে তা ঠিক করার জন্য এই অ্যালগরিদম ব্যবহার করা হয়।
FIFO (First-In-First-Out)
যে পেজটি সবার আগে এসেছিল, সেটি আগে বের করা হয়।
- সহজ কিন্তু সবসময় অপ্টিমাল নয়।
LRU (Least Recently Used)
যে পেজটি সবচেয়ে বেশি সময় ধরে ব্যবহার হয়নি, সেটি বের করা হয়।
- ভালো পারফরম্যান্স কিন্তু ইমপ্লিমেন্ট করা জটিল।
Optimal
ভবিষ্যতে যে পেজটি সবচেয়ে দেরিতে ব্যবহার হবে, সেটি বের করা হয়।
- থিওরিটিক্যালি সেরা কিন্তু বাস্তবে সম্ভব নয় (ভবিষ্যৎ জানা যায় না)।
4. Thrashing
যখন সিস্টেম বেশিরভাগ সময় পেজ সোয়াপিং-এ ব্যয় করে এবং আসল কাজ খুব কম হয়, তখন তাকে Thrashing বলে।
কারণ: অনেক বেশি প্রসেস চলছে এবং RAM কম।
সমাধান:
- প্রসেসের সংখ্যা কমানো।
- RAM বাড়ানো।
- Working Set Model ব্যবহার করা।
5. Memory Allocation Strategies
যখন একটি প্রসেসের জন্য মেমোরি বরাদ্দ করতে হয়, তখন কোন ফ্রি ব্লকটি ব্যবহার করা হবে?
First Fit
প্রথম যে ফ্রি ব্লক পাওয়া যায় যেখানে প্রসেস ফিট হবে, সেটি ব্যবহার করা।
- দ্রুত কিন্তু ফ্র্যাগমেন্টেশন হতে পারে।
Best Fit
সবচেয়ে ছোট ফ্রি ব্লক যেখানে প্রসেস ফিট হবে।
- কম ওয়েস্ট কিন্তু খুঁজতে সময় লাগে।
Worst Fit
সবচেয়ে বড় ফ্রি ব্লক ব্যবহার করা।
- বড় ফ্র্যাগমেন্ট রাখে পরবর্তী বড় প্রসেসের জন্য।
6. MMU (Memory Management Unit)
MMU হলো একটি হার্ডওয়্যার কম্পোনেন্ট যা ভার্চুয়াল অ্যাড্রেসকে ফিজিক্যাল অ্যাড্রেসে কনভার্ট করে।
কাজ:
- Address Translation: Virtual → Physical mapping.
- Protection: একটি প্রসেস অন্য প্রসেসের মেমোরি এক্সেস করতে পারবে না।
- Caching: TLB (Translation Lookaside Buffer) ব্যবহার করে দ্রুত ট্রান্সলেশন।