حالت ها اجرایی (مود) آموزش و یادگیری حالت ها اجرایی (مود) به صورت رایگان
یکی از پارامتر هایی که پردازنده برای اجرای Process ها استفاده میکنه پارامتر Execute mode هستش.
اصولا پردازنده ها از دو حالت اجرای اصلی به نام های User mode و Kernel mode پشتیبانی میکنن. این به این معناست که هر پراسس یک حالت اجرا داره که یا Kernel هستش یا User!
(به حالت Kernel حالت Control یا System هم میگن!)
برنامه هایی که با حالت User اجرا میشن به اصطلاح less-privileged هستن.یعنی از سطح دسترسی کمتری برخوردار هستن و برنامه هایی که با حالت Kernel اجرا میشن دسترسی های بیشتری دارن و یه جورایی پراسس های ممتاز محسوب میشن 💫
اینجا دو تا سوال پیش میاد❗
1. چرا این مکانیزم وجود داره و پراسس ها رو از هم تفکیک میکنه؟ این مکانیزم برای محافظت از سیستم عامل و برنامه های سیستمی مهم وجود داره. مثلا ساختار های اطلاعاتی(Data structure) که توی ترد های قبل دیدیم فقط و فقط توسط سیستم عامل و برنامه های سیستمی قابل دسترسی بودن (برنامه هایی که تو حالت Kernel mode هستن). برای مثال PCB که توی فضای مموری User space قرار داره و پراسس ها با حالت User mode نمیتونن بهش دسترسی داشته باشن!
اگر این مکانیزم وجود نداشته باشه هر برنامه ای میتونه به هر بخشی از مموری دسترسی داشته باشه حتی بخش های حساس و سیستمی یا مثلا رجسیتر های CPU رو تغییر بده. اینجوری امنیت و پایداری سیستم دچار خطر میشه!
2. پردازنده چجوری این حالت ها رو تشخصی میده؟ توی رجیستر PSW بیتی وجود داره که حالت(mode) برنامه در حال اجرا رو ذخیره میکنه.
یکم بیشتر بدونید
پراسس هایی که تو سطح Kernel mode اجرا میشن به نسبت پراسس های User mode ممتازیت بیشتری دارن!
پردازنده ها رجیستری به نام PSR (Processor status register) دارن که داخلشون مقداری به نام CPL یا (Current privilege level) ذخیره میشه.
از نظر معماری پردازنده های خانواده x86 architecture در واقع ۴ سطح دسترسی (Privilege Level / Ring) دارن. اکثر سیستم عامل های مدرن مثل Windows و Linux فقط از دو تا از این رینگ ها استفاده میکنن یعنی سطح 0 و 3. به این صورت که برنامه های Kernel mode تو رینگ 0 و برنامه های User mode تو رینگ 3 اجرا میشن 〽️حواست باشه که ...
