شما هنوز به سیستم وارد نشده اید.

#1 2016-10-14 23:12:19

pharbod
عضو
از : /
ثبت شده: 2016-08-31
ارسال ها: 50
وب سایت

کرنل و بررسی انواع مختلف آن

سلام،

میدونیم که لینوکس از ساختار کرنل مونولیتیک استفاده میکنه و سیستم عاملی که لینوکس در ابتدای کار ازش الهام گرفته یعنی MINIX از میکروکرنل استفاده میکنه(که موقع طراحی لینوکس بین لینوس و پروفسور تاننباوم بحثهایی سر کرنل در گرفت) همچنین پدربزرگ لینوکس یعنی یونیکس هم از کرنلِ نوعِ مونولیتیک استفاده میکنه.
اما از لحاظ تکنیکی تفاوت ساختاری بین سه دسته از کرنلهای میکروکرنل- مونولیتیک و هایبردی چیه؟ مزایا و معایبشون نسبت به همدیگه چیه؟

مرسی. wink

ویرایش: خب، از اونجا که کسی جواب سوالمو نداده تا الان خودم جواب خودمو میدم بلکه همه با هم یاد بگیریم smile توی پستهای بعدی در جستجوی جوابیم.

آخرین ویرایش توسط pharbod (2016-10-26 13:36:26)

آفلاین

#2 2016-10-26 13:25:05

pharbod
عضو
از : /
ثبت شده: 2016-08-31
ارسال ها: 50
وب سایت

پاسخ: کرنل و بررسی انواع مختلف آن

سوال اصلی من این بود که « تفاوت ساختاری بین سه دسته از کرنلهای میکروکرنل- مونولیتیک و هایبردی چیه؟ » اما جواب دادن به این سوال ظاهرا اونقدرا هم آسون نیست. دلیلش هم پیچیدگی ساختار کرنل هستش. پس واسه اینکه جواب سوالمون رو پیدا کنیم اول بیاییم ببینیم:

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

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

کرنل در پایینترین سطح نرم افزاری قرار داره. به این معنی که ارتباط بسیار مستقیمی با سخت افزار داره.

این داستان ادامه دارد...
در بخش بعدی خواهیم دید کرنل در عمل چکار میکند big_smile

آخرین ویرایش توسط pharbod (2016-10-26 16:29:25)

آفلاین

#3 2016-10-26 16:30:25

mazhar
عضو
ثبت شده: 2016-08-01
ارسال ها: 229

پاسخ: کرنل و بررسی انواع مختلف آن

خیلی عالیه که دارین این مطالب مفید رو می نویسین. فقط یه نکته کوچیک هست میگم که مطلب دقیق تر بشه: اولین برنامه ای که با شروع سیستم شروع میشه init هست. بلافاصله بعد اون کرنل کارش رو شروع میکنه. smile

آفلاین

#4 2016-10-26 17:00:15

pharbod
عضو
از : /
ثبت شده: 2016-08-31
ارسال ها: 50
وب سایت

پاسخ: کرنل و بررسی انواع مختلف آن

تا جایی که من میدونم init (که الان از systemd استفاده میشه بیشتر جاها) یک لایه بالاتر از کرنل قرار داره. اگه دستور زیر رو بزنی که مال خود systemd هستش، میبینی اولین چیزی که توی ثانیه های اول لود شده کرنل بوده. درواقع init خودش یک پروسه هستش که در تمام مدتی که سیستم فعاله توی لیست پروسه ها با شماره ۱ موجوده.

systemd-analyze plot > plot.svg

اینم خروجی که خودم گرفتم:
آزمايش دستورات BBCode در FluxBB

بعد یه چیز دیگه اینه که، سعی میکنم بیشتر به صورت کلی مطلب رو بگم و init مخصوص سیستم های یونیکسی و شبه یونیکسیه.

لطفا اگه توی این مورد دارم اشتباه فکر میکنم بهم بگو. اگه با منبع بگی که دیگه بهتر smile

آخرین ویرایش توسط pharbod (2016-10-26 17:13:02)

آفلاین

#5 2016-10-26 17:48:33

mazhar
عضو
ثبت شده: 2016-08-01
ارسال ها: 229

پاسخ: کرنل و بررسی انواع مختلف آن

خیلی جالب اینو نمیدونستم. راستش من با استناد به خروجی دستور:

ps aux

و اینکه اساس کار init همون مقدار دهی اولیه یا initialization هست، این مطلب رو گفتم.

فکر میکنم به اندازه ی کافی اطلاع ندارم و به همین دلیل هم مطالعه میکنم ببینم چه خبره big_smile

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB