PDA

View Full Version : سوال: تفاوت بین user mode و kernel mode



Nima.Nima
دوشنبه 10 خرداد 1389, 19:46 عصر
سلام دوستان عزیز
میخواستم تعریفی از user modeوkernel mode رادر سیستمهای عامل بدونم و در ضمن تفاوت بین آنها را.
باتشکر

CYCLOPS
سه شنبه 11 خرداد 1389, 06:00 صبح
سلام دوست عزیز
ورودتون رو به سایت تبریک میگم :چشمک:
من هرچی فکر میکنم ربط این سوالتون رو به برنامه نویسی ویندوز موبایل نمیفهمم لطفا اگر به ویندوز موبایل مربوط میشه یه مقدار سوالتون رو باز کنید لطفا .

به بیان ساده در حالت کلی در تمام سیستم عامل ها (چه ویندوز موبایل چه هر سیستم عامل دیگه ای) معمولا user mode به حالتی میگن که خیلی راحت از طریق تمام برنامه ها در دسترس هستند و برنامه نویس میتونه با کد نویسی روی اون حالت مستقیما یه سری حالت های سیستم رو تغییر بده ولی kernel mode مربوط به دسترسی های مستقیم سیستم عامل میشه (و بعضا درایورهای سخت افزاری خاص) در واقع برنامه نویس نمیتونه با کد یه سری کارهای خاص رو انجام بده (انحصارا در اختیار سیستم عامل هست)
شما اینطور در نظر بگیر :
user mode => مثله متدها و یا خاصیت های عمومی یک کلاس هست .
kernel mode => مثله متدها و یا خاصیت های خصوصی یک کلاس هست .

Nima.Nima
پنج شنبه 13 خرداد 1389, 09:03 صبح
ممنونم دوست عزیز
درست میگید ربطی به ویندوز موبایل نداره بلکه مربط به مفاهیم سیستم عامل میشه ولی چون انجمن مرتبطی پیدا نکردم همین جا نوشتم:خجالت:

CYCLOPS
پنج شنبه 13 خرداد 1389, 14:15 عصر
میتونید به این دو بخش تو سایت مراجعه کنید :

توسعه‌ی هسته‌ی سیستم عامل (http://barnamenevis.biz/forum/forumdisplay.php?f=118)
و
سیستم عامل های آزاد (http://barnamenevis.biz/forum/forumdisplay.php?f=91)

موفق باشید :چشمک:

سعیدسعید
جمعه 22 مرداد 1389, 22:57 عصر
سلام دوست عزیز
اگر اطلاع داشته باشید در حالت خیلی کلی دو نوع کار در محیط سیستم عاملها انجام میگیرند
1- کارهایی که عادی هستند و همه ما در برنامه نویسی از اونها استفاده میکنیم
2- کارهایی که یک مقدار از حالت عادی بودن خارجند مثلا موقعی که یک وقفه خاصی رخ میده و سیستم عامل مجبور هست به اون پاسخ بده
کارهای عادی در حالت user mode انجام میشن ولی اگر در بین همین کارهای عادی یک اتفاق خاصی بیفته که باعث بشه سیستم عامل از روتین خاص و همچنین از دستورات خاصی استفاده منه حالت سیستم عوض میشه و kernel mode میشه. برخی از دستورات سیستم عامل فقط در حالت kernel قابل اجرا هستند

vcldeveloper
شنبه 23 مرداد 1389, 01:46 صبح
میخواستم تعریفی از user modeوkernel mode رادر سیستمهای عامل بدونم و در ضمن تفاوت بین آنها را.
باتشکر
اینها در واقع لایه های حفاظتی یک سیستم عامل هستند، که بهشون Ring هم گفته میشه، مثلا به Kernel Mode اسم Ring 0 و به User Mode اسم Ring 3 داده میشه (حداقل در معماری CPUهای Intel). اینطور تصور کنید که سیستم در مرکز قرار داره، و به دور این سیستم حلقه های حفاظتی تو در تو کشیده شده.

سطح دسترسی در هر یک از این حلقه ها با هم متفاوت هست، هر چه به حلقه داخلی نزدیک تر باشید، سطح دسترسی شما بیشتر هست، و هر چه از این حلقه دورتر بشید، سطح دسترسی تون کمتر میشه، چون حلقه های خارجی تر برای دسترسی به سیستم باید از حلقه های داخلی تر عبور کنند. وقتی سطح دسترسی تون کمتر شد، یعنی برنامه ایی که اجرا می کنید، به منابع محدودتری در سیستم دسترسی داره، و تاثیری هم که میتونه روی کارکرد کل سیستم بزاره، محدودتر هست.

هسته سیستم عامل در داخلی ترین حلقه (Ring 0) اجرا میشه، برای همین هم به این حلقه گفته میشه Kernel Mode. پس خودِ سیستم عامل مستقیما با سخت افزار در ارتباط هست، و بیشتر کنترل را روی عملکرد سیستم داره. درایورهای سخت افزاری، متناسب با نوع پیاده سازی سیستم عامل، ممکنه در همین Ring 0 اجرا بشند، یا اینکه در Ring 1 یا Ring 2. برنامه های عادی کاربر در Ring 3 یا همون User Mode اجرا میشند. حالا اگر یک برنامه در User Mode بخواد کاری رو در سیستم انجام بده، باید درخواستش از حلقه های زیرینش عبور کنه، تا به سیستم برسه، یعنی از حلقه 2 تا حلقه 0، و جواب را هم از همین حلقه ها دریافت کنه. در نتیجه در یک سیستم عامل مثل ویندوز که معماری Client\Server داره، یک برنامه در Ring 3 اصلا دسترسی مستقیم به سخت افزار نداره، و هر کاری که میخواد انجام بده، باید از طریق رابطی باشه که Kernel ویندوز براش فراهم کرده. حتی این برنامه دسترسی مستقیم به RAM سیستم هم نداره، بلکه سیستم عامل یک فضای مجازی در اختیارش قرار میده که برنامه Ring 3 تصور میکنه RAM هست، و وقتی این برنامه داده رو در این فضا مینویسه یا میخونه، در واقع Kernel ویندوز تصمیم میگیره که این داده باید کجای RAM واقعی سیستم ذخیره بشه، یا اگر تشخیص داد، آن را از RAM به دیسک منتقل کنه. پس برنامه ایی که در Ring 3 اجرا میشه، عملا یک برنامه ایزوله شده هست. برای همین هم هست که می بینید وقتی برنامه تون یک خرابکاری میکنه، به راحتی برنامه رو با استفاده از Task Manager می بندید، و مشکلی هم برای سیستم پیش نمیاد. اما در لایه های پایین تر که دست برنامه ها در اون لایه ها بازتر هست، این خرابکاری ها تاثیرات عمیق تری روی کارکرد سیستم میزارند، مثلا وقتی درایور کارت گرافیکی شما درست عمل نمیکنه، کل ویندوز شما با یک خطای BSoD متوقف میشه، و مجبور میشید که کل سیستم را ریست کنید.