第5次 进程调度模拟.doc

第5次 进程调度模拟

操作系统课程实验报告 姓名 学号 系 计算机科学与技术 任课教师 贺辉 指导教师 贺辉 评阅教师 贺辉 实验地点 实验时间 实验编号与实验名称: 第5次 进程调度模拟使用优先级算法给新加的五个进程进行cpu处理。 (4)步骤说明 1)char algo; printf(选择算法:P/R(优先级算法/时间片轮转算法);输入e结束\n); scanf_s(%c, algo); printf(输入进程数:\n); scanf_s(%d, N); 选择算法,进程数量 2)for (i = 1; i = N; i++) { p = (PCB *)malloc(sizeof(PCB)); cin na; cin time; strcpy_s(p-name, na); p-cputime = 0; p-needtime = time; p-state = w; p-prio = 100 - time; if (ready != NULL) insert1(p); else { p-next = ready; ready = p; } } 初始化并创建进程,排序 3)run = ready; ready = ready-next; run-state = R; 将首进程进入就绪队列 4)run-cputime = run-cputime + 1; run-needtime = run-needtime - 1; run-prio = run-prio - 8; if (ready != NULL) change(run); else { run-next = ready; ready = run; } run = ready; ready = ready-next; run-state = R; 进程运行及重新排序。 5)if (run-needtime == 0) { run-next = finish; finish = run; run-state = F; run = NULL; if (ready != NULL) firstin(); } 进程处理完,将cpu资源交予其他进程。 (5)子函数关系图 (6)结果 结果分析:和优先级算法结果一样。 轮转调度 基本思想:每个进程被分配一个时间段,称为时间片,即允许改进程在该时间段中运行。如果时间片结束时改进程还在运行,则将剥夺cpu并分配给另一个进程。如果该进程在时间片结束前阻塞或结束,则cpu立即进行切换。 实现:每个进程都会被分配一个相同的时间片,并按照先来先服务进行排序,允许该进程在该时间段中运行。如果在时间片结束时该进程还在运行,则将剥夺CPU并分配给另一个进程。如果该进程在时间片结束前阻塞或结束,则CPU立即进行切换。其中每个进程分配的相同时间片的大小设计为2,,一个进程如果在该时间片当中没有结束,则将会被强制结束,将CPU分配给下一个进程,该进程将会被插入整个进程队列的最后,如果一个进程在规定的时间结束,则将CPU立刻分配给下一个进程,该进程从进程队列中移除。 (3)算法流程图 步骤说明 1)char algo; printf(选择算法:P/R(优先级算法/时间片轮转算法);输入e结束\n); scanf_s(%c, algo); printf(输入进程数:\n); scanf_s(%d, N); 选择算法,进程数量 2)p = (PCB *)malloc(sizeof(PCB)); cin na; cin time; strcpy_s(p-name, na); p-cputime = 0; p-needtime = time; p-count = 0; p-state = w; p-round = 2; if (ready != NULL) insert2(p); else { p-next = ready; ready = p; tail = p; } 初始化并创建进程,按照先来先服务排序 3)run = ready; ready = ready-next; run-state = R; 将首进程进入就绪队列 4)run-cputime = run-cputime + 2; run-needtime = run-needtime - 2; if (run-needtime 0) { run-needtime = 0; } run-count = run-coun

文档评论(0)

1亿VIP精品文档

相关文档