هسته لینوکس چیست و چه کاری انجام می دهد؟

هسته لینوکس چیست و چه کاری انجام می دهد؟

هسته لینوکس چیست و چه کاری انجام می دهد؟What is the Linux Kernel and What Does It Do?

هسته لینوکس چیست و چه کاری انجام می دهد؟

توسط : admin
با بیش از 13 میلیون خط کد ، هسته لینوکس یکی از بزرگترین پروژه های منبع باز در جهان است ، اما هسته چیست و چه کاربردی دارد ؟

 

بنابراین هسته لینوکس چیست؟

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

 

انواع مختلف هسته

البته روشهای مختلفی برای ساختن هسته و ملاحظات معماری هنگام ساختن آن از ابتدا وجود دارد. به طور کلی ، بیشتر هسته  در یکی از سه نوع قرار می گیرند: monolithic ، microkernel و ترکیبی. لینوکس یک هسته monolithic یا یکپارچه است در حالی که OS X (XNU) و ویندوز 7 از هسته های ترکیبی استفاده می کنند. بیایید سریع از این سه مقوله گذر کنیم ، بعداً می توانیم جزئیات بیشتری کسب کنیم.

 

Microkernel :

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

 

مزایا :

  • قابلیت حمل
  • حافظه نصب کم
  • رم  پایین
  • امنیت

معایب :

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

 

Monolithic Kernel :

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

مزایا :

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

معایب :

  • فضای نصب بزرگ
  • رم نسبتا زیاد
  • امنیت کمتری دارد زیرا همه چیز در حالت سرپرست کار می کند

 

Hybrid Kernel :

هسته های ترکیبی این توانایی را دارند که آنچه را که می خواهند در حالت کاربر اجرا شوند و آنچه را که می خواهند در حالت ناظر اجرا شوند انتخاب  کنند. اغلب اوقات مواردی مانند درایور دستگاه و سیستم فایل I / O در حالت کاربر اجرا می شوند در حالی که IPC و تماس های سرور در حالت سرپرست نگه داشته می شوند. این بهترین امتیاز را در هر دو جهت دارد اما اغلب به کار تولید کننده سخت افزار نیاز دارد زیرا همه مسئولیت درایور بر عهده آنهاست. همچنین می تواند برخی از مشکلات تأخیر را که ذاتا در microkernels باشد ، داشته باشد.

مزایا :

  • توسعه دهنده می تواند انتخاب کند چه چیزی در حالت کاربرو چه چیزی در حالت سرپرست اجرا شود
  • فضای کوچکتر از هسته یکپارچه را برای نصب نیاز دارد
  • انعطاف پذیرتر از سایر مدل ها است

معایب :

  • تاخیر فرآیند همانند microkernel وجود دارد
  • درایورهای دستگاه باید توسط کاربر (به طور معمول) مدیریت شوند

 

فایل های هسته لینوکس کجا هستند؟

فایل هسته در اوبونتو در پوشه / boot شما ذخیره می شود و vmlinuz-version نام دارد. نام vmlinuz از دنیای یونیکس آمده است که در دهه 60 به عنوان "یونیکس" نامیده می شدند ، بنابراین لینوکس وقتی برای اولین بار در دهه 90 تولید شد ، هسته خود را "لینوکس" نامید .

هنگامی که حافظه مجازی برای توانایی های چند وظیفه ای آسان تر توسعه داده شد ، "vm" در جلوی فایل قرار داده شد تا نشان دهد هسته از حافظه مجازی پشتیبانی می کند. برای مدتی هسته لینوکس vmlinux نامیده شد ، اما هسته آن خیلی بزرگ شد تا در حافظه بوت موجود در آن جای بگیرد بنابراین kernel image فشرده می شود و x انتهایی به z تغییر می یابد تا نشان دهد با فشرده سازی zlib فشرده شده است. این فشرده سازی یکسان همیشه استفاده نمی شود ، اغلب با LZMA یا BZIP2 جایگزین می شود و بعضی از هسته ها به سادگی zImage خوانده می شوند.

 

شماره گذاری نسخه به فرمت A.B.C.D خواهد بود که احتمالاً A.B 2.6 باشد ، C نسخه شما خواهد بود و D نشانگر اصلاحات یا وصله های  شما است.

در پوشه / boot پرونده های بسیار مهم دیگری نیز وجود خواهد داشت به نام initrd.img-version ، system.map-version و config-version. از فایل های اولیه به عنوان یک دیسک رم کوچک استفاده می شود که پرونده هسته واقعی را استخراج و اجرا می کند. قبل از بارگیری کامل هسته ، فایل system.map برای مدیریت حافظه استفاده می شود ، و پرونده پیکربندی به هسته می گوید چه گزینه ها و ماژول هایی را هنگام بارگذاری در kernel image بارگیری کنید.

 

معماری هسته لینوکس

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

 

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

 

تصور کنید در ویندوز بتوانید بدون نیاز به راه اندازی مجدد از ویژگی های  Windows service pack  استفاده کنید ...!
این امر در لینوکس امکان پذیر است .

 

ماژول های هسته

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

ماژول به طور معمول برای مواردی مانند دستگاه ها ، سیستم فایل ها و درخواست های سیستم  را به هسته اصلی می افزاید. LKM ها دارای پسوند .ko هستند و به طور معمول در دایرکتوری / lib / modules ذخیره می شوند. به دلیل ماهیت مدولار آنها به راحتی می توانید هسته خود را با تنظیم ماژول ها برای بارگذاری ، یا بارگیری نکردن ، هنگام راه اندازی با دستور menuconfig یا با ویرایش پرونده / boot / config خود تنظیم کنید ، یا می توانید ماژول های موجود در بوت را با modprobe لود و آنلود کنید.

 

ماژول های شخص ثالث و منبع بسته در برخی توزیع ها مانند Ubuntu در دسترس هستند و ممکن است به طور پیش فرض نصب نشود زیرا کد منبع برای ماژول ها در دسترس نیست. توسعه دهنده نرم افزار (به عنوان مثال nVidia ، ATI ، در میان دیگران) کد منبع را ارائه نمی دهد بلکه آنها ماژول های خاص خود را ساخته و فایل های مورد نیاز .ko را برای توزیع کامپایل می کنند. در حالی که این ماژول ها درگفتار آزاد هستند ، در عمل  آزاد نیستند ، بنابراین برخی توزیع ها در آن گنجانده نشده اند زیرا نگهدارنده ها با تهیه یک نرم افزار غیر رایگان این هسته را "taints" می کنند.

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

نظرات :

در عرض چند دقیقه برای ایجاد حساب

کاربری خود اقدام کنید


اکنون حساب کاربری خود را ایجاد کنید!


ایجاد حساب کاربری

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