rendered paste body/* The parser piece for the scheduler assignment*/#include <stddef.h>#include <string.h>#include <stdio.h>#include <unistd.h>#include <fcntl.h>/* 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; ii<psleft; ii++){ if(process_list[ii].start_time == currentTime){ IQueueStore(ii); } } if(IQueueSize()==0){ printf("idle\n); } if(IQueueSize()>0){ 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);};