যদি ভার্চুয়াল ঠিকানার স্থানটি দৈহিক ঠিকানার জায়গার চেয়ে বড় হতে পারে তবে ঠিকানা ম্যাপিংগুলি মেমরিতে কীভাবে সংরক্ষণ করা হয়?


15

ধরা যাক আমরা এমন একটি সিস্টেমের সাথে কাজ করছি যার 40 টি শারীরিক ঠিকানার বিট রয়েছে। মোট শারীরিক ঠিকানার স্থান (বাইট-অ্যাড্রেসযোগ্য মেমরি ধরে নেওয়া) বাইট বা 1 টিবি। এবং যদি ভার্চুয়াল ঠিকানাগুলির দৈর্ঘ্য 48 বিট হয়, তার অর্থ শারীরিক মেমরির অবস্থানগুলির চেয়ে ভার্চুয়াল মেমরির আরও ঠিকানা রয়েছে।240

এটি আমার কাছে উপলব্ধি করে, কারণ "অতিরিক্ত" ঠিকানাগুলি হার্ড ডিস্কের অবস্থানগুলিকেও বোঝায়। তবে, আমি যা বুঝতে পারি না তা হ'ল ভার্চুয়াল এবং শারীরিক ঠিকানার মধ্যে অনুবাদটি কীভাবে ঘটে। আমি ধরে নিই যে কোথাও ম্যাপিং রয়েছে যা ভ্যাসের অবস্থানগুলিকে ভৌত অবস্থানের সাথে সংযুক্ত করে। যদি শারীরিক অবস্থানের চেয়ে ভার্চুয়াল ঠিকানার অবস্থানগুলি থাকে তবে এই সমস্ত ম্যাপিং কীভাবে মেমোরিতে রাখা যায়? প্রতিটি ভার্চুয়াল ঠিকানা সঞ্চয় করতে আপনার সর্বনিম্ন 48 টি বিট প্রয়োজন হবে এবং তারপরে এটির মানচিত্রের শারীরিক অবস্থান সংরক্ষণের জন্য আরও 40 টি দরকার। সুতরাং স্পষ্টতই আপনি প্রতিটি ভার্চুয়াল ঠিকানার 1: 1 ম্যাপিংটিকে তার দৈহিক অংশের জন্য সংরক্ষণ করতে পারবেন না, কারণ প্রতিটি অবস্থানের ম্যাপিং শারীরিক স্মৃতির চেয়ে বেশি মেমরি নিতে পারে।

আমি এখানে ঠিক কী মিস করছি?


অল্প পরিমাণ মেমরি এবং ঠিকানার জায়গা দিয়েও আপনি এটি করতে পারবেন না। আপনার যদি 16-বিট শারীরিক ঠিকানা এবং 16-বিট ভার্চুয়াল ঠিকানা থাকে তবে আপনি এখনও 1: 1 ম্যাপিংয়ের সমস্ত সঞ্চয় করতে পারবেন না!
ব্যবহারকারী 253751

2
সমস্যাটি আপনি যতটা ভাবেন তার চেয়েও জটিল। কম্পিউটারগুলির মধ্যে খুব কমই টিবি মেমরি থাকে, তাই শারীরিক মেমরি ভার্চুয়াল ঠিকানার জায়গার চেয়ে কম। আরও খারাপ: প্রতিটি প্রক্রিয়াতে এটি সম্পূর্ণ আলাদা ভার্চুয়াল ঠিকানার স্থান থাকে!
হাঁসকে

হার্ড ডিস্কের অবস্থানগুলি ছাড়াও আপনার কাছে অপচয় বাড়াতে কেবল বিট / স্পেস রয়েছে। উদাহরণস্বরূপ, অনাবৃত ওভারফ্লোগুলি রোধ করতে আপনার কাছে স্ট্যাক আনম্যাপযুক্ত নীচের বৃহত অঞ্চল থাকতে পারে। অন্য শ্রেণীর আক্রমণগুলি প্রতিরোধ করে আপনি যেখানে লোড করেন তা এলোমেলো করে দিতে পারেন । ঠিকানাটি কার্নেল বা ব্যবহারকারীর অন্তর্ভুক্ত হলে একটি বিট দ্বারা চিহ্নিত করতে চান - আপনি অর্ধেক জায়গার অপচয় করেও এগিয়ে যান। যদিও বেশিরভাগ পাঠ্যপুস্তকগুলি ভার্চুয়াল মেমরির দিকটি ফুটিয়ে তুলতে মনোনিবেশ করে তবে এর মধ্যে আরও অনেক কিছু রয়েছে।
ম্যাকিয়েজ পাইচোটকা

(এছাড়াও লক্ষ করুন যে ঠিকানাগুলি উপনাম হতে পারে যা কখনও কখনও দরকারী, তাই ভিএ এ এবং ঠিকানা বি একই পিএ পি উল্লেখ করে যদিও এ! = বি))
ম্যাকিয়েজ পাইচোতকা

উত্তর:


26

এই কাজটি করার কৌশলটি "পেজিং"। হার্ড ডিস্ক থেকে শারীরিক স্মৃতিতে ডেটা আনার সময়, আপনি কেবল কয়েকটি বাইট আনবেন না। আপনি একটি সম্পূর্ণ পৃষ্ঠা আনুন। 4 কে বাইট খুব সাধারণ পৃষ্ঠার আকার।

আপনার যদি প্রতিটি পৃষ্ঠার বাইট না করে কেবল পৃষ্ঠাগুলির উপর নজর রাখতে হয় তবে ম্যাপিংটি অনেক সস্তা। আপনার যদি 48 বিটের ঠিকানার স্থান এবং 4096 বাইট পৃষ্ঠাগুলি থাকে তবে আপনাকে কেবল 2 ^ 36 পৃষ্ঠাগুলির মধ্যে (প্রায় 69 বিলিয়ন পৃষ্ঠা) ট্র্যাক করতে হবে to এটা অনেক সহজ! সমস্ত পৃষ্ঠাগুলি কোথায় পাওয়া যায় তার রেকর্ডটি "পৃষ্ঠার সারণী" হিসাবে পরিচিত।

আপনার যদি সত্যিকারের 1-256 টিআইবি মেমরির প্রয়োজন হয় তবে এই পৃষ্ঠার টেবিলটি সংরক্ষণ করার জন্য কয়েকটি গিগাবাইট ছেড়ে দেওয়া কোনও বড় বিষয় নয়। তবে অনুশীলনে, আমরা মাল্টি-লেভেল পৃষ্ঠার টেবিলগুলি ব্যবহার করার মতো জিনিস করব , যা কেবলমাত্র আমরা ঠিক যে জায়গাগুলি ব্যবহার করছি ঠিকানার জায়গাগুলির জন্য পৃষ্ঠাগুলি রেখে আমাদের আরও কিছুটা দক্ষ হতে দেয়।


6
একটি পৃষ্ঠা ফাইল হ'ল মেমরির অভাবের জন্য পুনরায় দাবি করা ফিজিকাল পৃষ্ঠার ফ্রেমগুলির বিষয়বস্তুযুক্ত একটি অন ডিস্ক ফিজিক্যাল ফাইলের জন্য একটি উইন্ডোজ শব্দ যা এর সামগ্রীগুলি রাখা দরকার to যদি আমি ভুল না হয়ে থাকি তবে ভৌত পৃষ্ঠার ঠিকানাগুলিতে ভার্চুয়াল পৃষ্ঠা ঠিকানাগুলি ম্যাপিং করা ডেটা স্ট্রাকচারকে একটি পৃষ্ঠা সারণী বলা উচিত ।
মনিকা পুনরায় ইনস্টল করুন - :3--

@ হেক্সাফ্রাকশন আমি মনে করি আপনি ঠিক বলেছেন। আমি পরিবর্তন করেছি।
আম্মনকে

2
প্রকৃত স্মৃতি যখন বড় হয়, পৃষ্ঠার সারণীর জন্য প্রয়োজনীয় মেমরি হ্রাস করার আরেকটি উপায় হ'ল বৃহত্তর পৃষ্ঠাগুলির জন্য অনুমতি দেওয়া। x86 এর 2/4 এমআইবি পৃষ্ঠাগুলির সাথে 4 কিবি পৃষ্ঠাগুলি মিশ্রিত করার বিকল্প রয়েছে।
নাট এল্ডারেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.