فایل شماره 7254 |
اما الگوریتم شامل ۵ مدل اساسی است :
در مدل اول(شکل ۳-۱۷)، وظایف تناوبی به 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] , JQp_id , P_id) {
Execute Jobhead[P_id];
If ((isHigherPriority(Jobarrived[P_id])) and (!isFinished(Jobhead[P_id])) then
Insert Jobarrived[P_id] in JQp_id ;
Preempt Jobarrived[P_id];
Else
Insert Jobarrived[P_id] in JQp_id ;
Execute Jobhead[P_id];
}شکل ۲۲شکل ۳-۱۹ شبهکد سیاست اجرای EDF [37]
شکل ۳-۱۹ شبهکد سیاست اجرای EDF ]37[
مدل چهارم (شکل ۳-۲۰ )(sched-edf())، در هر نقطه زمانبندی فراخوانی می شود. این مدل وظیفه بعدی را براساس EDF، زمانبندی کرده همچنین مسئول مهاجرت وظایف غیرتناوبی نیز میباشد.
Sched_edf(Jobhead[P_id] , , JQp_id , P_id) {
If (isFinished(Jobhead[P_id])) then
If (! IsEmpty(JQp_id)) then
execute_edf(Jobhead[P_id] , , JQp_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] , , JQp_id , P_id);
If (Jobhead[P_id] is aperidic) then
Selected_pid = selectprocessor(Jobhead[P_id]);
Migrate Jobhead[P_id] in JQ of Selected_pid;
فرم در حال بارگذاری ...
[دوشنبه 1401-04-06] [ 01:09:00 ق.ظ ]
|