/* The parser piece for the scheduler assignment */ #include #include #include #include #include /* You will need the integer queue */ #include "IQueue.h" int main(int argc, char* argv[]) { int fd; FILE *f; char line[80]; int start_time, duration; int i; int ii; struct process_struct { int process_id; int start_time; int duration; int time_left; }; struct process_struct process_list[80]; int process_count; if (argc !=2) { printf("usage a.out file_name\n"); return 0; }; f = fopen(argv[1],"r"); process_count = 0; while(fgets(line,sizeof(line),f) != NULL) { sscanf(line, "%d %d", &start_time, &duration); process_list[process_count].process_id = process_count; process_list[process_count].start_time = start_time; process_list[process_count].duration = duration; process_list[process_count].time_left = duration; process_count++ ; } //////// int currentTime = 0; int timeSlice = 5; int psleft = process_count; int PID = 0; while(psleft>0){ printf("\n\ncurrent time is : %d\n", currentTime); for(ii=0; ii0){ PID = IQueueRetrieve(); printf("running process %d for 5 timesharess \n", PID); process_list[PID].time_left = process_list[PID].time_left-timeSlice; } if(process_list[PID].time_left>0){ IQueueStore(PID); } currentTime = currentTime +5; sleep(2); }//end while ///////v printf("DONE\n"); close(fd); };