تالار گفتمان مانشت

نسخه‌ی کامل: نخ
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام.بچه ها کسی میتونه مهم ترین نکات مربوط به نخ رو بگه؟؟؟؟؟ساده و راحت کتاب دکتر حقیقت اصلا برام قابل فهم نیست قسمت نخش
سلام Smile

اینها نکاتی هستش که من درباره نخ میدونم و ممکنه کمک کنه

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

سوییچ کردن بین نخ ها از سوییچ کردن بین فرآیندها هزینه ی کمتری داره به خاطر اینکه وقتی بین نخ ها سو ییچ صورت میگیره تنها چیزی که باید ذخیره بشه وضعیت پردازنده هستش (CPU State) و این به این دلیل هست که نخ ها دارای حافظه مشترک هستند (Shared memory). ولی برای سوییچ بین فرآیندها باید این اطلاعات ذخیره بشه:

۱- وضعیت پردازنده : منظور مقادیر ثبات ها- شمارنده برنامه- اشاره گرهای پشته و ...
۲-TLB (Translation Look a side Buffer : که برای ترجمه جدول های مدیریت حافظه هستش
۳-Memory Managmement Unit(MMU

اگر لازم باشه که بین فرآیند ها ارتباطی برقرار بشه تنها از طریق فراخوانی سیستمی صورت میگیره ولی نخ ها برای ارتباط از همون حافظه مشترک استفاده میکنن که خیلی هم سریعتر هست.

نخ هم توی سیستم های توزیعی هم غیر توزیعی به کار میره. ( این قسمت بیشتر مربوط به سیستم عامل پیشرفته میشه واسه همین از گفتنش صرف نظر کردم چون ممکنه گنگ باشه )

پیاده سازی نخ به دو صورت امکان پذیر هست:
۱) پیاده سازی در سطح کاربر
۲) پیاده ساری در سطح سیستم

پیاده سازی نخ در سطح کاربر بسیار کارآمدتر از پیاده سازی در سطح سیستم عامل هست به خاطر اینکه برای پیاده سازی نخ در سطح سیستم عامل راه کار باید به ضورت کلی باشه به طوری که این راهکار بر روی همه سیستم ها قابل اجرا باشه ولی در سطح کاربر این محدودیت وجود نداره و کارایی بهتر هستش ( به خاطر اینکه لازم نیست بیایم یه راهکار کلی و عمومی رو برای همه سیستم ها اجرا کنیم هر سیستمی میتونه راهکار خودش را داشته باشه چون این راهکار از قبل توسط سیستم عامل تعریف نشده و توسط کاربر مدیریت میشه) و این مزیت پیاده سازی نخ در سطح کاربر هست

پس به صورت خلاصه اینطوری هست که در پیاده سازی نخ به وسیله کابر یک کتابخانه ی نخ وجود داره که کاملا در حالت کاربر اجرا میشه ولی درحالت دوم هسته از نخ ها آگاهه و اونا رو زمان بندی میکنه

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

پس در سطح کاربر سوییچ بین فرآیند ها صورت میگیره اما در سطح سیستم عامل سوییچ بین نخ ها صورت میگیره (چون خود هسته سیستم عامل وظیفه مدیریت فرآیندها و زمانبندی اون ها را برعهده داره و از نخ های هر فرآیند هم اطلاع داره)

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

اون دو روش را میتونید از این لینک بخونید ( هرچند این ها هم مربوط به سیستم عامل پیشرفته میشه)


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


امیدوارم مفید بوده باشه Smile
لینک مرجع