امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
تقسیم کار بین هسته های پردازنده
نویسنده پیام
amin_amin آفلاین
كاربر دو ستاره
**

ارسال‌ها: 168
موضوع‌ها: 29
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 45
( 19 تشکر در 15 ارسال )
ارسال: #12
RE: تقسیم کار بین هسته های پردازنده
محمد جان ممنون بابت اطلاعاتی که با حوصله اینجا قرار دادی

می خواستم بدونم که پریوریتی مخصوص تردهاست یا پروسس ها ؟
۱۲-شهریور-۱۳۸۷, ۰۴:۵۴:۳۸
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #13
RE: تقسیم کار بین هسته های پردازنده
Thread ها زیر مجموعه ای از یک کلاس بالاتر به نام process هستند و هر دوتا دارای تقدم های هستند. هر process یک تقدم مخصوص خودش رو داره و تمام Thread های اون process میتونن فقط نسبت به همون process تقدم های مختلفی داشته باشند (در واقع مثل یک جور تقدم تو در تو )

مثال : چندین process داریم که سیستم عامل طبق تقدم اجرایی اونها ، ده واحد زمانی CPU رو برای اونها در نظر میگیره.حالا فرض میکنیم یکی از اون process ها دارای پنج Thread فعال هست . اینجا هر کدوم از اون Thread ها میتونن نسبت به تقدم اجرایی خودشون از اون 10 قسمت زمان بندی استفاده کنند.

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۲-شهریور-۱۳۸۷, ۲۱:۲۱:۴۳
ارسال‌ها
پاسخ
تشکر شده توسط : surpriser, saeedsmk, ajlajlajl
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

ارسال‌ها: 506
موضوع‌ها: 74
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #14
RE: تقسیم کار بین هسته های پردازنده
سلام
خوب هستيد
محمد جان يك نكته ديگه اينكه كه وقتي پروسسي ايجاد ميشه بعد از اينكه سكشن هاي مختلف توي ماشين مجازي ويندوز بار گذاري ميشن .
در واقعه تريد ها توي اين ماشين مجازي اجرا ميشن . با توجه به اين مطلب و مطالبي كه محمد جان گفت و مسئله پردازش و شيبه سازي اين ماشين توسط كرنل همانطور كه محمد جان گفت اين كرنل و يا سيستم عامله كه تصميم ميگيره كدوم تريد توي چه هسته اي ران بشه توسط ادرس دهي تريد . برنامه نويس ميتونه توي اين امر دخالت كنه اما فقط ميتونه تا حد كمي بروي اين الگوريتم تاثير داشته باشه و بيشتر كار با سيستم عامله .
در مورد سئوال اينكه ميشه با وي بي اين كنترل رو تغيير داد بايد بگم با وي بي اي كه پچ نشده نميشه اما با پچ لينكر و يك سري از dll هاي وي بي ميشه اين كار رو به سختي انجام داد. كه معمولا فقط برنامه نوشته شده با اين روش روي همون دستگاهي كه پچ انجام شده اجرا ميشه و اينكه در 99 درصد حالات كرنل يا هسته سيستم عامل كرش كرده و صفحه ابي نمايش داده ميشه !!!!
اگر اين فايل اجرايي كه با اين روش ساخته شده است را روي دستگاه ديگري اجرا كنيد دستگاه حتما كرش ميكند
اگر يهو پريدم وسط ببخشيد
به اميد ديدار

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
(آخرین ویرایش در این ارسال: ۱۳-شهریور-۱۳۸۷, ۰۰:۵۱:۵۸، توسط saeedsmk.)
۱۳-شهریور-۱۳۸۷, ۰۰:۴۸:۵۸
ارسال‌ها
پاسخ
تشکر شده توسط : Iron_Fist, surpriser
surpriser آفلاین
كاربر تک ستاره
*

ارسال‌ها: 25
موضوع‌ها: 4
تاریخ عضویت: بهمن ۱۳۸۶

تشکرها : 10
( 9 تشکر در 9 ارسال )
ارسال: #15
RE: تقسیم کار بین هسته های پردازنده
سلام.آقا محمد واقا دستتون درد نکنه چون هیچ کدوم اینها رو نمیدونستم(مراحلشو)
حالا دو تا سوال برام پیش اومد و اون اینکه:
1)آیا این اعمال در سیستم عامل هایی بجز ویندوز یکیه؟
2)اگر برای مثال بخواهیم یه برنامه سرچ(search) درست کنیم و اگر در اون از MultiThread استفاده کنیم سرعت برنامه فرق زیادی میکنه؟
مثلا A-G رو دست یه ترد و H-Q رو دست یه ترد دیگه و Q-Z رو دست یه ترد دیگه بسپاریم آیا نتیجه فرق زیادی میکنه و زودتر به نتیجه میرسه؟

آقا سعید دست شما هم درد نکنه.یعنی واقا میگید بیخیال شم؟و امکانش نیست بتونم تو وی بی این کارو بکنم.در زبان های دیگه چطور مثلا C++ بازم کرش میکنه؟
(آخرین ویرایش در این ارسال: ۱۳-شهریور-۱۳۸۷, ۱۹:۱۹:۲۱، توسط surpriser.)
۱۳-شهریور-۱۳۸۷, ۱۸:۵۸:۰۲
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #16
RE: تقسیم کار بین هسته های پردازنده
نقل قول: آیا این اعمال در سیستم عامل هایی بجز ویندوز یکیه؟

خب من که به سیستم عاملهای مختلف مثل لینوکس و UNIX هم اشاره کردم ... در کل میتونم بگم مفهوم Process و Thread در تمام سیستم ها یکیه !

نقل قول: اگر برای مثال بخواهیم یه برنامه سرچ(search) درست کنیم و اگر در اون از Multi Thread استفاده کنیم سرعت برنامه فرق زیادی میکنه؟

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


قضیه ای که آقا سعید توضیح دادند در مورد کرک کردن و نوشتن Rootkit ها ( دستکاری غیر مجاز در سیستم یا کرنل) بدرد میخوره نه برنامه نویسی معمولی چون برنامه نویسی Multi Thread در اکثر زبانهای برنامه نویسی به سادگی در دسترس هست . متاسفانه معماری زبان وی بی 6 در این زمینه امکانات لازم رو نداره . شما بهتره یا از زبان دیگری مثل ++C یا (برای شما) از VB.Net استفاده کنید که به سادگی این امکان رو به شما میدن.

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۳-شهریور-۱۳۸۷, ۲۲:۴۵:۲۶
ارسال‌ها
پاسخ
تشکر شده توسط : saeedsmk, ajlajlajl
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

ارسال‌ها: 506
موضوع‌ها: 74
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #17
RE: تقسیم کار بین هسته های پردازنده
سلام
فكر كنم اقا محمد جواب شما را دادن
بصورت كلي نه نميشه
به اميد ديدار

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
۱۴-شهریور-۱۳۸۷, ۰۲:۱۷:۲۷
ارسال‌ها
پاسخ
amin_amin آفلاین
كاربر دو ستاره
**

ارسال‌ها: 168
موضوع‌ها: 29
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 45
( 19 تشکر در 15 ارسال )
ارسال: #18
RE: تقسیم کار بین هسته های پردازنده
محمد جان در مورد ocx ها و dll ها و اینکه آیا اینا ترد جدایی دارن و ... هم یه توضیحی میدین ؟ استفاده از اینا برای مولتی ترد کردن برنامه توی وی بی 6 توصیه میشه ؟
۱۴-شهریور-۱۳۸۷, ۰۳:۱۹:۳۱
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #19
RE: تقسیم کار بین هسته های پردازنده
زمانی که شما یک DLL رو لود میکنید اون DLL در فضای آدرس process برنامه شما قرار میگیره و در واقع از خودش Thread جداگانه نداره . اما خب شما میتونید توی فایلهای Thread ، DLL های جدید بسازید و این در واقع مثل این میمونه که برنامه شما Thread جدیدی ساخته(البته دقت کنید امکان ساخت DLL واقعی در وی بی 6 وجود نداره و DLL های وی بی از نوع AciveX هستند )
معمولا وقتی زبان وی بی استفاده نشه کلا نیازی به همچین چیزی هم نخواهد بود و ساخت Thread های بیشتر بطور مستقیم توی سورس میتونه انجام بگیره.

مبحث Thread در ActiveX ها کاملا منحصربفرد و متفاوت هست چون وابسته به تکنولوژی زیربنایی خودشون یعنی COM هستند . COM یک تکنولوژی بسیار پیچیده ، سخت و تو در تو هست و در حال حاضر مایکروسافت دات نت رو جایگزین اون اعلام کرده ( مثلا اسمبلی های دات نت جای اشیای COM رو مثل ActiveX میگیرند )
برای مقدمه میتونم بگم Process هایی که در اونها از اشیای COM مثل ActiveX استفاده میشه بخش خاصی با نام Apartment دارند که اشیای COM در اون قرار میگیرند. برای دسترسی به محتوی شی COM فقط باید از Thread های همان Apartment خاص استفاده کرد . در کل دو مدل Thread برای Apartment ها داریم :

1- Single-threaded Apartments :
مدل تک Thread که در وی بی 6 ساپورت میشه پس اشیای COM فقط یک Thread اجرایی در Apartment خودشون دارند.

2 - Multithreaded Apartments :
مدل Multi-Thread که در وی بی 6 ساپورت نمیشه و امکان چند Thread بودن رو به یک شی COM ( مثلا یک ActiveX) میده.

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۴-شهریور-۱۳۸۷, ۰۴:۲۵:۰۳
ارسال‌ها
پاسخ
تشکر شده توسط : ajlajlajl, aidin_z


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Rolleyes مشکل در تقسیم اعداد اعشاری (خیلی خیلی فوری arashkhan 5 11,657 ۰۴-شهریور-۱۳۸۹, ۱۱:۴۹:۵۱
آخرین ارسال: far_222000
  ضرب و تقسیم arnh 2 2,050 ۱۶-خرداد-۱۳۸۵, ۱۷:۴۳:۱۸
آخرین ارسال: arnh

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS