প্রসেসরের ভার্চুয়াল মেমরি সমর্থন করার জন্য কি এমএমইউ (মেমরি ম্যানেজমেন্ট ইউনিট) চিপটি প্রয়োজনীয়?
সফটওয়্যারটিতে এমএমইউ কার্যকারিতা অনুকরণ করা সম্ভব? (আমি সচেতন যে এটি সম্ভবত পারফরম্যান্স উপর একটি বড় প্রভাব ফেলবে)।
প্রসেসরের ভার্চুয়াল মেমরি সমর্থন করার জন্য কি এমএমইউ (মেমরি ম্যানেজমেন্ট ইউনিট) চিপটি প্রয়োজনীয়?
সফটওয়্যারটিতে এমএমইউ কার্যকারিতা অনুকরণ করা সম্ভব? (আমি সচেতন যে এটি সম্ভবত পারফরম্যান্স উপর একটি বড় প্রভাব ফেলবে)।
উত্তর:
যে কোনও সিস্টেম এমুলেটর যা এমএমইউযুক্ত একটি সিস্টেমকে কার্যকরভাবে কার্যকরভাবে সফ্টওয়্যারটিতে একটি এমএমইউ অনুকরণ করে, সুতরাং আপনার প্রশ্নের উত্তর হিসাবে হ্যাঁ "হ্যাঁ" is তবে ভার্চুয়াল মেমরির জন্য মেমরি অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগের কিছু উপায় প্রয়োজন হয়, বা কমপক্ষে ঠিকানা অনুবাদ করা প্রয়োজন, সুতরাং এটি সিপিইউতে নিয়ন্ত্রিত চলমান সিপিইউর সম্পূর্ণ সফ্টওয়্যার অনুকরণ প্রয়োজন, অথবা এটির জন্য হার্ডওয়্যার সহায়তা দরকার।
সুতরাং আপনি সম্ভবত এটিতে কোনও এমএমইউ, পোর্ট কিউইএমইউবিহীন একটি সিস্টেম তৈরি করতে পারেন, ভার্চুয়াল মেমরিটিকে আসলে দরকারী হিসাবে অনুপস্থিত টুকরো যুক্ত করতে পারেন ( যেমন , হোস্ট সিস্টেমে অদলবদলের জন্য সমর্থন যোগ করুন), এবং কিউইএমইউতে একটি এমএমইউ-প্রয়োজনীয় অপারেটিং সিস্টেম চালাতে পারেন, অতিথি অপারেটিং সিস্টেমের (কিউইএমইউ বাগগুলি ব্যতীত) আপনি যে সমস্ত সুরক্ষা আশা করতে পারেন তার সাথে।
ভার্চুয়াল মেমোরি সরবরাহ করতে ব্যবহৃত একটি এমএমইউ-কম "এমুলেশন" এর উদাহরণ হ'ল জেড-মেশিন , সত্তরের দশকের শেষের দশক এবং আশির দশকের গোড়ার দিকে 8-বিট সিস্টেমে এর কোড এবং ডেটা পেজিং এবং অদলবদল করতে সক্ষম ছিল । অন্তর্নিহিত প্রকৃত প্রসেসরের উপর ভার্চুয়াল প্রসেসরের অনুকরণ করে এটি কাজ করেছে; এইভাবে, দোভাষী যে মেমরি লেআউটে চলমান প্রোগ্রামটি "দেখছেন" তার উপরে সম্পূর্ণ নিয়ন্ত্রণ রাখে।
অনুশীলনে, এটি সাধারণত বিবেচনা করা হয় যে ভার্চুয়াল মেমরি সমর্থন, কমপক্ষে অপারেটিং সিস্টেমের স্তরে একটি এমএমইউ প্রয়োজন। এমএমইউ-কম কার্নেল হিসাবে নির্দেশিত ? লিনাক্স কার্নেলটি তৈরি করা সম্ভব হয় যাতে এটি এমএমইউ ব্যতীত সিস্টেমে চালিত হয়, তবে ফলস্বরূপ কনফিগারেশনটি অত্যন্ত অস্বাভাবিক এবং কেবলমাত্র নির্দিষ্ট ব্যবহারের ক্ষেত্রে উপযুক্ত (বিশেষত কোনও প্রতিকূল সফ্টওয়্যার ছাড়াই)। এটি ভার্চুয়াল মেমোরির প্রয়োজন হতে পারে এমন অনেক পরিস্থিতিতে সমর্থন করতে পারে না (অদলবদল, mmap
...)।
আপনি ভার্চুয়াল মেমরিটি ঠিক কীটিকে কল করছেন এটি নির্ভর করে। একটি আকর্ষণীয় মডেল হ'ল পুরানো উইন 16 মডেল (উইন্ডোজ এনটি নয়, পুরানো উইন্ডোজ 3.x থেকে সর্বাধিক পরিচিত)। যে মডেলে আপনি ছিল GlobalLock
এবং GlobalUnlock
, LocalLock
এবং LocalUnlock
ফাংশন। এগুলি ছিল ভার্চুয়াল মেমরির একটি সহযোগিতামূলক, ম্যানুয়াল পরিচালনা management এটি (অ্যাপ্লিকেশন) সফ্টওয়্যারটিতে যেমন করা হয়েছিল, এর জন্য এমএমইউ লাগেনি। এবং স্মৃতিশক্তিটি এই অর্থে ভার্চুয়াল ছিল যে আনলক করা মেমরিটি ডিস্কে পরিবর্তিত হতে পারে।
তবে উইন 16 মডেলটিতে বিভিন্ন প্রক্রিয়াগুলির মধ্যে কোনও সুরক্ষা নেই। অন্য কোনও প্রক্রিয়া যদি মেমরিতে ডেটা ফেলে রাখে তবে আপনি এটি ওভাররাইট করতে পারেন। এটি কোনও মৌলিক বাধা নয়। এসএসডি-র দ্রুততম দিনগুলির সাথে, আপনি সম্পূর্ণরূপে স্মৃতি থেকে একটি চলমান প্রক্রিয়াটি সরিয়ে ফেলতে পারেন এবং উপযুক্ত সময়ে এটি করতে পারেন।
কোনও হার্ডওয়্যার এমএমইউ থাকা দরকার নেই, যদি আপনার কাছে এমন কোনও সফ্টওয়্যার থাকে যা শারীরিক স্মৃতিতে এবং থেকে প্রক্রিয়াগুলিকে অদলবদল করতে পারে।
এটি ছিল প্রাথমিক মাল্টি-টাস্কিং অপারেটিং সিস্টেমগুলির অপারেশন মোড। কেবলমাত্র একটি প্রক্রিয়া যেকোন সময় স্মৃতিতে বাসিন্দা, এটির সময় স্লাইস শেষ হয়ে গেলে এটি সম্পূর্ণরূপে সরে যায় (আপনি দেখতে পারেন যে এটি বৃহত প্রক্রিয়াগুলির সাথে সমস্যাযুক্ত হয়ে উঠেছে)। বর্তমানে চলমান প্রক্রিয়াটিতে দেখা মেমরির বিষয়বস্তু অন্য কোনও প্রক্রিয়া দেখে যেমন হয় না তেমন নয় এবং প্রত্যেকের ঠিকানা জায়গার নিজস্ব মতামত রয়েছে।
কিছু হার্ডওয়্যার সমর্থন সহায়ক - ওএসের নিজস্ব ব্যবহারের জন্য "সুরক্ষিত" মেমরি অঞ্চল সম্পর্কে ধারণা (যেমন এমএসবি সেট সহ সমস্ত ঠিকানা কেবল সুপারভাইজার মোডে অ্যাক্সেসযোগ্য) এবং একটি "ব্রেক" মান ব্যবহারের সর্বোচ্চ ঠিকানা নির্দেশ করে তবে মেমরি পরিচালনা ভার্চুয়াল মেমরির জন্য হার্ডওয়্যার একটি নিখুঁত প্রয়োজন নয়; এটি অর্জনের এটি কেবল একটি বিশেষ কার্যকর উপায়।
ভিএম করার জন্য মূল বাণিজ্যিক মেশিনগুলির এমএমইউ ছিল না - তাদের প্রসেসরের মধ্যে ভিএম নির্মিত হয়েছিল। আমার বর্তমান চিন্তাভাবনাটি হ'ল এমএমইউগুলি নন-ভিএম প্রসেসরের শীর্ষে ভিএম রাখার কেবলমাত্র একটি চিন্তাভাবনা। ভিএম ম্যানচেস্টার ইউনিভার্সিটিতে উন্নত হয়েছিল এবং বুড়ো ডিজাইনাররা তাদের অবশ্যই এটি অন্তর্ভুক্ত করা উচিত বলে নিশ্চিত করেছিলেন - যদিও সে সময় এটি অত্যন্ত উদ্ভাবনী ছিল।
বুড়ো বি 5000 (বর্তমানে ইউনিসিস এমসিপি মেশিনগুলি) মেমরি বর্ণনাকারী ব্যবহার করে যা মেমোরি সীমানা প্রয়োগ করে - একটি সীমার বাইরে যান এবং আপনার প্রোগ্রামটি ডাম্প হয় (সীমানা সম্মান করা একটি সুন্দর সমাজের ভিত্তি, তবে কিছু সুযোগ সুবিধাকে অপব্যবহার করে, তাই সীমানা কার্যকর করা আবশ্যক)।
বর্ণনাকারীরা একটি মেমরি ঠিকানা, ব্লক দৈর্ঘ্য এবং ডেটা টাইপ ধরে রাখে তবে সমস্ত গুরুত্বপূর্ণ পি-বিট, বা উপস্থিতি বিট। পি-বিটটি নির্দেশ করে যে ব্লকটি মেমরিতে রয়েছে। শূন্যের একটি পি-বিট মানে ব্লকটি ভর স্টোরেজে থাকে এবং ঠিকানাটি মূল প্রোগ্রামে (কোড বা ডেটা), বা ভিএম (রোলড আউট ডেটা) হয় storage
এই মেশিনগুলি একটি শ্রেণিবিন্যাসের স্মৃতি মডেল প্রয়োগ করেছে implemented এমএমইউগুলি ফ্ল্যাট মেমরির ঘাটতি পূরণ করতে পারে বলে মনে হচ্ছে, ব্যবহারকারীকে ফ্ল্যাট মেমরির মানচিত্র তৈরি করতে হবে। জে কে ইলিফ এই মডেলটি সহ আইসিএল মেশিনগুলিও ডিজাইন করেছিলেন:
http://www.computerconservationsociety.org/resurrection/res74.htm#f
https://en.wikipedia.org/wiki/Burroughs_large_systems
এই মেশিনগুলির মধ্যে এবং আজকের বেশিরভাগের মধ্যে পার্থক্য হ'ল তারা কেবল একটি সিপিইউ আর্কিটেকচারকে নয়, সম্পূর্ণ সিস্টেমের আর্কিটেকচারকে সম্বোধন করে।
সুতরাং মনে হচ্ছে যে কেবল এমএমইউগুলিই প্রয়োজনীয় নয়, এটিগুলি ছাড়া সিস্টেমগুলি আরও ভাল।
ডেস্কটপ, ল্যাপটপ এবং সার্ভার প্রসেসরের বেশিরভাগ অংশে মেমোরি-ম্যানেজমেন্ট হার্ডওয়্যারটিতে এক বা একাধিক টিএলবি অন্তর্ভুক্ত থাকে এবং এটি পেজড বা বিভাগিত ভার্চুয়াল মেমরিটি ব্যবহার করে এমন কোনও প্রসেসরে প্রায় সবসময় উপস্থিত থাকে ।
এবং তারপরে, ভার্চুয়াল মেমরি সম্পর্কে পড়ুন এবং এটি আসলে কী বোঝাতে চাইছে। বিশাল ভার্চুয়াল ঠিকানার স্থানটি মূল ধারণা নয়। মূল ধারণাটি অনেক স্তরে ক্যাচিং / বাফারিং।
এটি সহজ থেকে অনেক দূরে, তবে এই টিএলবি মেমরি ক্যাশে কার্নেলের মিমি সাবসিস্টেমটি তৈরি করা হার্ডওয়ারের একটি গুরুত্বপূর্ণ অংশ (অন্যথায় ভিএম বেশিরভাগ ক্ষেত্রে ওভারহেড হবে)।
VM- র =
ভার্চুয়াল মেমরি বা ভার্চুয়াল মেশিন। খুব আলাদা, খুব সংযুক্ত।
সুতরাং উত্তরটি হ'ল না, একটি এমএমইউ চিপ ( মূলবোর্ডের সিপিইউর বাইরে একটি পৃথক ইউনিট ) প্রয়োজন নেই।
হ্যাঁ, কিছু হার্ডওয়্যার এমএমইউ (সিপিইউতে) দরকারী ভিএম সম্পর্কে আদৌ চিন্তা করা প্রয়োজন। (এটি x86 প্ল্যাটফর্মের জন্য, এই 8086 বিভাজন দিয়ে শুরু হয়েছিল )