(۳) Getstatus(DSPall)
(۴) % First level for load unbalance %
(۵) if (DSPoff == DSPall)
(۶) DSPt = minserial (DSPoff)
(۷) Turn on minserial (DSPoff)
(۸) else if (DSPfs == DSPon)
(۹) if (DSPon == DSPall)
(۱۰) go to line 21
(۱۱) else
(۱۲) DSPt = minserial (DSPoff)
(۱۳) Turn on minserial (DSPoff)
(۱۴) else if (Num(DSPon - DSPfs)==1)
(۱۵) DSPt = DSPon - DSPfs
(۱۶) else
(۱۷) go to line 21
(۱۸) Dispatch the task to DSPt.
(۱۹) end
(۲۰) % Second level for load balance%
(۲۱) if (Num(maxUniformity(DSPon))==1)
(۲۲) DSPt = maxUniformity(DSPon)
(۲۳) else if (Num(minOrder(DSPon))==1)
(۲۴) DSPt = minOrder(DSPon)
(۲۵) else if (Num(minTask(DSPon))==1)
(۲۶) DSPt = minTask(DSPon)
(۲۷) else
(۲۸) DSPt = minserial(DSPon)
(۲۹) Dispatch the task to DSPt.
(۳۰) End.شکل ۱۹شکل ۳-۱۶ شبه کد الگوریتم توزیع وظایف TLDHLB [36]
شکل ۳-۱۶ شبه کد الگوریتم توزیع وظایف TLDHLB ]36[
۳-۶-۴ الگوریتم زمانبندی پیشنهادی در مرجع ]۳۷[
در این مقاله، یک الگوریتم زمانبندی بیدرنگ برای مجموعه وظایف ترکیبی برروی مدل چند هستهای همگن، ارائه شده است. وظایف تناوبی براساس سیاست EDF، جزءبندی شده و زمانبندی میشوند. وظایف غیرتناوبی نیز بصورت سراسری به هستههای مختلف، تخصیص داده میشوند. در ادامه به جزئیات الگوریتم میپردازیم.
سیستم بکار رفته در این مقاله، دارای m، هسته پردازشی همگن p={p1 , p2 ,… , pm} میباشدوظایف سیستم نیز شامل ترکیبی از وظایف تناوبی و غیرتناوبی است. مجموعه وظایف تناوبی T={T1 , T2, … , Tn}، شامل n وظیفه تناوبی انحصاری و مستقل است و مجموعه وظایف غیرتناوبی A={A1 ,A2 , …, Ak} شامل k وظیفه غیرتناوبی انحصاری میباشد. هر وظیفه تناوبی توسط ۴ مشخصه Ai , Ci , Pi , Di که به ترتیب بیانگر زمان ورود وظیفه، بدترین حالت زمان اجرا، دوره تناوب وظیفه و سررسید متناظر آن میباشد شناسایی میشوند. در این مدل دوره تناوب وظایف، برابر با سررسید متناظرشان درنظر گرفته شده است. وظایف غیرتناوبی نیز شامل دو مشخصه Ei و Ai که به ترتیب بیانگر زمان ورود و بدترین حالت زمان اجرا است میباشد. بهرهوری وظیفه تناوبی Ti بصورت Ui=Ci/Pi تعریف می شود و جمع بهرهوری تمامی وظایف تناوبی بصورت بهرهوری کل هر هسته درنظر گرفته می شود. از آنجاییکه بیشترین مقدار بهرهوری هر هسته، یک می تواند باشد از اینرو برای بهرهوری کل سیستم داریم : U<m که m، تعداد هستههای پردازنده است.
الگوریتم پیشنهادی شامل نظریه جزءبندی برای وظایف تناوبی و تخصیص سراسری برای وظایف غیرتناوبی است. که نمادهای بکار رفته در این الگوریتم عبارتند از:
-
- PQ : صف وظایف تناوبی
-
- AQ : صف وظایف غیرتناوبی
-
- JQueue = {JQ1 , JQ2 , … JQm} : مجموعه صف وظایف متناسب با هر هسته پردازنده است که این صف می تواند شامل ترکیبی از وظایف تناوبی و غیرتناوبی باشد که همگی آماده اجرا هستند.
-
- UT : بهرهوری وظایف تناوبی
-
- Vd : سررسید مجازی
-
- P-id و Selected-pid : شناسههای هسته پردازنده
-
- Jobhead[i] : وظیفه تناوبی و یا غیرتناوبی در ابتدای صف JQi
-
- Jobhead[P-id] : وظیفه تناوبی و یا غیرتناوبی در ابتدای صف تخصیص داده شده به هسته با شناسه P-id
-
- AJobhead : وظیفه غیرتناوبی در ابتدای صف وظایف غیرتناوبی
-
- Jobarrived[P-id] : وظیفه رسیده در زمان t در صف JQP-id
-
- Jobnext[P-id] : وظیفه بعدی در صف JQP-id که آماده برای اجرا است.
-
- JobAP : بیانگر وظایف غیرتناوبی است.
-
- ورودیهای الگوریتم شامل : مجموعه وظایف تناوبی، مجموعه وظایف غیرتناوبی، و تعداد هستههای پردازنده.
-
- خروجیهای الگوریتم شامل : زمانبندی انجام شده.
- فرضیات شامل : تمامی وظایف تناوبی مستقل بوده و همگی در زمان صفر وارد صف آماده میشوند و وظایف غیرتناوبی در هر زمان دلخواهی میتوانند وارد شوند.