এইচএম, মোটামুটি আকর্ষণীয় প্রশ্ন। আমি সাহায্য করার চেষ্টা করব ...
প্রক্রিয়াটি কার্নেল মোডে বা ব্যবহারকারী মোডে রয়েছে তা নির্ধারণের জন্য কে দায়বদ্ধ?
ওএস ডিজাইনাররা এটি সিদ্ধান্ত নেয় :-)। সমস্ত আধুনিক ওএস ব্যবহারকারী মোডে সমস্ত প্রক্রিয়া চালায় (x86 আর্কিটেকচারে "সুরক্ষিত মোডে" রিং 3 "), কারণ মেমরি সুরক্ষা এবং ভার্চুয়াল মেমরির মতো বৈশিষ্ট্যগুলি ব্যবহার করার জন্য এটি প্রয়োজনীয়। পুরানো এবং / অথবা সহজ ওএসগুলি কার্নেল মোডে সমস্ত প্রক্রিয়া চালাতে পারে (উদাহরণস্বরূপ x86 এ "রিয়েল মোড"); এটি ওএস ডিজাইনের উপর নির্ভর করে। উদাহরণস্বরূপ এমএস-ডস এইভাবে কাজ করেছে।
নোট করুন যে প্রকৃত নাম এবং প্রসেসরের মোডগুলির প্রকারগুলি বিভিন্ন আর্কিটেকচারের মধ্যে পৃথক (x86, স্পার্ক, পাওয়ারপিসি ...); তবে সমস্ত আধুনিক প্রসেসরের অনুরূপ "সুরক্ষিত" মোড রয়েছে, যাকে কেউ "ব্যবহারকারী" মোড বলতে পারে।
আমি জানি কার্নেল জানে যে কোন প্রক্রিয়াটি কোন স্থানের সাথে সম্পর্কিত তবে সিপিইউ কীভাবে এটি নির্ধারণ করে?
সিপিইউ এটি "জানে না", কারণ সিপিইউ প্রক্রিয়াগুলির কিছুই জানে না; এগুলি ওএস দ্বারা সরবরাহিত বিমূর্ততা। সিপিইউ কেবল এটি কোড প্রয়োগ করে যা এটি খাওয়ানো হয়। সিপিইউতে বিভিন্ন মোডের মধ্যে স্যুইচ করার নির্দেশনা রয়েছে এবং সিপিইউকে প্রয়োজনীয় মোডে ডান মোডে রাখার জন্য ওএস এই নির্দেশাবলী ব্যবহার করে।
উদাহরণস্বরূপ x86 এ, কম্পিউটারটি "রিয়েল মোড" (সামঞ্জস্যের কারণে) শুরু হবে will যখন কোনও ওএস যেমন লিনাক্স বা উইন্ডোজ (এনটি এবং আপ) বুট হয় তখন প্রথম কাজগুলির মধ্যে একটি হল "সুরক্ষিত মোড" এ স্যুইচ করা। এর পরে হার্ডওয়্যারটিতে প্রতিটি প্রোগ্রামের অ্যাক্সেস নিয়ন্ত্রণ করতে এটি "রিংগুলি" বৈশিষ্ট্যটি ব্যবহার করে। ওএস কার্নেলটি রিং 0 এ চালিত হয় (সম্পূর্ণ অধিকার); ব্যবহারকারী সফ্টওয়্যার 3 রিং চালিত (সীমাবদ্ধ)। ওএস যখনই ব্যবহারকারীর সফ্টওয়্যারটিতে নিয়ন্ত্রণ পাস করে (যেমন এটি যখন কোনও ব্যবহারকারী প্রক্রিয়া শুরু করে বা পুনরায় শুরু করে), এটি প্রথমে রিং 3 এ চলে যাবে Then তারপরে নিয়ন্ত্রণটি কার্নেলের কাছে ফিরে যায়, সিপিইউ রিং 0-এ ফিরে আসে।
মোডগুলি / রিংগুলির মধ্যে স্যুইচিং ঠিক কীভাবে কাজ করে তা সিপিইউ আর্কিটেকচারের উপর নির্ভর করে। বেশিরভাগ স্থাপত্যগুলি স্যুইচিংয়ের জন্য বিশেষ নির্দেশাবলী বা প্রক্রিয়া সরবরাহ করে। একবার সিপিইউ একটি নির্দিষ্ট মোড / রিং এ স্যুইচ হয়ে গেলে, এটি সেই মোডটি (এবং কোনও সম্পর্কিত বিধিনিষেধ) নিজের উপর রাখবে।
X86 আর্কিটেকচারে এটি কীভাবে কাজ করে তার বিশদগুলির জন্য এই নিবন্ধটি দেখুন: http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protication
সরাইয়া একটি হিসাবে: সুরক্ষা / সীমাবদ্ধ CPU- র মোড মধ্যে সীমাবদ্ধতা বেশিরভাগই দ্বারা প্রয়োগ করা হয় মেমরি ম্যানেজমেন্ট ইউনিট CPU- র। আরও পুরানো এবং / অথবা আরও সহজ প্রসেসর (যেমন অ্যামিগা এবং আতারি এসটি দ্বারা ব্যবহৃত মোটরোলা 68000 বা সি 64 এর 6510) এর এমএমইউ নেই; তাই তারা কোনও ওএস চালনা করতে পারে না যা কার্নেল এবং ব্যবহারকারী মোডকে পৃথক করে। এ কারণেই উদাহরণস্বরূপ লিনাক্স এম 68 কে পোর্টটি চালানোর জন্য কমপক্ষে একটি মটোরোলা 68020 প্রসেসরের প্রয়োজন; আগের 68000 এবং 68010 এর একটি এমএমইউ নেই।
মানে সিপিইউ কি প্রক্রিয়াটির মোড সম্পর্কে সচেতন হওয়া উচিত বা বিবৃতি কার্যকর করতে হবে? যদি হ্যাঁ কিভাবে?
হ্যাঁ, সিপিইউ এটির অর্থে সচেতন যে এটি বর্তমানে জানে যে কোন মোডে চলছে তা (যদিও এটি জানেন না)।
এবং যদি না হয় তবে ব্যবহারকারী যখন নিষিদ্ধ কিছু করতে চান? যখন আমরা বলি যে ব্যবহারকারী অ্যাপ্লিকেশনগুলি কেবল মেশিনগুলির সংস্থানগুলির একটি উপসেট দেখতে পাবে, আমি জানি এটির অর্থ অ্যাপ্লিকেশনগুলি সিপিইউতে উদাহরণস্বরূপ নির্দিষ্ট কাজগুলি করতে পারে না তবে কে এই জাতীয় কাজগুলি করার জন্য অ্যাপ্লিকেশনগুলি থামায় এবং আরও গুরুত্বপূর্ণ কীভাবে?
একটি খুব ভাল প্রশ্ন। সিপিইউ নিজেই অ্যাপ্লিকেশনটি বন্ধ করে দেয়।
যদি কোড (একটি অ্যাপ্লিকেশন) সীমিত সুযোগ-সুবিধা সহ মোডে চলছে (যেমন x86 এর সুরক্ষিত মোডে রিং 3), কোডটি না পারে এমন কিছু জিনিস রয়েছে (যেমন এটি নির্ধারিত অঞ্চলের বাইরে অ্যাক্সেস মেমরি)। সিপিইউ এটি জানে এবং কার্যকর করার পূর্বে সম্ভাব্য লঙ্ঘনের জন্য প্রতিটি নির্দেশ চেক করে। যদি কোনও লঙ্ঘন সনাক্ত করা হয়, সিপিইউ আপত্তিজনক কোডটি সম্পাদন করা বন্ধ করে দেয় (এটি একটি "ব্যতিক্রম" বা একটি হার্ডওয়্যার বিঘ্ন হিসাবে চিহ্নিত করা হয়), এবং একটি বিশেষ ত্রুটি হ্যান্ডলিং কোডে ঝাঁপ দেয় (যা আগেই ওএস দ্বারা সেট আপ করা হয়েছিল)।
এটি কার্যকরভাবে ওএস-এ নিয়ন্ত্রণ ফিরিয়ে দেয়, যা তখন এটি উপযুক্ত হিসাবে দেখাতে পারে: ডিস্ক থেকে মেমরি আনতে যদি ব্যতিক্রম ডিস্কে অদলবদল হওয়া মেমরির অ্যাক্সেসের কারণে ঘটে (এটি এইভাবে "পেজিং" কাজ করে), প্রক্রিয়াটি বন্ধ করে দেয় এটি অবৈধভাবে স্মৃতিতে অ্যাক্সেস পেয়েছে (ভয়ঙ্কর "সুরক্ষা দোষ" বা "বিভাগকরণ ত্রুটি") ইত্যাদি etc.