سلام ..
فکر می کنم بهتر باشه به Thread بصورت یک مفهوم نگاه کنید. Thread اصلا ربطی به Core ( یا همون هسته ) نداره و یک مفهومه .
Thread یا به قول دوستان همون رشته " اصلی ترین واحد پردازش در پردازنده هست " بعنوان مثال شما قراره یک پروسه مثل : 2*3+2-(2+1) رو در پردازنده انجام بدین. اسم این رو گذاشتیم Process .
بنابراین شما نمی تونید این پروسس رو بسته بندی کنید و تحت لوای یک دستور یا یک واحد پردازش بدید به پردازنده تا پردازش بشه.
این پروسس خودش شما مجموعه ای از Instruction هاس. برای آنکه پردازنده بتونه این Process رو پردازش کنه باید این پروسس تبدیل بشه به یک یا چند Thread ( حالا شاید بهتر متوجه بشید که Thread به نوعی کوچکترین واحد پردازشی در پردازنده هست )
اونوقه این پروسس تبدلیل میشه به چند Thread و برای پردازش به هسته پردازشگر می ره.
مفهوم Multi Threading هم بر همین اساس است. این چیزی که بهش هسته مجازی می گن شاید کمی ذهن رو از واقعیت قضیه دور کنه. ما فقط یک هسته فیزیکی داریم با قابلیت Multi Threading .
در این صورت وقتی رشته اول وارد Core و پس از طی مقداری از پردازش , رشته دوم هم وارد میشه. یعنی هسته صبر نمی کنه تا پردازش رشته اول کامل تموم بشه و رشته دوم رو بگیره.
نهایتا از این پردازنده چند رشته ای باید به مفهوم پردازش موازی برسیم. یعنی منابع " تا زمان تمام شدن پردازش یک واحد قابل پردازش یا همون رشته " نباید بیکار باشن و پردازش رشته دوم رو شروع می کنن.
امیدوارم درست توضیح داده باشم !
ممنون






پاسخ با نقل قول
Bookmarks