দুটি প্রাথমিক কারণ রয়েছে।
প্রথম কারণটি হল, যদিও x86 সিপিইউগুলি চারটি রিং মেমরি সুরক্ষা সরবরাহ করে, ততক্ষণে প্রদত্ত সুরক্ষার গ্রানুলারিটি কেবল প্রতি-সেগমেন্ট স্তরে থাকে at এটি হ'ল প্রতিটি বিভাগকে লিখিত-অক্ষমের মতো অন্যান্য সুরক্ষার পাশাপাশি 0 থেকে 3 পর্যন্ত একটি নির্দিষ্ট রিং ("প্রিভিলেজ লেভেল") এ সেট করা যেতে পারে। তবে অনেকগুলি সেগমেন্ট বর্ণনাকারী উপলব্ধ নেই। বেশিরভাগ অপারেটিং সিস্টেমে মেমরির সুরক্ষার আরও সূক্ষ্ম গ্রানুলারিটি থাকতে চান। পৃথক পৃষ্ঠাগুলির জন্য ... পছন্দ করুন।
সুতরাং, পৃষ্ঠা সারণী এন্ট্রি (পিটিই) এর উপর ভিত্তি করে সুরক্ষা প্রবেশ করুন। সর্বাধিক যদি না হয় সমস্ত আধুনিক x86 অপারেটিং সিস্টেমগুলি কম-বেশি সেগমেন্টিং মেকানিজমকে উপেক্ষা করে (তারা যতটা পারে যাই হোক না কেন) এবং পিটিই-ভিত্তিক সুরক্ষার উপর নির্ভর করে। এটি ফ্ল্যাগ বিট দ্বারা নির্দিষ্ট করা হয় যা প্রতিটি পিটিইতে কম 12 বিট হয় - প্লাস বিট 63 সিপিইউগুলিতে যে কোনও মৃত্যুদন্ড কার্যকর করে না। প্রতিটি পৃষ্ঠার জন্য একটি পিটিই রয়েছে, যা সাধারণত 4K হয়।
এই পতাকা বিটগুলির মধ্যে একটিকে "সুবিধাযুক্ত" বিট বলা হয়। এই বিটটি পৃষ্ঠাটি অ্যাক্সেস করার জন্য প্রসেসরের একটি "সুবিধাবঞ্চিত" স্তরে থাকতে হবে কিনা তা নিয়ন্ত্রণ করে। "সুবিধাপ্রাপ্ত" স্তরগুলি হ'ল পিএল 0, 1 এবং 2। তবে এটি কেবল একটি বিট, সুতরাং পৃষ্ঠা-পৃষ্ঠার সুরক্ষা স্তরে মেমরি সুরক্ষা সম্পর্কিত যতটা "মোড" উপলব্ধ রয়েছে কেবল দুটি: একটি পৃষ্ঠা অ-সুবিধাযুক্ত মোড থেকে অ্যাক্সেসযোগ্য হতে পারে, না। সুতরাং মাত্র দুটি রিং।
প্রতিটি পৃষ্ঠার জন্য চারটি সম্ভাব্য রিং থাকার জন্য, তাদের প্রতিটি পৃষ্ঠার টেবিল এন্ট্রিতে দুটি সুরক্ষা বিট থাকতে হবে, চারটি সম্ভাব্য রিং সংখ্যার মধ্যে একটিকে এনকোড করতে (সেগমেন্ট বর্ণনাকারীর মতোই)। তারা না।
দ্বিতীয় কারণটি হ'ল ওএস বহনযোগ্যতার লক্ষ্য। এটি কেবল x86 এর নয়; ইউনিক্স আমাদের শিখিয়েছে যে কোনও ওএস একাধিক প্রসেসরের আর্কিটেকচারের জন্য তুলনামূলকভাবে বহনযোগ্য হতে পারে এবং এটি একটি ভাল জিনিস ছিল। এবং কিছু প্রসেসর কেবল দুটি রিং সমর্থন করে। আর্কিটেকচারে একাধিক রিংয়ের উপর নির্ভর না করে ওএস প্রয়োগকারীরা ওএসকে আরও বহনযোগ্য করে তোলে।
তৃতীয় কারণ রয়েছে যা উইন্ডোজ এনটি বিকাশের সাথে সম্পর্কিত। এনটি-র ডিজাইনার (ডেভিড কাটার এবং তার দল, যাদের মাইক্রোসফ্ট ডিসি পশ্চিমাঞ্চলীয় ল্যাবগুলি থেকে দূরে রেখেছিল) ভিএমএসে বিস্তৃত পূর্ব অভিজ্ঞতা ছিল; আসলে, কাটার এবং অন্যান্য কয়েকজন ভিএমএসের মূল ডিজাইনারদের মধ্যে ছিলেন। এবং ভ্যাক্স প্রসেসরের যার জন্য ভিএমএস ডিজাইন করা হয়েছিল (এবং বিপরীতে) এর চারটি রিং রয়েছে। ভিএমএস চারটি রিং ব্যবহার করে। (আসলে ভ্যাক্সের পিটিইতে চারটি সুরক্ষা বিট রয়েছে যা "কেবল ব্যবহারকারী মোড থেকে পঠনযোগ্য, তবে রিং 2 এবং অভ্যন্তর থেকে লেখার যোগ্য।" তবে আমি ডিগ্রিরিং করি))
কিন্তু ভিএমএসের রিং 1 এবং 2 এর মধ্যে থাকা উপাদানগুলি (রেকর্ড ম্যানেজমেন্ট সার্ভিসেস এবং সি এল এল, রেস।) এনটি ডিজাইনের বাইরে ছিল না। ভিএমএসে রিং 2 রিংটি আসলে ওএস সুরক্ষা সম্পর্কে নয় বরং একটি প্রোগ্রাম থেকে অন্য প্রোগ্রামে ব্যবহারকারীর সিএলআই পরিবেশ সংরক্ষণের বিষয়ে ছিল, এবং উইন্ডোজ এনটি-তে কেবল এই ধারণাটি ছিল না; সিএলআই একটি সাধারণ প্রক্রিয়া হিসাবে চলে। ভিএমএসের রিং 1 এর ক্ষেত্রে, 1 টিতে থাকা আরএমএস কোডটি প্রায়শই 0 টি রিংয়ে কল করতে হয়েছিল এবং রিং রূপান্তর ব্যয়বহুল। এটি কেবল রিং 0 এ যেতে আরও বেশি দক্ষ হতে দেখা গেছে এবং রিং 1 কোডের মধ্যে প্রচুর রিং 0 ট্রানজিশন না করে এটি দিয়ে সম্পন্ন করুন। (আবার - এনটিএসের আরএমএসের মতো কিছু নেই not)
তবে তারা কেন সেখানে আছেন? কেন ওএসগুলি সেগুলি ব্যবহার না করার সময় কেন x86 চারটি রিং প্রয়োগ করেছিল - আপনি x86 এর চেয়ে অনেক বেশি সাম্প্রতিক ডিজাইনের OS এর কথা বলছেন। এনটি বা সত্য ইউনিক্স-ইশ কার্নেলগুলি এর উপর প্রয়োগ করার আগে x86 এর অনেকগুলি "সিস্টেম প্রোগ্রামিং" বৈশিষ্ট্য ডিজাইন করা হয়েছিল এবং ওএসগুলি কী ব্যবহার করবে তা তারা সত্যিই জানত না। (আমরা x86-এ পেজিং না হওয়া পর্যন্ত হয়নি - যা 80386 অবধি দেখা যায়নি - আমরা গ্রাউন্ড থেকে মেমরির ব্যবস্থাপনার বিষয়ে পুনর্বিবেচনা না করে সত্য ইউনিক্স-ইশ বা ভিএমএস-এর মতো কার্নেলগুলি প্রয়োগ করতে পারি।)
আধুনিক x86 ওএসগুলি কেবল বৃহত্ভাগে সেগমেন্টিং উপেক্ষা করে না (তারা কেবলমাত্র সিএস, ডি এবং এস বিভাগগুলিকে সেট করে দেয় বেস ঠিকানা 0 এবং 4 গিগাবাইটের আকারের সাথে; এফ এবং জি বিভাগগুলি কখনও কখনও কী ওএস ডেটা স্ট্রাকচারের দিকে নির্দেশ করতে ব্যবহৃত হয়), তারাও মূলত "টাস্ক রাষ্ট্র বিভাগগুলি" এর মতো জিনিসগুলিকে উপেক্ষা করুন। টিএসএস মেকানিজম সুস্পষ্টভাবে থ্রেড প্রসঙ্গের স্যুইচিংয়ের জন্য ডিজাইন করা হয়েছিল তবে এটির অনেক বেশি পার্শ্ব প্রতিক্রিয়া দেখা যায়, তাই আধুনিক x86 ওএস এটি "হাত ধরে" করে। একমাত্র সময় x86 এনটি হার্ডওয়্যার কার্যগুলিকে পরিবর্তন করে, উদাহরণস্বরূপ, কিছু সত্যিকারের ব্যতিক্রমী অবস্থার জন্য যেমন ডাবল ফল্ট ব্যতিক্রম।
এক্স x64, এই অব্যবহৃত বৈশিষ্ট্যগুলির অনেক কিছুই বাদ ছিল। (তাদের ক্রেডিট হিসাবে, এএমডি আসলে ওএস কার্নেল টিমের সাথে কথা বলেছিল এবং x86 থেকে তাদের কী প্রয়োজন, কী প্রয়োজন বা কী চায় না এবং তারা কী যুক্ত করতে চায় তা জিজ্ঞাসা করেছিল।) x64 এ বিভাগগুলি কেবল কী হতে পারে তার মধ্যে রয়েছে ভিসিফিকাল ফর্ম বলা হয়, টাস্ক স্টেট স্যুইচিংয়ের অস্তিত্ব নেই, ইত্যাদি এবং ওএসগুলি কেবল দুটি রিং ব্যবহার করা চালিয়ে যায়।