بررسی هسته لینوکس در مقایسه با دیگر هسته‌ها

در ژرفای لینوکس

هسته لینوکس یکی از بزرگ‌ترین پروژه‌های منبع‌باز است که قدمتی طولانی دارد. همان‌طور که می‌دانید، توزیع‌های مختلف لینوکسی، خود لینوکس نیستند و لینوکس تنها به هسته این سیستم‌عامل می‌گویند که 13 میلیون خط کد دارد. هسته سیستم‌عامل پایین‌ترین سطح نرم‌افزاری است که با سخت‌افزار کامپیوتر در ارتباط است. لینوکس مسوول تمام نرم‌افزارهایی است که در حالت کاربری (User Mode) اجرا می‌شوند. همچنین پروسه‌‌های مختلف از جمله سرورها را اجرا می‌کند و اطلاعات لازم از پروسه‌‌ها را در اختیار دیگر پروسه‌‌ها قرار می‌دهد.
کد خبر: ۳۶۵۷۷۴

انواع هسته‌ها

برای تولید یک هسته دغدغه‌های مختلفی وجود دارد. به‌طور کلی، بیشتر هسته‌ها به سه نوع یکپارچه، میکروهسته و ترکیبی تقسیم می‌شوند. لینوکس یک هسته یکپارچه است، در صورتی که OS X (مکینتاش) و ویندوز7 از هسته‌های ترکیبی استفاده می‌کنند. بهتر است به هر 3 نظری داشته باشیم:

میکروهسته

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

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

هسته یکپارچه

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

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

از مشکلات این هسته، بزرگ بودن آن، مصرف حافظه بالا و امنیت پایین‌تر به‌دلیل اجرای همه‌چیز در حالت ناظر است.

هسته‌های ترکیبی

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

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

اما این مدل معایبی نیز دارد که وجود لگ در اجرای ‌پروسه و مدیریت ‌پروسه‌ها توسط کاربر بخشی از آنهاست.

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

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

پس از این‌که حافظه مجازی برای بهتر کردن قابلیت‌های چندوظیفگی توسعه پیدا کرد، سرنام vm در ابتدای فایل هسته قرار داده شد تا نشان دهد این هسته از حافظه مجازی پشتیبانی می‌کند. تا مدت‌های زیادی هسته لینوکس vmlinux نامیده می‌شد تا این‌که آنقدر بزرگ شد که حافظه بوت آن فشرده شد و x آخر کلمه به‌دلیل فشرده شدن هسته با سیستم zlib، به z تغییر پیدا کرد؛ هر چند همیشه این روش فشرده‌سازی کاربرد ندارد و گاهی از lzma یا bzip2 استفاده می‌شود. در برخی از هسته‌های لینوکسی، نام هسته تنها zImage است.

سیستم نگارش‌بندی آن به‌صورت چهارگانه A.B.C.D است. A.B احتمالا 6/2 است، C نگارش فعلی هسته است و D نشانگر وصله‌ها یا نگارش‌های رفع عیب است.

در فولدر boot / فایل‌های بسیار مهم دیگری نیز قرار دارند که معمولا initrd.img-version، system.map-version و config-version وجود دارد.

فایل initrd اغلب به‌عنوان دیسک‌های رم استفاده می‌شوند که فایل‌ اصلی هسته‌ را باز و اجرا می‌کنند.

فایل system.map برای استفاده در مدیریت حافظه به‌کار می‌رود تا زمانی که هسته به‌طور کامل بارگذاری شود.

فایل config به هسته می‌گوید که چه گزینه‌ها و ماژول‌هایی باید بعد از کامپایل در هسته بارگذاری شود.

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

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

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

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

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

در برخی از توزیع‌های لینوکسی، ماژول‌های منبع‌بسته‌ای وجود دارند که توسط تیم توسعه لینوکس توسعه نیافته‌اند. مثلا در توزیع اوبونتو، توسعه‌ دهنده‌های نرم‌افزاری‌ همچون nVidia و ATI به‌جای ارائه کدمنبع برای قرارگیری در هسته لینوکس، تنها به ارائه فایل‌های کامپایل‌شده ko بسنده کرده‌اند. این ماژول‌ها البته رایگان هستند و می‌توان آنها را دریافت کرد ولی قابلیت سفارشی‌سازی و تغییر ندارند. به‌همین دلیل در برخی از توزیع‌های لینوکسی که بسیار به آزادی نرم‌افزاری معتقد هستند، این نرم‌افزارها وجود ندارد.

هسته جادو نیست، اما برای هر کامپیوتری لازم است. هسته لینوکس به‌ این دلیل از OS X یا ویندوز متفاوت است که درایورهای سخت‌افزاری در سطح هسته وجود دارد و همه چیز بدون نصب نرم‌افزار اضافه قابل استفاده است. امیدواریم این مقاله توانسته باشد بخش کوچکی از کاری که هسته لینوکس انجام می‌دهد را نشان دهد. برای مطالعه بیشتر می‌توانید به سایت زیر مراجعه کنید:

http://www.kernel.org

محمدرضا قربانی

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰
فرزند زمانه خود باش

گفت‌وگوی «جام‌جم» با میثم عبدی، کارگردان نمایش رومئو و ژولیت و چند کاراکتر دیگر

فرزند زمانه خود باش

نیازمندی ها