কার্নেল এবং ব্যবহারকারী মোড পার্থক্য


6

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

উত্তর:


5

এইচএম, মোটামুটি আকর্ষণীয় প্রশ্ন। আমি সাহায্য করার চেষ্টা করব ...

প্রক্রিয়াটি কার্নেল মোডে বা ব্যবহারকারী মোডে রয়েছে তা নির্ধারণের জন্য কে দায়বদ্ধ?

ওএস ডিজাইনাররা এটি সিদ্ধান্ত নেয় :-)। সমস্ত আধুনিক ওএস ব্যবহারকারী মোডে সমস্ত প্রক্রিয়া চালায় (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.


এটি অনেক সাহায্য করে। তবে আমার কাছে এখনও একটি বিষয় অস্পষ্ট। আপনি বলেছিলেন যে সিপিইউটি যে মোডে চলছে তা সম্পর্কে সচেতন, তবে কীভাবে? এটি নির্দেশের শব্দের কিছু বিট? আমি মনে করি কার্নেলটি এটির মোডটি বলতে হবে, কার্নেল কীভাবে এটি করে?
কামরান

@ কামরান: মোডটি "নির্দেশের কথায় বিটস" নয়। এটি সিপিইউ রাজ্যের অংশ, যা সিপিইউ তার নিজের উপর নজর রাখে। আমি আমার উত্তরে কিছু তথ্য যুক্ত করেছি; আশা করি এটি আপনার প্রশ্নের উত্তর দেয়।
স্ল্যাস্ক করুন

1

কার্নেল এবং ব্যবহারকারী মোড সিপিইউর বিভিন্ন সুরক্ষা মোড। প্রায়শই সিপিইউগুলি ওএস স্তরে প্রয়োগ করা এই দুটি মোডের চেয়েও বেশি সরবরাহ করে।

আরও তথ্যের জন্য দেখুন

সিপিইউ মোড

এবং

বিমূর্ততার সিপিইউ এবং ওএস স্তরের মধ্যে আন্তঃযোগিতা


1

আপনার প্রশ্নের মূল উত্তরটি হ'ল: "বাধা আসলে সিপিইউ কার্নেল মোডে স্যুইচ করে।" ওএস নিজেই যেমন সেট হয়ে যাচ্ছে, বুট প্রক্রিয়াতে, বাধা (হ্যান্ডলারগুলি) এর ভেক্টরগুলি, এগুলি সমস্ত ... কার্নেলের দিকে নির্দেশ করছে। একটি প্রক্রিয়া দ্বারা করা প্রতিটি সিস্টেম কল একটি (সফ্টওয়্যার) বাধা ব্যতীত আর কিছুই নয়, তার অর্থ হ'ল বাধা হ্যান্ডলারকে কল করা যা নিজে কার্নেল ছাড়া আর কিছুই নয় (রেজিস্টারে নির্দিষ্ট প্যারামিটার সহ)।

কার্নেল, কোনও ব্যবহারকারী প্রসেসকে নিয়ন্ত্রণ দেওয়ার আগে টাইমার সেট করে কিছু সময়ের পরে একটি বাধা তৈরি করে, প্রসেসরটিকে ব্যবহারকারী মোডে সেট করে এবং তারপরে ব্যবহারকারী প্রক্রিয়াটিকে নিয়ন্ত্রণ দেয়। কিছু সময়ের পরে, টাইমার বিঘ্ন সৃষ্টি করে এবং নিয়ন্ত্রণটি কার্নেলের কাছে ফিরে আসে।

অবশ্যই: টাইমারের সাথে বাজানো, বিঘ্নিত ভেক্টরগুলি (হ্যান্ডলারের) সাথে খেলানো এবং সিপিইউ মোডের সাথে বাজানো সমস্ত সুবিধাজনক নির্দেশনা এবং কার্নেল-মোড প্রক্রিয়াগুলিতে অনুমোদিত (এটি কার্নেল নিজেই)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.