|
سوال از بخش حریصانه (موضوع اجرای کارها در پردازنده ها) - نسخهی قابل چاپ
|
سوال از بخش حریصانه (موضوع اجرای کارها در پردازنده ها) - همیلا - ۰۱ دى ۱۳۹۵ ۰۲:۵۲ ب.ظ
دوستان ممنون میشم این سوال توضیح کامل بدین
پیشاپیش ممنونم
nکار که زمان لازم برای پردازش انها به ترتیب p1,p2,... را میخواهیم با استفاده از m پردازنده کاملا مساوی اجرا کنیم. برای این منظور ابتدا کارهایی که هر پردازنده قرار است اجرا کند با سیاست خاصی مشخص میکنیم.بدیهی است زمان اتمام کارهای یک پردازنده جمع زمان های پردازش کارهایی هست که به ان پردازنده تخصیص داده شده است .سیاست تخصیص نیز بدین گونه هست که کارها را به ترتیب صعودی شمارهشان انتخاب میکنیم و هر کار را به پردازنده ای تخصیص میدهیم که همه ی کارهای تخصیص داده شده به ان پردازنده تا این لحظه نسبت به سایر پردازنده ها در زمان زودتری تمام شوند.
اگر تعریف کنیم s=سیگما pi ها
حداکثر زمان اتمام همه کارها در بدترین حالت چقدر است؟
s/m
s/m-pn
s/m+pn
s-pn/m+pn
|
RE: کمک فوری - Saman - 02 دى ۱۳۹۵ ۱۱:۳۵ ب.ظ
سلام
برای این سوال باید ابتدا اثبات کنیم که [tex]p_n[/tex] آخرین کاری است که انجام میشود.(یعنی تا آخرین لحظه این کار انجام میشود)
درخواست مجدد دهید اثباتش را هم میگذارم.(شما بی اثبات قبول کنید که [tex]p_n[/tex] تا آخرین لحظه ادامه دارد و با توجه به فرضیات مساله نیز تا حدی بدیهی مینماید)
حال بیایید کار [tex]p_n[/tex] را کنار بگذاریم.
کار های باقی مانده از [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] را با m پردازنده انجام دهیم.
اینجا را دقت کنید که تمام کار ها داخل پردازنده ها مشغول انجام شدن هستند و با توجه به آنچه که از درس سیستم عامل میدانیم ما هیچ تخمینی از زمان انجام هر کار نداریم.
به محض آزاد شدن اولین پردازنده از قید یکی از کار های [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] کــــار [tex]p_n[/tex] را که کنار گذاشته بودیم به آن میگماریم.
طبق فرض مساله مجموع انجام کل کارها را [tex]s=\sum^n_{i=1}p_i[/tex] را فرض کرده است. داریم :
بدترین حالت زمانی رخ میدهد که تمام پردازنده ها کارشان با هم انجام شود، چرا بدترین حالت؟ چون در واقع تا آخرین لحظه تمام پردازنده ها درگیر بوده اند.
داریم : [tex]Time=\frac{s=\sum^n_{i=1}p_i-p_n}{m}=\frac{s-p_n}{m}[/tex] (دقت کنید این زمان انجام سیگما منهای آخرین کار است)
و در نهایت داریم :
[tex]\frac{s-p_n}{m}+p_n[/tex]
این بدترین حالت ممکن است.
|
RE: سوال از بخش حریصانه (موضوع اجرای کارها در پردازنده ها) - همیلا - ۰۳ دى ۱۳۹۵ ۱۲:۱۷ ق.ظ
(۰۲ دى ۱۳۹۵ ۱۱:۳۵ ب.ظ)samanbeigmiri نوشته شده توسط: سلام
برای این سوال باید ابتدا اثبات کنیم که [tex]p_n[/tex] آخرین کاری است که انجام میشود.(یعنی تا آخرین لحظه این کار انجام میشود)
درخواست مجدد دهید اثباتش را هم میگذارم.(شما بی اثبات قبول کنید که [tex]p_n[/tex] تا آخرین لحظه ادامه دارد و با توجه به فرضیات مساله نیز تا حدی بدیهی مینماید)
حال بیایید کار [tex]p_n[/tex] را کنار بگذاریم.
کار های باقی مانده از [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] را با m پردازنده انجام دهیم.
اینجا را دقت کنید که تمام کار ها داخل پردازنده ها مشغول انجام میشوند و با توجه به آنچه که از درس سیستم عامل میدانیم ما هیچ تخمینی از زمان انجام هر کار نداریم.
به محض آزاد شدن اولین پردازنده از قید یکی از کار های [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] کــــار [tex]p_n[/tex] را که کنار گذاشته بودیم به آن میگماریم.
طبق فرض مساله مجموع انجام کل کارها را [tex]s=\sum^n_{i=1}p_i[/tex] را فرض کرده است. داریم :
بدترین حالت زمانی رخ میدهد که تمام پردازنده ها کارشان با هم انجام شود، چرا بدترین حالت؟ چون در واقع تا آخرین لحظه تمام پردازنده ها درگیر بوده اند.
داریم : [tex]Time=\frac{s=\sum^n_{i=1}p_i-p_n}{m}=\frac{s-p_n}{m}[/tex] (دقت کنید این زمان انجام سیگما منهای آخرین کار است)
و در نهایت داریم :
[tex]\frac{s-p_n}{m}+p_n[/tex]
این بدترین حالت ممکن است.
ممنون
|
RE: سوال از بخش حریصانه (موضوع اجرای کارها در پردازنده ها) - Pure Liveliness - 03 دى ۱۳۹۵ ۰۴:۰۴ ب.ظ
(۰۲ دى ۱۳۹۵ ۱۱:۳۵ ب.ظ)samanbeigmiri نوشته شده توسط: سلام
برای این سوال باید ابتدا اثبات کنیم که [tex]p_n[/tex] آخرین کاری است که انجام میشود.(یعنی تا آخرین لحظه این کار انجام میشود)
درخواست مجدد دهید اثباتش را هم میگذارم.(شما بی اثبات قبول کنید که [tex]p_n[/tex] تا آخرین لحظه ادامه دارد و با توجه به فرضیات مساله نیز تا حدی بدیهی مینماید)
حال بیایید کار [tex]p_n[/tex] را کنار بگذاریم.
کار های باقی مانده از [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] را با m پردازنده انجام دهیم.
اینجا را دقت کنید که تمام کار ها داخل پردازنده ها مشغول انجام شدن هستند و با توجه به آنچه که از درس سیستم عامل میدانیم ما هیچ تخمینی از زمان انجام هر کار نداریم.
به محض آزاد شدن اولین پردازنده از قید یکی از کار های [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] کــــار [tex]p_n[/tex] را که کنار گذاشته بودیم به آن میگماریم.
طبق فرض مساله مجموع انجام کل کارها را [tex]s=\sum^n_{i=1}p_i[/tex] را فرض کرده است. داریم :
بدترین حالت زمانی رخ میدهد که تمام پردازنده ها کارشان با هم انجام شود، چرا بدترین حالت؟ چون در واقع تا آخرین لحظه تمام پردازنده ها درگیر بوده اند.
داریم : [tex]Time=\frac{s=\sum^n_{i=1}p_i-p_n}{m}=\frac{s-p_n}{m}[/tex] (دقت کنید این زمان انجام سیگما منهای آخرین کار است)
و در نهایت داریم :
[tex]\frac{s-p_n}{m}+p_n[/tex]
این بدترین حالت ممکن است.
از اونجایی که در صورت سؤال ظاهراً گفته نشده که [tex]P_i[/tex]ها صعودی هستند، به نظر میاد لزوماً [tex]P_n[/tex] آخرین کار نباشه که تموم میشه. فرض کنید مدت زمان انجام کارها به صورت [tex]1.25,1,2,0.5[/tex] هست و ۳ تا پردازنده داریم. اگر اشتباه نکنم، از اولی تا سومی به پردازندهها اختصاص پیدا میکنه و نوبت به ۰/۵ که رسید، باید به پردازندهی دوم که زودتر تموم میشه اختصاص پیدا کنه. در این صورت این کار در زمان ۱/۵ تموم میشه در حالی که کاری که مدت ۲ ثانیه طول میکشه، هنوز در حال انجام هست. پس [tex]P_n[/tex] آخرین کاری نیست که تموم میشه.
|
RE: سوال از بخش حریصانه (موضوع اجرای کارها در پردازنده ها) - Saman - 03 دى ۱۳۹۵ ۰۴:۲۶ ب.ظ
(۰۳ دى ۱۳۹۵ ۰۴:۰۴ ب.ظ)Pure Liveliness نوشته شده توسط: (02 دى ۱۳۹۵ ۱۱:۳۵ ب.ظ)samanbeigmiri نوشته شده توسط: سلام
برای این سوال باید ابتدا اثبات کنیم که [tex]p_n[/tex] آخرین کاری است که انجام میشود.(یعنی تا آخرین لحظه این کار انجام میشود)
درخواست مجدد دهید اثباتش را هم میگذارم.(شما بی اثبات قبول کنید که [tex]p_n[/tex] تا آخرین لحظه ادامه دارد و با توجه به فرضیات مساله نیز تا حدی بدیهی مینماید)
حال بیایید کار [tex]p_n[/tex] را کنار بگذاریم.
کار های باقی مانده از [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] را با m پردازنده انجام دهیم.
اینجا را دقت کنید که تمام کار ها داخل پردازنده ها مشغول انجام شدن هستند و با توجه به آنچه که از درس سیستم عامل میدانیم ما هیچ تخمینی از زمان انجام هر کار نداریم.
به محض آزاد شدن اولین پردازنده از قید یکی از کار های [tex]p_{1\: }[/tex] تا [tex]p_{n-1\: }[/tex] کــــار [tex]p_n[/tex] را که کنار گذاشته بودیم به آن میگماریم.
طبق فرض مساله مجموع انجام کل کارها را [tex]s=\sum^n_{i=1}p_i[/tex] را فرض کرده است. داریم :
بدترین حالت زمانی رخ میدهد که تمام پردازنده ها کارشان با هم انجام شود، چرا بدترین حالت؟ چون در واقع تا آخرین لحظه تمام پردازنده ها درگیر بوده اند.
داریم : [tex]Time=\frac{s=\sum^n_{i=1}p_i-p_n}{m}=\frac{s-p_n}{m}[/tex] (دقت کنید این زمان انجام سیگما منهای آخرین کار است)
و در نهایت داریم :
[tex]\frac{s-p_n}{m}+p_n[/tex]
این بدترین حالت ممکن است.
از اونجایی که در صورت سؤال ظاهراً گفته نشده که [tex]P_i[/tex]ها صعودی هستند، به نظر میاد لزوماً [tex]P_n[/tex] آخرین کار نباشه که تموم میشه. فرض کنید مدت زمان انجام کارها به صورت [tex]1.25,1,2,0.5[/tex] هست و ۳ تا پردازنده داریم. اگر اشتباه نکنم، از اولی تا سومی به پردازندهها اختصاص پیدا میکنه و نوبت به ۰/۵ که رسید، باید به پردازندهی دوم که زودتر تموم میشه اختصاص پیدا کنه. در این صورت این کار در زمان ۱/۵ تموم میشه در حالی که کاری که مدت ۲ ثانیه طول میکشه، هنوز در حال انجام هست. پس [tex]P_n[/tex] آخرین کاری نیست که تموم میشه.
سلام
گفته شده که صعودی هستند!ایشون ننوشتن . . .
|
RE: سوال از بخش حریصانه (موضوع اجرای کارها در پردازنده ها) - Behnam - ۰۷ دى ۱۳۹۵ ۰۴:۵۴ ق.ظ
(۰۱ دى ۱۳۹۵ ۰۲:۵۲ ب.ظ)همیلا نوشته شده توسط: دوستان ممنون میشم این سوال توضیح کامل بدین
پیشاپیش ممنونم
nکار که زمان لازم برای پردازش انها به ترتیب p1,p2,... را میخواهیم با استفاده از m پردازنده کاملا مساوی اجرا کنیم. برای این منظور ابتدا کارهایی که هر پردازنده قرار است اجرا کند با سیاست خاصی مشخص میکنیم.بدیهی است زمان اتمام کارهای یک پردازنده جمع زمان های پردازش کارهایی هست که به ان پردازنده تخصیص داده شده است .سیاست تخصیص نیز بدین گونه هست که کارها را به ترتیب صعودی شمارهشان انتخاب میکنیم و هر کار را به پردازنده ای تخصیص میدهیم که همه ی کارهای تخصیص داده شده به ان پردازنده تا این لحظه نسبت به سایر پردازنده ها در زمان زودتری تمام شوند.
اگر تعریف کنیم s=سیگما pi ها
حداکثر زمان اتمام همه کارها در بدترین حالت چقدر است؟
s/m
s/m-pn
s/m+pn
s-pn/m+pn
علاوه بر روش فوق، میشه با یکی دو مثال عددی خیلی ساده هم به جواب رسید.
ضمنا گزینهی ۱ و ۲ تابلو جواب نیستند. چون وقتی میانگین میگیریم ([tex]\frac{S}{m}[/tex] یعنی)، یه سری پردازندهها هستند که کارهای داده شده بهشون از میانگین بیشتر خواهد بود، ولی ۱ که خودش میانگین هست، ۲ هم از میانگین کمتر!
مثلا فرض کنید زمان اجرای کارها به ترتیب ۱ و ۲ و ۳ ثانیه هست و ۳ تا پردازنده هم داریم. میانگین ۲ ثانیه هست ولی مشخصاً ۳ ثانیه طول میکشه تموم بشه. گزینهی یک میشه ۲، گزینهی دو میشه منفی یک!!
|