اما الگوریتم شامل ۵ مدل اساسی است :
در مدل اول(شکل ۳-۱۷)، وظایف تناوبی به m زیرمجموعه، جزءبندی می­شوند. در ابتدا قبل از عمل جزءبندی، وظایف تناوبی براساس بهره­وری­اشان بصورت صعودی مرتب می­شوند. هر زیرمجموعه از وظایف، متناظر با یک هسته می­باشد. وظایف غیرتناوبی نیز در زمان ورودشان در صف غیرتناوبی سراسری وارد و سپس به یک هسته پردازشی تخصیص داده می­شوند. هر هسته شامل صف مجزایی است که برای نگهداری وظایف تناوبی و غیرتناوبی در هر لحظه استفاده می­ شود.

(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))

Partition(T,PQ,P) {
Populate periodic task set T in PQ;
Sort PQ in ascending order by UT;
Partition_WFD(PQ);
}
شکل ۳-۱۷ شبه‌کد الگوریتم جزبندی با WFD ]37[
شکل ۲۰شکل ۳-۱۷ شبه‌کد الگوریتم جزبندی با WFD [37]
مدل زمانبند دوم(شکل ۳-۱۸)، وظایف تناوبی و همینطور وظایف غیرتناوبی را با بهره گرفتن از سیاست EDF زمانبندی می­ کند. وظایف غیرتناوبی بصورت سراسری در زمان ورودشان و یا در زمان مهاجرتشان، به هسته­های مختلف تخصیص داده می­شوند. مدل ۵ (شکل ۳-۲۱)(Select-Processor())، هسته متناظر برای اجرای وظیفه غیرتناوبی را پیدا می­ کند. سپس سررسید مجازی روی هر هسته محاسبه می­ شود و هسته­ای که نزدیکترین سررسید مجازی را دارا باشد برای اجرای وظیفه غیرتناوبی مورد نظر، بکار برده می­ شود. این به این معنی است که هسته‌ای که اگر وظیفه غیرتناوبی در آن قرار بگیرد سریع‌تر اجرا شود، انتخاب می‌شود. همان طور که شبه‌کد شکل ۳-۱۸ مشاهده می‌کنید، در ابتدا همه وظایف تناوبی را وارد صف‌های مربوط به هر هسته که با توجه به الگوریتم تخصیص داده شده بودند، می‌کند و هر وظیفه غیرتناوبی که در هر لحظه ممکن است برسد را نیز وارد صف کلی وظایف غیرتناوبی می‌کند، سپس اگر صف وظایف غیرتناوبی خالی بود، برای وظایف تناوبی در هر صف هسته‌ها الگوریتم EDF اجرا می شود.
Scheduler (T, A, PQ, P, JQueue) {
Join all pending periodic jobs till time t to a queue in JQueue;
Join aperiodic jobs to AQ qrrived at time t;
If (!is_Empty(AQ)) then
p_id = select_processor(AJobhead);
insert AJobhead­ in JQp_id;
For all Pb ۱≤i≤m
If (! Finished(Jobhead[i]) or ! preempted(Jobhead[i]) ) then
Execute_edf(Jobhead[i], JQi ,Pi);
Else
Sched_edf(Jobhead[i], JQi ,Pi);
}
شکل ۳-۱۸ شبه کد زمانبند پیشنهادی در ]۳۷[
شکل ۲۱شکل ۳-۱۸ شبه کد زمانبند پیشنهادی در [۳۷]
مدل سوم(شکل ۳-۱۹) (execute-edf())، رخدادهایی مثل ورود وظایف با اولویت بالاتر / پایین­تر را کنترل می­ کند. درصورتیکه در حین اجرا، وظیفه با اولویت بالاتری وارد سیستم شود، این مدل وظیفه در حال اجرا را قبضه کرده و وظیفه تازه­وارد را اجرا می­ کند در غیراینصورت اجرای وظیفه جاری ادامه می­یابد.
Execute_edf(Jobhead[P­_id] , JQ­p_id , P_id) {
Execute Jobhead[P­_id];
If ((isHigherPriority(Jobarrived[P­_id])) and (!isFinished(Jobhead[P­_id])) then
Insert Jobarrived[P­_id] in JQ­p_id ;
Preempt Jobarrived[P­_id];
Else
Insert Jobarrived[P­_id] in JQ­p_id ;
Execute Jobhead[P­_id];
}شکل ۲۲شکل ۳-۱۹ شبه‌کد سیاست اجرای EDF [37]
شکل ۳-۱۹ شبه‌کد سیاست اجرای EDF ]37[
مدل چهارم (شکل ۳-۲۰ )(sched-edf())، در هر نقطه زمانبندی فراخوانی می­ شود. این مدل وظیفه بعدی را براساس EDF، زمانبندی کرده همچنین مسئول مهاجرت وظایف غیرتناوبی نیز می­باشد.
Sched_edf(Jobhead[P­_id] , , JQ­p_id , P_id) {
If (isFinished(Jobhead[P­_id])) then
If (! IsEmpty(JQ­p_id)) then
execute_edf(Jobhead[P­_id] , , JQ­p_id , P_id);
Else
CPU remains idle;
If (ispreempted(Jobhead[P­_id])) then
If (Jobhead[P­_id] is peridic) then
execute_edf(Jobhead[P­_id] , , JQ­p_id , P_id);
If (Jobhead[P­_id] is aperidic) then
Selected_pid = select­processor(Jobhead[P­_id]);
Migrate Jobhead[P­_id] in JQ of Selected_pid;

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...