حالت کاربر در مقابل حالت هسته در ویندوز چیست؟

ممکن است در مورد برنامه هایی که در حالت "کرنل" یا "کاربر" اجرا می شوند شنیده باشید. همه چیز به نحوه عملکرد سیستم عامل ها در هنگام انجام وظایفشان بستگی دارد. هنگامی که متوجه شدید، به راحتی می توانید تفاوت بین حالت کاربر و حالت هسته را درک کنید.

درک آنچه که یک سیستم عامل انجام می دهد(Does)

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

ضروری ترین عنصر یک کامپیوتر بیت یا «رقم دودویی» است. هر(” Everything) کاری که کامپیوتر انجام می دهد به صورت یک و صفر نمایش داده می شود. اجزای مختلف(Different) کامپیوتر بیت ها را به روش های مختلف نشان می دهند. در یک CPU ، ترانزیستورهای میکروسکوپی یک و صفر را با روشن یا خاموش بودن نشان می دهند. این ترانزیستورها در ساختارهای منطقی به نام گیت های منطقی مرتب شده اند.

در حافظه کامپیوتر الکترونیکی، بیت‌ها توسط سلول‌های حافظه نشان داده می‌شوند که دارای شارژ بالاتر یا پایین‌تر از یک آستانه معین هستند. در یک هارد دیسک مکانیکی، بیت ها به صورت نوسانات مغناطیسی اندازه گیری شده بر روی یک صفحه چرخان نمایش داده می شوند. در دیسک‌های نوری، گودال‌ها و زمین‌هایی که نور لیزر را منعکس می‌کنند یا نمی‌کنند، همین کار را انجام می‌دهند. 

مهم نیست که چگونه نمایش فیزیکی کد باینری به دست می آید، در نهایت می توانید تمام اجزای کامپیوتر مصرف کننده را به این کد ماشین خام کاهش دهید.

بنابراین چگونه می توان از رابط انسان پسند یک رایانه به فرآیندهای خام و سطح پایین در خود رایانه رفت؟ اینجاست که سیستم عامل وارد می شود. مستقیماً سخت افزار رایانه را کنترل می کند. 

این نرم افزار همه چیزهایی را که برنامه های کاربردی (و در نتیجه کاربر) می خواهند به دستورالعمل های کد ماشین ترجمه می کند که CPU و سایر اجزاء آن را درک می کنند. مهم ترین نرم افزار در این فرآیند هسته است.

هسته چیست؟

هسته، همانطور که از نامش پیداست، هسته اصلی سیستم عامل است. هسته نرم افزاری است که در RAM قرار دارد و هر کاری را که کامپیوتر انجام می دهد هدایت می کند. وقتی چیزی در حافظه نوشته می شود، این هسته است که اجرا را هدایت می کند.

هسته می‌داند که چگونه با سخت‌افزارهایی مانند GPU(GPUs) و کارت‌های شبکه ارتباط برقرار کند، اما ممکن است نداند که چگونه با تکیه بر استانداردهای عمومی در صنعت رایانه، آنها را با پتانسیل کامل خود کار کند.

درایورهای سخت افزار در اینجا وارد عمل می شوند. درایورها به سیستم عامل شما می گویند که چگونه با اجزای خاص کار کند، به همین دلیل است که برای مثال، برای پردازنده های گرافیکی Nvidia و AMD به درایورهای مختلفی نیاز دارید.(AMD GPUs)

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

نقش رابط(Role) های برنامه نویسی(Application Programming Interfaces) کاربردی ( API(APIs) )

در روزهای MS-DOS ، توسعه دهندگان نرم افزار مجبور بودند نرم افزار خود را به طور خاص برای سخت افزار کاربر بنویسند. بدنام ترین نمونه این مورد در سیستم های MS-DOS درایورهای کارت صدا بودند.

یک بازی ویدیویی معین باید از محبوب‌ترین کارت‌ها ( Sound Blaster ، Ad-lib ، Gravis Ultrasound و غیره) پشتیبانی کند و امیدواریم که اکثر بازیکنان تحت پوشش قرار گیرند. امروزه، به لطف APIها(APIs) ، همه چیز بسیار متفاوت عمل می کند.

Microsoft DirectX یک مثال عالی است. اگر توضیح عمیقی می خواهید، DirectX چیست و چرا مهم است را بررسی کنید؟ (What Is DirectX and Why Is It Important?)با این حال، مهم ترین چیزی که باید بدانید این است که API یک راه استاندارد برای توسعه دهندگان نرم افزار ارائه می دهد تا منابع سخت افزاری را از اجزایی مانند GPU درخواست کنند. علاوه بر این، سازندگان سخت‌افزار فقط باید اطمینان حاصل کنند که محصولاتشان با DirectX مطابقت دارند تا از سازگاری کامل با هر نرم‌افزار سازگاری مشابه اطمینان حاصل کنند.

API(APIs) ها لایه ای از ترجمه را بین برنامه های کاربردی نرم افزار و هسته سطح پایین با درایورهای سخت افزاری خود ارائه می دهند. بله، این با یک جریمه عملکرد جزئی همراه است. با این حال، در رایانه‌های مدرن، این امر ناچیز است، و دارای مزایای مختلفی است، که در نهایت به حالت کاربر و حالت هسته می‌رسیم.

حالت کاربر در مقابل حالت هسته

سیستم عامل های مدرن صدها یا هزاران «فرآیند» را به طور همزمان اجرا می کنند و به صورت پویا بر اساس اولویت ها و توان محاسباتی مورد نیاز زمان CPU را در اختیار آنها قرار می دهد.(CPU)

هنگامی که یک برنامه کاربردی را راه اندازی می کنید، فرآیندهایی را تولید می کند و CPU می تواند آنها را در حالت کاربر یا در حالت هسته اجرا کند.

یک فرآیند ویندوز(Windows) که در حالت کاربر اجرا می شود فقط به فضای آدرس حافظه مجازی خصوصی و جدول دسته خود دسترسی دارد. نرم افزار از این جداول برای ذخیره داده ها در رم(RAM) و درخواست منابع استفاده می کند. هیچ دسترسی مستقیمی به حافظه یا سایر سخت افزارها وجود ندارد و این بر عهده سیستم عامل است که آن فضاهای مجازی را به سخت افزار واقعی رایانه نگاشت کند.

این به دلایل زیادی خوب است، اما مهم ترین مزیت این است که برنامه نمی تواند داده ها را خارج از فضای آدرس حافظه مجازی خود بازنویسی یا تغییر دهد. علاوه بر این، عملکردهای خاصی برای فرآیندهای حالت کاربر غیرمحدود هستند، عمدتاً آنهایی که می توانند سیستم را خراب کنند یا داده ها را از بین ببرند.

هنگامی که یک فرآیند راه اندازی می شود یا به حالت هسته ارتقا می یابد، به منابع سیستم، حتی منابع رزرو شده برای سیستم عامل، دسترسی کامل دارد. بنابراین، از نظر تئوری، می‌تواند داده‌های مهمی را که سیستم عامل برای اجرای درست به آن نیاز دارد، بازنویسی کند.

تله ها و استثناها

درک این نکته مهم است که این دو حالت در سطح سخت افزار توسط خود CPU اعمال می شوند. اگر برنامه‌ای که در حالت کاربر اجرا می‌شود سعی کند کاری را انجام دهد که به دسترسی به حالت هسته نیاز دارد، یک «تله» یا «استثنا» ایجاد می‌کند. سپس سیستم عامل با برنامه کار می کند، معمولاً با خاموش کردن آن و ایجاد یک گزارش خرابی به طوری که توسعه دهندگان بتوانند ببینند وقتی همه چیز از بین رفت چه اتفاقی در حافظه افتاده است.

خطرات(Dangers) حالت هسته(Kernel Mode) : صفحه (Death)آبی(Blue Screen) مرگ _

اگر تا به حال با صفحه آبی(Blue Screen) مرگ مواجه شده اید(Death) (چه کسی چنین نکرده است؟) که کامپیوتر شما را مجبور به خاموش یا راه اندازی مجدد کند، به احتمال زیاد این یک فرآیند در حالت هسته مقصر بوده است.

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

این یکی از حوزه‌هایی است که APIها(APIs) نقش اساسی را ایفا می‌کنند، زیرا این API است که امتیازات حالت هسته را درخواست می‌کند. برنامه های کاربردی حالت کاربر اساساً درخواست هایی را که به امتیازات حالت هسته نیاز دارند به API واگذار می کنند .

به همین دلیل است که حالت هسته معمولاً فقط به فرآیندهای سیستم سطح پایینی داده می شود که نیاز به دسترسی مستقیم به سخت افزار رایانه دارند. معمولاً این امتیاز به یک فرآیند تعمیم می‌یابد زیرا به عملکرد بیشتری نسبت به حالت کاربر نیاز دارد. برخی از دستورالعمل‌های CPU فقط در حالت هسته کار می‌کنند، بنابراین اگر فرآیندی نیاز به استفاده از آن توابع داشته باشد، باید آن را افزایش دهد.

اگر با صفحه(Blue Screen) آبی مرگ مشکل دارید، (Death)راهنمای عیب یابی صفحه آبی مرگ ویندوز 10(Blue Screen of Death Troubleshooting Guide for Windows 10) را حتما بخوانید !



About the author

من یک متخصص ویندوز هستم و بیش از 10 سال است که در صنعت نرم افزار کار می کنم. من با هر دو سیستم ویندوز مایکروسافت و اپل مکینتاش تجربه دارم. مهارت‌های من عبارتند از: مدیریت پنجره، سخت‌افزار و صدا کامپیوتر، توسعه اپلیکیشن و غیره. من یک مشاور با تجربه هستم که می توانم به شما کمک کنم تا از سیستم ویندوز خود حداکثر استفاده را ببرید.



Related posts