হ্যাঁ, তাদের জন্য মেশিন কোড এবং সমস্ত মেমরি অপারেশন প্রয়োজন।
সিপিইউ মেমরি পৃষ্ঠাগুলি ক্রমানুসারে অ্যাক্সেস করা উচিত নয়, অর্থাত্ প্রথমে নির্দেশিকাটি পড়ুন এবং তারপরে মেমরি অপারেণ্ডটি অ্যাক্সেস করবেন?
হ্যাঁ এটিই যৌক্তিকভাবে ঘটে যা ঘটে তবে একটি পৃষ্ঠা-ত্রুটি ব্যতিক্রম সেই 2-পদক্ষেপ প্রক্রিয়াটিকে বাধা দেয় এবং কোনও অগ্রগতি বাতিল করে দেয়। কোনও পৃষ্ঠা-ত্রুটি ঘটলে মাঝখানে কী নির্দেশ ছিল তা সিপিইউর মনে রাখার কোনও উপায় নেই।
কোনও পৃষ্ঠা-ফল্ট হ্যান্ডলার যখন কোনও বৈধ পৃষ্ঠা ত্রুটি পরিচালনা করার পরে ফিরে আসে, আরআইপি = ত্রুটিযুক্ত নির্দেশের ঠিকানা, সুতরাং সিপিইউ এটি স্ক্র্যাচ থেকে চালানো পুনরায় চেষ্টা করে ।
ওএসের পক্ষে ত্রুটিযুক্ত নির্দেশের মেশিন কোডটি সংশোধন করা iretএবং পৃষ্ঠা-ফল্ট হ্যান্ডলার (বা অন্য কোনও ব্যতিক্রম বা বাধা হ্যান্ডলার) এর পরে কোনও আলাদা নির্দেশ কার্যকর করার আশা করা বৈধ হবে । সুতরাং আফাইক, এটির স্থাপত্যগতভাবে দরকার যে সিপিইউ সিএস থেকে কোড আনতে হবে: আপনি যে ক্ষেত্রে কথা বলছেন সে ক্ষেত্রে আরআইপি। (এটি ধরে নেওয়া এমনকি ত্রুটিযুক্ত সিএসে ফিরে আসে: হার্ড পৃষ্ঠার ত্রুটিতে ডিস্কের জন্য অপেক্ষা করার সময় আরআইপি অন্য কোনও প্রক্রিয়া নির্ধারণের পরিবর্তে বা কোনও অবৈধ পৃষ্ঠা ত্রুটিতে সিগন্যাল হ্যান্ডলারের কাছে একটি সিএসএসইজিভি বিতরণ করার পরিবর্তে আরআইপি)
হাইপারভাইজার প্রবেশ / প্রস্থানের জন্য সম্ভবত এটি আর্কিটেকচারালিও প্রয়োজনীয়। এমনকি এটি কাগজে স্পষ্টভাবে নিষিদ্ধ না হলেও, সিপিইউগুলি কীভাবে কাজ করে তা নয়।
@ টোরেক মন্তব্য করেছেন যে কিছু (সিআইএসসি) মাইক্রোপ্রসেসরগুলি আংশিকভাবে নির্দেশাবলী ডিকোড করে এবং মাইক্রোরিজিস্টার অবস্থাকে একটি পৃষ্ঠা ত্রুটিতে ফেলে দেয় , তবে x86 এর মতো নয়।
কয়েকটি নির্দেশাবলী বাধাযোগ্য এবং আংশিক অগ্রগতি করতে পারে rep movs( যেমন একটি ক্যানের মধ্যে স্মৃতিবিজড়িত) এবং অন্যান্য স্ট্রিং নির্দেশাবলী, বা লোড / স্ক্যাটার স্টোর সংগ্রহ করতে পারে। তবে একমাত্র প্রক্রিয়াটি স্ট্রিং অপ্সের জন্য আরসিএক্স / আরএসআই / আরডিআই বা সংগ্রহস্থলের জন্য গন্তব্য এবং মাস্ক রেজিস্টারের মতো আর্কিটেকচারাল রেজিস্টারগুলি আপডেট করছে (যেমন এভিএক্স 2 এরvpgatherdd জন্য ম্যানুয়াল )। অপকড / ডিকোড ফলাফলগুলি কোনও গোপন আভ্যন্তরীণ রেজিস্টারে না রেখে এবং কোনও পৃষ্ঠা ত্রুটি হ্যান্ডলার থেকে ওরেট পরে পুনরায় চালু করা হয় art এই নির্দেশাবলী যা একাধিক পৃথক ডেটা অ্যাক্সেস করে।
এছাড়াও মনে রাখবেন যে x86 (বেশিরভাগ আইএসএর মতো) গ্যারান্টি দেয় যে নির্দেশগুলি পারমাণবিক প্রতিবন্ধক। বাধা / ব্যতিক্রম: এগুলি বাধা দেওয়ার আগে সেগুলি সম্পূর্ণরূপে ঘটে থাকে বা হয় না। এটি পরিচালনা করার সময় কোনও সমাবেশ নির্দেশকে বাধা দিচ্ছে । সুতরাং উদাহরণস্বরূপ add [mem], regস্টোর অংশটি ত্রুটিযুক্ত থাকলেও, lockউপসর্গ ছাড়াই লোডটি ফেলে দিতে হবে ।
অগ্রণী অগ্রগতি জন্য উপস্থিত অতিথি ব্যবহারকারী-স্থান পৃষ্ঠাগুলির সবচেয়ে খারাপ ক্ষেত্রে সংখ্যা 6 হতে পারে (প্রতিটি পৃথক পৃথক অতিথি-কার্নেল পৃষ্ঠা-সারণী সাবট্রিজ):
movsqবা movswপৃষ্ঠার সীমানা বিস্তৃত 2-বাইট নির্দেশনা, সুতরাং এটির ডিকোড করার জন্য উভয় পৃষ্ঠার প্রয়োজন।
- কিওয়ার্ড উত্স অপারেন্ড
[rsi]একটি পৃষ্ঠা বিভক্ত
- কিওয়ার্ড গন্তব্য অপারেন্ড
[rdi]একটি পৃষ্ঠা বিভক্ত
যদি এই 6 টি পৃষ্ঠার কোনও ত্রুটি থেকে থাকে তবে আমরা আবার স্কোয়ারে ফিরে আসছি।
rep movsdএটি একটি 2-বাইট নির্দেশও এবং এর এক ধাপে অগ্রগতি করা একই প্রয়োজন। একই ক্ষেত্রে পছন্দ push [mem]বা pop [mem]একটি শ্রেণীবদ্ধ স্ট্যাক দিয়ে নির্মিত যেতে পারে।
সংগ্রহের বোঝা / স্ক্রেটার স্টোরগুলি "বাধাদানযোগ্য" (তাদের অগ্রগতির সাথে মুখোশ ভেক্টর আপডেট করা) করার / এর অন্যতম কারণ (বা পার্শ্ব সুবিধা) হ'ল একক নির্দেশনা কার্যকর করার জন্য এই সর্বনিম্ন পায়ের ছাপ বাড়ানো এড়ানো। একসাথে সংগ্রহ বা বিচ্ছুরণের সময় একাধিক ত্রুটিগুলি পরিচালনা করার দক্ষতা উন্নত করতে।
@ ব্র্যান্ডন মন্তব্যগুলিতে উল্লেখ করেছেন যে কোনও অতিথির স্মৃতিতে তার পৃষ্ঠার টেবিলগুলির প্রয়োজন হবে এবং ব্যবহারকারী-স্থান পৃষ্ঠার বিভাজনগুলিও 1 জিআইবি বিভক্ত হতে পারে সুতরাং উভয় পক্ষ শীর্ষ স্তরের পিএমএল 4 এর বিভিন্ন উপ-গাছের মধ্যে রয়েছে। এইচডাব্লু পৃষ্ঠা ওয়াকের অগ্রগতি করতে এই সমস্ত অতিথি পৃষ্ঠা-সারণী পৃষ্ঠাগুলির স্পর্শ করতে হবে। এমন একটি পরিস্থিতি যা এই প্যাথোলজিকাল দ্বারা ঘটনাক্রমে হওয়ার সম্ভাবনা কম।
টিএলবি (এবং পৃষ্ঠা-ওয়াকার অভ্যন্তরীণ) কিছু পৃষ্ঠা-সারণী ডেটা ক্যাশে করার অনুমতি পেয়েছে এবং ওএস না করে invlpgবা নতুন সিআর 3 শীর্ষ-স্তরের পৃষ্ঠা ডিরেক্টরি সেট না করা পর্যন্ত স্ক্র্যাচ থেকে পৃষ্ঠা-ওয়াক পুনরায় আরম্ভ করার প্রয়োজন নেই । অপ্রস্তুত থেকে উপস্থাপনে কোনও পৃষ্ঠা পরিবর্তন করার সময় এগুলির কোনও প্রয়োজন হয় না; কাগজে x86 গ্যারান্টি দেয় যে এটির দরকার নেই (অতএব উপস্থিত পিটিইগুলির "নেতিবাচক ক্যাশে" অনুমোদিত নয়, কমপক্ষে সফ্টওয়্যারটিতে দৃশ্যমান নয়)। সুতরাং কিছু অতিথি-শারীরিক পৃষ্ঠা-সারণী পৃষ্ঠাগুলি প্রকৃতপক্ষে উপস্থিত না থাকলেও সিপিইউ ভিএমেক্সিট নাও করতে পারে।
পিএমইউ পারফরম্যান্স কাউন্টারগুলি সক্ষম ও কনফিগার করা যেতে পারে যাতে সেই নির্দেশের জন্য সেই নির্দেশের জন্য পিইবিএস বাফারে একটি লেখার জন্য পারফেক্ট ইভেন্টও প্রয়োজন । কাউন্টারের মুখোশটি কেবল ব্যবহারকারীর স্পেস নির্দেশাবলী গণনা করার জন্য কনফিগার করা হয়েছে, কার্নেল নয়, এটি এমনও হতে পারে যে প্রতিবার ব্যবহারকারী পৃষ্ঠায় ফিরে আসার পরে আপনি কোনও পৃষ্ঠা-ত্রুটি তৈরি করে কাউন্টারটিকে উপচে ফেলে এবং বাফারে একটি নমুনা সঞ্চয় করার চেষ্টা চালিয়ে যাবেন।