سورس الگوریتم زمان بندی SJF به زبان C
در این بخش سورس الگوریتم زمان بندی SJF به زبان C را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C نوشته شده است. در ادامه می توانید توضیحات و تصاویر مربوط به این پروژه را مشاهده کنید.
توضیحات پروژه
الگوریتم زمان بندی SJF (یا همان Shortest Job First) همانطور که از نام آن نیز مشخص است، هنگام انتخاب فرآیندی از صف فرآیند ها، آن فرآیندی را انتخاب می کند که زمان اجرای (execution time) کوتاه تری داشته باشد. SJF یک الگوریتم انحصاری است. یکی از ایرادات SJF این است که اگر به طور مداوم فرآیندهایی با زمان اجرای پایین وارد صف اجرا شوند، فرآیندهایی که زمان بیشتری برای اجرا شدن نیاز دارند، هیچگاه اجرا نمی شوند.
هنگامی که سورس کد این پروژه اجرا شود، برنامه از فایلی که در کنار پروژه قرار دارد، اطلاعات مربوط به فرآیند ها را میخواند و سپس نحوه زمان بندی شدن آن ها توسط الگوریتم SJF را در خروجی نمایش می دهد. این برنامه با استفاده از برنامه Dev C++ نوشته شده است که می توانید آن را از لینک مورد نظر دانلود کنید.
قسمت های از سورس کد
#include<stdio.h> struct job { char jid[10]; int bt; int wt; int tt; }q[10]; int front=0,rear=0; void shortest_job_first(int n,int time) { int clk=0,i,curr_p=0; int j_time=q[0].bt; while(clk!=time) { if(j_time==0) { curr_p++; j_time=q[curr_p].bt; } for(i=curr_p+1;i<n;i++) q[i].wt++; clk++; j_time--; } } int main() { float avg_wt=0,avg_tt=0; int n=0,time=0,i; FILE *fp; fp=fopen("input.txt","r"); do { fscanf(fp,"%s %d\n",q[n].jid,&q[n].bt); q[n].wt=q[n].tt=0; time+=q[n].bt; n++; } while(!feof(fp)); fclose(fp); sorting(n); shortest_job_first(n,time); for(i=0;i<n;i++) q[i].tt=q[i].bt+q[i].wt; printf("JID\tBT\tWT\tTT\n"); for(i=0;i<n;i++) { printf("%s\t%d\t%d\t%d\n",q[i].jid,q[i].bt,q[i].wt,q[i].tt); avg_wt+=q[i].wt; avg_tt+=q[i].tt; } printf("Average Waiting Time:: %.2f\n",avg_wt/n); printf("Average Turnaround Time:: %.2f\n",avg_tt/n); return 0; }
نوشته سورس الگوریتم زمان بندی SJF به زبان C اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.