欢迎来到天天文库
浏览记录
ID:15891359
大小:724.00 KB
页数:13页
时间:2018-08-06
《模拟进程创建、终止、阻塞、唤醒原语,操作系统原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统原理题目:模拟进程创建、终止、阻塞、唤醒原语院(部):管理工程学院专业:信息管理与信息系统班级:信管112姓名:王楷仁学号:2011021686实验题目一:模拟进程创建、终止、阻塞、唤醒原语一、题目类型:必做题目。二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进程控制功能的理解,掌握操作系统模块的设计方法和工作原理。三、实验环境:1、硬件:pc机及其兼容机。2、软件:WindowsOS,TurboC或C++、VC++、VS.net、Java等。四、实验内容:1、设计创建、终止、阻塞、唤醒原语功能函数。2、设计主函数,采用菜单结构(参见后面给出的流程图)。
2、3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供随时查看各队列中进程的变化情况。五、算法流程图开始系统主菜单1…创建2…阻塞3…唤醒4…终止5…显示0…退出请输入您需要的功能(0-5):输入选择=?543210退出创建阻塞唤醒终止显示结束六、程序清单#include#includestructpcb{charname[10];intstatus;intorder;inttime;intwtime;intytime;}pcb[11];//该结构体用于存储已经输入的进程structghost{charname[10];intsta
3、tus;intorder;inttime;}ghost[11];//该结构体用于优先级调度时,进程的优先级排序chara_name[10];inti=0,y,a=0,x,z,jilu;voidinsert();voidblock();voidrouse();voidstop();voidoutPut();voidcontrol();//实验二添加函数voidorder_control();//实验二添加函数voidtime_control();//实验二添加函数voidinsert(){jilu=0;//jilu是一个用于判断的变量,在重复时进行判断跳过if(i>=10)printf("进程已
4、经存在10个,无法继续添加进程");else{printf("请输入插入pcb的数据:");printf("1、进程名:");scanf("%s",&pcb[i].name);printf("2、该进程的优先级(1-10):");scanf("%d",&pcb[i].order);printf("3、运行时间");scanf("%d",&pcb[i].time);for(y=0;y0)jilu=
5、0;else{printf("输入已经完成您输入的数据为:进程名:%s优先级:%d运行时间:%d",pcb[i].name,pcb[i].order,pcb[i].time);printf("------------------------------------------------------------------");strcpy(ghost[i].name,pcb[i].name);ghost[i].order=pcb[i].order;ghost[i].time=pcb[i].time;pcb[i].status=1;ghost[i].status=1;p
6、cb[i].wtime=pcb[i].time;pcb[i].ytime=0;i++;}}}voidblock(){intm;printf("请输入您要改变状态的进程的进程名:");scanf("%s",&a_name);for(y=0;y<=i;y++){if(strcmp(pcb[y].name,a_name)==0){a=1;if(pcb[y].status==0){printf("您要修改的进程已经是阻塞状态,无法更改");}if(pcb[y].status==2){pcb[y].status=0;for(m=0;m<=i;m++){if(strcmp(ghost[m].nam
7、e,a_name)==0){ghost[m].status=0;}}printf("操作已完成,进程成功改为阻塞状态");}}}if(a==0){printf("对不起!您查找的进程名不存在");}a=0;}voidrouse(){intm;printf("请输入您要改变状态的进程的进程名:");scanf("%s",&a_name);for(y=0;y<=i;y++){if(strc
此文档下载收益归作者所有