ক্যাশ রিপ্লেসমেন্ট পলিসি হলো একটি নীতিমালা যা নির্ধারণ করে যে, যখন ক্যাশ মেমরি পূর্ণ হয়ে যায় এবং নতুন ডেটা সংরক্ষণের প্রয়োজন হয়, তখন কোন পুরানো ডেটা মুছে ফেলা হবে। সাধারণত, কিছু জনপ্রিয় ক্যাশ রিপ্লেসমেন্ট পলিসি হলো LRU (Least Recently Used) এবং FIFO (First In, First Out)। চলুন এদের সম্পর্কে বিস্তারিত আলোচনা করি।
১. FIFO (First In, First Out)
FIFO পলিসি অনুযায়ী, ক্যাশে সবচেয়ে পুরানো (প্রথমে যুক্ত করা হয়েছে) ডেটা মুছে ফেলা হয়। এটি একটি সহজ পদ্ধতি এবং FIFO কিউ ডেটা স্ট্রাকচার ব্যবহার করে বাস্তবায়িত হয়।
বৈশিষ্ট্য:
- সাধারণতা: নতুন ডেটা যোগ করা হয় এবং পুরানো ডেটা মুছে ফেলা হয়।
- সীমাবদ্ধতা: সর্বদা সবচেয়ে পুরানো উপাদানকে মুছে দেয়, তা না দেখে যে এটি ব্যবহৃত হয়েছে কিনা।
উদাহরণ:
from collections import deque
class FIFO:
def __init__(self, capacity):
self.capacity = capacity
self.cache = {}
self.queue = deque()
def refer(self, page):
if page not in self.cache:
if len(self.cache) >= self.capacity:
oldest_page = self.queue.popleft() # Remove the oldest page
del self.cache[oldest_page]
self.cache[page] = True
self.queue.append(page) # Add the new page
else:
print(f"Page {page} is already in cache.")
# উদাহরণ ব্যবহার
fifo_cache = FIFO(3)
fifo_cache.refer(1)
fifo_cache.refer(2)
fifo_cache.refer(3)
fifo_cache.refer(4) # 1 will be removed
fifo_cache.refer(2) # Already in cache
২. LRU (Least Recently Used)
LRU পলিসি অনুযায়ী, ক্যাশে যে ডেটাটি সর্বশেষ ব্যবহৃত হয়েছে সবচেয়ে কম সেটি মুছে ফেলা হয়। LRU বাস্তবায়নের জন্য বিভিন্ন পদ্ধতি ব্যবহার করা যেতে পারে, যেমন লিঙ্কড লিস্ট এবং হ্যাশম্যাপ।
বৈশিষ্ট্য:
- প্রাসঙ্গিকতা: সর্বশেষ ব্যবহৃত ডেটা সংরক্ষণ করে।
- সঞ্চালন: কার্যকরভাবে সর্বাধিক ব্যবহৃত তথ্য সংরক্ষণ করে।
উদাহরণ:
class LRU:
def __init__(self, capacity):
self.capacity = capacity
self.cache = {}
self.order = deque()
def refer(self, page):
if page in self.cache:
# Move the page to the end to show that it was recently used
self.order.remove(page)
self.order.append(page)
else:
if len(self.cache) >= self.capacity:
lru_page = self.order.popleft() # Remove the least recently used page
del self.cache[lru_page]
self.cache[page] = True
self.order.append(page)
# উদাহরণ ব্যবহার
lru_cache = LRU(3)
lru_cache.refer(1)
lru_cache.refer(2)
lru_cache.refer(3)
lru_cache.refer(1) # 1 will be moved to the end
lru_cache.refer(4) # 2 will be removed
সারসংক্ষেপ
- FIFO (First In, First Out): সবচেয়ে পুরানো (প্রথমে যুক্ত) ডেটা মুছে ফেলা হয়। সহজ এবং কার্যকর, তবে প্রায়শই কার্যকরী নয়।
- LRU (Least Recently Used): সর্বশেষ ব্যবহৃত ডেটা সংরক্ষণ করে। প্রাসঙ্গিক এবং কার্যকরী, তবে বাস্তবায়নে একটু জটিল।
এই ক্যাশ রিপ্লেসমেন্ট পলিসিগুলি বিভিন্ন ব্যবস্থাপনা এবং সফটওয়্যার সিস্টেমে কার্যকরীভাবে ব্যবহৃত হয়, যেমন ওএস, ডেটাবেস, এবং ওয়েব ব্রাউজার।