انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: siavash_siavash در 21 آذر 1392، 09:08 بظ
-
پس از سرچ فراوان، بلأخره موفق نشدم بفهمم از بین این دو نوع کرنل (مونولیتیک و هیبرید) کدام بازده (performance) بهتری دارن؛ من تابحال فکر میکردم نوع مونولیتیک بهترین بازده رو داره چون توی لینوکس استفاده شده و لینوکس هم توی ابر کامپیوترها؛ ولی در بعضی منابع گفته شده که نوع هیبریدی بازدهش بیشتر از مونولیتیکه، مثل این:
https://www.haiku-os.org/community/forum/haiku_kernel_architecture_questions_0
"the Hybrid Kernel is the best choice for large kernels and gives better performance and responsivencess compared to the other 2"
من که دیگه گیج شدم! ???
از دوستان خواهش میکنم اگه اطلاعات موثقی در این مورد دارن با ما در میان بگذارن. یادآوری میکنم که ملاک من امنیت نیست، فقط بازده و کارایی مد نظرمه، میخوام بدونم کدامیک از این دو، بازده و کارایی بیشتری دارن. (با ذکر دلیل و بدون تعصب)
از اونجایی که بر همگان مشخصه که "میکرو کرنل"، بازدهش از "مونولیتیک کرنل" و "هیبرید کرنل" پایینتره، بنابراین این مورد (میکرو کرنل) رو خودم حذف کردم.
از پاسخهای شما دوستان خوبم ممنونم.
-
سوالتون از پایه مشکل داره و چیزی نیست که در یک تاپیک ازش یک جواب کلی بگیرید. اگر واقعا علاقه دارید در این زمینه اطلاعات داشته باشید، نیاز به یک شناخت بهتر از نوع کارکرد هسته دارید. به مقالات اینترنتی اکتفا نکنید و یکی از کتابهای سیستمعامل مثل Operating Systems Design and Implementation رو بخونید.
لازم به ذکر هستش که میکروکرنل همیشه سرعت پایینتری نخواهد داشت :) دلیلش رو توی همون کتابها میتونید بخونید.
-
سوالتون از پایه مشکل داره و چیزی نیست که در یک تاپیک ازش یک جواب کلی بگیرید.
مشکلش کجاست؟ من که سوالمو بطور کامل و واضح مطرح کردم.
اتفاقأ اینجا جایی هستش که آدم یه جواب کلی میگیره، اون کتابها و مقالات واسه وقتیه که آدم بخواد جواب دقیق و جزء به جزء بگیره.
اگر واقعا علاقه دارید در این زمینه اطلاعات داشته باشید، نیاز به یک شناخت بهتر از نوع کارکرد هسته دارید. به مقالات اینترنتی اکتفا نکنید و یکی از کتابهای سیستمعامل مثل Operating Systems Design and Implementation رو بخونید.
معین جان من بخاطر یه سوال کوچولو برم اینهمه کتاب و مقاله پیدا کنم و بخونم؟؟؟ :'(
بعدشم برای خوندن این کتابها نیاز به دانش قبلی هستش، بفرض که اینا رو پیدا کردم و خوندم، از کجا معلوم که متوجه بشم؟؟؟ خب اگه کسی اطلاعاتش در این زمینه بالا باشه میتونه به زبان ساده در چند سطر پاسخ منو بده؛ سوالمم کاملأ واضحه.
لازم به ذکر هستش که میکروکرنل همیشه سرعت پایینتری نخواهد داشت :) دلیلش رو توی همون کتابها میتونید بخونید.
بله بعضی جاها میکرو کرنل بازده بهتری داره، مثلأ توی بعضی از دستگاههای node، چون توی این دستگاهها کرنل و سیستم عامل بشدت مینیمال و کوچکن، ولی اگه نیاز به کرنل و سیستم عاملِ بزرگ باشه (مثل PCها یا سرورها) دیگه اینجا میکروکرنل نمیتونه بازده خیلی خوبی داشته باشه. (نسبت به اون دوتای دیگه). اینو توی همون لینکی که گذاشتم نوشته.
-
شما یا میخواید اطلاعات تخصصی درستی داشته باشید یا نمیخواید.
اگر نمیخواید، سوال در مورد ساختار کرنل بیش از حد تخصصی هستش و در این حد کافیه که بدونید سوالتون جواب درستی نخواهد داشت (مثل اینه که بپرسید CPUهای CISC سریعتره یا CPUهای RISK).
اگر میخواید اطلاعات تخصصی درستی داشته باشید، نیاز به یک سری اطلاعات پایهای دارید و برای اون باید مطالعه کنید و زمان بذارید. هر جوابی در این سطح، بدون اطلاعات پایهای لازم، نادرست هستش و شبهعلم (http://fa.wikipedia.org/wiki/%D8%B4%D8%A8%D9%87%E2%80%8C%D8%B9%D9%84%D9%85) نامیده میشه (مثل اینه که من جوابتون رو درباره خمیدگی فضا-زمان بدم، در حالی که هنوز شناخت علمی از زمان ندارید و تنها یه چیزایی شنیدید).
-
سوال در مورد ساختار کرنل بیش از حد تخصصی هستش و در این حد کافیه که بدونید سوالتون جواب درستی نخواهد داشت (مثل اینه که بپرسید CPUهای CISC سریعتره یا CPUهای RISK).
خب اگه بگم یه CPU واسه دسکتاپی که روش ویندوز نصب بشه میخوام، فکر میکنم پاسخ دادن بهش راحت باشه واسه کسی که از این دوتا CPU شناخت کافی داره. الان مثلأ شما میری دکتر، چندتا دارو واست مینویسه، شما برمیگردی میگی آقای دکتر، چرا آمپی سیلین نوشتی؟ چرا آموکسی سیلین ننوشتی؟، اگه او بخواد تخصصی واسش توضیح بده باید به اندازه یک کتاب توضیح بده و اون بیمار هم شاید یک کلمشو نفهمه؛ ولی میاد به زبان ساده بهت مثلأ میگه که جدارۀ اون باکتری ای که تو رو مریض کرده نسبت به آموکسی سیلین نفوذ ناپذیره و این دارو نمیتونه اون باکتری رو بکشه. در اینجا دکتر پاسخ مریض رو میده بدون اینکه او رو مجبور کنه که بره کتابهای پزشکی رو بخونه.
با اون استدلالی که شما کردی، دیگه کسی جرأت نمیکنه سوال بپرسه، چون هرکی خواست در مورد چیزی سوال کنه یا باید بره علامۀ دهر بشه یا اینکه بکلی قید سوالش رو بزنه. من با این طرز فکر مخالفم و معتقدم که میشه یک موضوع پیچیده رو به زبان ساده و حد و لِوِلِ شنونده پاسخ داد. و البته شنونده هم باید بدونه که جوابی که میگیره کلی هست و فاقد جزئیات.
-
در حد کاربر عادی جوابش رو دادم دیگه:
در این حد کافیه که بدونید سوالتون جواب درستی نخواهد داشت
-
خب اگه بگم یه CPU واسه دسکتاپی که روش ویندوز نصب بشه میخوام، فکر میکنم پاسخ دادن بهش راحت باشه واسه کسی که از این دوتا CPU شناخت کافی داره. الان مثلأ شما میری دکتر، چندتا دارو واست مینویسه، شما برمیگردی میگی آقای دکتر، چرا آمپی سیلین نوشتی؟ چرا آموکسی سیلین ننوشتی؟، اگه او بخواد تخصصی واسش توضیح بده باید به اندازه یک کتاب توضیح بده و اون بیمار هم شاید یک کلمشو نفهمه؛ ولی میاد به زبان ساده بهت مثلأ میگه که جدارۀ اون باکتری ای که تو رو مریض کرده نسبت به آموکسی سیلین نفوذ ناپذیره و این دارو نمیتونه اون باکتری رو بکشه. در اینجا دکتر پاسخ مریض رو میده بدون اینکه او رو مجبور کنه که بره کتابهای پزشکی رو بخونه.
با اون استدلالی که شما کردی، دیگه کسی جرأت نمیکنه سوال بپرسه، چون هرکی خواست در مورد چیزی سوال کنه یا باید بره علامۀ دهر بشه یا اینکه بکلی قید سوالش رو بزنه. من با این طرز فکر مخالفم و معتقدم که میشه یک موضوع پیچیده رو به زبان ساده و حد و لِوِلِ شنونده پاسخ داد. و البته شنونده هم باید بدونه که جوابی که میگیره کلی هست و فاقد جزئیات.
مثالی که ارائه کردید اصلن به این مورد شباهتی نداره. اگر از دکتر بپرسید چرا آمپیسیلین نوشتی نه آموکسیسیلین، یه نگاهی بهت میکنه ببینه دیپلم داری؟ اگه حدس زد که دیپلم داری اون دلیل رو بهت میگه چون میدونه از دبیرستان به هر حال ساختار سادهٔ تکسلولیها رو میدونی. اگه حدس زد اونقد اطلاعات نداری راحت میگه که باکتری در مقابل اون دارو مقاومه. اما در مورد ساختار cpu شما حداقل باید لیسانس یا دانشجوی کامپیوتر باشید تا بتونید دلیل تخصصی یک متخصص رو بفهمید.
-
خدمت سیاوش بگم که شما اونهمه متن رو خوندی؟
اگه خوندی که خوب توضیح داده و لینک هم داده برای بعضی از توضیحاتش.
هر گلی یه بویی داره، هر کرنلی هم یه کاربردی. :)
در همون توضیح مختصر غیر کارشناسانه گفته که ساختار microkernel برای کرنلهای کوچیک بهتره و ساختار Monolithic برای کرنل های سنگین.
حالت ترکیبی هم قابلیت های خوب این دو تا رو کنار هم میزاره. مثال هم زده. گرچه همون پایین به چند جا از نوشتههاش ایراد گرفتن و نسبتاً بحث خوبی شکل گرفته.
حالا اگه میخوای بیشتر بدونی باید بری امثال این کتابی که nixoeen معرفی کرده رو بخونی و سطح سواد خودت در این مورد رو بالاتر ببری.
(من هیچی از خودم اضافه نکردم و یه جورایی خلاصهی نوشتهی اون لینک رو گفتم.)
-
بازدهی هسته یکپارچه از از ریز هسته (Micro Kernel) پنج درصد بیشتره اما در مقایسه با هسته پیوندی نمیدونم.
در کل بازدهی یک هسته تنها به معماریش مربوط نمیشه!! مسائل دیگری هم دخیله!! مثلا ویندوز سری NT هسته پیوندی داره ولی لینوکس هسته یکپارچه ممکنه از لحاظ تئوری هسته یکپارچه بازدهی کمتری نسبت به پیوندی داشته باشه ولی میبینیم در عمل اصلا اینطور نیست و بازدهی و امنیت لینوکس بسیار بالاتر از ویندوز!! اینکه فلان معماری از فلان معماری بازدهیه بیشتری داره صرفا مباحث تئوریک راجع به ساختار کلی هسته هست اما مسائل دیگری هم در بازدهی،امنیت و ... یک هسته دخیل هستش.
-
هر گلی یه بویی داره، هر کرنلی هم یه کاربردی. :)
بله منم گفتم فقط کارایی مد نظرمه، نه امنیت و چیزهای دیگه، پس اون بویی رو که دنبالش بودم مشخص کردم.
در همون توضیح مختصر غیر کارشناسانه گفته که ساختار microkernel برای کرنلهای کوچیک بهتره و ساختار Monolithic برای کرنل های سنگین.
بله منم چیزی خلاف این نگفتم، ولی مقایسۀ من بین monolithic و hybrid هستش، اون هم از منظر کارایی، وگرنه اگه امنیت رو بخواییم ملاک بگیریم شاید میکرو از همشون سر باشه.
حالت ترکیبی هم قابلیت های خوب این دو تا رو کنار هم میزاره. مثال هم زده. گرچه همون پایین به چند جا از نوشتههاش ایراد گرفتن و نسبتاً بحث خوبی شکل گرفته.
توی اون لینک به صراحت گفته شده که کرنل هیبریدی بازدهش بیشتره. این همون چیزیه که منو گیج کرد. بعید هم میدونم مطالبی که توی اون لینک هست الکی و مندرآوردی باشه.
-
اگر از دکتر بپرسید چرا آمپیسیلین نوشتی نه آموکسیسیلین، یه نگاهی بهت میکنه ببینه دیپلم داری؟ اگه حدس زد که دیپلم داری اون دلیل رو بهت میگه چون میدونه از دبیرستان به هر حال ساختار سادهٔ تکسلولیها رو میدونی. اگه حدس زد اونقد اطلاعات نداری راحت میگه که باکتری در مقابل اون دارو مقاومه.
متأسفانه یکی پیدا نشده که در حد همون زیر دیپلمی که مثال زدی هم بهم پاسخ بده! سوال من اینه: "در یک سیستم PC یا سرور، کرنل مونولیتیک بازدهش بیشتره یا هیبریدی و چرا؟". شما توی جوابها بگرد ببین جواب این سوالو پیدا میکنی؟!!
-
کلا!!! این حرفها رو بگذارید کنار!!!
واسه چی بذاریم کنار؟؟ ما اومدیم اینجا که یه چیزی از هم یاد بگیریم و به اطلاعاتمون اضافه بشه ولو اون اطلاعات در حد تئوریک باشه.
[/quote]
بازدهی یک هسته تنها به معماریش مربوط نمیشه!! مسائل دیگری هم دخیله!! مثلا ویندوز سری NT هسته پیوندی داره ولی لینوکس هسته یکپارچه ممکنه از لحاظ تئوری هسته یکپارچه بازدهی کمتری نسبت به پیوندی داشته باشه ولی میبینیم در عمل اصلا اینطور نیست و بازدهی و امنیت لینوکس بسیار بالاتر از ویندوز!!
[/quote]
اگه اینطوره پس چرا ویندوز و مک از نوع هیبریدی استفاده میکنن و به مونولیتیک رو نمیارن؟
-
اطلاعاتی در خصوص این که کدوم کرنل بهتره ندارم فقط در جایی خوندم اینطور توضیح داده بود که "علت استفاده از توزیع های لینوکس در سرور قابلیت سفارشی کردن آن توسط شرکت ها هست و این عامل که همون سفارشی کردن هستش که باعث شده در جاهای حساس بنا به نیاز ازش استفاده کرد (به شخصه به این مورد بیشتر از امنیتی که میگن لینوکس داره اعتقاد دارم!) مورد دیگه که گفته شده بود این بود که سیستم عامل هایی با هسته مونولیتیک بار پردازشی و مصرف برق زیاد را به سرور تحمیل میکند" راست و دروغش پا کسی که گفته!
-
کلا!!! این حرفها رو بگذارید کنار!!!
واسه چی بذاریم کنار؟؟ ما اومدیم اینجا که یه چیزی از هم یاد بگیریم و به اطلاعاتمون اضافه بشه ولو اون اطلاعات در حد تئوریک باشه.
اگه اینطوره پس چرا ویندوز و مک از نوع هیبریدی استفاده میکنن و به مونولیتیک رو نمیارن؟
حق با شماست،حرف من اشتباه بود.
تغییر معماری کرنل به این سادگیا نیست! بلکه شاید ناممکن باشه! اگر بخوان معماری یک کرنل را تغییر بدند باید اون کرنل از اول نوشته بشه! اگر اشتباه نکنم.
-
اطلاعاتی در خصوص این که کدوم کرنل بهتره ندارم فقط در جایی خوندم اینطور توضیح داده بود که "علت استفاده از توزیع های لینوکس در سرور قابلیت سفارشی کردن آن توسط شرکت ها هست و این عامل که همون سفارشی کردن هستش که باعث شده در جاهای حساس بنا به نیاز ازش استفاده کرد (به شخصه به این مورد بیشتر از امنیتی که میگن لینوکس داره اعتقاد دارم!) مورد دیگه که گفته شده بود این بود که سیستم عامل هایی با هسته مونولیتیک بار پردازشی و مصرف برق زیاد را به سرور تحمیل میکند" راست و دروغش پا کسی که گفته!
بله یکی از دلایل استفاده گسترده از لینوکس در سرور همین مورده اما دلایل دیگری هم داره که کم اهمیت نیستند.
به نظرم همین قابلیت سفارشی کردن هم موجب افزایش کارایی و استفاده بهینه میشه که خودش باعث کاهش مصرفه.
-
این هم منابع من در مورد بازدهی بالاتر هسته یکپارچه نسبت به هسته از نوع ریزهسته(microkernel) :
از ویکیپدیا :
هسته یکپارچه (http://fa.wikipedia.org/wiki/%D9%87%D8%B3%D8%AA%D9%87_%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87) :
مزیت معماری Microkernel به پایداری و امنیت بیشتر آن به نسبت معماری Monolithic است، بدلیل اینکه اگر یک فرایند کرنل مانند device driver از کار بیافتد بقیه سرورهای سیستم عامل سالم می ماند. از طرف دیگر معماری Monolithic کارایی بهتری دارد (حدود 5 درصد) و سریعتر اجرا می شود.
این مطلب رو linuxreview.ir هم منتشر کرده بود.
ماک (هسته) (http://fa.wikipedia.org/wiki/%D9%85%D8%A7%DA%A9_(%D9%87%D8%B3%D8%AA%D9%87)) :
وجود ساختار ریزهستهای در ماک اجازه میدهد وظایف هسته از طریق برنامههای مختلف و در فضای کاربر اجرا شوند، اما این امر سبب کاهش سرعت سیستمعامل خواهد شد که خود موجب مطرحشدن ایدهٔ هستههای ترکیبی میشود.
گنو هرد (http://fa.wikipedia.org/wiki/%DA%AF%D9%86%D9%88_%D9%87%D8%B1%D8%AF) :
در ابتدا، هرد برای استفاده از گنو ماخ به عنوان ریزهسته توسعه داده میشد. این یک تصمیم فنی بود که بوسیله ریچارد استالمن گرفته شده است که فکر میکرد به دلیل صرفهجویی در کار سرعت کار را افزایش خواهد داد اما او اذعان کرده که این تصمیم او اشتباه بوده است
البته همونطور که قبلا هم گفتم بازدهی یک سیستم عامل ربط زیادی به معماریش نداره،نوع برنامه نویسی و کیفیت و بهینگی کدها نقش بالایی دارند.
-
هسته یکپارچه (http://fa.wikipedia.org/wiki/%D9%87%D8%B3%D8%AA%D9%87_%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87) :
مزیت معماری Microkernel به پایداری و امنیت بیشتر آن به نسبت معماری Monolithic است، بدلیل اینکه اگر یک فرایند کرنل مانند device driver از کار بیافتد بقیه سرورهای سیستم عامل سالم می ماند. از طرف دیگر معماری Monolithic کارایی بهتری دارد (حدود 5 درصد) و سریعتر اجرا می شود.
خوب اون ۵ درصد که کلا اشتباه بود و بر اساس یک منبع غیر موثق نوشته شده بود. ویکیپدیا رو تصحیح کردم.
در ابتدا، هرد برای استفاده از گنو ماخ به عنوان ریزهسته توسعه داده میشد. این یک تصمیم فنی بود که بوسیله ریچارد استالمن گرفته شده است که فکر میکرد به دلیل صرفهجویی در کار سرعت کار را افزایش خواهد داد اما او اذعان کرده که این تصمیم او اشتباه بوده است
اینجا هم سرعت، منظور سرعت توسعه بوده. برای ابهامزدایی، ویکیپدیا رو تصحیح کردم.
-
هسته لینوکس با وجود یکپارچه بودن ماژولار هم هست:
ویکی پدیا:
با اینکه هسته لینوکس یکپارچه است ولی قابلیت بار کردن (Load) کردن پویای (Dynamic) ماژول های هسته (kernel modules) را دارد.
-
بزار یه چیزی رو بهت بگم من هردو کرنل رو آزمایش کردم dragonfly به عنوان هیبرید linuxو freebsd به عنوان مونو
مهمترین گزینه در کارایی تطابق درایور با سیستم عامله