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

‫نظم تشغيل‬

‫‪opearting systems‬‬

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

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

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

‫اعداد‬

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

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


‫‪ Scheduling algorithms‬هي عدة خوارزميات تبين اّليه (طريقة) التي يتبعها ‪ cpu‬في تنفيذ عدة عمليات او‬
‫طلبات المستخدم (‪)processes‬‬

‫ومن هذه خوارزميات ‪-:‬‬


‫خوارزمية )‪ -: FCFS(First come First serve‬هي اسهل وابسط الية يتبعها ‪ cpu‬في عملية جدولة لتنفيذ‬
‫عمليات (‪ )Processes‬وتسمى ‪ non preemptive‬لالن عملية معالجة ‪ cpu‬ل ‪ process‬التقطع من قبل‬
‫‪ process‬أخرى‬

‫حتى نبين اليه عمل لخوارزمية ‪ FCFS‬نتطرق الى شرح اليه عمل هذه خوارزمية بجانب النظري والعملي‬

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


‫ف السوال لدينا عدد من عمليات ‪ processes‬و(‪ )Burst time‬وقت تحتاجه كل عملية حتى تكمل تنفيذها‬

‫‪Process‬‬ ‫‪Burst time‬‬

‫‪P1‬‬ ‫‪3‬‬

‫‪P2‬‬ ‫‪2‬‬

‫‪P3‬‬ ‫‪4‬‬

‫‪P4‬‬ ‫‪6‬‬

‫ومطلوب هو ايجاد )‪ waiting time(wt‬وقت انتظار كل عملية حتى تتنفذ و )‪ Turnaround time(TAT‬وهو‬
‫وقت انتهى به تنفيذ العملية و معدل زمن االنتظار ‪ average waiting time‬و ‪average turnaround time‬‬

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

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

‫اول عملية مباشرة‬


‫تنتفذ ماتتنظر لذلك‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪5‬‬ ‫‪9‬‬ ‫‪15‬‬
‫نضع ‪0‬‬

‫‪Average waiting time = (0+3+5+9)/4‬‬

‫‪Average waiting time = 17/4‬‬

‫‪Average waiting time = 4.25 millisecond‬‬

‫مالحظة‪ Average waiting time -:‬نحصل عليه من جمع ‪ waiting time‬لكل عملية ‪process‬‬
‫مقسما على عدد العمليات (‪)process‬‬
-:‫ من خالل القانون االتي‬process ‫ لكل‬Turnaround time ‫نجد‬

Turnaround time= Burst time + Waiting time

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

T.A.T (p2) = 2+3 = 5 millisecond

T.A.T (p3) = 4+5 = 9 millisecond

T.A.T (p4) = 6+9 = 15 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 = 3 + 5 + 9 + 15

Average Turnaround time =32 /4

Average Turnaround time = 8 millisecond

‫ لكل عملية‬Turnaround time ‫ نحصل عليه من جمع‬Average Turnaround time -:‫مالحظة‬


)process( ‫ مقسما على عدد العمليات‬process
-:)‫جانب عملي(كتابة الكود‬

visual c++ (console application) ‫برنامج المستخدم هو‬ 

#include<iostream>
using namespace std;

void main()
{
int n,bt[20],wt[20],tat[20],avwt=0,avtat=0,i,j;
cout<<"Enter total number of process(maximum 20):";
cin>>n;
cout<<"Enter process burst time\n";
for(i=0;i<n;i++)
{
cout<<"p["<<i+1<<"]:";
cin>>bt[i];
}
wt[0]=0;
//calculating waiting time
for(i=1;i<n;i++)
{
wt[i]=0;
for(j=0;j<i;j++)
wt[i]+=bt[j];
}
cout<<"\nP"<<"\t"<<"BT"<<"\t"<<"WT"<<"\t"<<"TAT" ;
//calculate tuanaroundtime
for(i=0;i<n;i++)
{
tat[i]=bt[i]+wt[i];
avwt+=wt[i];
avtat+=tat[i];
cout<<"\np["<<i+1<<"]"<<"\t"<<bt[i]<<"\t"<<wt[i]<<"\t"<<tat[i];
}
avwt/=i;
avtat/=i;
cout<<"\n average waiting_time:"<<avwt;
cout<<"\n average turnaround_time:"<<avtat<<"\n";
system("pause");

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

You might also like