版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 模拟进程创建、终止、阻塞、唤醒原语操作系统原理操作系统原理题目:模拟进程创建、终止、阻塞、唤醒原语院(部):管理工程学院专业:信息管理与信息系统班级:信管姓名:学号:实验题目一:模拟进程创建、终止、阻塞、唤醒原语一、题目类型:必做题目。二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进程控制功能的理解,掌握操作系统模块的设计方法和工作原理。三、实验环境:1、硬件:pc机及其兼容机。2、软件:WindowsOS,TurboC或C+、VC+、VS.net、Java等。四、实验内容:1、设计创建、终止、阻塞、唤醒原语功能函数。2、设计主函数,采用菜单结构(参见后面给出
2、的流程图)。3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供随时查看各队列中进程的变化情况。五、算法流程图开始系统主菜单1创建2阻塞3唤醒4终止5显示0退出请输入您需要的功能(05):输入选择=?543210退出创建阻塞唤醒终止显示结束六、程序清单#include#includestructpcbcharname10;intstatus;intorder;inttime;intwtime;intytime;pcb11;/该结构体用于存储已经输入的进程structghostcharname10;intstatus;intorder;inttime;ghost11;/
3、该结构体用于优先级调度时,进程的优先级排序chara_name10;inti=0,y,a=0,x,z,jilu;voidinsert();voidblock();voidrouse();voidstop();voidoutPut();voidcontrol();/实验二添加函数voidorder_control();/实验二添加函数voidtime_control();/实验二添加函数voidinsert()1h=0;/)是一个用于判断的变量,在重复时进行判断跳过if(i=10)printf(“进程已经存在0个,无法继续添加进程n);elseprintf(“请输入插入)仲的数据:n);prin
4、tf(“1、进程名:“);scanf(“%s“,&);printf(2、该进程的优先缴-10):“);scanf(“%d“,&pcbi.order);printf(3、运行时间“);scanf(“%d“,&pcbi.time);for(y=0;y0)jilu=0;elseprintf(“输入已经完成n您输入的数据为:n进程名:%sn优先级:%dn运行时间:%dn”,,pcbi.order,pcbi.time);printf(“n);strcpy(,);ghosti.order=pcbi.order;ghosti.tim
5、e=pcbi.time;pcbi.status=1;ghosti.status=1;pcbi.wtime=pcbi.time;pcbi.ytime=0;i+;voidblock()intm;printf(n请输入您要改变状态的进程的进程名:“);scanf(“%s“,&a_name);for(y=0;y=i;y+)if(strcmp(,a_name)=0)a=1;if(pcby.status=0)printf(“您要修改的进程已经是阻塞状态,无法更改n);if(pcby.status=2)pcby.status=0;for(m=0;m=i;m+)if(strcmp(ghost
6、,a_name)=0)ghostm.status=0;printf(操作已完成,进程成功改为阻塞状态n”);if(a=0)printf(对不起!您查找的进程名不存在n);a=0;voidrouse()intm;printf(n请输入您要改变状态的进程的进程名:“);scanf(“%s“,&a_name);for(y=0;y=i;y+)if(strcmp(,a_name)=0)a=1;if(pcby.status=1)printf(“您要修改的进程已经是就绪状态,无法更改n);break;if(pcby.status=0)pcby.status=1;for(m=0;
7、m=i;m+)if(strcmp(,a_name)=0)ghostm.status=1;printf(操作已完成,进程成功改为运行状态n);break;if(a=0)printf(对不起!您查找的进程名不存在n);a=0;voidstop()printf(n请输入您要改变状态的进程的进程名:“);scanf(“%s“,&a_name);for(y=0;y=i;y+)if(strcmp(,a_name)=0)a=1;for(;yi;y+)pcby=pcby+1;i-;printf(操作已完成,进程成功删除n);break;if(a=0)printf(对不起
8、!您查找的进程名不存在n);a=0;voidoutPut()if(i=0)printf(“对不起,没有进程存在,无法显示n);elseprintf(“nn已存在进程分别为:(状态:2表示正在运行,1表示就绪,0表示阻塞)n);for(y=0;yi;y+)if(pcby.status!=3)printf(“进程d进程名:%s状态:dn,y+1,,pcby.status);voidcontrol()for(;1;)printf(“进程调度子菜单n0:返回主菜单n1:优先级调度n2:时间片轮转调度n请输入您想要进行的操作的指令:“);scanf(“%d“,&x);if(x=0)br
9、eak;switch(x)case0:break;order_control();break;time_control();break;default:printf(“您输入的指令有误,请重新输入口“);break;voidorder_control()intjishi;/用于CPU运行时间计时jishi=0;charpanduan1,panduan2;/用于判断是否继续调度structghostjiaohuan;intgg,bl;for(gg=0;ggi;gg+)if(pcbgg.status=2)for(bl=0;bli;bl+)if(strcmp(,pcbgg.n
10、ame)=0)ghostbl.status=2;for(x=0;xi-1;x+)for(y=x+1;yi;y+)if(ghostx.orderghosty.order)jiaohuan=ghostx;ghostx=ghosty;ghosty=jiaohuan;/以上语句是根据优先级为进程排序口厂皿土“口口按照优先级调度进程,具体内容为:n);for(x=0;xi;x+)if(ghostx.status=1)printf(正在运行的进程:%sn优先级:%dn运行时间:%dnnn”,,ghostx.order,ghostx.time);for(y=0;y=i;y+)if(st
11、rcmp(,)=0)pcby.status=2;ghostx.status=2;/该语句用于更改另一个结构体进程的状态printf(是否继续运行直至进程运行完毕(Y/N)“);scanf(“%s“,&panduan1);if(panduan1=Y|panduan1=y)if(ghostx.status=2)jishi=jishi+ghostx.time;printf(CPU运行时间d,进程s运行完毕,正在关闭!n“,jishi,);for(y=0;y=i;y+)if(strcmp(,)=0)p
12、cby.status=3;ghostx.status=3;/该语句用于更改另一个结构体进程的状态if(x=(i-1)printf(“所有进程全部运行完毕!nn);elseprintf(“n是否继续调度(y/n)“);scanf(“%s“,&panduan2);if(panduan2=N|panduan2=n)break;elsebreak;printf(“如果无输出内容,请检查就绪队列是否存在进程“);voidtime_control()intz,kz1,kz2,kz3,kz4,kz5,kz6;/kz1表示时间片运行的时间计时,kz2表示CPU运行的总时间,kz3用于所有进程时间的输出kz4表
13、示已完成的进程数kz5用于表示状态为就绪的进程的个数kz6用于更改ghost的状态值=0;kz2=0;kz4=0;kz5=0;for(y=0;yi;y+)if(pcby.status=1)kz5=kz5+1;printf(nn请输入时间片长度:“);scanf(“%d“,&x);口厂皿土“口口按照时间片轮转调度进程,具体内容为:n);if(kz5!=0)for(;kz4kz5;)for(y=0;yi;y+)if(pcby.status=1|pcby.status=2)for(kz1=0;kz1x;kz1+)if(pcby.status=1|pcby.status=2)kz2=kz2+1;pcb
14、y.wtime=pcby.wtime-1;pcby.ytime=pcby.ytime+1;printf(CPU运行时间:d,正在运行进程:sn,kz2,);printf(“进程名已运行时间未运行时间要求运行时间n“);for(kz3=0;kz3i;kz3+)if(pcbkz3.status=1|pcbkz3.status=2)printf(“%s%12d%12d%12dn“,,pcbkz3.ytime,pcbkz3.wtime,pcbkz3.time);if(pcby.wtime=0&pcby.status!=3)printf(“进程$运行完毕,正在关闭
15、!nn,);kz4=kz4+1;pcby.status=3;for(kz6=0;kz6i;kz6+)if(strcmp(,)=0)ghostkz6.status=3;kz1=x;break;printf(“n);printf(注意:如果未输出过程,请检查就绪列表是否存在进程n“);voidmain()charc;for(;1;)printf(系统主菜单n“);printf(“1、创建n“);printf(2、阻塞n);printf(3、唤醒n);printf(“4、终止n“);printf(“5、显示n);printf(6、调度n)
16、;printf(“0、退出n);printf(请输入操作指令“);if(scanf(“%d“,&x)if(x=0)break;switch(x)insert();break;block();break;rouse();break;stop();break;outPut();break;control();break;case0:break;default:printf(“格式非法,请重新输入口“);break;elseif(scanf(“%c“,&c)printf(“格式非法,请重新输入口“);七、程序中使用的数据结构及符号说明structpcbcharname10;intstatus;intorder;inttime;intwtime;intytime;pcb11;/该结构体用于存储已经输入的进程structghostcharname10;intstatus;intorder;inttime;gh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安阳滑县投资集团有限公司公开招聘工作人员25名笔试历年备考题库附带答案详解
- 2025山东省财金投资集团有限公司招聘19人笔试历年难易错考点试卷带答案解析
- 2025太原重型机械集团有限公司一线技能操作工等招聘453人笔试历年常考点试题专练附带答案详解
- 2025四川华芯鼎泰精密电子有限公司招聘产品设计工程师等岗位34人笔试历年典型考点题库附带答案详解
- 重庆智能工程职业学院《基础翻译》2024-2025学年第二学期期末试卷
- 机关内部宿舍管理制度
- 机关内部装修岗位制度
- 机关建立内部管理制度
- 太原城市职业技术学院《电子技术基础模拟》2024-2025学年第二学期期末试卷
- 极兔内部安保制度
- 建筑结构荷载规范DBJ-T 15-101-2022
- 2022低压有源电力滤波装置
- 数控刀具行业现状分析
- 北航机械方案说明书齿轮减速器
- 机动车维修竣工出厂合格证
- 2023年计算机科学导论题库期末考试汇总
- GB/T 18998.3-2003工业用氯化聚氯乙烯(PVC-C)管道系统第3部分:管件
- 2023年一级建造师机电实务真题及答案解析
- 北京建筑大学2016年高职升本科专业课考试试卷《城市轨道交通车辆构造》试卷
- 事业单位人事管理条例完整版x课件
- 中国地理概况-课件
评论
0/150
提交评论