/* 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; 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; while(1){ for(i = 0 ; i < process_count; i++){ if currentTime == proccess_list[i].start_time){ IQueueStore(process_list[i].process_id); } if(int IQueueSize()==0){ printf("IDLE"); } else{ IQueueRetrieve(); printf("processing"); process_list[i].time_left = process_list[i].time_left-5; if(process_list[i].time_left>0){ IQueueStore(process_list[i].process_id); } currentTime = currentTime + 5; } if(IQueueSize()==0){ break; } } } //print!!! for (i = 0 ; i < process_count ; i++) { printf("process %d, start %d, duration %d, left %d \n", process_list[i].process_id, process_list[i].start_time, process_list[i].duration, process_list[i].time_left); } printf("DONE\n"); close(fd); };