n typedef struct node int number int reachtime
实验示例 n 作业信息结构 typedef struct node { int number; int reach_time; int need_time; double excellent; int start_time; int wait_time; int tr_time; double wtr_time; int run_time; } job; //作业号 //作业抵达时间 //作业的执行时间 //响应比 //作业开始时间 //等待时间 //周转时间 //带权周转时间 //作业累计已执行时间
实验示例 n 常用的打开文件方法: if((fp = fopen(fname, "r")) == NULL) { printf("error, open file failed, please check filename: n"); } else {…} fclose(fp);
实验示例 void FCFS() { int time = 0; //当前时间 printf("n. FCFS算法作业流n"); while (cur_count > 0) { int loc = 0; if (time < jobs[loc]. reach_time) time = jobs[loc]. reach_time; jobs[loc]. start_time = time; jobs[loc]. wait_time = time jobs[loc]. reach_time; printf("time: %-4 d job: %-4 d 开始 运行 等待时间:%-4 dn", time, jobs[loc]. number, jobs[loc]. wait_time); time += jobs[loc]. need_time; jobs[loc]. tr_time = time jobs[loc]. reach_time; jobs[loc]. wtr_time = (double)jobs[loc]. tr_time / jobs[loc]. need_time; printf("time: %-4 d job: %-4 d 结束运行 周 转时间;%-4 d 服务时间:%-4 d 带权周转时 间:%-5. 2 fn", time, jobs[loc]. number, jobs[loc]. tr_time, jobs[loc]. need_time, jobs[loc]. wtr_time); total_wtime += jobs[loc]. wait_time; total_trtime += jobs[loc]. tr_time; total_wtrtime += jobs[loc]. wtr_time; remove_job(loc); } printf("n平均等待时间:%. 2 fn", total_wtime / count); printf("平均周转时间:%. 2 fn", total_trtime / count); printf("平均带权周转时间:%. 2 fn", total_wtrtime / count); }
实验示例 n 定义队列 typedef struct { job_queue[MAX_QUEUE_SIZE]; int head; int tail; int size; } queue;
实验示例 n 初始化队列 void init_queue(queue *q) { q->head = 0; q->tail = 0; q->size = 0; }
实验示例 n 判断队列是否为空/已满 int is_empty_queue(queue *q) { return q->size == 0; } int is_full_queue(queue *q) { return q->size == MAX_QUEUE_SIZE; }
实验示例 n 其他基本队列操作 //进入队列 void enqueue(queue *q, job j){} //出队 job dequeue(queue *q){} //打印队列内容 void print_queue(queue *q){}
- Slides: 27