ব্যবহারকারী মোড এবং কার্নেল মোডের মধ্যে পার্থক্যগুলি কীভাবে, আপনি কেন এবং কীভাবে তাদের উভয়টিকে সক্রিয় করেন এবং তাদের ব্যবহারের ক্ষেত্রে কী কী?
ব্যবহারকারী মোড এবং কার্নেল মোডের মধ্যে পার্থক্যগুলি কীভাবে, আপনি কেন এবং কীভাবে তাদের উভয়টিকে সক্রিয় করেন এবং তাদের ব্যবহারের ক্ষেত্রে কী কী?
উত্তর:
কার্নেল মোড
কার্নেল মোডে, এক্সিকিউটিভ কোডটির অন্তর্নিহিত হার্ডওয়্যারটিতে সম্পূর্ণ এবং সীমাহীন অ্যাক্সেস রয়েছে। এটি কোনও সিপিইউ নির্দেশনা কার্যকর করতে পারে এবং যেকোন মেমরি ঠিকানা রেফারেন্স করতে পারে। কার্নেল মোড সাধারণত অপারেটিং সিস্টেমের সর্বনিম্ন-স্তরের, সবচেয়ে নির্ভরযোগ্য ফাংশনগুলির জন্য সংরক্ষিত থাকে। কার্নেল মোডে ক্র্যাশগুলি বিপর্যয়কর; তারা পুরো পিসি থামিয়ে দেবে।
ব্যবহারকারী মোড
ব্যবহারকারী মোডে, এক্সিকিউটিভ কোডটিতে সরাসরি হার্ডওয়্যার বা রেফারেন্স মেমরি অ্যাক্সেস করার ক্ষমতা নেই। ব্যবহারকারী মোডে চলমান কোডগুলিতে হার্ডওয়্যার বা মেমরির অ্যাক্সেসের জন্য সিস্টেম API গুলি প্রেরণ করতে হবে। এই ধরণের বিচ্ছিন্নতার দ্বারা সরবরাহিত সুরক্ষার কারণে, ব্যবহারকারী মোডে ক্রাশগুলি সর্বদা পুনরুদ্ধারযোগ্য। আপনার কম্পিউটারে চলমান বেশিরভাগ কোড ব্যবহারকারী মোডে কার্যকর করা হবে।
আরও পড়ুন
এটি দুটি পৃথক মোড যা আপনার কম্পিউটার পরিচালনা করতে পারে। এর আগে, কম্পিউটারগুলি যখন বড় ঘরের মতো ছিল, যদি কোনও কিছু ক্র্যাশ হয়ে যায় - এটি পুরো কম্পিউটারকে থামিয়ে দেয়। সুতরাং কম্পিউটার স্থপতিরা এটি পরিবর্তন করার সিদ্ধান্ত নেন। আধুনিক মাইক্রোপ্রসেসরগুলি হার্ডওয়্যারটিতে কমপক্ষে 2 টি পৃথক রাজ্যে প্রয়োগ করে।
ব্যবহারকারী মোড:
কার্নেল মোড:
কীভাবে সুইচ হয়।
ব্যবহারকারী মোড থেকে কার্নেল মোডে স্যুইচ স্বয়ংক্রিয়ভাবে সিপিইউ দ্বারা সম্পন্ন হয় না। সিপিইউ বাধাপ্রাপ্ত হয় (টাইমারস, কীবোর্ড, আই / ও) দ্বারা। যখন বাধা ঘটে তখন সিপিইউ চলমান চলমান প্রোগ্রামটি চালানো বন্ধ করে দেয়, কার্নেল মোডে স্যুইচ করে, বাধা হ্যান্ডলার চালায় exec এই হ্যান্ডলারটি সিপিইউ রাজ্যটি সংরক্ষণ করে, তার ক্রিয়াকলাপ সম্পাদন করে, রাজ্য পুনরুদ্ধার করে এবং ব্যবহারকারী মোডে ফিরে আসে।
http://en.wikibooks.org/wiki/Windows_Programming/User_Mode_vs_Kernel_Mode
http://tldp.org/HOWTO/KernelAnalysis-HOWTO-3.html
উইন্ডোজ চলমান কম্পিউটারে একটি প্রসেসরের দুটি পৃথক মোড রয়েছে: ব্যবহারকারী মোড এবং কার্নেল মোড। প্রসেসরের উপর কোন ধরণের কোড চলছে তা নির্ভর করে প্রসেসর দুটি মোডের মধ্যে স্যুইচ করে। অ্যাপ্লিকেশনগুলি ব্যবহারকারী মোডে চালিত হয় এবং কোর অপারেটিং সিস্টেমের উপাদানগুলি কার্নেল মোডে চালিত হয়। অনেক ড্রাইভার কার্নেল মোডে চলাকালীন, কিছু ড্রাইভার ব্যবহারকারী মোডে চলতে পারে।
আপনি যখন ব্যবহারকারী-মোড অ্যাপ্লিকেশন শুরু করেন, উইন্ডোজ অ্যাপ্লিকেশনটির জন্য একটি প্রক্রিয়া তৈরি করে। প্রক্রিয়াটি একটি ব্যক্তিগত ভার্চুয়াল ঠিকানা স্থান এবং একটি ব্যক্তিগত হ্যান্ডেল টেবিল সহ অ্যাপ্লিকেশন সরবরাহ করে। কারণ কোনও অ্যাপ্লিকেশনটির ভার্চুয়াল ঠিকানার স্থানটি ব্যক্তিগত, একটি অ্যাপ্লিকেশন অন্য অ্যাপ্লিকেশনের সাথে সম্পর্কিত ডেটা পরিবর্তন করতে পারে না। প্রতিটি অ্যাপ্লিকেশন বিচ্ছিন্নভাবে চলে এবং যদি কোনও অ্যাপ্লিকেশন ক্র্যাশ হয় তবে ক্র্যাশটি সেই এক অ্যাপ্লিকেশনের মধ্যে সীমাবদ্ধ। অন্যান্য অ্যাপ্লিকেশন এবং অপারেটিং সিস্টেম ক্র্যাশ দ্বারা প্রভাবিত হয় না।
ব্যক্তিগত থাকার পাশাপাশি, ব্যবহারকারী-মোড অ্যাপ্লিকেশনটির ভার্চুয়াল ঠিকানা স্থান সীমাবদ্ধ। ব্যবহারকারী মোডে চলমান একটি প্রসেসর অপারেটিং সিস্টেমের জন্য সংরক্ষিত ভার্চুয়াল ঠিকানাগুলি অ্যাক্সেস করতে পারে না। কোনও ব্যবহারকারী-মোড অ্যাপ্লিকেশনটির ভার্চুয়াল ঠিকানা স্থান সীমাবদ্ধ করা অ্যাপ্লিকেশনটিকে পরিবর্তন হওয়া, এবং সম্ভবত ক্ষতিকারক, সমালোচনামূলক অপারেটিং সিস্টেমের ডেটা থেকে বাধা দেয়।
কার্নেল মোডে চলমান সমস্ত কোড একক ভার্চুয়াল ঠিকানার স্থান ভাগ করে দেয়। এর অর্থ হ'ল কার্নেল-মোড ড্রাইভার অন্য ড্রাইভার এবং অপারেটিং সিস্টেম থেকে পৃথক নয়। যদি কার্নেল-মোড ড্রাইভার ভুলক্রমে ভুল ভার্চুয়াল ঠিকানায় লিখেন, অপারেটিং সিস্টেমের সাথে সম্পর্কিত অন্য কোনও ড্রাইভার বা অন্য ড্রাইভারের সাথে আপস করা যেতে পারে। কার্নেল-মোড ড্রাইভার ক্র্যাশ হলে পুরো অপারেটিং সিস্টেমটি ক্র্যাশ হয়ে যায়।
আপনি যদি উইন্ডোজ ব্যবহারকারী হন তবে এই লিঙ্কটি একবার ব্যবহার করলে আপনি আরও পাবেন।
সিপিইউ রিংগুলি সবচেয়ে স্পষ্ট পার্থক্য
X86 সুরক্ষিত মোডে, সিপিইউ সর্বদা 4 টি রিংয়ের মধ্যে থাকে। লিনাক্স কার্নেলটি কেবল 0 এবং 3 ব্যবহার করে:
এটি কার্নেল বনাম ব্যবহারকারীল্যান্ডের সর্বাধিক শক্ত এবং দ্রুত সংজ্ঞা।
কেন লিনাক্স 1 এবং 2 রিং ব্যবহার করে না: সিপিইউ প্রিভিলেজ রিং: 1 এবং 2 এর রিংগুলি কেন ব্যবহার করা হয় না?
বর্তমান রিংটি কীভাবে নির্ধারিত হয়?
বর্তমান রিং এর সংমিশ্রণ দ্বারা নির্বাচিত হয়েছে:
গ্লোবাল বর্ণনাকারী টেবিল: জিডিটি এন্ট্রিগুলির একটি মেমরি টেবিল এবং প্রতিটি প্রবেশের একটি ক্ষেত্র রয়েছে Privl
যা রিংকে এনকোড করে।
LGDT নির্দেশিকা বর্তমান বর্ণনাকারী সারণিতে ঠিকানাটি সেট করে।
আরও দেখুন: http://wiki.osdev.org/ গ্লোবাল_ডেস্কিটার_আপনযোগ্য
বিভাগটি সিএস, ডিএস ইত্যাদি রেজিস্ট্রেশন করে, যা জিডিটিতে প্রবেশের সূচকে নির্দেশ করে।
উদাহরণস্বরূপ, CS = 0
জিডিটি-র প্রথম এন্ট্রি কার্যকরকারী কোডের জন্য বর্তমানে সক্রিয়।
প্রতিটি রিং কী করতে পারে?
সিপিইউ চিপটি শারীরিকভাবে তৈরি করা হয়েছে যাতে:
রিং 0 কিছু করতে পারে
3 রিং বেশ কয়েকটি নির্দেশনা চালাতে এবং কয়েকটি নিবন্ধগুলিতে লিখতে পারে না, উল্লেখযোগ্য:
নিজের আংটি বদলাতে পারে না! অন্যথায়, এটি নিজেকে 0 বেজে উঠতে পারে এবং রিংগুলি অকেজো হবে।
অন্য কথায়, বর্তমান বিভাগটি বর্ণনাকারী সংশোধন করতে পারে না , যা বর্তমান রিংটি নির্ধারণ করে।
পৃষ্ঠার সারণিগুলি সংশোধন করতে পারে না: x86 পেজিং কীভাবে কাজ করে?
অন্য কথায়, সিআর 3 রেজিস্টারটি সংশোধন করতে পারে না এবং নিজেই পেজিং পৃষ্ঠার সারণিগুলির সংশোধন প্রতিরোধ করে।
সুরক্ষা / প্রোগ্রামিং কারণে স্বাচ্ছন্দ্যের জন্য এটি অন্য প্রক্রিয়াগুলির স্মৃতি দেখতে এক প্রক্রিয়াটিকে বাধা দেয়।
বাধা হ্যান্ডলারদের নিবন্ধন করতে পারবেন না। এগুলি মেমোরি অবস্থানগুলিতে লিখে কনফিগার করা হয়, যা পেজিংয়ের মাধ্যমেও প্রতিরোধ করা হয়।
হ্যান্ডলারগুলি 0 রিংয়ে চলে এবং সুরক্ষা মডেলটি ভেঙে দেয়।
অন্য কথায়, LGDT এবং LIDT নির্দেশাবলী ব্যবহার করতে পারবেন না।
আইও নির্দেশাবলী পছন্দ করতে পারে না in
এবং এর মতো এবং out
ইচ্ছামত হার্ডওয়্যার অ্যাক্সেস থাকতে পারে।
অন্যথায়, উদাহরণস্বরূপ, কোনও প্রোগ্রাম সরাসরি ডিস্ক থেকে পড়তে পারলে ফাইল অনুমতিগুলি অকেজো হবে।
মাইকেল পেচকে আরও স্পষ্টভাবে ধন্যবাদ : ওএসের পক্ষে 3 টি রিংয়ের আইও নির্দেশনা মঞ্জুরি দেওয়া সম্ভব, এটি আসলে টাস্ক রাষ্ট্র বিভাগ দ্বারা নিয়ন্ত্রিত হয় ।
3 টি রিংয়ের পক্ষে যা সম্ভব নয় তা যদি এটির প্রথম স্থানে না থাকে তবে তা করার অনুমতি দেয়।
লিনাক্স সর্বদা এটি অস্বীকার করে। আরও দেখুন: কেন লিনাক্স টিএসএসের মাধ্যমে হার্ডওয়্যার প্রসঙ্গটি স্যুইচ ব্যবহার করে না?
কীভাবে প্রোগ্রামগুলি এবং অপারেটিং সিস্টেমগুলি রিংগুলির মধ্যে রূপান্তর করে?
যখন সিপিইউ চালু হয়, তখন এটি 0 টি রিংয়ে প্রাথমিক প্রোগ্রামটি চালানো শুরু করে (ভাল ধরণের, তবে এটি একটি ভাল আনুমানিকতা)। আপনি এই প্রাথমিক প্রোগ্রামটিকে কার্নেল হিসাবে ভাবতে পারেন (তবে এটি সাধারণত বুটলোডার হয় যা কার্নেলটিকে এখনও রিং 0-এ কল করে )।
যখন একটি userland প্রক্রিয়া কার্নেল একটি ফাইলে লেখা মত জন্য কিছু করতে চায়, এটা একটি নির্দেশ যে যেমন বিঘ্ন একটি উত্পন্ন ব্যবহার int 0x80
বাsyscall
কার্নেল সংকেত। x86-64 লিনাক্স সিস্কেল হ্যালো বিশ্বের উদাহরণ:
.data
hello_world:
.ascii "hello world\n"
hello_world_len = . - hello_world
.text
.global _start
_start:
/* write */
mov $1, %rax
mov $1, %rdi
mov $hello_world, %rsi
mov $hello_world_len, %rdx
syscall
/* exit */
mov $60, %rax
mov $0, %rdi
syscall
সংকলন এবং চালনা:
as -o hello_world.o hello_world.S
ld -o hello_world.out hello_world.o
./hello_world.out
এটি হওয়ার পরে, সিপিইউ একটি বাধা কলব্যাক হ্যান্ডলারকে কল করে যা কার্নেল বুটের সময় নিবন্ধিত হয়েছিল। এখানে একটি কংক্রিট খোলামেলা উদাহরণ যা কোনও হ্যান্ডলারের নিবন্ধন করে এবং এটি ব্যবহার করে ।
এই হ্যান্ডলারটি 0 রিংয়ে চলেছে, যা কার্নেলটি এই ক্রিয়াটি অনুমতি দেবে, ক্রিয়াটি করবে এবং ইউজারল্যান্ড প্রোগ্রামটি রিং 3-এ পুনরায় চালু করবে কিনা তা স্থির করে দেয়। x86_64
যখন exec
সিস্টেম কল ব্যবহৃত হয় (বা যখন কার্নেলটি শুরু হবে/init
), কার্নেলটি নতুন ইউজারল্যান্ড প্রক্রিয়াটির রেজিস্টার এবং মেমরি প্রস্তুত করে , তখন এটি প্রবেশের পয়েন্টে লাফিয়ে যায় এবং সিপিইউ 3 বাজায় পরিবর্তিত হয়
প্রোগ্রামটি যদি কোনও নিষিদ্ধ রেজিস্টার বা মেমরির ঠিকানাতে (পেজিংয়ের কারণে) দুষ্টু কিছু করার চেষ্টা করে তবে সিপিইউ রিং 0-তে কিছু কার্নেল কলব্যাক হ্যান্ডলারকে কল করে।
তবে যেহেতু ইউজারল্যান্ড দুষ্টু ছিল, তাই কার্নেলটি এবার প্রক্রিয়াটি মেরে ফেলবে বা সিগন্যাল দিয়ে এটিকে একটি সতর্কতা দেবে।
যখন কার্নেল বুট হয়, এটি কিছু স্থির ফ্রিকোয়েন্সি সহ একটি হার্ডওয়্যার ঘড়ি সেটআপ করে, যা সময়ে সময়ে বিঘ্ন সৃষ্টি করে।
এই হার্ডওয়্যার ক্লকটি রিং 0 চালিত করে এমন বিঘ্ন সৃষ্টি করে এবং কোন ইউজারল্যান্ড জেগে উঠার প্রক্রিয়াটি নির্ধারণ করার অনুমতি দেয়।
প্রক্রিয়াগুলি কোনও সিস্টেম কল না করলেও এই সময়সূচিটি ঘটতে পারে।
একাধিক রিং থাকার মানে কী?
কার্নেল এবং ইউজারল্যান্ড পৃথক করার দুটি বড় সুবিধা রয়েছে:
এর সাথে কীভাবে খেলা হবে?
আমি একটি খালি ধাতব সেটআপ তৈরি করেছি যা রিংগুলি সরাসরি পরিচালনা করার জন্য ভাল উপায় হওয়া উচিত: https://github.com/cirosantilli/x86-bare-metal- উদাহরণ
দুর্ভাগ্যক্রমে কোনও ইউজারল্যান্ডের উদাহরণ তৈরি করার ধৈর্য আমার ছিল না, তবে আমি পেজিং সেটআপ হিসাবে এগিয়ে গিয়েছি, তাই ইউজারল্যান্ডটি সম্ভব হবে। আমি একটি টান অনুরোধ দেখতে চাই।
বিকল্পভাবে, লিনাক্স কার্নেল মডিউলগুলি 0 রিংয়ে চলেছে, তাই আপনি সুবিধাপ্রাপ্ত অপারেশনগুলি চেষ্টা করে দেখতে পারেন, উদাহরণস্বরূপ নিয়ন্ত্রণ রেজিস্টারগুলি পড়ুন: প্রোগ্রাম থেকে নিয়ন্ত্রণ রেজিস্টার cr0, cr2, cr3 কীভাবে অ্যাক্সেস করবেন? বিভাগকরণ ত্রুটি প্রাপ্তি
আপনার হোস্টকে হত্যা না করে এটি চেষ্টা করার জন্য এখানে একটি সুবিধাজনক কিউইউ + বিল্ড্রুট সেটআপ রয়েছে is
কার্নেল মডিউলগুলির সর্বনিম্নতাটি হ'ল অন্যান্য কাঁথ্রেডগুলি চলছে এবং আপনার পরীক্ষায় হস্তক্ষেপ করতে পারে। তবে তত্ত্ব অনুসারে আপনি আপনার কার্নেল মডিউল সহ সমস্ত বাধাপ্রাপ্ত হ্যান্ডলারগুলি নিতে এবং সিস্টেমটির মালিক হতে পারেন, এটি আসলে একটি আকর্ষণীয় প্রকল্প হবে be
নেতিবাচক রিং
নেতিবাচক রিংগুলি আসলে ইন্টেল ম্যানুয়ালটিতে উল্লেখ করা হয়নি, তবে আসলে সিপিইউ মোড রয়েছে যা রিং 0 এর চেয়ে আরও বেশি ক্ষমতা সম্পন্ন এবং "নেতিবাচক রিং" নামের জন্য এটি বেশ উপযুক্ত।
একটি উদাহরণ হ'ল ভার্চুয়ালাইজেশনে ব্যবহৃত হাইপারভাইজার মোড।
আরও তথ্যের জন্য দেখুন:
এআরএম
এআরএম-এ, রিংগুলিকে পরিবর্তে ব্যতিক্রমী স্তর বলা হয়, তবে মূল ধারণাগুলি একই থাকে।
এআরএমভি 8 এ 4 টি ব্যতিক্রম স্তর রয়েছে যা সাধারণত:
EL0: ইউজারল্যান্ড
EL1: কার্নেল (এআরএম পরিভাষায় "সুপারভাইজার")।
svc
ইন্সট্রাকশন (সুপারভাইজার কল) দিয়ে প্রবেশ করানো হয়েছে , পূর্বে swi
ইউনিফাইড সমাবেশ হিসাবে পরিচিত , এটি লিনাক্স সিস্টেম কল করার জন্য ব্যবহৃত নির্দেশ। হ্যালো ওয়ার্ল্ড এআরএমভি 8 উদাহরণ:
hello.s
.text
.global _start
_start:
/* write */
mov x0, 1
ldr x1, =msg
ldr x2, =len
mov x8, 64
svc 0
/* exit */
mov x0, 0
mov x8, 93
svc 0
msg:
.ascii "hello syscall v8\n"
len = . - msg
উবুন্টু 16.04 এ কিউইএমইউ দিয়ে এটি পরীক্ষা করে দেখুন:
sudo apt-get install qemu-user gcc-arm-linux-gnueabihf
arm-linux-gnueabihf-as -o hello.o hello.S
arm-linux-gnueabihf-ld -o hello hello.o
qemu-arm hello
এখানে একটি কংক্রিট খোলামেলা উদাহরণ যা একটি এসভিসি হ্যান্ডলারটিকে নিবন্ধভুক্ত করে এবং এসভিসি কল করে ।
EL2: হাইপারভাইজারস , উদাহরণস্বরূপ জেন ।
hvc
নির্দেশের মাধ্যমে প্রবেশ (হাইপারভাইজার কল)।
হাইপারভাইজার একটি ওএসের কাছে হয়, ইউএসল্যান্ডের মধ্যে একটি ওএস কী।
উদাহরণস্বরূপ, জেন আপনাকে একই সময়ে একই সিস্টেমে লিনাক্স বা উইন্ডোজের মতো একাধিক ওএস চালানোর অনুমতি দেয় এবং এটি সুরক্ষার জন্য এবং ডিবাগের স্বাচ্ছন্দ্যের জন্য ওএসগুলি একে অপরের থেকে পৃথক করে, যেমন লিনাক্স ইউজারল্যান্ড প্রোগ্রামগুলির জন্য করে।
হাইপারভাইজারগুলি আজকের মেঘ অবকাঠামোর একটি মূল অঙ্গ: তারা হার্ডওয়্যার ব্যবহারকে সর্বদা 100% এর কাছাকাছি রেখে এবং প্রচুর অর্থ সাশ্রয় করে একাধিক সার্ভারকে একক হার্ডওয়ারে চালানোর অনুমতি দেয়।
এডাব্লুএস উদাহরণস্বরূপ জেনকে 2017 পর্যন্ত ব্যবহার করা হয়েছিল যখন কেভিএম-তে এটি সরানো খবরটি তৈরি করে ।
EL3: আরও একটি স্তর। TODO উদাহরণ।
smc
নির্দেশের মাধ্যমে প্রবেশ করা (সিকিউর মোড কল)
ARMv8 আর্কিটেকচার রেফারেন্স মডেল DDI 0487C.a - অধ্যায় D1 - AArch64 সিস্টেম লেভেলে প্রোগ্রামার এর মডেল - চিত্র D1-1 এই beautifully ব্যাখ্যা করে:
এআরএম পরিস্থিতি এআরএমভি 8.1 ভার্চুয়ালাইজেশন হোস্ট এক্সটেনশানস (ভিএইচই) এর আবির্ভাবের সাথে কিছুটা পরিবর্তন হয়েছিল । এই এক্সটেনশনটি কার্নেলটিকে EL2 এ দক্ষতার সাথে চালানোর অনুমতি দেয়:
ভিএইচই তৈরি করা হয়েছিল কারণ ইন-লিনাক্স-কার্নেল ভার্চুয়ালাইজেশন সমাধান যেমন কেভিএম জেনের উপরে ভিত্তি অর্জন করেছে (উদাহরণস্বরূপ এডাব্লুএস'র উপরে উল্লিখিত কেভিএমে স্থানান্তর দেখুন), কারণ বেশিরভাগ ক্লায়েন্টকে কেবল লিনাক্স ভিএম দরকার হয়, এবং আপনি যেমন কল্পনা করতে পারেন, সমস্তই এককভাবে রয়েছে প্রকল্প, কেভিএম জেনের চেয়ে সহজ এবং সম্ভাব্যতর দক্ষ more সুতরাং এখন হোস্ট লিনাক্স কার্নেল সেই ক্ষেত্রে হাইপারভাইজার হিসাবে কাজ করে।
নোটার স্তরের প্রয়োজন ছাড়াই কীভাবে এআরএম, সম্ভবত পর্দার উপকারের কারণে, x86 এর চেয়ে বিশেষাধিকারের স্তরের জন্য নামকরণের একটি আরও ভাল কনভেনশন করেছে তা নোট করুন: 0 নিম্ন এবং 3 সর্বোচ্চ। নিম্ন স্তরের তুলনায় উচ্চতর স্তরগুলি প্রায়শই তৈরি হতে থাকে।
বর্তমান EL MRS
নির্দেশাবলী জিজ্ঞাসা করা যেতে পারে : বর্তমান এক্সিকিউশন মোড / ব্যতিক্রম স্তর কি, ইত্যাদি?
চিপ অঞ্চলটি সংরক্ষণ করার জন্য বৈশিষ্ট্যের প্রয়োজন নেই এমন বাস্তবায়নগুলির জন্য মঞ্জুরি দেওয়ার জন্য এআরএম সমস্ত ব্যতিক্রম স্তর উপস্থিত থাকার প্রয়োজন হয় না। এআরএমভি 8 "ব্যতিক্রম স্তরগুলি" বলেছেন:
কোনও প্রয়োগে ব্যতিক্রমের সমস্ত স্তরের অন্তর্ভুক্ত নাও হতে পারে। সমস্ত বাস্তবায়নে অবশ্যই EL0 এবং EL1 অন্তর্ভুক্ত থাকতে হবে। EL2 এবং EL3 alচ্ছিক।
উদাহরণস্বরূপ কিউইএমইউ EL1 এর ডিফল্ট, তবে EL2 এবং EL3 কমান্ড লাইন বিকল্পের সাহায্যে সক্ষম হতে পারে: a53 পাওয়ার আপ অনুকরণ করার সময় qemu-system-aarch64 এলএতে প্রবেশ করে
উবুন্টু 18.10 এ কোড স্নিপেট পরীক্ষা করা হয়েছে।
in
এবং out
এটি ৩ টি রিংয়ের জন্য উপলভ্য The তবে টিএসএস বর্তমান বা টাস্কের সমস্ত বা নির্দিষ্ট বন্দরগুলিতে পঠন / লেখার অ্যাক্সেস মঞ্জুর করার জন্য একটি আইও অনুমতি সারণীতে নির্দেশ করতে পারে।
আমি অন্ধকারে ছুরিকাঘাত করব এবং অনুমান করুন যে আপনি উইন্ডোজ সম্পর্কে কথা বলছেন। সংক্ষেপে, কার্নেল মোডে হার্ডওয়্যারটিতে সম্পূর্ণ অ্যাক্সেস রয়েছে তবে ব্যবহারকারী মোড তা ব্যবহার করে না। উদাহরণস্বরূপ, না বেশিরভাগ ডিভাইস ড্রাইভার কার্নেল মোডে লিখিত হয় কারণ তাদের হার্ডওয়্যারটির সূক্ষ্ম বিবরণ নিয়ন্ত্রণ করতে হবে।
আরও দেখুন এই উইকিবুক ইন ।
অন্যান্য উত্তরগুলি ইতিমধ্যে ব্যবহারকারী এবং কার্নেল মোডের মধ্যে পার্থক্য ব্যাখ্যা করেছে। আপনি যদি সত্যই বিশদে যেতে চান তবে আপনার উইন্ডোজ ইন্টারনালসের একটি অনুলিপি পাওয়া উচিত , মার্ক রাশিনোভিচ এবং ডেভিড সলোমন রচিত একটি দুর্দান্ত বই যা বিভিন্ন উইন্ডোজ অপারেটিং সিস্টেমের আর্কিটেকচার এবং অভ্যন্তরের বিশদ বর্ণনা করে।
কি
মূলত কার্নেল এবং ব্যবহারকারী মোডের মধ্যে পার্থক্য ওএস নির্ভর নয় এবং কেবলমাত্র কার্নেল মোডে কেবলমাত্র হার্ডওয়্যার ডিজাইনের মাধ্যমে চালানোর জন্য কয়েকটি নির্দেশকে সীমাবদ্ধ করে তা অর্জন করা হয়। স্মৃতি সুরক্ষার মতো অন্যান্য সমস্ত উদ্দেশ্য কেবলমাত্র সেই বিধিনিষেধের মাধ্যমেই করা যেতে পারে।
কিভাবে
এর অর্থ হল যে প্রসেসরটি কার্নেল মোডে বা ব্যবহারকারী মোডে থাকে। কিছু প্রক্রিয়া ব্যবহার করে আর্কিটেকচারটি গ্যারান্টি দিতে পারে যে যখনই এটি কার্নেল মোডে স্যুইচ করা হবে তখন ওএস কোডটি চালানোর জন্য আনা হবে।
কেন
এই হার্ডওয়্যার অবকাঠামো থাকার ফলে এটি সাধারণ ওএসে অর্জন করা যেতে পারে: