هسته یا کرنل (Kernel) لینوکس چیست ؟ انواع هسته های لینوکس
در این آموزش (هسته یا کرنل (Kernel) لینوکس چیست ؟) با سایت هوشیار همراه باشید.
هر سیستم عامل لینوکسی از دو بحش کلی : هسته یا Kernel و پوسته یا Shell تشکیل شده است ، اما در این مقاله قصد داریم تا بر روی هسته لینوکس یا Kernel که به عنوان مغز متفکر سیستم عامل لینو کس عمل می کند ، تمرکز بیشتری داشته باشیم و از زوایای مختلف هم بررسی کنیم از جمله : وظایف هسته لینوکس ، مزایای هسته لینوکس ، انواع هسته لینوکس ، روش نام گذاری کرنل لینوکس ، کامپایل کرنل لینوکس ، مدیریت کامپونننت ها و ماژول های کرنل و … بپردازیم .
کرنل یا هسته لینوکس (Linux Kernel)
هسته یا Kernel بخش اصلی اکثر سیستم عامل های مدرن است. برخی از سیستم عامل های ابتدایی فاقد هسته بودند که در این گونه سیستم ها کاربر مستقیما با سخت افزار ارتباط برقرار می کرد. ارتباط با سخت افزار گرچه باعث افزایش سرعت می شود و همچنین دست کاربر را برای برقراری هر ارتباط با سخت افزاری باز می گذاشت، اما مشکلات بسیاری را بوجود می آورد.
یک اشتباه از سوی کاربر و یا یکی از نرم افزارها ، می توانست سخت افزار را دچار مشکل کند و همچنین مدیریت نرم افزارها برای استفاده از منابع سخت افزاری بسیار پیچیده بود.
برای رفع این گونه مشکلات، هسته dا کرنل سیستم عامل بوجود آمد و به عنوان یک رابطه بین کاربر و سخت افزار طراحی و به یکی از اصلی ترین و اساسی ترین بخش های سیستم های عامل امروزی تبدیل شده است.
هسته لینوکس از هسته شبیه یونیکس می باشد که بر استفاده ترین و یکی از محبوب ترین هسته ها و سیستم عامل است. هسته لینوکس هم بر روی کامپیوترهای سنتی و معمولی استفاده می شود که توضیع های مختلف لینوکس وجود دارد و هم بر روی دستگاهای تعبیه شده و جانبی نصب می شود مثل (Router ها ، MP3 ها و… ).
هسته لینوکس در سال ۱۹۹۱ توسط دانشجویان علوم کامپیوتر فنلاندی لینوس توروالدز خلق شد و از آن سال به بعد کسانی که علاقه و مهارت داشتن در حال توسعه هسته لینوکس هستند.
جهت دریافت آخرین نسخه پایدار هسته لینوکس می توانید از طریق سایت زیر اقدام به دریافت کنید:
www.kernel.org
وظایف هسته لینوکس
1- مدیریت قطعات
قطعات بسیاری به یک کامپیوتر متصل می شوند. از جمله کارت های گرافیک، هارد، صدا، پردازنده و حافظه رم به جز مودم، کارت شبکه و … که هر یک به نحوی کار می کنند و هسته با استفاده از درایورهای مختلف از نحوه کار آنها مطلع می شود و قادر به برقراری ارتباط مناسب بین قطعات می شود. هر ارتباطی که با سخت افزار صورت می گیرد، باید از قواعد خاص پیروی کند و هسته اطمینان پیدا می کند که این قواعد به درستی رعایت می شوند.
2- مدیریت حافظه
هر پروسه ای که اجرا می شود ، نیاز به مقدار معینی از حافظه رم دارد . هسته اطمینان پیدا می کند که مقدار حافظه مورد نیاز هر پروسه، به آن اختصاص داده شود. هسته همچنین باید از اطلاعات ذخیره شده در حافظه جلوگیری نماید، تا اطلاعات مربوط به یک پروسه ، توسط پروسه دیگر دستکاری نشده و مشکلی برای پروسه ها بوجود نیاید.
3- مدیریت پردازنده
هسته برای اطمینان از اینکه هر پروسه ، مدت زمان لازم را برای استفاده از پردازنده در اختیار داشته باشد، پروسه ها رت اولویت بندی می نماید و زمان لازم را به هر پروسه اختصاص می دهد. این مدیریت محدود به زمان نشده و عواملی مثل مجوز های امنیتی هر پروسه، مالکیت پروسه، ارتباطات بین پروسه های مختلف را شامل می شود.
4- ارتباط بین کاربر و سخت افزار
در نهایت کرنل لینوکس وظیفه دارد بستری را برای دسترسی اطلاعات مختلف سخت افزاری، منابع سیستم و … در اختیار برنامه نویسان و کاربران محیا نماید. برنامه نویسان می توانند با استفاده از درخواست های سیستمی به این اطلاعات دسترسی پیدا کرده و در صورت نیاز تغییری در وضعیت سیستم خود بوجود آورند.
فراخوان سیستمی با System Call
هر گاه یک نرم افزار سطح کاربر نیاز به دسترسی به منابع سیستم و سخت افزار را داشته باشد . یکی از توابع درون سیستم عامل را فراخوانی ( Call ) می کند. که به این عمل فراخوان سیستمی، Systern Call یا Syscall می گویند.
فراخوان سیستمی را گاه فراخوان هسته ای نیز می نامند چرا که در اکثر پردازنده های مدرن (مثلا معماری x86) ، برای انجام فراخوان سیستمی پردازنده باید در حالت مد هسته باشد. به زبانی دیگر هیچ برنامه ای حق دسترسی مستقیم به سخت افزار را ندارد و باید توسط واسطه ای که سیستم عامل در اختیارش قرار می دهد و نامش فراخوان سیستمی است به سخت افزار سیستم دسترسی پیدا نماید .
انواع هسته های لینوکس
لینوکس فقط نام هسته سیستم عامل GNU / Linux است. واژه « هسته » ، به سامانه نرم افزاری سطح پایینی (به معنی نزدیک تر به سخت افزار در رده بندی معماری سیستم عامل) اشاره می کند که لایه ای در معماری سیستم عامل به نام لایه انتزاع سخت افزار را تأمین می کند و دیسک ها و سامانه پرونده گردانی را بررسی می نماید و تراز کردن ذخیره سازی داده ها و شبکه بندی و برقراری امنیت را بر عهده دارد دسته های متنوعی برای سیستم های عامل وجود دارد که از این بین می توان به مهمترین آنها اشاره کرد:
1- هسته یکپارچه یا هسته Monolithic :
نوعی معماری سیستم عامل است ، که کل سیستم عامل در حالت Supervisor و در فضا هسته فعالیت می کند. هسته یکپارچه فضای مجازی را بالاتر از سخت افزار کامپیوتر بوجود می آورد و در مقابل معماری هایی مثل ریز هسته مطرح می شود. این فضا شامل درخواست های سیستمی اولیه و ابتدایی است که برای همه سرویس های سیستم عامل مانند مدیریت پروسه ، همزمانی و مدیریت حافظه مورد نیاز است . همزمان برای راه اندازها ماژول های مناسب را در ا ن می گذارد.
تفاوت اصلی این معماری با مثلا Microkernel در همین مورد بالا است .
به عنوان مثال می توان از نمونه های معماری یکپارچه به موارد زیر اشاره نمود :
1) هسته های یونیکس :
- BSD ها از جمله OpenBSD ، NetBSD ، FreeBSD و solaris
- IBM AIX
- HP – UX
- Mini
2) هسته های شبه یونیکس :
- لینوکس
2- ریز هسته (MicroKernel) :
ریز هسته یا Microkernel یک هسته کامپیوتری است که سازو کارهای لازم پیاده سازی سیستم عامل را فراهم می کنند، حیزهایی مانند مدیریت فضای آدرس سطح پایین، مدیریت نخ ها و ارتباطات میان پردازنده ای. اگر سخت افزار چندین سطح دسترسی داشته باشد، آنگاه ریز هسته تنها بخشی از نرم اقرار است که بالاترین سطح دسترسی را داراست که معمولا به آن وضعیت هسته می گویند. در ساختار ریز هسته ای سرویس های واقعی سیستم عامل مانند: راه انداز قطعات و پشته های پروتکل، سیستم فایل ها و دستورهای رابط کاربری در فضای کاربر نگهداری می شود.
3- هسته ترکیبی (Hybrid Kernel) :
ساختاری برای هسته سیستم عامل است که هم ویژگی های ریزهسته و هم ویژگی های هسته یکپارچه را با هم دارد . مدل های سنتی مورد استفاده در هسته سیستم عامل ها، مدل های هسته یکپارچه و ریز هسته بوده اند ( Exo-Kernel , Nano-Kernel حالات کوچکتری از ریز هسته هستند ). هسته های ترکیبی یا Hybrid Kernel به خاطر شباهتش به مدل یکپارچه، بحث برانگیز بوده است. ایده اصلی پشت این ساختار این بوده که هسته از ساختاری مشابه ریزهسته برخوردار باشد، اما بصورت یک هسته یکپارچه پیاده سازی شود.
برخلاف ریزهسته ها، در یک هسته Hybrid یا ترکیبی، همه با اکثریت سرویس های سیستم عامل، در بخش فضای هسته قرار دارند. مشابه هسته یکبارچه، ولی برخلاف هسته های یکپارچه، نمی توان در زمان اجرا بودن سیستم، ماژول هایی را به هسته های Hybrid یا ترکیبی حذف یا اضافه نمود. به هسته های ترکیبی اصطلاحا Modular Kernel نیز گفته می شود .
سیستم عامل های شرکت مایکروسافت از جمله : NT 4.0 و NT 3.51 و NT 3.5 و NT 3.1 و 2000 و Vista و XP و 8 و 7 و 8.1 و 10 و همچنین سیستم عامل شرکت اپل یعنی Mac OS X نیز همگی دارای هسته های ترکیبی هستند .
4- Nano Kernel :
یک NanoKernel نماینده همه سرویس های مجازی از جمله حتی آنهایی که اساسی ترین شباهت را به کنترولرهای وقفه با timer دارند. جهت درایورهای دستگاه به منظور ایجاد حافظه مورد نیاز کرنل می باشد و حتی بسیار کوچکتر از یک Microkernel سنتی است.
5- ابرون هسته (ExoKernel) :
این نوع هسته ها هنوز هم یک روش تجربی جهت طراحی سیستم عامل هستند. این کرنل ها متفاوت از دیگر انواع کرنل ها در عملکردشان هستند که محدود به محافظت و تسهیم سخت افزار خام و ارائه هیچ انتزاع سخت افزاری در بالای application های کاربردی می باشند.