}
r=r-1;
printf(\就绪进程:\\n\
for(j=0;j printf(\ break; } else printf(\该堵塞进程为空,不能唤醒进程!\\n\ break; } } //for(j=0;j { printf(\终止进程---------------\\n\ printf(\请输入你要终止的进程:\ scanf(\ for(i=0;i for(j=t;j strcpy(pcb[j].name,pcb[j+1].name); pcb[j].priority = pcb[j+1].priority; pcb[j].runtime = pcb[j+1].runtime; } k=k-1; } if(strcmp(pcb1[i].name,name)==0) { t=i; for(j=t;j strcpy(pcb1[j].name,pcb1[j+1].name); 11 pcb1[j].priority = pcb1[j+1].priority; pcb1[j].runtime = pcb1[j+1].runtime; } r=r-1; } } printf(\就绪进程:\\n\ for(j=0;j printf(\ printf(\堵塞进程:\\n\ for(j=0;j } if(x==5) { printf(\显示进程---------------\\n\ printf(\就绪进程:\\n\ for(j=0;j printf(\ printf(\堵塞进程:\\n\ for(j=0;j } } } 程序运行结果及分析 1)运行结果 12 实验感想: 通过设计并调试创建、终止、阻塞、唤醒原语功能,加深了对操作系统中进程控制功能的理 解,并且掌握操作系统模块的设计方法和工作原理。更重要的是理解了操作系统的调度方法是就绪-运行-堵塞-唤醒-结束的过程。 13 14 实验二、模拟进程调度功能 实验目的: 通过本实验,进一步掌握进程调度的功能和实现原理。 实验内容: 1、 设计进程调度功能,至少模拟两种以上调度算法。如:优先级调度算法、时间片调度 算法等。 2、 进程调度功能作为一个函数scheduler,加入到实验题目一中。 3、 进程调度程序从就绪队列中挑选进程,若队列为空,应显示“无就绪进程无法调度” 的提示信息。 4、 若选上一个进程,以显示:进程名、状态、时间片、优先级等信息表示一个进程被执 行。若运行完,应删除相应PCB。 实验步骤: 1、 在实验题目一中的主菜单中加入一个菜单项:6 调度,选择该菜单项后,系统进入进程调度。 2、 进程调度的结构: 进程调度子菜单 0---------返回主菜单 1---------优先级调度 2---------时间片调度 请选择您需要的功能选项: X=?= 0 = 2 = 1 返回上级菜单 转优先级调度算法 转时间片调度算法 15 读入选择=》x