هسته سیستم عامل ها در ژرفای گنو لینوکس

Persian Forum

Moderator: zohall

هسته سیستم عامل ها در ژرفای گنو لینوکس

Postby zohall on Fri Jan 21, 2011 2:13 am

هسته لینوکس یکی از بزرگ ترین پروژه های منبع باز است که قدمتی طولانی دارد. همان طور که می دانید، توزیع های مختلف لینوکسی، خود لینوکس نیستند و لینوکس تنها به هسته این سیستم عامل می گویند که 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

منبع
از مجله رایانه
zohall
Level 3
Level 3
 
Posts: 148
Joined: Tue Jan 18, 2011 4:38 am
Location: www.zohall.org

Linux Mint is funded by ads and donations.
 

Return to فارسی (Persian)

Who is online

Users browsing this forum: No registered users and 1 guest