操作系统课程设计--进程管理(共9页).doc

上传人:飞****2 文档编号:14195386 上传时间:2022-05-03 格式:DOC 页数:9 大小:30.50KB
返回 下载 相关 举报
操作系统课程设计--进程管理(共9页).doc_第1页
第1页 / 共9页
操作系统课程设计--进程管理(共9页).doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《操作系统课程设计--进程管理(共9页).doc》由会员分享,可在线阅读,更多相关《操作系统课程设计--进程管理(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上#include#include#include#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)

2、p=neijin;while(p-pid!=a&p!=NULL)q=p;p=p-next;if(p=NULL)printf(该进程不在内存里!n);return;if(p=neijin)neijin=neijin-next;elseq-next=p-next;/杀死正在运行进程函数void shasi() neizhi-next=NULL;printf(运行的进程已经杀死!n);return;/创建新进程后与正在运行进程比较优先级并根据优先级判断谁该占用处理机int bijiao()int i,j;p=neijin;while(p!=NULL)q=p;p=p-next;i=q-youxian;

3、j=neizhi-next-youxian;if(ij)p=neijin;if(p=q) neijin=neizhi-next;p-neirong=(node*)malloc(sizeof(node);p-neirong-a=9;p-neirong-ch=c;neizhi-next=p;return 1;elsewhile(p-next!=q)p=p-next;p-next=neizhi-next; q-neirong=(node*)malloc(sizeof(node);q-neirong-a=9;q-neirong-ch=c;neizhi-next=q;neizhi-next-next=N

4、ULL;return 1;elsereturn -1;void main()int zhixing();void shasi();void chakan();void tongxing(int);neizhi=(jincheng*)malloc(sizeof(jincheng);neizhi-next=NULL;neijin=(jincheng*)malloc(sizeof(jincheng); neijin-next=NULL; neijin-pid=1;neijin-youxian=6;neijin-luntime=3.5;neijin-zhantime=3; neijin-neirong

5、=(node*)malloc(sizeof(node);neijin-neirong=NULL;neijin-zhuangtai=b;shumu+;p=(jincheng*)malloc(sizeof(jincheng);p-next=neijin-next;neijin-next=p; p-pid=2;p-youxian=5;p-luntime=3.5;p-zhantime=3;p-neirong=(node*)malloc(sizeof(node);p-neirong=NULL;p-zhuangtai=b;shumu+; q=(jincheng*)malloc(sizeof(jinchen

6、g);q-next=p-next;p-next=q;q-pid=3;q-youxian=4;q-luntime=3.5;q-zhantime=3;q-neirong=(node*)malloc(sizeof(node);q-neirong=NULL;q-zhuangtai=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)

7、; printf( 5.进程之间通信 6.退出系统 n); printf(*n);printf(请选择(16)n); scanf(%d,&i);switch(i)case 1:k=creat();if(k=1)printf(进程创建成功!n);if(neijin-next=NULL)printf(由于只有一个进程所以为它分配处理机.n);neizhi-next=neijin;neijin-neirong=(node*)malloc(sizeof(node);neijin-neirong-a=3;neijin-neirong-ch=c;neijin=NULL;continue;k=bijiao(

8、);if(k=1)printf(由于新进程的优先级高于正在执行的进程所以正在执行的n);printf(进程让出处理机交给新进程,而它变为活动就绪!n);if(k!=1)printf(新进程的优先级低于正在运行的进程所以它只有等待!n); break;case 2:if(neizhi-next=NULL)printf(没有进程处于执行状态!n);continue;chakan();break;case 3:if(neijin=NULL)printf(内存中已经没有处于活动就绪的进程了请创建!n);continue;printf(已有处于活动就绪进程的名字为:n);p=neijin;printf(

9、);while(p!=NULL)printf(%d ,p-pid);p=p-next;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-pid);p=p-next;printf()n);break;case 4:if(neizhi-next=NULL)printf(没有处于执行状态的进程!n);

10、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-next=NULL)printf(没有处于执行状态的进程!n);continue;printf(请输入要与正在运行的进程进行进程通讯的进程名字n);scanf(%d,&s); tongxing(s);

11、break;case 6:exit(0);default:n=0; /创建新的进程函数 int creat() int i;if(shumu20)printf(内存已满请先换出进程!n); i=-1;return i;elseif(neijin=NULL) p=(jincheng*)malloc(sizeof(jincheng);printf(请输入新进程的名字(数字):n);scanf(%d,&p-pid);printf(请输入新进程的优先级:(数字)n);scanf(%d,&p-youxian);p-luntime=3.5;p-zhantime=3;p-neirong=(node*)mal

12、loc(sizeof(node);p-neirong=NULL;p-zhuangtai=b;p-next=NULL;neijin=p;shumu+;i=1;elsep=neijin;while(p-next!=NULL)p=p-next;q=(jincheng*)malloc(sizeof(jincheng);q-next=p-next;p-next=q;printf(请输入新进程的名字(数字):n); scanf(%d,&q-pid);printf(请输入新进程的优先级:(数字)n);scanf(%d,&q-youxian);q-luntime=3.5;q-zhantime=3;q-neir

13、ong=(node*)malloc(sizeof(node);q-neirong=NULL;q-zhuangtai=b;shumu+;i=1;return i;/从活动就绪进程队列中找到一个优先级最高的进程并为它分配处理机int zhixing()int i,j;p=neijin;if(neizhi-next!=NULL)return -1;i=neijin-youxian;p=neijin-next;while(p!=NULL) j=p-youxian;if(i=j)p=p-next;if(iyouxian;p=p-next;if(neijin-youxian=i)neijin-neiron

14、g=(node*)malloc(sizeof(node);neijin-neirong-a=9;neijin-neirong-ch=c;neizhi-next=neijin;neijin=neijin-next;neizhi-next-next=NULL;elsep=neijin;while(i!=p-youxian)q=p;p=p-next;p-neirong=(node*)malloc(sizeof(node);p-zhuangtai=a;p-neirong-a=9;p-neirong-ch=c;neizhi-next=p;q-next=p-next; return 1;void chak

15、an()p=neizhi-next;printf(该执行进程的名字为:%dn,p-pid);printf(该执行进程的的优先级:%dn,p-youxian);printf(该执行进程的轮转时间为:%fn,p-luntime);printf(该执行进程占用cpu的时间为:%fn,p-zhantime);printf(该执行的进程内容为:n);printf(%d ,p-neirong-a);printf(%c,p-neirong-ch);printf(n); p-luntime-; if(p-luntimepid!=a&q!=NULL)q=q-next; if(q=NULL)printf(所输入的进程不在内存中!n);return ; p=neizhi-next;q-neirong=(node*)malloc(sizeof(node);q-neirong-a=p-neirong-a;q-neirong-ch=p-neirong-ch; printf(通信成功!n);return;专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁