操作系统课程设计--进程管理_第1页
操作系统课程设计--进程管理_第2页
操作系统课程设计--进程管理_第3页
操作系统课程设计--进程管理_第4页
操作系统课程设计--进程管理_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上#include<stdio.h>#include<stdlib.h>#include<string.h>#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 *

2、neijin,*neizhi,*p,*q;/换出进程函数void huanchu(int a)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");retur

3、n;/创建新进程后与正在运行进程比较优先级并根据优先级判断谁该占用处理机int bijiao()int i,j;p=neijin;while(p!=NULL)q=p;p=p->next;i=q->youxian;j=neizhi->next->youxian;if(i>j)p=neijin;if(p=q) neijin=neizhi->next;p->neirong=(node*)malloc(sizeof(node);p->neirong->a=9;p->neirong->ch='c'neizhi->ne

4、xt=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=NULL;return 1;elsereturn -1;void main()int zhixing();void shasi();void chakan();voi

5、d 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=(node*)malloc(sizeof(node);neijin->neirong=NULL;ne

6、ijin->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(si

7、zeof(jincheng);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("* 进

8、程演示系统 *n");printf("*n");printf(" 1.创建新的进程 2.查看运行进程 n"); printf(" 3.换出某个进程 4.杀死运行进程 n"); printf(" 5.进程之间通信 6.退出系统 n"); printf("*n");printf("请选择(16)n"); scanf("%d",&i);switch(i)case 1:k=creat();if(k=1)printf("进程创建成功!n&

9、quot;);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();if(k=1)printf("由于新进程的优先级高于正在执行的进程所以正在执行的n");printf(&qu

10、ot;进程让出处理机交给新进程,而它变为活动就绪!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=neij

11、in;printf("(");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(&q

12、uot;(");while(p!=NULL)printf("%d ",p->pid);p=p->next;printf(")n");break;case 4:if(neizhi->next=NULL)printf("没有处于执行状态的进程!n");continue;shasi();if(neijin=NULL)printf("已经没有处于活动就绪的进程请创建!n");continue;j=zhixing();if(j=1)printf("已为一个动态就绪进程中优先级最高的进程分

13、配处理器!n");break;case 5:if(neijin=NULL)printf("内存中已经没有处于活动就绪的进程了请创建!n");continue;if(neizhi->next=NULL)printf("没有处于执行状态的进程!n");continue;printf("请输入要与正在运行的进程进行进程通讯的进程名字n");scanf("%d",&s); tongxing(s);break;case 6:exit(0);default:n=0; /创建新的进程函数 int crea

14、t() int i;if(shumu>20)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

15、->zhantime=3;p->neirong=(node*)malloc(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"); sca

16、nf("%d",&q->pid);printf("请输入新进程的优先级:(数字)n");scanf("%d",&q->youxian);q->luntime=3.5;q->zhantime=3;q->neirong=(node*)malloc(sizeof(node);q->neirong=NULL;q->zhuangtai='b'shumu+;i=1;return i;/从活动就绪进程队列中找到一个优先级最高的进程并为它分配处理机int zhixing()in

17、t 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(i<j)i=p->youxian;p=p->next;if(neijin->youxian=i)neijin->neirong=(node*)malloc(sizeof(node);neijin->neirong->a=9;neijin->neirong-&

18、gt;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 chakan()p=neizhi->next;printf("该执行进程的名字为:%dn",p->pid);printf("该执行进程的的优先级:%dn",p->youxian);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论