الگوریتم زمانبندی RR به زبان C همراه سورس کد
در این پست شما می توانید سورس الگوریتم زمانبندی RR به زبان C سی را از ما دریافت کنید.
زمانبندی نوبت چرخشی RR مخفف Round-robin Scheduling یکی دیگر از الگوریتم هایی می باشد که با فرایندها و زمان بندی شبکه کار می کند. پارامتر هایی که اکثرا مورد استفاده می گیرند، قطعات زمانی هستند که به هر فرایند بخش یکسان و به صورت ترتیب چرخشی انتساب داده می شود، تمام فرایندها بدون اولویت در نظر گرفته می شوند. الگوریتم زمانبندی RR ساده، پیاده سازی آسان و بدون قحطی است. این زمان بندی هم چنین میتواند برای مسائل زمان بندی دیگر مثل زمان بندی بسته داده در شبکههای کامپیوتری بکار برده شود. این خط مشی سیستم عامل است.
الگوریتم زمانبندی RR به صورت منصفانه است، یک زمانبند RR بیشتر اشتراک زمانی را در نظر میگیرد. به هر کار یک قطعه زمانی یا کوانتوم (توسط cpu اجازه داده میشود) داده میشود، اگر یک کار تمام نشده باشد به وسیله آن وقفه داده میشود و آن کار دوباره در زمان بعدی یک قطعه زمانی به فرایند اختصاص میدهد. اگر اشتراک زمانی نباشد یا کوانتومها بزرگتر از سایز کارها باشند، یک فرایندی که کارهای بزرگ را تولید کرده است نسبت به فرایندهای دیگر مورد توجه قرار خواهد گرفت.
مثلاً اگر قطعه زمانی ۱۰۰ میلی ثانیه باشد و کار شماره یک، جمعا ۲۵۰ میلی ثانیه زمان می برد تا تکمیل شود، زمانبند RR، کار را ۱۰۰ میلی ثانیه به عقب می اندازد و به دیگر فرایندها زمانشان را روی cpu میدهد. در اجرای اول کارهای دیگر سهم یکسانشان را دارند؛ (۱۰۰ میلی ثانیه) کار شماره یک تخصیص دیگری از زمان cpu را خواهد گرفت و چرخه ادامه پیدا خواهد کرد. این فرایندها تا زمانی که کارها تمام شود و احتیاجی به زمان بیشتری روی cpu نباشد. ادامه پیدا می کند.
در ادامه می توانید قسمت های از کد برنامه الگوریتم زمانبندی RR با زبان C سی را ملاحظه کنید.
تکه کد الگوریتم زمانبندی RR به زبان C سی:
جهت دریافت کد کامل این برنامه از قسمت خرید محصول اقدام کنید
#include<stdio.h>
struct job
{
char jid[10];
int at;
int bt;
int wt;
int tt;
}jq[10],rq[100];
int front_jq=0,rear_jq=0;
int front_rq=0,rear_rq=0;
int rt[100];
void gantt_chart(int q)
{
int i,k,val,j=rq[0].at;
printf("\n\nGANTT CHART\n");
for(i=0;i<rear_rq;i++)
{
for(k=0;k<rt[i];k++)
printf("__");
printf(" ");
}
printf("\n");
for(i=0;i<rear_rq;i++)
{
printf("%s",rq[i].jid);
for(k=0;k<rt[i]-1;k++)
printf(" ");
printf(" ");
}
printf("\n");
for(i=0;i<rear_rq;i++)
{
for(k=0;k<rt[i];k++)
printf("__");
printf(" ");
}
printf("\n");
for(i=0;i<rear_rq;i++)
{
if(j<10)
printf("0%d",j);
else
printf("%d",j);
for(k=0;k<rt[i]-1;k++)
printf(" ");
printf(" ");
j+=rt[i];
}
}
int main()
{
float avg_wt=0,avg_tt=0;
int n=0,i,j,q;
FILE *fp;
fp=fopen("rr.txt","r");
fscanf(fp,"%d\n",&q);
do
{
fscanf(fp,"%s\t%d\t%d\n",jq[n].jid,&jq[n].at,&jq[n].bt);
jq[n].wt=0;
jq[n].tt=0;
n++;
}
while(!feof(fp));
fclose(fp);
rear_jq=n;
rr_scheduling(q,n);
for(i=0;i<n;i++)
jq[i].tt=jq[i].bt+jq[i].wt;
printf("\nSCHEDULING\n");
for(i=0;i<rear_rq;i++)
{
if(i==rear_rq-1)
printf("%s",rq[i].jid);
else
printf("%s --> ",rq[i].jid);
}
gantt_chart(q);
printf("\n\nJID\tAT\tBT\tWT\tTT\n");
for(i=0;i<n;i++)
{
printf("%s\t%d\t%d\t%d\t%d\n",jq[i].jid,jq[i].at,jq[i].bt,jq[i].wt,jq[i].tt);
avg_wt+=jq[i].wt;
avg_tt+=jq[i].tt;
}
printf("Average Waiting Time:: %.2f\n",avg_wt/n);
printf("Average Turnaround Time:: %.2f\n",avg_tt/n);
return 0;
}
سلام می تونم کمی وقتتونو بگیرم . فرق بین نرم افزار سی با سی پلاس پلاس می خواستم بدونم ؟
سلام من برنامه سی رو رو سیستمم نصب کردم بار اول اجرا نشد چند بار که سیستممو روشن خاموش کردم درست شد علت چیه ؟ خیلی خیلی تشکر ...
سلام من برنامه سی رو رو سیستمم نصب کردم بار اول اجرا نشد چند بار که سیستممو روشن خاموش کردم درست شد علتشو می خواستم بدونم . خیلی خیلی تشکر ...