صفحه 1:
ريسه ها
Threads
اسلايدهاي فصل چهارم کتاب سیلبرشاتز
دانشکده مهندسي کامپیوتر
دانشگاه شریف
صفحه 2:
۸
) مروري بر عناوین مطالب
XR
مفاهيم كلي
مدل هاي جند ريسه اي (كد كدج دان (01)
استفاده از ريسه ها
bb Ptkrecd
زیسه هاي سولاریس 2
ریسه هاي سیستم عامل ویندوز 66
ريسه هاي مزر
lava (cle any,
صفحه 3:
9 گاهی اوقات با نام پردازه سبک وزن 06 ز
9 از یک شناسه ریسه, یک شمارنده برنامه, یک مجموعه ثبات و یک پشته
شده است.
تقریبا همه چیز را با سایر ریسه هاي همان پردازه به اشتراک می گذارد.
* بخش کد
بخش داده
* _منابع در اختیار گذاشته شده توسط سیستم عامل مانند پرونده هاي باز,
" یک پردازه تک ریسه اي تنها یک ریسه کنترلي دارد.
۴ استفاده از ز چندین ریسه كنترلي به پردازه اجازه مي دهد چندین
کار را به صورت همزمان انجام دهد.
صفحه 4:
9 بردازه هاي تك ريسه اي و جند يسه اي
Raa
code code data files
registers registers |) registers |} registers
stack stack stack
single-threaded multithreaded
صفحه 5:
۴ پاسخ دهي
7 از آنجا که اجراي برنامه حتي در صورت متوقف شدن بخشي از آن باز هم
اذامه.مى يابدء ياسخ ذهى برنامة بهبود می یابد. ۱
* اشتراک منابع
Q
به صورت ييش فرضء ریسه ها حافظه و منابع پردازه را به اشتراک میگذارند.
© صرفه جويي در منابع سيستمي
F ایجاد یک ریسه به مراتب ارزانتر از ایجاد یک پردازه است.
* بهره برداری از معماری هاي چندپردازنده
1" اجراي هر ریسه روي یک پردازنده > افزايش درجه توازي و کارايی
صفحه 6:
3 مدي ریسه ها توسط کتابخانه ریسه اي در سطح کاربر انجام مي ش
ل نمونه ها: کتابخانه طعام در سیستم عامل هاي 0/6 کتابخانه
لس( در مکینتاش و کتابخانه ط۲۱() در سولاریس.
© ریسه هاي هسته
a هسته مستقیما از ریسه ها حمایت مي کند.
۳ نمونه ها: ویندوز ۰95 98 DAE. Saige «ee Vow +2000 4 OT
68 و لینوکس
صفحه 7:
مروري بر عناوین مطالب
مفاهیمکلي
مدل هاي چند ربسه اي مس نان0))
استفاده از ریسه ها
b Ptkrecd
ریسه هاي سولاریس 2
ریسه هاي سیستم عامل ویندوز 2۴6
ریسه هاي مرا
ریسه cle ول
صفحه 8:
* مدل هاي جند ريسه اي
3 مدل جند به یک «سمسسوم)
7" مدل یک به یک Ovrw-Ow)
7" مدل چند به چند . ربوجسووه)
صفحه 9:
مدل چند به یک ۱
9 در این مدل تعداد زیادی ریسه
سطح كاربر به يك ريسه سطح
" اين مدل در سيستم هابي كه
در آنها هسته مستقيما از ريسه
ها حمايت نمى كند استفاده
مي شود.
— kernel thread
صفحه 10:
يع مدل يك به يك
"" دراين مدل هر ريسه سطح كاربر به يك ريسه سطح هسته نكاشت
مي شود.
۳ نمونه ها: ویندوز 95 98 0 و 2000 006/6
user thread
SPE
© © O O--—
صفحه 11:
۱ مدل جند به جدد Gaps
. اين مدل اجازه مي دهد جندين
ريسه سطح كاربر به جنديز
ريسه سطح هسته نكاشت Ng مضع |
سيستم عامل اجازه دارد به تعداد
كافي ريسه سطح هسته ايجاد
کند.
نمونه ها: سولاریس 2 ویندوز
۲ و 2000 که کتابخانه ۳ تس
روي آنها نصب شده باشد.
صفحه 12:
9 مانند چند به چند؛ با این
تفاوت كه اجازه مي دهد يك | سه ; و
ريسه سطح كاربر به يك ريسه
سطح هسته اختصاص يابد.
ARK, WP-OX, MOF مثال: ""
Ocix, Soke ©
صفحه 13:
APL
گم
aie مروري بر عناوین مطالب
9 4
معا
مفاهيم كلي
مدل هاي چند ریسه اي ( Dutt
مسائل مربوط به ربسه ها
bs Pihread
ويسه هاي سولاریس 2
* ریسه هاي سیستم عامل ویندوز 26۳
Dien (gle ریسه
ریسه های سحل
صفحه 14:
0 exec 4 () fork روال های
۴ وقتي یک ریسه ۴ را فراخواني مي کند. آیا پردازه جدید از تمام
ریسه هاي پردازه قبلي نسخه برداري مي کند يا فقط از ریسه
فراخواننده یک نسخه ایجاد مي کند؟ 1
برخي نكارش هاي یونیکس دو روال ۳۸ ارایه مي کنند:
a يك نسخه از تمام ريسه ها نسخه برداري مي كند.
يك نسخه فقط از ریسه فراخواننده نسخه برداري می کند.
با فراخواني عم برنامه مشخص شده در پا ارامترهاي فراخواني
جایگزین پردازه فراخواننده و تمامي ریسه هاي آن مي شود.
صفحه 15:
۴ به فرایند پایان دهي یک ریسه پیش از پایان کار آن «ابطال ریسه»
مي كوييم.
" ابطال ريسه ممكن است به دو صورت متفاوت رخ دهد:
1. ابطال ناهمكام:
7 يك ريسه ديكر بلافاصله به اجراي ريسه هدف يايان مي دهد.
2. ابطال به تعويق افتاده:
ا ريسه هدف به صورت دوره اي جك مي كند كه آيا بايد به اجراي خود
خاتمه دهد يا خير؟
صفحه 16:
6 رسيدگي به سیگنال ae
SS 7 تن يراي ب ده ها در مور
وقایع سل مي شود.
* یک رسيدگي کننده سیگنال (۲۱,۲0۳۲ ۸۳۳۷()) براي پردازش سیگنالها
مورد استفاده قرار مي گیرد.
8 سیگنال توسط یک رخداد خاص ایجاد مي شود.
3 سیگنال به پردازه تحویل داده مي شود
۵ سیکنال مورد رسيدگي قرار مي گیرد
۴ گزینه ها:
2 سیکنال را به ریسه ي مربوطه تحویل دهیم
سیگنال را به همه ریسه هاي موجود در پردازه تحویل دهیم.
سیگنال را به ریسه هايي معین در پردازه تحویل دهیم
یک ریسه خاص را مسئول دریافت همه سینگالها قرار دهیم.
a
a
a
صفحه 17:
مخزن ریسه (200[1 121620)
= ايده کلی:
9 هنگام راه اندازي پردازه تعدادي ریسه نیز ایجاد کن.
2" اين ريسه ها را در یک مخزن قرار بده و منتظر بمان تا پردازه اعلام نیاز به
یک ریسه کند.
9 معمولا پاسخ به یک درخواست خدمات با استفاده از یک ریسه
موجود سريع تراز حالتى است كه بايد يك ريسه نيز ايجاد شود.
صفحه 18:
(aols!) (Thread Pool) aus 555
= استفاده از مخزن ریسه ها تعداد ریسه ها در هر یک از نقاط کاري
سیستم را محدود مي کند.
7 اگر هنگام دریافت درخواست. درون مخزن هیچ ریسه اي موجود نباشد (به
عبارت دیگر. پردازه. همه ریسه هاي اختصاص افته را قبلا فعال کرده
باشد و هنوز هم فعال باشند) پردازه باید صبر کند تا يكي از ریسه هاي
قبلى آزاد شوند. 7 ۱
صفحه 19:
* واسط برنامه نویسی استاندارد (009.0 16006 6*00 براي
ایجاد و همگامی ر یسه ها.
* واسط برنامه نوبسي تنها رفتار کتابخانه ریسه اي را مشخص مي
کند. و پیاده سازی روال ها به عهده توسعه دهنده کتابخانه است.
9 معمولا در سیستم عامل هاي یونیکس از اين کتابخانه استفاده
مي شود.
صفحه 20:
©
پایان فصل 4
صفحه 21:
۴ پردازه هاي سبک وزن 4/00 بين ريسه هاي سطح كاربر و ریسه هاي سطح
هسته قرار گرفته اند.
* هر پردازه حداقل یک ۸6۳ دارد.
* تنها ریسه هاي سطح کاربري که به یک ۱۸06۳ متصل باشند اجرا مي شوند.
ساير ريسه ها يا متوقف شده اند و يا منتظر اختصاص یک LOP هستند.
صفحه 22:
user-level thread
lightweight process سر
صفحه 23:
6 یک پردازه در سولاریس 2
وی
process id
memory map
list of open
files
صفحه 24:
2617 ريسه ها در ويندوز aig’
vu
* ویندوز 26۳ از نگاشت یک به یک استفاده می کند.
* هر ریسه شامل اطلاعات زیر است:
ل یک شناسه ریسه
۲ یک مجموعه ثبات
7 پشته هاي مجزا براي سطح کاربر و هسته
2 مقداري حافظه اختصاصي
* مجموعه ثباتها. پشته هاء و حافظه اختصاصی به
عنوان زمينه ريسه شناخته مي شوند.
صفحه 25:
" در لينوكس به ريسه ها به عنوان وظيفه ©" ارجاع مي شود.
= ايجاد ريسه ها با استفاده از فراخواني روال سيستمي عه () انجام
مي شود.
= پس از اجراي عاه( فضاي حافظه وظيفه (يا يردازه) يدر بين يدر و
فرزند به اشتراک گذاشته می شود.
صفحه 26:
Cais’ ريسه هاي جاوا
Ran
* به دو صورت مي توان در جاوا ریسه ایجاد کرد: ارث بري کلاس
امس و پیاده سازی واسط Rrrnnble
0 ريسه هاي جاوا توسط ۱620 مدیریت مي شوند.
sleep()
suspend()
vO