Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

‫نظم تشغيل‬

‫‪opearting systems‬‬

‫(جانب العملي )‬

‫لقسم الرباجميات ‪ /‬املرحلة الرابعة‬

‫خوارزميات اجلدولة‬
‫‪Scheduling algorithms‬‬
‫‪Part 3‬‬

‫اعداد‬

‫بان عبد الرضا حسن‬

‫بأشراف األستاذ م‪.‬م زين العابدين علي‬


‫خوارزمية ‪ -: priority scheduling‬هي طريقة تعتمد على أولوية العملية ‪priority of process‬‬

‫‪ ‬االولوية ‪ priority‬للعملية هي عبارة عن رقم ‪ integer‬يعطي (يتم تخصيصه ) لكل ‪process‬‬


‫‪Smallest‬‬ ‫‪ ‬ينفذ ‪ cpu‬العملية (‪ (process‬ذات اولوية )‪ ) priority‬أعلى (أفتراضيا ان الرقم االصغر هو االعلى أولوية‬
‫‪)integer = highest priority‬‬

‫وتكون ‪ priority scheduling‬على نوعين‬

‫‪( Preemptive ‬يعني اذا كانت عملية منتظرة ذات اولوية اعلى من اولوية قيد تنفيذ عملية سيتم ارجاع عملية التي قيد‬
‫تنفيذ الى طابور(‪ )queue‬وتنفيذ عملية ذات اولوية اعلى منها )‬
‫‪(Not preemptive ‬مهما كانت اولوية عملية منتظرة سيتم تنفيذ العملية قيد تنفيذ)‬

‫حتى نبين اليه عمل ‪ (Not preemptive) priority scheduling‬نتطرق الى شرح اليه عمل هذه خوارزمية بجانب‬
‫النظري والعملي‬

‫جانب تطبيقي (نظري)‪-:‬‬


‫ف السوال لدينا عدد من عمليات ‪ processes‬و(‪ )Burst time‬و ‪( priority‬االولوية لكل عملية ‪)process‬‬

‫‪Process‬‬ ‫‪Burst time‬‬ ‫‪Priority‬‬

‫‪P1‬‬ ‫‪6‬‬ ‫‪5‬‬

‫‪P2‬‬ ‫‪8‬‬ ‫‪3‬‬

‫‪P3‬‬ ‫‪7‬‬ ‫‪4‬‬

‫‪P4‬‬ ‫‪3‬‬ ‫‪1‬‬

‫ومطلوب ايجاد )‪ waiting time(wt‬و )‪ average waiting time Turnaround time(TAT‬و ‪average turnaround time‬‬

‫بداية نقوم بتصميم ‪ Gantt diagram‬ملعرفة ‪waiting time‬‬

‫‪P4‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P1‬‬

‫معدل انطالق زمني‬


‫لتنفيذ عملية اولى‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪11‬‬ ‫‪18‬‬ ‫‪24‬‬
‫بدء من ‪0‬‬

‫‪Average waiting time = (0+3+11+18)/4‬‬

‫‪Average waiting time = 32/4‬‬

‫‪Average waiting time = 8 millisecond‬‬


-:‫ لكل من خالل القانون االتي‬Turnaround time ‫نجد‬

Turnaround time= Burst time + Waiting time

T.A.T (p1) = 6+18 = 24 millisecond

T.A.T (p2) = 8+3 = 11 millisecond

T.A.T (p3) = 7+11 = 18 millisecond

T.A.T (p4) = 3+0 = 3 millisecond

Average Turnaround time ‫اما لاليجاد‬

Average Turnaround time = T.A.T (p1) + T.A.T (p2) + T.A.T (p3) + T.A.T (p4) /4

Average Turnaround time = (24 + 11 + 18 + 3) /4

Average Turnaround time =56 /4

Average Turnaround time = 14 millisecond


-:)‫جانب العملي(كتابة الكود‬
#include<iostream>
using namespace std;

void main()
{
int n,i,bt[20],pri[20],p[20],j,k,wt[20],tat[20];
float avwt=0,avtat=0;

cout<<"Enter total number of process(maximum 20):"; // processes ‫أدخال عدد‬


cin>>n;

cout<<"\nEnter process burst time\n"; //burst time ‫أدخال قيم‬


for(i=0;i<n;i++)
{
cout<<"p["<<i+1<<"]:";
cin>>bt[i];
}
cout<<"\nEnter process priority\n"; //priority ‫أدخال قيم‬
for(i=0;i<n;i++)
{
cout<<"p["<<i+1<<"]:";
cin>>pri[i];
p[i]=i+1;
}

/* ‫ تصاعديا لالن هذه خوارزمية تعتمد على اولوية‬priority ‫ترتيب مصفوفة‬ */


for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if (pri[i] > pri[j])
{

k = pri[i];
pri[i]= pri[j];
pri[j]=k;

k = bt[i];
bt[i]= bt[j];
bt[j]=k;

k = p[i];
p[i]= p[j];
p[j]=k;
}
}}

wt[0]=0;

for(i=1;i<n;i++) // waiting time ‫حساب‬


{
wt[i]=0;
for(j=0;j<i;j++)
wt[i]+=bt[j];
avwt+=wt[i];
}
cout<<"\nP"<<"\t"<<"BT"<<"\t"<<"Pri"<<"\t"<<"WT"<<"\t"<<"TAT" ;
for(i=0;i<n;i++) // Turnaround time ‫حساب‬
{
tat[i]=bt[i]+wt[i];
avtat+=tat[i];
cout<<"\np["<<p[i]<<"]"<<"\t"<<bt[i]<<"\t"<<pri[i]<<"\t"<<wt[i]<<"\t"<<tat[i];
// processes , burst time ,priority, waiting time , turnaround time ‫طباعة القيم‬
}

avwt/=i;
avtat/=i;

cout<<"\n\n average WaitingTime: "<<avwt;


cout<<"\n average TurnaroundTime: "<<avtat<<"\n\n";

system("pause"); //‫لتوقيف شاشة التنفيذ‬

*****************************

-: ‫أما واجهة تنفيذ الكود‬

You might also like