电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

模拟进程创建、终止、阻塞、唤醒原语_操作系统原理

  • 资源ID:34254051       资源大小:731.60KB        全文页数:13页
  • 资源格式: DOC        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

模拟进程创建、终止、阻塞、唤醒原语_操作系统原理

操作系统原理题 目:模拟进程创建、终止、阻塞、唤醒原语院 (部): 管理工程学院专 业: 信息管理与信息系统班 级: 信管 131姓 名: 栾庆一学 号: 20130216027实验题目一:模拟进程创建、终止、阻塞、唤醒原语一、题目类型:必做题目。二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进程控制功能的理解,掌握操作系统模块的设计方法和工作原理。三、实验环境:1、硬件:pc 机及其兼容机。2、软件:Windows OS,Turbo C 或 C+、VC+、VS.net、Java 等。四、实验内容:1、设计创建、终止、阻塞、唤醒原语功能函数。2、设计主函数,采用菜单结构(参见后面给出的流程图) 。3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供随时查看各队列中进程的变化情况。五、算法流程图系统主菜单1创建2阻塞3唤醒4终止5显示0退出请输入您需要的功能(05):六、程序清单#include #include struct pcb输入选择=?创建 阻塞 唤醒 终止 显示退出开始结束0 1 2 3 4 5char name10;int status;int order;int time;int wtime;int ytime;pcb11;/该结构体用于存储已经输入的进程struct ghostchar name10;int status;int order;int time;ghost11;/该结构体用于优先级调度时,进程的优先级排序char a_name10;int i=0,y,a=0,x,z,jilu;void insert();void block();void rouse();void stop();void outPut();void control();/实验二添加函数void order_control();/实验二添加函数void time_control();/实验二添加函数void insert()jilu=0;/jilu 是一个用于判断的变量,在重复时进行判断跳过if(i>=10)printf("进程已经存在 10 个,无法继续添加进程n");else printf("请输入插入 pcb 的数据:n");printf("1、进程名:");scanf("%s",printf("2、该进程的优先级(1-10):");scanf("%d",printf("3、运行时间");scanf("%d",for(y=0;y0)jilu=0;else printf("输入已经完成n 您输入的数据为:n 进程名: %sn 优先级: %dn 运行时间: %dn",pcbi.name,pcbi.order,pcbi.time);printf("-n");strcpy(ghosti.name,pcbi.name);ghosti.order=pcbi.order;ghosti.time=pcbi.time;pcbi.status=1;ghosti.status=1;pcbi.wtime=pcbi.time;pcbi.ytime=0;i+;void block()int m;printf("n 请输入您要改变状态的进程的进程名: ");scanf("%s",for(y=0;y<=i;y+)if(strcmp(pcby.name,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(ghostm.name,a_name)=0)ghostm.status=0;printf("操作已完成,进程成功改为阻塞状态n");if(a=0)printf("对不起!您查找的进程名不存在n");a=0;void rouse()int m;printf("n 请输入您要改变状态的进程的进程名: ");scanf("%s",for(y=0;y<=i;y+)if(strcmp(pcby.name,a_name)=0)a=1;if(pcby.status=1)printf("您要修改的进程已经是就绪状态,无法更改n");break;if(pcby.status=0)pcby.status=1;for(m=0;m<=i;m+)if(strcmp(ghostm.name,a_name)=0)ghostm.status=1;printf("操作已完成,进程成功改为运行状态n");break;if(a=0)printf("对不起!您查找的进程名不存在n");a=0;void stop()printf("n 请输入您要改变状态的进程的进程名: ");scanf("%s",for(y=0;y<=i;y+)if(strcmp(pcby.name,a_name)=0)a=1;for(;y<i;y+)pcby=pcby+1;i-;printf("操作已完成,进程成功删除n");break;if(a=0)printf("对不起!您查找的进程名不存在n");a=0;void outPut()if(i=0)printf("对不起,没有进程存在,无法显示n");elseprintf("nn 已存在进程分别为:( 状态:2 表示正在运行,1 表示就绪,0 表示阻塞)n");for(y=0;y<i;y+)if(pcby.status!=3)printf("进程%d 进程名: %s 状态: %dn",y+1,pcby.name,pcby.status);void control()for(;1;)printf("进程调度子菜单n0 :返回主菜单n1 :优先级调度n2 :时间片轮转调度n请输入您想要进行的操作的指令 :");scanf("%d",if(x=0)break;switch(x)case 0:break;case 1:order_control();break;case 2:time_control();break;default:printf("您输入的指令有误,请重新输入n");break;void order_control()int jishi;/用于 CPU 运行时间计时jishi=0;char panduan1,panduan2;/用于判断是否继续调度struct ghost jiaohuan;int gg,bl;for(gg=0;gg<i;gg+)if(pcbgg.status=2)for(bl=0;bl<i;bl+)if(strcmp(ghostbl.name,pcbgg.name)=0)ghostbl.status=2;for(x=0;x<i-1;x+)for(y=x+1;y<i;y+)if(ghostx.order<ghosty.order)jiaohuan=ghostx;ghostx=ghosty;ghosty=jiaohuan;/以上语句是根据优先级为进程排序printf("nn 按照优先级调度进程,具体内容为:n");for(x=0;x<i;x+)if(ghostx.status=1)printf("正在运行的进程: %sn 优先级: %dn 运行时间: %dnnn",ghostx.name,ghostx.order,ghostx.time);for(y=0;y<=i;y+)if(strcmp(pcby.name,ghostx.name)=0)pcby.status=2;ghostx.status=2;/该语句用于更改另一个结构体进程的状态printf("是否继续运行直至进程运行完毕(Y/N)");scanf("%s",if(panduan1='Y'|panduan1='y')if(ghostx.status=2)jishi=jishi+ghostx.time;printf("CPU 运行时间 %d ,进程 %s 运行完毕,正在关闭!n",jishi,ghostx.name);for(y=0;y<=i;y+)if(strcmp(pcby.name,ghostx.name)=0)pcby.status=3;ghostx.status=3;/该语句用于更改另一个结构体进程的状态if(x=(i-1)printf("所有进程全部运行完毕!n-n");elseprintf("-n 是否继续调度(y/n)");scanf("%s",if(panduan2='N'|panduan2='n')break;else break;printf("如果无输出内容,请检查就绪队列是否存在进程");void time_control()int z,kz1,kz2,kz3,kz4,kz5,kz6;/kz1 表示时间片运行的时间计时,kz2 表示 CPU 运行的总时间,kz3 用于所有进程时间的输出 kz4 表示已完成的进程数 kz5 用于表示状态为就绪的进程的个数 kz6 用于更改 ghost 的状态值z=0;kz2=0;kz4=0;kz5=0;for(y=0;y<i;y+)if(pcby.status=1)kz5=kz5+1;printf("nn 请输入时间片长度: ");scanf("%d",printf("nn 按照时间片轮转调度进程,具体内容为:n");if(kz5!=0)for(;kz4<kz5;)for(y=0;y<i;y+)if(pcby.status=1|pcby.status=2)for(kz1=0;kz1<x;kz1+)if(pcby.status=1|pcby.status=2)kz2=kz2+1;pcby.wtime=pcby.wtime-1;pcby.ytime=pcby.ytime+1;printf("CPU 运行时间: %d ,正在运行进程: %sn",kz2,pcby.name);printf("进程名 已运行时间 未运行时间 要求运行时间n");for(kz3=0;kz3<i;kz3+)if(pcbkz3.status=1|pcbkz3.status=2)printf("%s%12d%12d%12dn",pcbkz3.name,pcbkz3.ytime,pcbkz3.wtime,pcbkz3.time);if(pcby.wtime<=

注意事项

本文(模拟进程创建、终止、阻塞、唤醒原语_操作系统原理)为本站会员(第***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.