欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    模拟进程管理C语言实现程序.docx

    • 资源ID:3601442       资源大小:39.33KB        全文页数:21页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    模拟进程管理C语言实现程序.docx

    模拟进程管理C语言实现程序#include&ltstdio.h&gt#include&ltstdlib.h&gt#include&ltstring.h&gt#define NULL 0 int shumu=0;/进程的内容结构体struct nodeint a;char ch;/进程PCB结构体struct jinchengint pid;int youxian;float luntime;float zhantime;char zhuangtai; /a表示执行,b表示动态就绪node *neirong;struct jincheng *next;struct jincheng *neijin,*neizhi,*p,*q;/换出进程函数void huanchu(int a)p=neijin;while(p-&gtpid!=a&&p!=NULL)q=p;p=p-&gtnext;if(p=NULL)printf("该进程不在内存里!n");return;if(p=neijin)neijin=neijin-&gtnext;elseq-&gtnext=p-&gtnext; /把目标进程换出来,即把目标进程从就绪队列中移出来/杀死正在运行进程函数void shasineizhi-&gtnext=NULL;printf("运行的进程已经杀死!n");return;/创建新进程后与正在运行进程比较优先级并根据优先级判断谁该占用处理机int bijiaoint i,j;p=neijin;while(p!=NULL)q=p;p=p-&gtnext; /q指向进程的末尾,即新建的进程i=q-&gtyouxian; /i代表新进进程的优先级j=neizhi-&gtnext-&gtyouxian; /j代表正在执行进程的优先级if(i&gtj) /如果新建的进程的优先级高于正在执行程序的优先级p=neijin;if(p=q) /就绪队列的进程中只有一个进程。也就是那个新建的进程neijin=neizhi-&gtnext; p-&gtneirong=(node*)malloc(sizeof(node);p-&gtneirong-&gta=9;p-&gtneirong-&gtch='c'neizhi-&gtnext=p; /把处理机交给优先级高的新进程return 1;else while(p-&gtnext!=q)p=p-&gtnext; /执行完后 p 指针在 q指针前面p-&gtnext=neizhi-&gtnext; /将正在执行的进程放置p的后面q-&gtneirong=(node*)malloc(sizeof(node);q-&gtneirong-&gta=9;q-&gtneirong-&gtch='c'neizhi-&gtnext=q; /将q放置在正在执行列表中,把处理机交给优先级高的进程neizhi-&gtnext-&gtnext=NULL;return 1;elsereturn -1;void mainint zhixing;/定义函数void shasi;/定义函数void chakan;/定义函数void tongxing(int);/定义函数neizhi=(jincheng*)malloc(sizeof(jincheng);neizhi-&gtnext=NULL;neijin=(jincheng*)malloc(sizeof(jincheng); neijin-&gtnext=NULL;neijin-&gtpid=1;neijin-&gtyouxian=6;neijin-&gtluntime=3.5;neijin-&gtzhantime=3;neijin-&gtneirong=(node*)malloc(sizeof(node);neijin-&gtneirong=NULL;neijin-&gtzhuangtai='b'shumu+;p=(jincheng*)malloc(sizeof(jincheng);p-&gtnext=neijin-&gtnext;neijin-&gtnext=p;p-&gtpid=2;p-&gtyouxian=5;p-&gtluntime=3.5;p-&gtzhantime=3;p-&gtneirong=(node*)malloc(sizeof(node);p-&gtneirong=NULL;p-&gtzhuangtai='b'shumu+;q=(jincheng*)malloc(sizeof(jincheng);q-&gtnext=p-&gtnext;p-&gtnext=q;q-&gtpid=3;q-&gtyouxian=4;q-&gtluntime=3.5;q-&gtzhantime=3;q-&gtneirong=(node*)malloc(sizeof(node);q-&gtneirong=NULL;q-&gtzhuangtai='b'shumu+;int i,n=1;int k,j,s;j=zhixing;int creat;while(n=1)printf("*n");printf("* 进程演示系统 *n");printf("*n");printf(" 1.创建新的进程 2.查看运行进程 n"); printf(" 3.换出某个进程 4.杀死运行进程 n"); printf(" 5.进程之间通信 6.退出系统 n"); printf("*n");printf("请选择n");scanf("%d",&i);switch(i)case 1:k=creat;if(k=1)printf("进程创建成功!n");if(neijin-&gtnext=NULL)printf("由于只有一个进程所以为它分配处理机.n");neizhi-&gtnext=neijin;neijin-&gtneirong=(node*)malloc(sizeof(node);neijin-&gtneirong-&gta=3;neijin-&gtneirong-&gtch='c'neijin=NULL;continue;k=bijiao;if(k=1)printf("由于新进程的优先级高于正在执行的进程所以正在执行的n");printf("进程让出处理机交给新进程,而它变为活动就绪!n");if(k!=1)printf("新进程的优先级低于正在运行的进程所以它只有等待!n");break;case 2:if(neizhi-&gtnext=NULL)printf("没有进程处于执行状态!n");continue;chakan;break;case 3:if(neijin=NULL)printf("内存中已经没有处于活动就绪的进程了请创建!n");continue;printf("已有处于活动就绪进程的名字为:n");p=neijin;printf("(");while(p!=NULL)printf("%d ",p-&gtpid);p=p-&gtnext;printf(")n");printf("请输入要换出的处于活动就绪进程的名字n");scanf("%d",&s);huanchu(s);if(neijin=NULL)printf("内存中已经没有活动就绪进程!n");elseprintf("已有处于活动就绪进程的名字为:n");p=neijin;printf("(");while(p!=NULL)printf("%d ",p-&gtpid);p=p-&gtnext;printf(")n");break;case 4:if(neizhi-&gtnext=NULL)printf("没有处于执行状态的进程!n");continue;shasi;if(neijin=NULL)printf("已经没有处于活动就绪的进程请创建!n");continue;j=zhixing;if(j=1)printf("已为一个动态就绪进程中优先级最高的进程分配处理器!n");break;case 5:if(neijin=NULL)printf("内存中已经没有处于活动就绪的进程了请创建!n");continue;if(neizhi-&gtnext=NULL)printf("没有处于执行状态的进程!n");continue;printf("请输入要与正在运行的进程进行进程通讯的进程名字n");scanf("%d",&s);tongxing(s);break;case 6:exit(0);default:n=0; /创建新的进程函数 int creat int i;if(shumu&gt20)printf("内存已满请先换出进程!n");i=-1;return i;elseif(neijin=NULL) /如果没有就绪队列中没有进程的话p=(jincheng*)malloc(sizeof(jincheng);printf("请输入新进程的名字:n");scanf("%d",&p-&gtpid);printf("请输入新进程的优先级:n");scanf("%d",&p-&gtyouxian);p-&gtluntime=3.5;p-&gtzhantime=3;p-&gtneirong=(node*)malloc(sizeof(node);p-&gtneirong=NULL;p-&gtzhuangtai='b' /新建进程的状态设置为“就绪”p-&gtnext=NULL;neijin=p;shumu+;i=1;else /如果就绪队列不是空队列p=neijin;while(p-&gtnext!=NULL)p=p-&gtnext; /p一直指向就绪队列的队尾q=(jincheng*)malloc(sizeof(jincheng);q-&gtnext=p-&gtnext;p-&gtnext=q; /在就绪队列的队尾加入新建的进程printf("请输入新进程的名字:n");scanf("%d",&q-&gtpid);printf("请输入新进程的优先级:n");scanf("%d",&q-&gtyouxian);q-&gtluntime=3.5;q-&gtzhantime=3;q-&gtneirong=(node*)malloc(sizeof(node);q-&gtneirong=NULL;q-&gtzhuangtai='b' /新建进程的状态设置为就绪shumu+;i=1;return i;/从活动就绪进程队列中找到一个优先级最高的进程并为它分配处理机int zhixingint i,j;p=neijin;if(neizhi-&gtnext!=NULL)return -1;i=neijin-&gtyouxian; /p=neijin-&gtnext; while(p!=NULL) j=p-&gtyouxian; if(i&gt=j)p=p-&gtnext; if(i&ltj) i=p-&gtyouxian; p=p-&gtnext; if(neijin-&gtyouxian=i) neijin-&gtneirong=(node*)malloc(sizeof(node);neijin-&gtneirong-&gta=9;neijin-&gtneirong-&gtch='c'neizhi-&gtnext=neijin;neijin=neijin-&gtnext;neizhi-&gtnext-&gtnext=NULL;elsep=neijin;while(i!=p-&gtyouxian)q=p;p=p-&gtnext; / q是p前面的指针p-&gtneirong=(node*)malloc(sizeof(node);p-&gtzhuangtai='a'p-&gtneirong-&gta=9;p-&gtneirong-&gtch='c'neizhi-&gtnext=p; /将p放入执行列表q-&gtnext=p-&gtnext; /将优先级高的节点舍去return 1;/void chakanp=neizhi-&gtnext;printf("该执行进程的名字为:%dn",p-&gtpid);printf("该执行进程的的优先级:%dn",p-&gtyouxian);printf("该执行进程的轮转时间为:%fn",p-&gtluntime);printf("该执行进程占用cpu的时间为:%fn",p-&gtzhantime);printf("该执行的进程内容为:n");printf("%d ",p-&gtneirong-&gta);printf("%c",p-&gtneirong-&gtch);printf("n");void tongxing(int a)q=neijin;while(q-&gtpid!=a&&q!=NULL)q=q-&gtnext;/q为id为a的进程if(q=NULL)printf("所输入的进程不在内存中!n");return ;p=neizhi-&gtnext;/p为正在执行的进程q-&gtneirong=(node*)malloc(sizeof(node);q-&gtneirong-&gta=p-&gtneirong-&gta;q-&gtneirong-&gtch=p-&gtneirong-&gtch;/将正在执行的进程内容复制给id为a的进程printf("通信成功!n");return;

    注意事项

    本文(模拟进程管理C语言实现程序.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开