What are Threads and Pages?
সিস্টেম ডিজাইনের লো-লেভেল কনসেপ্টগুলোর মধ্যে Threads এবং Pages দুটি গুরুত্বপূর্ণ বিষয়, যা সিস্টেমের পারফরম্যান্স এবং মেমোরি ম্যানেজমেন্টের সাথে সরাসরি জড়িত।
১. Threads (থ্রেড কি?)
থ্রেড হলো একটি প্রসেসর বা প্রোগ্রামের ক্ষুদ্রতম ইউনিট। একটি সিঙ্গেল প্রসেস একাধিক থ্রেড দিয়ে গঠিত হতে পারে যা একই সময়ে বিভিন্ন কাজ করতে পারে (Multithreading)।
মূল পয়েন্ট:
- Concurrency: থ্রেড আমাদের একই সাথে অনেকগুলো কাজ করার সুযোগ দেয়।
- Shared Memory: একই প্রসেসের থ্রেডগুলো নিজেদের মধ্যে মেমোরি শেয়ার করতে পারে।
- Thread Safety: যেহেতু থ্রেডগুলো মেমোরি শেয়ার করে, তাই ডেটা যাতে করাপ্ট না হয় তার জন্য 'Locking' বা 'Synchronization' প্রয়োজন হয়।
বাস্তব উদাহরণ: একটি ওয়েব ব্রাউজারে একটি থ্রেড দিয়ে ফাইল ডাউনলোড হচ্ছে, আরেকটি থ্রেড দিয়ে আপনি ইউটিউব দেখছেন এবং অন্যটি দিয়ে পেজ রেন্ডার হচ্ছে।
২. Pages (পেজ কি?)
মেমোরি ম্যানেজমেন্টের ক্ষেত্রে 'Page' হলো একটি ফিক্সড সাইজ মেমোরি ব্লক। যখন অপারেটিং সিস্টেম মেমোরি অ্যালোকেট করে, তখন তা ছোট ছোট ব্লকে ভাগ করে নেয়।
মূল পয়েন্ট:
- Virtual Memory: অপারেটিং সিস্টেম আপনার র্যাম এবং হার্ডডিস্ককে একসাথে ভার্চুয়াল মেমোরি হিসেবে ব্যবহার করে। এই মেমোরির ছোট অংশগুলোই হলো 'Page'।
- Paging: সিস্টেম যখন র্যাম থেকে কিছু ডেটা হার্ডডিস্কে সরিয়ে নেয় বা আনে, সেই প্রক্রিয়াকে প্যাজিং (Paging) বলা হয়।
- Page Fault: যখন কোনো প্রোগ্রাম এমন কিছু ডেটা চায় যা র্যামে নেই কিন্তু মেমোরিতে আছে বলে মনে করা হয়, তখন একে পেজ ফল্ট (Page Fault) বলে।
কেন এগুলো জানা জরুরি?
সিস্টেম ডিজাইন করার সময়, বিশেষ করে ডেটাবেস বা হাই-পারফরম্যান্স সার্ভার ডিজাইন করার সময়, থ্রেড কিভাবে কাজ করছে এবং মেমোরি পেজিং সিস্টেমের ওপর কি প্রভাব ফেলছে তা বোঝা গুরুত্বপূর্ণ। অতিরিক্ত থ্রেড সিস্টেমকে স্লো করে দিতে পারে (Context Switching), আবার সঠিক প্যাজিং না হলে সিস্টেম ক্র্যাশ করতে পারে।
CAUTION
থ্রেড এবং মেমোরি ব্যবহারের ক্ষেত্রে সবসময় মৃতব্যয়ী হওয়া উচিত, কারণ এগুলো সীমিত হার্ডওয়্যার রিসোর্স ব্যবহার করে।