هسته (سیستم‌عامل): تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
جز اضافه کردن منابع
برچسب‌ها: افزودن پیوند بیرونی به جای ویکی‌پیوند ویرایشگر دیداری: به ویرایشگر منبع تغییر داده شده
جز افزودن مطلب و عنوان
خط ۹: خط ۹:
این مؤلفه اصلی یک سیستم رایانه ای وظیفه اجرای برنامه ها را بر عهده دارد. هسته مسئولیت تصمیم گیری در هر زمان را در مورد اولویت برنامه های در حال اجرا به پردازنده یا پردازنده ها اختصاص می دهد.
این مؤلفه اصلی یک سیستم رایانه ای وظیفه اجرای برنامه ها را بر عهده دارد. هسته مسئولیت تصمیم گیری در هر زمان را در مورد اولویت برنامه های در حال اجرا به پردازنده یا پردازنده ها اختصاص می دهد.


'''حافظه دسترسی تصادفی (RAM)'''
'''[[حافظه دسترسی تصادفی]] (RAM)'''


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


'''دستگاههای ورودی / خروجی (I / O)'''
'''دستگاههای ورودی / خروجی (I / O)'''


دستگاه های I / O شامل موارد جانبی مانند [[صفحه‌کلید|صفحه کلید]] ، [[ماوس]] ، [[درایو دیسک سخت|درایو دیسک]] ، [[چاپگر]] ، دستگاه های [[یواس‌بی|USB]] ، آداپتورهای شبکه و دستگاه های [[نمایشگر رایانه|صفحه نمایش]] هستند. کرنل درخواست های برنامه ها را برای انجام I / O به یک دستگاه مناسب اختصاص می دهد و روش های مناسبی را برای استفاده از دستگاه فراهم می کند (به طور معمول در جایی خلاصه می شود که برنامه نیازی به دانستن جزئیات اجرای دستگاه نداشته باشد).
دستگاه های I / O شامل موارد جانبی مانند [[صفحه‌کلید|صفحه کلید]] ، [[ماوس]] ، [[درایو دیسک سخت|درایو دیسک]] ، [[چاپگر]] ، دستگاه های [[یواس‌بی|USB]] ، آداپتورهای شبکه و دستگاه های [[نمایشگر رایانه|صفحه نمایش]] هستند. کرنل درخواست های برنامه ها را برای انجام I / O به یک دستگاه مناسب اختصاص می دهد و روش های مناسبی را برای استفاده از دستگاه فراهم می کند (به طور معمول در جایی خلاصه می شود که برنامه نیازی به دانستن جزئیات اجرای دستگاه نداشته باشد).

== کارکردهای هسته ==
کارکردهای اصلی هسته را می‌توان به قسمت‌هایی برای مدیریت منابع سیستم تقسیم کرد، از جمله:


=== [[واحد پردازش مرکزی]] ===
=== [[واحد پردازش مرکزی]] ===
واحد پردازشگر مرکزی مسوولیت اجرای تمام برنامه‌ها را به عهده دارد. این هسته است که تصمیم می‌گیرد در هر زمانی کدامیک از برنامه‌ها باید توسط این واحد یا واحدها (هر واحد فقط قادر به اجرای یک برنامه در هز زمان است) اجرا شود.
واحد پردازشگر مرکزی مسوولیت اجرای تمام برنامه‌ها را به عهده دارد. این هسته است که تصمیم می‌گیرد در هر زمانی کدامیک از برنامه‌ها باید توسط این واحد یا واحدها (هر واحد فقط قادر به اجرای یک برنامه در هز زمان است) اجرا شود.


== مدیریت منابع ==
=== [[حافظه تصادفی|حافظه با دسترسی تصادفی]] ===
جنبه های اصلی لازم در مدیریت منابع ، تعریف دامنه اجرایی (فضای آدرس) و مکانیسم محافظت مورد استفاده برای واسطه دسترسی به منابع درون یک دامنه است. کرنل همچنین روش هایی را برای هماهنگ سازی و ارتباط بین فرایند (IPC) ارائه می دهد. این پیاده سازیها ممکن است درون خود هسته باشد و یا هسته نیز می تواند به دیگر فرآیندهای اجرا شده تکیه کند. اگرچه برای دستیابی به امکانات ارائه شده توسط یکدیگر ، هسته باید IPC را فراهم کند ، اما هسته ها نیز باید روشی را اجرا کنند تا درخواست هایی برای دسترسی به این امکانات را انجام دهند. هسته همچنین وظیفه تغییر متن بین فرآیندها یا موضوعات را بر عهده دارد.
حافظه با دسترسی تصادفی برای ذخیره موقت ساختارهای برنامه و همچنین اطلاعات به کار می‌رود. هسته مسولیت تصمیم گیری این را بر عهده دارد که هر پروسس می‌تواند از کدام حافظه استفاده کند و تصمیم بگیرد زمانی که حافظه کافی وجود ندارد چه کاری را انجام دهد.


=== مدیریت ورودی و خروجی ===
== مدیریت حافظه ==
هسته دسترسی کامل به حافظه سیستم دارد و باید به فرایندها اجازه دهد تا با اطمینان از این حافظه به محض نیاز خود دسترسی پیدا کنند. اغلب اولین قدم در انجام این کار ، آدرس دهی مجازی است که معمولاً با صفحه بندی و یا تقسیم بندی انجام می شود.
دستگاه‌های ورودی/خروجی شامل لوازم جانبی به عنوان موس، صفحه کلید، دیسک سخت، چاپگر، آداپتورهای شبکه و دستگاه‌های صفحه نمایش می‌باشد.
هسته درخواست برنامه‌های کاربردی را به یک دستگاه I/O مناسب اختصاص می‌دهد و شیوه‌های مناسب برای استفاده از دستگاه را فراهم می‌کند.

جنبه‌های کلیدی لازم در مدیریت منابع، تعریف دامنه (فضای آدرس) و مکانیسم‌های حفاظت به واسطهٔ دسترسی به منابع در یک دامنه استفاده می‌شود.
هسته نیز معمولاً روش‌هایی برای هماهنگ‌سازی و ارتباط بین فرایندها به نام (IPC) را فراهم می‌کند.

=== مدیریت حافظه ===
هسته باید اجازه دهد در صورت نیاز فرایندهای دسترسی به حافظه دسترسی کامل به سیستم داشته باشند، اغلب این کار با صفحه بندی یا قطعه بندی صورت می‌پذیرد.
حافظهٔ مجازی این اجاره را به هسته می‌دهد تا مثل یک آدرس فیزیکی داده به نظر می‌رسد.
حافظهٔ مجازی این اجاره را به هسته می‌دهد تا مثل یک آدرس فیزیکی داده به نظر می‌رسد.
فضای آدرس مجازی ممکن است برای فرایندهای مختلف متفاوت باشد.
فضای آدرس مجازی ممکن است برای فرایندهای مختلف متفاوت باشد.
خط ۴۱: خط ۳۱:
حافظهٔ مجازی همچنین این اجازه را می‌دهد حافظه به دو دسته (مد هسته) و (مد کاربر) تقسیم کرده و از آسیب به یک برنامهٔ در حال اجرا در هسته می‌شود.
حافظهٔ مجازی همچنین این اجازه را می‌دهد حافظه به دو دسته (مد هسته) و (مد کاربر) تقسیم کرده و از آسیب به یک برنامهٔ در حال اجرا در هسته می‌شود.


در بسیاری از سیستم ها ، آدرس مجازی برنامه ممکن است به داده هایی که در حال حاضر در حافظه نیستند ، اشاره کند. لایه indirection ارائه شده توسط آدرس دهی مجازی به سیستم عامل اجازه می دهد تا از مخزنهای داده دیگر مانند هارد دیسک استفاده کند تا آنچه را که در غیر این صورت باید در حافظه اصلی (RAM) باقی بماند ، ذخیره کند. در نتیجه ، سیستم های عامل می توانند به برنامه ها اجازه دهند از حافظه بیشتری نسبت به سیستم موجود در سیستم فیزیکی استفاده کنند. هنگامی که یک برنامه به داده هایی نیاز دارد که در حال حاضر در RAM نباشد ، CPU به هسته سیگنال می دهد که این اتفاق افتاده است ، و هسته با نوشتن محتویات یک بلوک حافظه غیرفعال به دیسک (در صورت لزوم) و جایگزین کردن آن با داده های درخواست شده پاسخ می دهد. این برنامه می تواند از جایی که متوقف شده است از سر گرفته شود. این طرح معمولاً به عنوان صفحه بندی تقاضا معروف است.
=== مدیریت دستگاه‌ها ===
برای انجام توابع مفید، فرایندهای نیاز به دسترسی به لوازم جانبی متصل به کامپیوتر که به وسیلهٔ کرنل از طریق درایورها ی دستگاه کنترل می‌شود دارد. درایور دستگاه یک برنامه کامپیوتری است که باعث ارتباط برقرار کردن سیستم عامل با یک دستگاه سخت‌افزاری می‌شود. درایور یک قطعه مهم و حیاتی یک برنامه است.


آدرس دهی مجازی همچنین امکان ایجاد پارتیشن های مجازی حافظه را در دو منطقه جداگانه فراهم می آورد ، یکی برای هسته (فضای هسته) و دیگری برای برنامه ها (فضای کاربر) رزرو می کند. این پردازشگرها اجازه دسترسی به حافظه هسته را ندارند ، بنابراین از آسیب دیدن هسته در حال اجرا جلوگیری می شود. این بخش اساسی بنیادی فضای حافظه در طراحی های فعلی هسته های هدف اصلی بسیار مؤثر بوده و در چنین سیستم هایی تقریباً جهانی است ، اگرچه برخی از هسته های تحقیقاتی (به عنوان مثال ، تکینگی) رویکردهای دیگری دارند.
=== فراخوان سیستمی ===

== مدیریت دستگاه ==
برای انجام کارکردهای مفید ، فرایندها نیاز به دسترسی به لوازم جانبی متصل به رایانه دارند که توسط هسته از طریق درایورهای دستگاه توسط هسته کنترل می شوند. درایور دستگاه یک برنامه رایانه ای است که سیستم عامل را قادر می سازد با یک دستگاه سخت افزاری ارتباط برقرار کند. این سیستم عامل اطلاعاتی در مورد چگونگی کنترل و برقراری ارتباط با یک قطعه خاص از سخت افزار را در اختیار شما قرار می دهد. درایور یک قطعه مهم و یک برنامه اساسی است. هدف طراحی درایور انتزاع است. وظیفه درایور ترجمه مکالمات عملکرد انتزاعی انتصاب شده توسط سیستم عامل (تماس های برنامه نویسی) در تماس های خاص دستگاه است. از نظر تئوری ، دستگاه باید به درستی با درایور مناسب کار کند. درایورهای دستگاه برای مواردی مانند کارتهای ویدئویی ، کارتهای صوتی ، چاپگرها ، اسکنرها ، مودمها و کارتهای LAN استفاده می شوند.

در سطح سخت افزار ، انتزاعات مشترک درایورهای دستگاه شامل موارد زیر است:

* رابط مستقیم
* استفاده از رابط سطح بالا (BIOS Video)
* استفاده از درایور دستگاه سطح پایین تر (درایور پرونده از درایورهای دیسک استفاده می کند)
* شبیه سازی کار با سخت افزار ، در حالی که انجام کاری کاملاً متفاوت است

و در سطح نرم افزار ، انتزاعات درایور دستگاه شامل موارد زیر است:

* اجازه دسترسی مستقیم سیستم عامل به منابع سخت افزاری
* فقط اجرای اولیه
* اجرای رابط برای نرم افزارهای غیر درایور مانند TWAIN
* اجرای یک زبان (اغلب یک زبان سطح بالا مانند PostScript)

<br />

== فراخوان سیستمی ==
<blockquote>مقاله اصلی: [[فراخوان سیستمی]]</blockquote>فراخوان سیستمی یک برنامه درخواستی از سیستم عامل در مد ویژه است.
<blockquote>مقاله اصلی: [[فراخوان سیستمی]]</blockquote>فراخوان سیستمی یک برنامه درخواستی از سیستم عامل در مد ویژه است.
یک فراخوان سیستمی رابط بین فرایند و سیستم عامل است.
یک فراخوان سیستمی رابط بین فرایند و سیستم عامل است.
خط ۵۵: خط ۶۵:
# با استفاده از یک صف مبتنی بر حافظه
# با استفاده از یک صف مبتنی بر حافظه


== تصمیمات طراحی هسته ==
'''حفاظت'''

نکته مهمی که در طراحی هسته وجود دارد ، پشتیبانی در حمایت از خطا (تحمل گسل) و رفتارهای مخرب (امنیت) است. این دو جنبه معمولاً کاملاً مشخص نیستند و اتخاذ این تمایز در طراحی هسته منجر به رد یک ساختار سلسله مراتبی برای محافظت می شود.

مکانیسم ها یا خط مشی های ارائه شده توسط هسته با توجه به معیارهای مختلفی از جمله طبقه بندی می شوند: استاتیک (در زمان کامپایل) یا پویا (در زمان اجرا) اجرا می شود. پیشگیرانه یا پس از تشخیص. مطابق با اصول محافظت از آنها راضی (به عنوان مثال ، Denning). آیا آنها از سخت افزار پشتیبانی می شوند یا مبتنی بر زبان هستند. خواه آنها بیشتر یک مکانیسم باز باشند یا یک سیاست الزام آور. و خیلی بیشتر.

پشتیبانی از حوزه های حفاظت سلسله مراتبی معمولاً با استفاده از حالتهای CPU انجام می شود.

بسیاری از هسته ها اجرای "قابلیت ها" ، یعنی اشیایی را که به کد کاربر ارائه می شود امکان دسترسی محدود به یک شیء اساسی را که توسط هسته کنترل می شود فراهم می کنند. مثال متداول ، دست زدن به پرونده است: یک پرونده بازنمایی اطلاعات ذخیره شده در یک دستگاه ذخیره سازی دائمی است. هسته ممکن است قادر به انجام بسیاری از عملیات های مختلف ، از جمله خواندن ، نوشتن ، حذف یا اجرای آن باشد ، اما یک برنامه در سطح کاربر فقط ممکن است مجاز به انجام برخی از این عملیات ها باشد (به عنوان مثال ، فقط خواندن پرونده مجاز است). اجرای مشترک این امر این است که کرنل یک شیء را برای برنامه ارائه دهد (معمولاً به اصطلاح "دسته پرونده" نامیده می شود) و سپس برنامه می تواند عملیات را فراخوانی کند ، اعتبار آن در زمان درخواست عملیات هسته را بررسی می کند. چنین سیستمی ممکن است گسترش یابد تا تمام اشیاء هسته را مدیریت کند ، و در واقع به اشیاء ارائه شده توسط برنامه های کاربردی کاربر دیگر باشد.

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

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

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

تصمیم مهم در مورد طراحی هسته ، انتخاب سطوح انتزاعی است که مکانیسم ها و سیاست های امنیتی باید در آن اعمال شود. مکانیسم های امنیتی هسته نقش اساسی در حمایت از امنیت در سطوح بالاتر دارند.

یک رویکرد استفاده از سیستم عامل و پشتیبانی هسته برای تحمل خطا است (ایجاد بالا) و ایجاد سیاست امنیتی برای رفتارهای مخرب در بالا از آن (اضافه کردن ویژگی هایی مانند مکانیزم های رمزنگاری در صورت لزوم) ، واگذاری برخی مسئولیت ها به کامپایلر. رویکردهایی که اجرای سیاستهای امنیتی را به کامپایلر و / یا سطح برنامه واگذار می کنند ، معمولاً امنیت مبتنی بر زبان نامیده می شوند.

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

'''محافظت از سخت افزار یا مبتنی بر زبان'''

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

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

مزایای این رویکرد شامل موارد زیر است:

* نیازی به فضای آدرس جداگانه نیست. جابجایی بین فضاهای آدرس عملیاتی کند است که باعث سربار زیاد می شود و در حال حاضر کارهای بهینه سازی زیادی انجام می شود تا از سوئیچ های غیر ضروری در سیستم عامل های فعلی جلوگیری شود. سوئیچینگ در یک سیستم محافظتی مبتنی بر زبان کاملاً غیر ضروری است ، زیرا همه کد ها می توانند با خیال راحت در همان فضای آدرس کار کنند.
* انعطاف پذیری هر طرح محافظتی که می تواند از طریق یک زبان برنامه نویسی بیان شود ، می تواند با استفاده از این روش عملی شود. تغییرات در طرح حفاظت (به عنوان مثال از یک سیستم سلسله مراتبی به سیستم مبتنی بر قابلیت) نیازی به سخت افزار جدید ندارد.

معایب عبارتند از:

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

نمونه هایی از سیستم های دارای محافظت مبتنی بر زبان شامل JX و Singularity مایکروسافت است.

=== همکاری فرآیند ===
Edsger Dijkstra ثابت کرد که از دیدگاه منطقی ، عملیات قفل و باز کردن قفل اتمی که در سمفورهای باینری کار می کند ابتدایی کافی برای بیان هرگونه عملکرد همکاری فرآیند هستند. با این حال ، این رویکرد به طور کلی از نظر ایمنی و کارآیی به نظر می رسد ، در حالی که یک رویکرد انتقال پیام انعطاف پذیرتر است. تعداد زیادی از رویکردهای دیگر (یا سطح پایین یا بالاتر) نیز موجود است ، که بسیاری از هسته های مدرن پشتیبانی از سیستم هایی مانند حافظه مشترک و تماس های از راه دور را پشتیبانی می کنند.

=== مدیریت دستگاه I / O ===
ایده هسته ای که دستگاه های I / O به طور یکنواخت با سایر فرآیندها به کار گرفته می شوند ، به عنوان فرآیندهای همکاری موازی ، ابتدا توسط برینچ هانسن پیشنهاد و اجرا شد (اگرچه ایده های مشابه در سال 1967 پیشنهاد شد). در توضیحات هانسن در مورد این ، فرآیندهای "رایج" فرایندهای داخلی نامیده می شوند ، در حالی که دستگاه های I / O فرایندهای خارجی نامیده می شوند.

مشابه حافظه فیزیکی ، اجازه دسترسی مستقیم به برنامه ها به درگاه ها و ثبت های کنترل کننده می تواند باعث خراب شدن کنترلر یا خراب شدن سیستم شود. با این کار بسته به پیچیدگی دستگاه ، برخی از دستگاه ها می توانند به طرز شگفت آوری پیچیده ای برای برنامه ریزی شوند و از چندین کنترلر مختلف استفاده کنند. به همین دلیل ، ارائه یک رابط انتزاعی تر برای مدیریت دستگاه مهم است. این رابط معمولاً توسط یک درایور دستگاه یا لایه انتزاعی سخت افزاری انجام می شود. بیشتر اوقات ، برنامه ها نیاز به دسترسی به این دستگاه ها دارند. هسته باید با پرس و جو در سیستم برای آنها به نوعی لیست این دستگاه ها را حفظ کند. این کار از طریق BIOS یا از طریق یکی از اتوبوسهای مختلف سیستم (مانند PCI / PCIE یا USB) قابل انجام است. هنگامی که یک برنامه کاربردی را روی یک دستگاه درخواست می کند (مانند نمایش کاراکتر) ، هسته باید این درخواست را به درایور ویدیوی فعال فعلی ارسال کند. درایور ویدیو نیز به نوبه خود باید این درخواست را انجام دهد. این نمونه ای از ارتباطات درون فرایندی (IPC) است.

== رویکردهای طراحی گسترده هسته ==
به طور طبیعی ، کارها و ویژگی های ذکر شده در بالا می تواند از جهات مختلفی ارائه شود که در طراحی و اجرای متفاوت از یکدیگر هستند.

اصل تفکیک مکانیسم و ​​سیاست تفاوت اساسی بین فلسفه هسته های خرد و یکپارچه است. در اینجا مکانیسم پشتیبانی است که اجرای بسیاری از سیاستهای مختلف را امکان پذیر می سازد ، در حالی که یک سیاست "حالت عملکرد" ​​خاص است. مثال:

* مکانیسم: تلاش برای ورود به کاربر به یک سرور مجوز هدایت می شود

* خط مشی: سرور مجوز نیاز به رمزعبور دارد که در برابر رمزهای ذخیره شده در یک پایگاه داده تأیید شود

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

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

پرو برینچ هانسن استدلالهایی را به نفع تفکیک مکانیسم و ​​سیاست ارائه داد. عدم انجام صحیح این جدایی یکی از مهمترین دلایل عدم نوآوری اساسی در سیستم عامل های موجود است ، مشکلی که در معماری رایانه رایج است. طراحی یکپارچه با روش معماری "حالت هسته" / "حالت کاربر" ناشی از حفاظت (که از لحاظ فنی به آن دامنه های محافظت از سلسله مراتبی گفته می شود) القا می شود ، که در سیستم های تجاری معمولی رایج است ؛ در حقیقت ، بنابراین هر ماژول نیاز به محافظت را ترجیح می دهد. به هسته. این پیوند بین طراحی یکپارچه و "حالت ممتاز" را می توان به مسئله اصلی تفکیک مکانیسم - سیاست مورد استفاده قرار داد ؛ در حقیقت رویکرد معماری "حالت ممتاز" سازوکار حفاظت با سیاست های امنیتی را می بخشد ، در حالی که اصلی ترین گزینه معماری. رویکرد ، آدرس دهی مبتنی بر قابلیت ، به طور واضح بین این دو تمایز قایل می شود ، و به طور طبیعی به یک طرح ریزگرد منجر می شود (نگاه کنید به تفکیک حفاظت و امنیت).

در حالی که هسته های یکپارچه تمام کدهای خود را در همان فضای آدرس (فضای هسته) اجرا می کنند ، میکروکرن ها سعی می کنند اکثر خدمات خود را در فضای کاربر اجرا کنند ، با هدف بهبود قابلیت حفظ و مدولار بودن پایه کد. بیشتر هسته ها دقیقاً در یکی از این دسته ها جای نمی گیرند ، بلکه در بین این دو طرح وجود دارد. به اینها هسته ترکیبی گفته می شود. طرح های عجیب و غریب تری از قبیل نانو هسته و اگزوکلنل موجود است ، اما بندرت برای سیستم های تولید استفاده می شود. به عنوان مثال ، Hypervisor Xen یک اگزوکرونل است.
<br />
== جستارهای وابسته ==
== جستارهای وابسته ==
{{انبار-رده|Operating system kernels}}
{{انبار-رده|Operating system kernels}}

نسخهٔ ‏۳۱ مهٔ ۲۰۲۰، ساعت ۱۵:۴۱

نقش هسته در سیستم‌عامل. واسطه‌ای میان برنامه‌های کاربری و سخت‌افزار است.

در علوم رایانه، هسته[۱] (که کِرنِل نیز خوانده می‌شود) یک برنامه رایانه است که هسته مرکزی یک سیستم عامل رایانه را تشکیل می‌دهد و کنترل تمام چیزهایی را که در سیستم اتفاق می‌افتد را در دست دارد؛[۲] این یک بخش جدایی ناپذیر از هر سیستم عامل است. این "بخشی از کد سیستم عامل است که همیشه در حافظه ساکن است" در اکثر سیستم ها ، این اولین برنامه بارگیری شده در هنگام راه اندازی است (بعد از بوت لودر)، همچنین کنترل درخواستهای ورودی و خروجی توسط نرم افزارها و ترجمه آن‌ها به ساختارهای قابل پردازش برای واحد پردازش مرکزی را به عهده دارد. علاوه بر آن مدیریت حافظه و ارتباط با دستگاه‌های جانبی مثل صفحه کلید, مانیتور, چاپگر و بلندگو هم بر عهده این برنامه است. هسته قسمت اساسی سیستم عاملهای مدرن امروزی است.[۳]

کد بحرانی هسته معمولاً در یک قسمت جداگانه از حافظه بارگذاری می شود ، که از دسترسی برنامه های کاربردی یا سایر قسمت های کم اهمیت سیستم عامل محافظت می شود. هسته در این فضای محافظت شده وظایف خود مانند اجرای فرایندها ، مدیریت دستگاه های سخت افزاری مانند دیسک سخت و کار با وقفه را انجام می دهد. در مقابل ، برنامه های کاربردی مانند مرورگرها ، واژه پرداز ها یا پخش کننده های صوتی یا تصویری از یک فضای مجزا از حافظه ، فضای کاربر استفاده می کنند. این جداسازی از دخالت داده های کاربر و هسته با یکدیگر و ایجاد بی ثباتی و کندی و همچنین از خرابی برنامه های کاربردی در کل سیستم عامل جلوگیری می کند.

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

این مؤلفه اصلی یک سیستم رایانه ای وظیفه اجرای برنامه ها را بر عهده دارد. هسته مسئولیت تصمیم گیری در هر زمان را در مورد اولویت برنامه های در حال اجرا به پردازنده یا پردازنده ها اختصاص می دهد.

حافظه دسترسی تصادفی (RAM)

حافظه با دسترسی تصادفی برای ذخیره موقت ساختارهای برنامه و همچنین اطلاعات به کار می‌رود. هسته مسولیت تصمیم گیری این را بر عهده دارد که هر پروسس می‌تواند از کدام حافظه استفاده کند و تصمیم بگیرد زمانی که حافظه کافی وجود ندارد چه کاری را انجام دهد.

دستگاههای ورودی / خروجی (I / O)

دستگاه های I / O شامل موارد جانبی مانند صفحه کلید ، ماوس ، درایو دیسک ، چاپگر ، دستگاه های USB ، آداپتورهای شبکه و دستگاه های صفحه نمایش هستند. کرنل درخواست های برنامه ها را برای انجام I / O به یک دستگاه مناسب اختصاص می دهد و روش های مناسبی را برای استفاده از دستگاه فراهم می کند (به طور معمول در جایی خلاصه می شود که برنامه نیازی به دانستن جزئیات اجرای دستگاه نداشته باشد).

واحد پردازش مرکزی

واحد پردازشگر مرکزی مسوولیت اجرای تمام برنامه‌ها را به عهده دارد. این هسته است که تصمیم می‌گیرد در هر زمانی کدامیک از برنامه‌ها باید توسط این واحد یا واحدها (هر واحد فقط قادر به اجرای یک برنامه در هز زمان است) اجرا شود.

مدیریت منابع

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

مدیریت حافظه

هسته دسترسی کامل به حافظه سیستم دارد و باید به فرایندها اجازه دهد تا با اطمینان از این حافظه به محض نیاز خود دسترسی پیدا کنند. اغلب اولین قدم در انجام این کار ، آدرس دهی مجازی است که معمولاً با صفحه بندی و یا تقسیم بندی انجام می شود. حافظهٔ مجازی این اجاره را به هسته می‌دهد تا مثل یک آدرس فیزیکی داده به نظر می‌رسد. فضای آدرس مجازی ممکن است برای فرایندهای مختلف متفاوت باشد. حافظهٔ مجازی حافظه ایست که یک فرایند دسترسی در یک آدرس خاص با فرایند دیگری در همان آدرس حافظه‌ای متفاوت داشته باشد. استفاده از ان آدرس این اجازه را می‌دهد که هر برنامه در حال اجرا مانع اجرای برنامه‌های کاربردی دیگر نشود. حافظهٔ مجازی همچنین این اجازه را می‌دهد حافظه به دو دسته (مد هسته) و (مد کاربر) تقسیم کرده و از آسیب به یک برنامهٔ در حال اجرا در هسته می‌شود.

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

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

مدیریت دستگاه

برای انجام کارکردهای مفید ، فرایندها نیاز به دسترسی به لوازم جانبی متصل به رایانه دارند که توسط هسته از طریق درایورهای دستگاه توسط هسته کنترل می شوند. درایور دستگاه یک برنامه رایانه ای است که سیستم عامل را قادر می سازد با یک دستگاه سخت افزاری ارتباط برقرار کند. این سیستم عامل اطلاعاتی در مورد چگونگی کنترل و برقراری ارتباط با یک قطعه خاص از سخت افزار را در اختیار شما قرار می دهد. درایور یک قطعه مهم و یک برنامه اساسی است. هدف طراحی درایور انتزاع است. وظیفه درایور ترجمه مکالمات عملکرد انتزاعی انتصاب شده توسط سیستم عامل (تماس های برنامه نویسی) در تماس های خاص دستگاه است. از نظر تئوری ، دستگاه باید به درستی با درایور مناسب کار کند. درایورهای دستگاه برای مواردی مانند کارتهای ویدئویی ، کارتهای صوتی ، چاپگرها ، اسکنرها ، مودمها و کارتهای LAN استفاده می شوند.

در سطح سخت افزار ، انتزاعات مشترک درایورهای دستگاه شامل موارد زیر است:

  • رابط مستقیم
  • استفاده از رابط سطح بالا (BIOS Video)
  • استفاده از درایور دستگاه سطح پایین تر (درایور پرونده از درایورهای دیسک استفاده می کند)
  • شبیه سازی کار با سخت افزار ، در حالی که انجام کاری کاملاً متفاوت است

و در سطح نرم افزار ، انتزاعات درایور دستگاه شامل موارد زیر است:

  • اجازه دسترسی مستقیم سیستم عامل به منابع سخت افزاری
  • فقط اجرای اولیه
  • اجرای رابط برای نرم افزارهای غیر درایور مانند TWAIN
  • اجرای یک زبان (اغلب یک زبان سطح بالا مانند PostScript)


فراخوان سیستمی

مقاله اصلی: فراخوان سیستمی

فراخوان سیستمی یک برنامه درخواستی از سیستم عامل در مد ویژه است.

یک فراخوان سیستمی رابط بین فرایند و سیستم عامل است. فراخوان سیستمی یک مکانیسم است که توسط برنامه نرم‌افزار به درخواست یک سرویس از سیستم عامل استفاده می‌شود. به‌طور کلی سیستم عامل یک کتابخانه است که بین سیستم عامل و برنامه‌های عادی می‌باشد. برای فراخوانی‌های سیستمی چند راه وجود دارد:

  1. با استفاده از یک وقفهٔ نرم‌افزاری
  2. با استفاده از یک دروازهٔ پاسخ
  3. با استفاده از یک دستتورالعمل سیستم پاسخ خاص
  4. با استفاده از یک صف مبتنی بر حافظه

تصمیمات طراحی هسته

حفاظت

نکته مهمی که در طراحی هسته وجود دارد ، پشتیبانی در حمایت از خطا (تحمل گسل) و رفتارهای مخرب (امنیت) است. این دو جنبه معمولاً کاملاً مشخص نیستند و اتخاذ این تمایز در طراحی هسته منجر به رد یک ساختار سلسله مراتبی برای محافظت می شود.

مکانیسم ها یا خط مشی های ارائه شده توسط هسته با توجه به معیارهای مختلفی از جمله طبقه بندی می شوند: استاتیک (در زمان کامپایل) یا پویا (در زمان اجرا) اجرا می شود. پیشگیرانه یا پس از تشخیص. مطابق با اصول محافظت از آنها راضی (به عنوان مثال ، Denning). آیا آنها از سخت افزار پشتیبانی می شوند یا مبتنی بر زبان هستند. خواه آنها بیشتر یک مکانیسم باز باشند یا یک سیاست الزام آور. و خیلی بیشتر.

پشتیبانی از حوزه های حفاظت سلسله مراتبی معمولاً با استفاده از حالتهای CPU انجام می شود.

بسیاری از هسته ها اجرای "قابلیت ها" ، یعنی اشیایی را که به کد کاربر ارائه می شود امکان دسترسی محدود به یک شیء اساسی را که توسط هسته کنترل می شود فراهم می کنند. مثال متداول ، دست زدن به پرونده است: یک پرونده بازنمایی اطلاعات ذخیره شده در یک دستگاه ذخیره سازی دائمی است. هسته ممکن است قادر به انجام بسیاری از عملیات های مختلف ، از جمله خواندن ، نوشتن ، حذف یا اجرای آن باشد ، اما یک برنامه در سطح کاربر فقط ممکن است مجاز به انجام برخی از این عملیات ها باشد (به عنوان مثال ، فقط خواندن پرونده مجاز است). اجرای مشترک این امر این است که کرنل یک شیء را برای برنامه ارائه دهد (معمولاً به اصطلاح "دسته پرونده" نامیده می شود) و سپس برنامه می تواند عملیات را فراخوانی کند ، اعتبار آن در زمان درخواست عملیات هسته را بررسی می کند. چنین سیستمی ممکن است گسترش یابد تا تمام اشیاء هسته را مدیریت کند ، و در واقع به اشیاء ارائه شده توسط برنامه های کاربردی کاربر دیگر باشد.

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

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

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

تصمیم مهم در مورد طراحی هسته ، انتخاب سطوح انتزاعی است که مکانیسم ها و سیاست های امنیتی باید در آن اعمال شود. مکانیسم های امنیتی هسته نقش اساسی در حمایت از امنیت در سطوح بالاتر دارند.

یک رویکرد استفاده از سیستم عامل و پشتیبانی هسته برای تحمل خطا است (ایجاد بالا) و ایجاد سیاست امنیتی برای رفتارهای مخرب در بالا از آن (اضافه کردن ویژگی هایی مانند مکانیزم های رمزنگاری در صورت لزوم) ، واگذاری برخی مسئولیت ها به کامپایلر. رویکردهایی که اجرای سیاستهای امنیتی را به کامپایلر و / یا سطح برنامه واگذار می کنند ، معمولاً امنیت مبتنی بر زبان نامیده می شوند.

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

محافظت از سخت افزار یا مبتنی بر زبان

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

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

مزایای این رویکرد شامل موارد زیر است:

  • نیازی به فضای آدرس جداگانه نیست. جابجایی بین فضاهای آدرس عملیاتی کند است که باعث سربار زیاد می شود و در حال حاضر کارهای بهینه سازی زیادی انجام می شود تا از سوئیچ های غیر ضروری در سیستم عامل های فعلی جلوگیری شود. سوئیچینگ در یک سیستم محافظتی مبتنی بر زبان کاملاً غیر ضروری است ، زیرا همه کد ها می توانند با خیال راحت در همان فضای آدرس کار کنند.
  • انعطاف پذیری هر طرح محافظتی که می تواند از طریق یک زبان برنامه نویسی بیان شود ، می تواند با استفاده از این روش عملی شود. تغییرات در طرح حفاظت (به عنوان مثال از یک سیستم سلسله مراتبی به سیستم مبتنی بر قابلیت) نیازی به سخت افزار جدید ندارد.

معایب عبارتند از:

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

نمونه هایی از سیستم های دارای محافظت مبتنی بر زبان شامل JX و Singularity مایکروسافت است.

همکاری فرآیند

Edsger Dijkstra ثابت کرد که از دیدگاه منطقی ، عملیات قفل و باز کردن قفل اتمی که در سمفورهای باینری کار می کند ابتدایی کافی برای بیان هرگونه عملکرد همکاری فرآیند هستند. با این حال ، این رویکرد به طور کلی از نظر ایمنی و کارآیی به نظر می رسد ، در حالی که یک رویکرد انتقال پیام انعطاف پذیرتر است. تعداد زیادی از رویکردهای دیگر (یا سطح پایین یا بالاتر) نیز موجود است ، که بسیاری از هسته های مدرن پشتیبانی از سیستم هایی مانند حافظه مشترک و تماس های از راه دور را پشتیبانی می کنند.

مدیریت دستگاه I / O

ایده هسته ای که دستگاه های I / O به طور یکنواخت با سایر فرآیندها به کار گرفته می شوند ، به عنوان فرآیندهای همکاری موازی ، ابتدا توسط برینچ هانسن پیشنهاد و اجرا شد (اگرچه ایده های مشابه در سال 1967 پیشنهاد شد). در توضیحات هانسن در مورد این ، فرآیندهای "رایج" فرایندهای داخلی نامیده می شوند ، در حالی که دستگاه های I / O فرایندهای خارجی نامیده می شوند.

مشابه حافظه فیزیکی ، اجازه دسترسی مستقیم به برنامه ها به درگاه ها و ثبت های کنترل کننده می تواند باعث خراب شدن کنترلر یا خراب شدن سیستم شود. با این کار بسته به پیچیدگی دستگاه ، برخی از دستگاه ها می توانند به طرز شگفت آوری پیچیده ای برای برنامه ریزی شوند و از چندین کنترلر مختلف استفاده کنند. به همین دلیل ، ارائه یک رابط انتزاعی تر برای مدیریت دستگاه مهم است. این رابط معمولاً توسط یک درایور دستگاه یا لایه انتزاعی سخت افزاری انجام می شود. بیشتر اوقات ، برنامه ها نیاز به دسترسی به این دستگاه ها دارند. هسته باید با پرس و جو در سیستم برای آنها به نوعی لیست این دستگاه ها را حفظ کند. این کار از طریق BIOS یا از طریق یکی از اتوبوسهای مختلف سیستم (مانند PCI / PCIE یا USB) قابل انجام است. هنگامی که یک برنامه کاربردی را روی یک دستگاه درخواست می کند (مانند نمایش کاراکتر) ، هسته باید این درخواست را به درایور ویدیوی فعال فعلی ارسال کند. درایور ویدیو نیز به نوبه خود باید این درخواست را انجام دهد. این نمونه ای از ارتباطات درون فرایندی (IPC) است.

رویکردهای طراحی گسترده هسته

به طور طبیعی ، کارها و ویژگی های ذکر شده در بالا می تواند از جهات مختلفی ارائه شود که در طراحی و اجرای متفاوت از یکدیگر هستند.

اصل تفکیک مکانیسم و ​​سیاست تفاوت اساسی بین فلسفه هسته های خرد و یکپارچه است. در اینجا مکانیسم پشتیبانی است که اجرای بسیاری از سیاستهای مختلف را امکان پذیر می سازد ، در حالی که یک سیاست "حالت عملکرد" ​​خاص است. مثال:

  • مکانیسم: تلاش برای ورود به کاربر به یک سرور مجوز هدایت می شود
  • خط مشی: سرور مجوز نیاز به رمزعبور دارد که در برابر رمزهای ذخیره شده در یک پایگاه داده تأیید شود

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

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

پرو برینچ هانسن استدلالهایی را به نفع تفکیک مکانیسم و ​​سیاست ارائه داد. عدم انجام صحیح این جدایی یکی از مهمترین دلایل عدم نوآوری اساسی در سیستم عامل های موجود است ، مشکلی که در معماری رایانه رایج است. طراحی یکپارچه با روش معماری "حالت هسته" / "حالت کاربر" ناشی از حفاظت (که از لحاظ فنی به آن دامنه های محافظت از سلسله مراتبی گفته می شود) القا می شود ، که در سیستم های تجاری معمولی رایج است ؛ در حقیقت ، بنابراین هر ماژول نیاز به محافظت را ترجیح می دهد. به هسته. این پیوند بین طراحی یکپارچه و "حالت ممتاز" را می توان به مسئله اصلی تفکیک مکانیسم - سیاست مورد استفاده قرار داد ؛ در حقیقت رویکرد معماری "حالت ممتاز" سازوکار حفاظت با سیاست های امنیتی را می بخشد ، در حالی که اصلی ترین گزینه معماری. رویکرد ، آدرس دهی مبتنی بر قابلیت ، به طور واضح بین این دو تمایز قایل می شود ، و به طور طبیعی به یک طرح ریزگرد منجر می شود (نگاه کنید به تفکیک حفاظت و امنیت).

در حالی که هسته های یکپارچه تمام کدهای خود را در همان فضای آدرس (فضای هسته) اجرا می کنند ، میکروکرن ها سعی می کنند اکثر خدمات خود را در فضای کاربر اجرا کنند ، با هدف بهبود قابلیت حفظ و مدولار بودن پایه کد. بیشتر هسته ها دقیقاً در یکی از این دسته ها جای نمی گیرند ، بلکه در بین این دو طرح وجود دارد. به اینها هسته ترکیبی گفته می شود. طرح های عجیب و غریب تری از قبیل نانو هسته و اگزوکلنل موجود است ، اما بندرت برای سیستم های تولید استفاده می شود. به عنوان مثال ، Hypervisor Xen یک اگزوکرونل است.

جستارهای وابسته

منابع

  1. هسته برابرنهاد «واژه‌نامه مرجع برای ترجمه محیط لینوکس» برای واژهٔ کرنل (به انگلیسی: Kernel) است.
  2. "Kernel". Linfo. Bellevue Linux Users Group. Retrieved 15 September 2016.
  3. Wulf 1974 pp.337–345

مشارکت‌کنندگان ویکی‌پدیا. «kernel». در دانشنامهٔ ویکی‌پدیای انگلیسی، بازبینی‌شده در ۳۱ می ۲۰۲۰.