# برنامه نویسی سطح پایین > توسعه‌ی هسته‌ی سیستم عامل >  معرفی کلی انواع هسته های سیستم عامل

## asm.coder

کرنل ها بخش اصلی یک سیستم عامل را تشکیل می دهند و وظایف اساسی از قبیل مدیریت حافظه . مدیریت سخت افزار . ایجاد بستر مناسب برای اینترفیس ها و ... را به عهده دارد .
کرنل ها بستگی به نوع ساختار خود به دسته های مختلفی تقسیم می شوند اما در کل به دسته Monolithic Kernel ها و Micro Kernel ها تقسیم بندی می شوند .

*Monolithic Kernel*
در کرنل های monolithic معمولا کرنل به عنوان یک تک برنامه در بالای مموری نشسته و سیستم را مدیریت می کند. این نوع کرنل ها که به هسته های یکپارچه در فارسی معروفند به خاطر وابستگی قسمت های مختلف به یکدیگر درصورت بروز مشکل در یک قسمت امکان دارد کل سیستم مختل شود . البته در صورت نبود چنین مشکلی این ارتباط نزدیک بخش های مختلف یکی از مزایای این سیستم به شمار می رود .
لینوکس و یونیکس از معروفترین این نوع کرنل ها هستند.
شمای کلی این نوع کرنل :



*Micro Kernel*
ریزهسته ها یا micro kernel ها بیشتر تمرکز خود را بر اجرای device driver ها و سرویس ها در محیط userspace دارند . مزیت این سیستم ها این است که در صورت بروز مشکل در یک قسمت بقیه قسمت ها بدون مشکل کار خواهند کرد.
Minix , AIX از معروفترین این نوع کرنل ها هستند.

 
در این تقسیم بندی ساختار های دیگری نیز وجود دارد مثل :
*Hybird Kernel* که از زیرمجموعه Micro Kernel ها هستند و در واقع برای بهبود Micro Kernel شامل کدهای در حافظه هستند.

 *Modular Kernel* این کرنل ها قسمت های مختلف را به صورت module بعد از لود شدن کرنل لود می کنند .
البته این تقسیم بندی در اینجا تمام نمی شود کرنل های دیگری مثله Nano Kernel ها و ExoKernel ها هم وجود دارد.

----------


## ahmad598

فکر می کنم که کرنلهای جدیدتر لینوکس هم ماژولار باشن نه مونولیتیک. ولی مطمءن نیستم.
راستی چرا در مورد ویندوز چیزی نگفتین؟ یعنی مایکروسافت انقدر بسته است؟!

----------


## miradli

*کرنل ویندوز های NT به بعد Hybrid kernel می باشد* . برای اطلاعات بیشتر در مورد کرنل Hybrid kernel این لینک مفید می باشد :   http://en.wikipedia.org/wiki/Hybrid_kernel

----------


## ilia_86

سلام
ببخشید می خواستم بدانم اگر بخواهیم خودمون یک کرنل مثل MenuetOs بنویسیم . مستندات فارسی برای آن وجود دارد؟  یا حتی برای نوشتن یک BootLoader ساده؟
همینطور اگر بخواهیم سیستم عامل کوچکی مثل Menuet را فارسی کنیم کدام فایل های آن را بایستی دستکاری کنیم؟
با تشکر

----------

