این روزها هر جا رو نگاه میکنم  یا  تصو یر  پنگوئن می بینم یا صحبتی از اون می شنوم تصمیم گرفتم بدونم این پنگوئن چیه که همه از ایشون صحبت میکنند!!!                                                                                                                     شما هم اگه علا قه ای به این کار داشتین می تونید منو همراهی کنید:

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

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

هسته لینوکس ،بزرگترین،پیچیده ترین و کامل ترین هسته در میان سیستم عامل های موجود است ، اما بر خلاف این گستردگی،تاریخچه بسیار کوتاه وسرعت رشد بالایی دارد.           اولین سیستم عامل ها تقریباٌ در دهه 1950 برای کامپیوتر های سرور نوشته شدند.

برای نمونه می توان بهGMOS(General Motors Operating System)برای                      IBM701  و(FORTRAN Monitor System)FMSبرای IBM709 اشاره کرد.در حقیقت این برنامه ها یک سیستم عامل کامل نبودندو بیشتر رابطی میان کاربر وسخت افزار محسوب می شدند. در دهه1960 اولین سیستم عامل به معنای امروزی توسط دانشگاه MITبرای کامپیوتر GE-645 نوشته شد و Multics(Muliplexed Information and Computing Service)نام  گرفت.                                                                                                                    در دهه 1970 توسعه دهندگان این سیستم عامل در موسسه AT&Tکار خودشان را کامل کرده وسیستم عامل Unixرا برنامه نویسی کردند. Unixبه زبان( C)نوشته شده ومخصوص کامپیوترهای سرور بود.پس ازارایه Unix کم کم شرکت های دیگر سیستم عامل هایی را روانه بازار کردند ودر دهه 1980هم سیستم عامل های مخصوص کامپیوتر های خانگی روانه بازار شدند(مکینتاش و ویندوز).                                         

دقیقاٌ بیست سال بعد تننباوم(Andrew Tanenbaum)استاد دانشگاه و نویسنده کتاب های درسی سیستم عامل و شبکه های کامپیوتری برای رشته تحصیلی کامپیوتر ، نسخه سفارشی شده ای از یونیکس را به نام MINIX(برگرفته از Minimal Unix)برای آزمایشگاه های درس سیستم عامل تهیه کرد.MINIXخیلی ساده وسریع روی کامپیوتر های خانگی اجرا شد و اصول اولیه یک سیستم عامل را به طور  کامل به نمایش می گذاشت . لینوس توروالدز همین MINIXرا توسعه داد و در سال 199اولین نسخه لینوکس را روی اینترنت منتشر ساخت.لینوس یک دانشجوی کامپیوتر بود وMINIXنیازهایش را برآورده نمی کرد. به همین دلیل سعی کرد آن را کامل کند اما هیچ گاه فکر نمی کرد همین نیاز،بنیان ایجاد بزرگترین هسته سیستم عاملی جهان شود.

 

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

لینوکس از دوبخش اصلی فضای کاربر(User Space)وفضای هسته(Kernel Space)تشکیل شده است.در فضای کاربرنیازمندیهاوابزارهای مورد نیاز کاربر (User Application و  GNU C Library(glibc)) قراردارد و بالاترین سطح سیستم عامل است .کاربران به این فضا دسترسی دارند.به طور ساده آن رابط گرافیکی و برنامه هایی که می بینیم همان User Applicationها در فضای کاربر هستند.glibcنیز وظیفه برقراری یک ارتباط میان برنامه های کاربردی وهسته سیستم عامل را بر عهده دارد. این برنامه توسط موسسه نرم افزار آزاد وبراساس زبان (C) تهیه شده است.بنابراین هرگاه کلیک کرده و برنامه ای را اجرا می کنیم،از سیستم عامل تقاضایی داریم ،پنجره ای را باز وبسته یافرمانی را اجرامی کنیم، این کار ما از طریق برنامه کاربردی به دستglibcمی رسد و او آن را به فضای هسته سیستم عامل منتقل می کند. در عوض پاسخ آن را از فضای هسته گرفته و به برنامه تحویل می دهد وما نتیجه را مشاهده می کنیم.

در فضای هسته سیستم عامل،اولین جزء رابطی است که با  glibc یا فضای کاربر در ارتباط است.به این بخش رابط فراخوانی سیستم (System Call Interface) میگویند.هر دستور یا کار ما در سیستم عامل موجب میشود که یک تابع در هسته برای اجرا صدا زده شود. رابط فراخوانی سیستم و glibc  نقش بسیار مهمی در هر سیستم عامل ایفا میکنند؛چون ارتباط دوگانه و موثر این دو با یکدیگر و سرعت عمل آنها بخش مهمی از پروسه اجرای یک کار را صورت میدهد.جزء بعدی همان هسته یا بخش اصلی سیستم عامل است. تمام دستورات،رویه ها،فرامین،توابع و چگونگی عملکردهای سیستم عامل در هسته آن گنجانده شده است.هرگاه صحبت از هسته لینوکس میشود،منظور همین بخش است.رابط فراخونی سیستم یک دستور را به هسته داده و نتیجه آن را به لایه بالاتر منتقل میکند.هسته با یک بخش زیرین به نام وابستگی های معماری کدهای هسته در ارتباط است که شامل تمامی آن چیزهایی است که هسته سیستم عامل ممکن است نیاز داشته باشد.از جمله این نیازمندی ها اطلاعات سخت افزاری،درایورهای سخت افزاری،اطلاعات سیستم و مانند اینها است.قابل توجه است که برنامه های کاربردی میتوانند مستقیماٌ با هسته یا وابستگی های معماری ارتباط برقرار کنند.

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

 

ساختار هسته لینوکس

مهمترین بخشهای هسته:

رابط فراخوانی سیستم (System Call Interface)                                              همان طور که گفته شد SCIرابط میان کاربر وهسته است و دستورات کاربر را تحویل هسته ونتیجه آن را تحویل بخش فضای کاربری می دهد. به بیان ساده تر زبان سطح بالای کاربر را به زبان قابل فهم برای هسته ترجمه می کند.

 مدیریت پروسه ها                                                                        (ProcessManagment) هرپروسه دارای یک سری کد وملزومات است ونیاز به پردازنده،حافظه،بافر سریع وچیزهای دیگر دارد.در این بخش این نیازمندی های پروسه مدیریت می شود.برای مثال کدام پروسه بر دیگری ارجحیت دارد و باید حافظه بیشتری به آن اختصاص داده شود یا کدام پروسه نیاز به برقراری ارتباط با درگاه های ورودی/خروجی دارد.همچنین رسیدگی و مدیریت APIها یا رابط اجرای برنامه ها در این بخش صورت می گیرد.اجرای یک پروسه،از بین بردن یک پروسه،فعال کردن پروسه وهماهنگی آن ها از دیگر وظایف این بخش است.

مدیریت حافظه(Memory Management)                                                             یکی از اصلی ترین کارهای هر هسته سیستم عامل،مدیریت حافظه است.چون در میان پروسه ها برای تصاحب حافظه یک جنگ همیشگی وجود دارد.در این میان هسته است که باید با مدیریت پروسه ها وحافظه وایجاد صلح میان آن ها سعی کند به بهترین نحو،بیشترین پروسه در حال اجرا رادر کمترین حافظه جا دهد.هسته برای این منظور از الگوریتم ها،اولویت ها،حافظه مجازی وسیستم ورود وخروج دوره ای پروسه ها استفاده می کند.

سیستم فایل مجازی(Virtual File System)                                                         یکی از نقاط قوت لینوکس،فایل سیستم آن است.کمتر سیستم عاملی مانند لینوکس می تواند از هر فایل سیستمی پشتیبانی کند و به بهترین نحو فایل ها را مدیریت و نگهداری کند. به زبان ساده هنگامی که یک درایو ویندوزی با فرمت Fat32یا NTFSرا به فایل سیستم لینوکس متصل می کنید،این کار توسط VFSانجام می شود. برای لینوکس یک فایل سیستم مشخص تعریف نشده است،بلکه با استفاده از VFSمی توان هر فایل سیستمی را به آن متصل و استفاده کرد.

آیا هسته سیستم عامل اهمیت دارد؟                                                                                                                   اگر سیستم عامل را به بدن انسان تشبیه کنیم،هسته نقس اسکلت واستخوان ها را به همراه قلب و مغز بازی می کند.برنامه های کاربردی،رابط کاربری گرافیکی،رنگ،بعد،پنجره،پوسته و...همه چیزی جز مقداری گوشت و پوست برای زیباکردن اسکلت هسته لینوکس نیستند. هسته لینوکس به عنوان گسترده ترین و قدرتمندترین هسته سیستم عاملی شناخته می شود؛چون در طراحی آن امکانات وقابلیت های بی پایان زیادی گنجانده شده است. برای نمونه هسته لینوکس قابلیت پشتیبانی بسیار گسترده از پروتکلTCP/IPشبکه رادارد. هسته لینوکس می تواند شبکه هایی با سرعت گیگابیت بر ثانیه را پشتیبانی کند. به همبن دلیل می گویند برای کار های شبکه ای،لینوکس بسیار مناسب است. هسته لینوکس قابلیتی به نام KVM(Kernel-based Virtual Machine)دارد که امکان پیاده سازی و مجازی سازی ماشین های مختلف سخت افزاری را می دهد.                                 قابلیت دیگر ،Dynamically Loadable Kernel Modulesنام دارد و افزودن هر نوع ماژول نرم افزاری را به هسته امکان پذیر می کند.در نهایت مهمترین ویژگی هسته لینوکس رامی توان قابلیت توسعه و گسترش همگانی و در دسترس بودن برای سفارشی سازی مناسب با نیازهای خاص و ویژه دانست.                                                  امیدارم که خسته نشده باشید