আসলে, আপনার ভার্চুয়াল স্ট্যাকের আকার হয় 8388608 বাইট (8 মেগাবাইট)। অবশ্যই, এই সিদ্ধান্তটি যথাযথ হতে পারে না এটাই স্বাভাবিক, কারণ এটি প্রতিটি স্ট্রেডের জন্য একটি হাস্যকর মেমরির প্রচুর পরিমাণে থাকে যখন 99% সময় কয়েক কেবি সম্ভবত তাদের প্রয়োজন হয়।
সুসংবাদটি হ'ল আপনার থ্রেডটি কেবল প্রকৃত পরিমাণে শারীরিক মেমরির প্রয়োজন ব্যবহার করে। আপনার ওএস আপনার প্রসেসরে হার্ডওয়্যার মেমোরি ম্যানেজমেন্ট ইউনিট (এমএমইউ) ব্যবহার করে যে মায়াবী শক্তি অর্জন করে তার মধ্যে এটি একটি। যা ঘটে তা এখানে:
আপনার থ্রেডের জন্য এমএমইউর পৃষ্ঠা সারণীগুলি স্থাপন করে ওএস আপনার স্ট্যাকের জন্য ভার্চুয়াল মেমরির 8 এমবি বরাদ্দ করে। কেবল পৃষ্ঠা সারণীর এন্ট্রিগুলি ধরে রাখতে এটির খুব কম র্যাম দরকার।
যখন আপনার থ্রেড চলমান এবং স্ট্যাকের কোনও ভার্চুয়াল ঠিকানার অ্যাক্সেস করার চেষ্টা করেছে যাতে এটিতে এখনও কোনও বরাদ্দকৃত পৃষ্ঠা থাকে না, তখন এমএমইউ দ্বারা একটি "পৃষ্ঠা ফল্ট" নামে একটি হার্ডওয়্যার ব্যতিক্রম শুরু হয়।
সিপিইউ কোর পৃষ্ঠার ত্রুটিযুক্ত ব্যতিক্রমটিকে সাড়া দিয়ে একটি সুবিধাযুক্ত এক্সিকিউশন মোডে (যার নিজস্ব স্ট্যাক রয়েছে) স্যুইচ করে এবং কার্নেলের ভিতরে পৃষ্ঠা ফল্ট ব্যতিক্রম হ্যান্ডলার ফাংশনটি কল করে।
কার্নেল সেই ভার্চুয়াল মেমরি পৃষ্ঠায় শারীরিক র্যামের একটি পৃষ্ঠা বরাদ্দ করে এবং ব্যবহারকারীর স্পেস থ্রেডে ফিরে আসে।
ব্যবহারকারীর স্পেস থ্রেড সেই কাজের কোনওটাই দেখতে পায় না। এর দৃষ্টিকোণ থেকে, এটি কেবল স্ট্যাকটি এমনভাবে ব্যবহার করে যেন স্মৃতি সেখানে রয়েছে। এদিকে, থ্রেডটির চাহিদা মেটাতে স্ট্যাকটি স্বয়ংক্রিয়ভাবে বেড়ে যায় (বা হয় না)।
এমএমইউ হ'ল আজকের কম্পিউটার সিস্টেমগুলির হার্ডওয়্যারের একটি মূল অঙ্গ। বিশেষত, এটি সিস্টেমে প্রচুর "যাদু" এর জন্য দায়ী, সুতরাং আমি এমএমইউ কী করে এবং সাধারণভাবে ভার্চুয়াল মেমরির বিষয়ে আরও জানার পরামর্শ দিই। এছাড়াও, যদি আপনার অ্যাপ্লিকেশনটি পারফরম্যান্স সংবেদনশীল এবং উল্লেখযোগ্য পরিমাণে ডেটা নিয়ে কাজ করে তবে আপনার টিএলবি হিট রেট সর্বাধিক করার জন্য কীভাবে টিএলবি (এমএমইউর পৃষ্ঠার টেবিল ক্যাশে) কাজ করে এবং আপনার ডেটা বা আপনার অ্যালগরিদমকে কীভাবে পুনর্গঠন করতে পারে তা আপনার বুঝতে হবে।
8388608 / 1024 = 8192
।