اختصاصی وینفون

مفاهیم هسته و معماری سیستم‌های عامل مایکروسافت (قسمت اول) از 9X تا NT راه زیادی پیموده ایم...

سال های زیادی از عرضه اولین سیستم عامل مایکروسافت با نام MS-DOS گذشته و شمایل و کارایی این سیستم عامل محبوب در گذر زمان دچار تغییرات بسیاری شده است. در طی این سال های دراز هرکسی احتمالا کلمه هسته ویندوز را زیاد شنیده است. اما مبانی و مفاهیم این کلمه و تاریخچه آن چیست؟ در ادامه این مطلب با ما در وینفون همراه باشید.

شرکت مایکروسافت با ارائه ویندوز ۹۵ (که در ابتدا با نام پروژه شیکاگو شناخته می‌شد) در سال ۱۹۹۵، پس از دوران رایانه های مبتنی بر خط فرمان، تحولی عظیم در دنیای فن‌آوری ایجاد کرد. در سال ۱۹۹۸ ویندوز ۸۲% از بازار سیستم‌های عامل را در دست داشت. پشتیبانی از رابط کاربری گرافیکی (GUI)، معماری جدید لایه های پشتیبانی کننده برنامه های اجرایی، پشتیبانی از شبکه های جدید مبتنی بر TCP/IP و بسیاری امکانات دیگر در دل این سیستم عامل گنجانده شده بود.
اما مهم ترین تغییر در هنگام جهش تکنولوژی سیستم عامل ها، تغییر معماری کد آنها از ریزهسته (MicroKernel) به سیستم عامل های مبنی بر هسته یک‌پارچه (Monolithic Kernel) بوده است که با قابلیت‌هایی چون تغییر تابع عملکرد حالت های پردازشی همراه شده است.
در ابتدا، سیستم های عامل مبتنی بر خط فرمان از ریزهسته‌ها استفاده می‌کردند که به علت اشتراک گذاری مستقیم منابع حافظه با برنامه های کاربر، در صورت بروز مشکل در هر یک از نقاط حافظه، کل سیستم از کار می‌افتاد. اما با تغییر این رویه در سیستم عامل های دارای هسته یک‌پارچه (پس از MS-DOS) و تخصیص دو نوع مجزای حالت به کدهای در حال اجرا (حالت کاربر و حالت هسته) این مشکل در طی مرور زمان مرتفع شد. هرچند که در ابتدای راه پیاده‌سازی این روش تخصیص منابع به سیستم عامل، هنوز مشکلاتی بر سر راه وجود داشت، همانطور که اکثر کاربران قدیمی ویندوز به یاد می‌آورند ویندوزهای ۹۵ و ۹۸ با مشکلات زیادی در زمینه تداخل کد هسته و برنامه (کد) ‌های کاربر (که باعث کرش برنامه و اصطلاحا هنگ کردن کل سیستم می‌شد) داشتند.

هسته و حالت های پردازشی

سیستم‌های عامل هسته یک‌پارچه (Monolithic) از نظر معماری اهمیت زیادی برای امنیت پردازه ها و اطلاعات کاربر قائل هستند. یکی از موارد مهم این نوع امنیت، حفاظت از خود سیستم عامل است که به افزایش پایداری کلی آن کمک می‌کند.
مهم ترین قسمت سیستم عامل هسته آن است که مدیریت منابع سیستمی و اشتراک آنها را بر عهده دارد. در معماری IA32 شرکت اینتل (که استانداردی برای ساخت رایانه‌های شخصی نیز هست) چهار سطح محافظت از هسته سیستم عامل پیاده‌سازی شده است، اما در ویندوز تنها از دو سطح آن استفاده می‌کند؛ فضای های مجزای حالت هسته (Kernel Space) و حالت کاربر (User Space). اصولا این جداسازی برای اجرای کدهای مختلف و باعث محافظت سخت افزار از رفتارهای پیش بینی نشده نرم افزارها می‌شود.
حالت کد هسته برای اجرای قطعات مجاز کدهای اصلی سیستم عامل، افزونه های هسته (مانند سیستم های مجازی سازی) و اکثر درایورها رزرو شده است؛ اما حالت کاربر برای اجرای تمام کدهای خارج از حیطه سیستم عامل (معمولا نرم افزارها) مورد استفاده قرار می‌گیرد؛ گرچه برخی درایورها نیز ممکن است در حالت کاربر اجرا شوند.

هنگامی که شما یک برنامه سطح کاربر را اجرا می‌کنید، ویندوز یک روند پردازش برای آن ایجاد می‌کند. روند نیز یک فضای آدرس مجازی (Virtual Address Space) و یک جدول نگهدارنده (Handle Table) برای برنامه تدارک می‌بیند. به علت اختصاصی بودن فضای آدرس هر برنامه، برنامه ها مجاز به تغییر دادن اطلاعات یکدیگر در حافظه نیستند. هر برنامه در فضایی مجزا اجرا شده و خرابی (Crash) یک برنامه باعث عدم پاسخ‌دهی سایر برنامه ها و یا سیستم عامل نمی‌شود.

علاوه بر خصوصی بودن فضای آدرس، فضای تخصیصی برای هر برنامه سطح کاربرِ در حال اجرا محدود است. پردازنده ای که در حال عمل در حالت کد کاربر است، اجازه دسترسی به فضاهای مجازی تخصیص داده شده برای سیستم عامل را ندارد (معمولا از این فضاها با نام‌های فضای بالا، برای سیستم عامل، و فضای پایین، برای نرم افزارها، یاد می‌شود).
برخلاف برنامه های سطح کاربر، تمام کدهایی که در حالت هسته توسط پردازنده اجرا می‌شوند، دارای یک فضای آدرس یکسان هستند. این بدین معنی است که اگر یک درایور حالت هسته، در آدرس اشتباهی از حافظه اطلاعات بنویسد، کل سیستم عامل متوقف خواهد شد. این اتفاقی است که اکثرا باعث صفحه آبی مرگ (Blue Screen of Death) در سیستم عامل ویندوز می‌شود.

در جدول زیر می‌توانید با ارتباطات بین این دو نوع کد بیشتر آشنا شوید:

ساختار معماری ویندوز ۹X

در ابتدای این بحث باید اشاره کنیم که ویندوز ۹X به نسخه‌های ۹۵، ۹۸ و ME سیستم عامل مایکروسافت ویندوز گفته می‌شود. شاید برای دوستانی که آشنایی بیشتری با روزگاران قدیم مایکروسافت دارند این سوال پیش بیاید که نسخه‌های قدیمی تر ویندوز کجاست؟ در پاسخ باید گفت که نسخه‌های ویندوز قبل از ۹۵ معمولا به عنوان سیستم عامل جدا شناخته نشده و تنها واسطی برای برقراری ارتباط گرافیکی با خط فرمان بودند.
ویندوز ۹۵ اولین سیستم عامل با پشتیبانی از معماری ۳۲ بیتی آدرس‌دهی حافظه بود که ساخته شد. هرچند یک هسته ۱۶ بیتی برای پشتیبانی رو‌ به عقب نرم‌افزاری نیز در آن گنجانده شده بود. همچنین اولین رابط برنامه نویسی کاربردی (API) در سیستم‌عامل‌ها نیز برای اولین بار در این نسخه از ویندوز متولد شد. این رابط به برنامه‌های سطح کاربر اجازه می‌دهند تا مسقیما و بدون نیاز به پیاده‌سازی مجدد، توابع سطوح پایین و میانی سیستم عامل را فراخوانی کنند.
مایکروسافت تمام کد ویندوز ۹۵ را به حالت ۳۲ بیتی تغییر نداد. قطعاتی از کدهای ۱۶ بیتی به دلایل پشتیبانی از سازگاری رو به عقب، بهبود عملکرد و کم بودن زمان توسعه، در بطن معماری ویندوز ۹X باقی ماند. این عوامل بلافاصله شروع به تاثیر بر عملکرد و ثبات سیستم عامل کردند.
اگر چه کد هسته ویندوز ۹x دارای امکانات حفاظت از حافظه بود، اما از یک مگابایت آغازین سطح پایین حافظه (فضای کاربر) محافظت نمی‌کرد. این قسمت از حافظه حاوی کدهای حیاتی برای عملکرد درست سیستم‌ عامل در هنگام اجرای برنامه‌ها بود و با نوشتن در این قسمت از حافظه، یک برنامه می توانست سیستم عامل را خراب یا آن را متوقف کند. یکی از دلایل بی ثباتی خانواده ۹ ویندوز نیز همین موضوع بود.

حالت کاربر در ویندوز ۹X شامل سه زیرسیستم مجزای Win16، Win32و MS-DOS بود که هر بلوک حافظه را به دو منطقه ۶۴ کیلوبایتی برای رابط گرافیکی GDI و حافظه دینامیک متغیرها (Heap) اختصاص می‌دادند. این موضوع باعث میشد که در صورت باز کردن تعداد زیادی برنامه و کمتر شدن حافظه در دسترس از میزان ۱۰% مجموع کل، سیستم ناپایدار شود.

حالت هسته در ویندوز ۹X شامل مدیر ماشین مجازی (VMM)، مدیر فایل سیستم قابل نصب (IFSHLP)، مدیر پیکربندی و در ویندوز ۹۸ و بعد از آن، مدیر درایور WDM (NTKERN) است. به عنوان یک سیستم عامل ۳۲ بیتی، فضای حافظه مجازی قابل دسترسی در ویندوز ۹X، ۴ گیگابایت بود که ۲ گیگابایت پایین آن (از لحاظ آدرس) برای حالت کاربر و ۲ گیگابایت بالایی نیز برای حالت هسته استفاده می‌شد.

در اینجا به پایان قسمت اول رسیدیم. در قسمت‌های آینده به بررسی کامل تر در مورد معماری و هسته ویندوزهای سری NT (از جمله ویندوز ۱۰ و ویندوز موبایل) و تغییرات آنها نسبت به نسخه های پیشین می‌پردازیم. امیدواریم این مقاله مورد توجه شما عزیزان وینفونی قرار گرفته باشد.

منبع : وینفون
51 پست
سیّد محمّد نصری
Sickmind_01 is here, English Translation graduate and one hell of a Microsoft lover
مطالب مرتبط
دیدگاه کاربران
arian
💔 0 پاسخ دهید جمعه 16 تیر 1396

Slm. Man telegrmamo pak kardam chon update nemishod va to ghesmate inistall error midad.. Alan dge nemitonam nasbesh knam va bazam to inistall error míde. Bekhoda dge ravani shdam az daste in microsoft.. Kesi rahe hale nadare.. Mamnon misham yeki komak kne

بهزاد
💔 0 پاسخ دهید جمعه 16 تیر 1396

سلام
ممنون از این پست بسیار خوبتون
لطفاً این مطلب رو زیاد دنبال کنید ما از اینجور مطالب مفید توی دنیای اینترنت که به این صورت جامع و کامل باشه خیلی کم داریم

    سیّد محمّد نصری
    💔 0 پاسخ دهید جمعه 16 تیر 1396

    ممنون از لطفتون
    مطمئنا این سری مقالات دنبال خواهند شد در زمینه های تخصصی

برای نوشتن دیدگاه می توانید به حساب کاربری خود وارد شوید ورود ارسال نظر به صورت مهمان
برچسب ها: , , , , , , , , , , , , , , , , ,