تالار گفتمان مانشت
سوال چهارم از فصل دوم - نسخه‌ی قابل چاپ

صفحه‌ها: ۱ ۲
سوال چهارم از فصل دوم - narges_r - 10 مهر ۱۳۹۰ ۰۶:۰۰ ق.ظ

در کتاب دکتر حقیقت مهمترین مزیت نخها اینطور عنوان شده:
"افزایش سرعت اجرا و زمان پاسخ فرایندهایی که مکررا مسدود میشوند"
یعنی در یک فرایند ماژولاریتی و درجه بندی رو افزایش بدیم یعنی فرایند بجای یک نخ دارای چندین نخ باشه که وقتی یک نخ مسدود شد تمام فرایند مسدود نشه و وقتی یکی از نخها مسدود شد بقیه نخها بتونن به کارشو نادامه بدن و این معنی همروندی رو میده
پس مهمترین مزیت نخها ایجاد همروندی است
همونطور که گفته شد گاهی اوقات نخها عامل صرفا افزایش سرعت نیستند چون همونطور که در پست قبل گفتم نخهای سطح هسته سرعتشون به اندازه سرعت فرایندهاست مثلا در سوئیچ شدن
اما با همروندی میتونن سرعت رو افزایش بدن

RE: سوال چهارم از فصل دوم - _Milad_ - 10 مهر ۱۳۹۰ ۱۱:۳۴ ق.ظ

بحثتون در مورد تفاوت هزینه نخ های سطح هسته و سطح کاربر صحیح است ولی دقت کنید تفاوت اصلی این دو در چیز های دیگه هست و این قدر سطحی نیست. مثلا اگه ۵ نخ سطح هسته (با استفاده از یک کتابخونه سطح کاربر) برای یک برنامه تعیین کرده باشید و در زمان اجرای این پردازه یکی از اینها یک system call مثلا یک page fault رو حادث بشه کل ۵ نخ و در واقع پردازه بلاک میشه! اما اگه نخ سطح کرنل باشه فقط اون نخ که این رویداد بلاک شونده رو حادث شده بلاک میشه. همین موضوع باعث میشه که نخ های سطح کاربر سبک‌تر باشند چه تو مهاجرت چه تو همگام سازی اما همه اینها فقط در مورد نخ هایی که متعلق به یک پردازه هستند صادق چون هسته خبری از وجود اینها نداره و همه این‌ها رو به چشم همون پردازه می بینه. داستان بعدی اینه که وقتی کرنل خبری از وجود این نخ‌ها نداشته باشه نمی تونه به هر یک از این‌ها یک کوانتوم زمانی تخصیص بده در واقع کرنل فقط می دونه یه پردازه x هم هست که باید بهش CPU رو تخصیص بده مثلا ۱۰ms. این ۱۰ms باید بین همه این ۵ تا نخ تقسیم بشه (توسط همون کتابخونه سطح کاربر میشه انجام داد) اما اگه اینها نخ های سطح کرنل بودن مثلا به هر کدوم ۱۰ms تخصیص داده میشد.

نقل قول: "افزایش سرعت اجرا و زمان پاسخ فرایندهایی که مکررا مسدود میشوند"
یعنی در یک فرایند ماژولاریتی و درجه بندی رو افزایش بدیم یعنی فرایند بجای یک نخ دارای چندین نخ باشه که وقتی یک نخ مسدود شد تمام فرایند مسدود نشه و وقتی یکی از نخها مسدود شد بقیه نخها بتونن به کارشو نادامه بدن و این معنی همروندی رو میده
پس مهمترین مزیت نخها ایجاد همروندی است

این جمله هم درست هست اما ناقص! باید اشاره می کرد که این موضوع یکی از مزیت های نخ های سطح کرنل هست.

در مورد نخ های سطح کاربر چون هسته از وجود اونها خبری نداره نمی تونه اون‌ها رو زمانبندی کنه! برای همین هسته فقط پردازه‌ها رو زمان بندی می کنه و از وجود اونها آگاهی داره. بنابراین اگه پردازه x که ۵ تا نخ سطح کاربر داشته باشه تو بازه زمانی که بهش تخصیص داده میشه می تونه خیلی سبک و سریع بین نخ هاش تعویض صورت بگیره اما وقتی یکی ازین نخ‌ها بلاک بشه یا مهلت زمانی پردازه تموم بشه باید CPU رو ازین پردازه گرفت و به پردازه بعدی داد (که شاید اونم ۷ ۸ تا نخ واسه خودش داشته باشه و بخواد نخ ۴ ش رو فعال کنه تو این لحظه!!) و این یعنی تعویض متن بین دو پردازه که زمان انجام این کار مشخص. در مورد نخ های سطح هسته هم می دونید که هسته یک چدول نخ برای نگهداری و اطلاع از نخ‌ها داره و همین طور هر نخ یه TCB (یا TEB اگه اشتباه نکنم) داره. هزینه سوئیچ بین نخ های سطح هسته هم می دونید و واضح که سنگین هست. فکر کنم مشخص شده باشه که هزینه مهاجرت از نخ های یک پردازه کم هست ولی هزینه مهاجرت از نخ هایی که مربوط به یک پردازه نیستند تفاوتی با تعویض متن بین دو پردازه نداره.

RE: سوال چهارم از فصل دوم - narges_r - 10 مهر ۱۳۹۰ ۰۴:۰۰ ب.ظ

(۱۰ مهر ۱۳۹۰ ۱۱:۳۴ ق.ظ)_Milad_ نوشته شده توسط:  بحثتون در مورد تفاوت هزینه نخ های سطح هسته و سطح کاربر صحیح است ولی دقت کنید تفاوت اصلی این دو در چیز های دیگه هست و این قدر سطحی نیست. مثلا اگه ۵ نخ سطح هسته (با استفاده از یک کتابخونه سطح کاربر) برای یک برنامه تعیین کرده باشید و در زمان اجرای این پردازه یکی از اینها یک system call مثلا یک page fault رو حادث بشه کل ۵ نخ و در واقع پردازه بلاک میشه! اما اگه نخ سطح کرنل باشه فقط اون نخ که این رویداد بلاک شونده رو حادث شده بلاک میشه. همین موضوع باعث میشه که نخ های سطح کاربر سبک‌تر باشند چه تو مهاجرت چه تو همگام سازی اما همه اینها فقط در مورد نخ هایی که متعلق به یک پردازه هستند صادق چون هسته خبری از وجود اینها نداره و همه این‌ها رو به چشم همون پردازه می بینه. داستان بعدی اینه که وقتی کرنل خبری از وجود این نخ‌ها نداشته باشه نمی تونه به هر یک از این‌ها یک کوانتوم زمانی تخصیص بده در واقع کرنل فقط می دونه یه پردازه x هم هست که باید بهش CPU رو تخصیص بده مثلا ۱۰ms. این ۱۰ms باید بین همه این ۵ تا نخ تقسیم بشه (توسط همون کتابخونه سطح کاربر میشه انجام داد) اما اگه اینها نخ های سطح کرنل بودن مثلا به هر کدوم ۱۰ms تخصیص داده میشد.
اینکه نخ سطح هسته و سطح کاربر باهم نفاوتهای اساسی دارند که شکی نیست درواقع مزایا و معایب این دو معکوس همدیگه هستند من خواستم فقط برای پستی که شما اشاره کردید که هزینه سوئیچ نخها کم هست به این اشاره بکنم که همیشه هم اینطور نیست


(۱۰ مهر ۱۳۹۰ ۱۱:۳۴ ق.ظ)_Milad_ نوشته شده توسط:  
نقل قول: "افزایش سرعت اجرا و زمان پاسخ فرایندهایی که مکررا مسدود میشوند"
یعنی در یک فرایند ماژولاریتی و درجه بندی رو افزایش بدیم یعنی فرایند بجای یک نخ دارای چندین نخ باشه که وقتی یک نخ مسدود شد تمام فرایند مسدود نشه و وقتی یکی از نخها مسدود شد بقیه نخها بتونن به کارشو نادامه بدن و این معنی همروندی رو میده
پس مهمترین مزیت نخها ایجاد همروندی است

این جمله هم درست هست اما ناقص! باید اشاره می کرد که این موضوع یکی از مزیت های نخ های سطح کرنل هست.

در مورد نخ های سطح کاربر چون هسته از وجود اونها خبری نداره نمی تونه اون‌ها رو زمانبندی کنه! برای همین هسته فقط پردازه‌ها رو زمان بندی می کنه و از وجود اونها آگاهی داره. بنابراین اگه پردازه x که ۵ تا نخ سطح کاربر داشته باشه تو بازه زمانی که بهش تخصیص داده میشه می تونه خیلی سبک و سریع بین نخ هاش تعویض صورت بگیره اما وقتی یکی ازین نخ‌ها بلاک بشه یا مهلت زمانی پردازه تموم بشه باید CPU رو ازین پردازه گرفت و به پردازه بعدی داد (که شاید اونم ۷ ۸ تا نخ واسه خودش داشته باشه و بخواد نخ ۴ ش رو فعال کنه تو این لحظه!!) و این یعنی تعویض متن بین دو پردازه که زمان انجام این کار مشخص. در مورد نخ های سطح هسته هم می دونید که هسته یک چدول نخ برای نگهداری و اطلاع از نخ‌ها داره و همین طور هر نخ یه TCB (یا TEB اگه اشتباه نکنم) داره. هزینه سوئیچ بین نخ های سطح هسته هم می دونید و واضح که سنگین هست. فکر کنم مشخص شده باشه که هزینه مهاجرت از نخ های یک پردازه کم هست ولی هزینه مهاجرت از نخ هایی که مربوط به یک پردازه نیستند تفاوتی با تعویض متن بین دو پردازه نداره.
من فکر میکنم این جمله مربوط به نخهای سطح هسته نیست
در صفحهات بعد که این مطالب توضیح داده شده به این نکته اشاره شده که برای استفاده بهینه از نخها بهتر از ترکیب نخهای سطح هسته و سطح کاربر هردو در یک فرایند استفاده بشه و از فرایندهای سبک وزن هم برای مدیرت نخها در فرایند استفاده بشه
من فکر میکنم این جمله و این نکته برای این نوع استفاده ترکیبی از نخها ذکر شده است

سوال چهارم از فصل دوم - _Milad_ - 10 مهر ۱۳۹۰ ۰۴:۰۸ ب.ظ

هزینه سوئیچ بین نخ های سطح کاربر سبک هست
هزینه سوئیچ بین نخ های سطح کاربر بین پردازه های مختلف همون هزینه سوئیچ بین پردازه هاست
داستان برای نخ های سطح هسته هم مشابه.

RE: سوال چهارم از فصل دوم - _Milad_ - 11 مهر ۱۳۹۰ ۰۳:۲۴ ق.ظ

نقل قول: من فکر میکنم این جمله مربوط به نخهای سطح هسته نیست

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

پ.ن: من زیاد با سوالات کنکور آشنایی ندارم اما به نظرم اگه می خواید درک درستی از مطالب پیدا کنید به کتاب های x و y بسنده نکنید برید ببینید در عمل این مسائل چگونه پیاده سازی شدن.

RE: سوال چهارم از فصل دوم - narges_r - 11 مهر ۱۳۹۰ ۰۳:۴۳ ق.ظ

(۱۱ مهر ۱۳۹۰ ۰۳:۲۴ ق.ظ)_Milad_ نوشته شده توسط:  
نقل قول: من فکر میکنم این جمله مربوط به نخهای سطح هسته نیست

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

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