#include #include #define NULL 0 int shumu=0; //进程的内容结构体 struct node { int a; char ch; }; //进程PCB结构体 struct jincheng { int 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->pid!=a&&p!=NULL) { q=p; p=p->next; } if(p==NULL) { printf("该进程不在内存里!\ "); return; } if(p==neijin) { neijin=neijin->next; } else { q->next=p->next; //把目标进程换出来,即把目标进程从就绪队列中移出来 } } //杀死正在运行进程函数 void shasi() { neizhi->next=NULL; printf("运行的进程已经杀死!\ "); return; } //创建新进程后与正在运行进程比较优先级并根据优先级判断谁该占用处理机 int bijiao() { int i,j; p=neijin; while(p!=NULL) { q=p; p=p->next; //q指向进程的末尾,即新建的进程 } i=q->youxian; //i代表新进进程的优先级 j=neizhi->next->youxian; //j代表正在执行进程的优先级 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->next=p; //把处理机交给优先级高的新进程 return 1; } else{ while(p->next!=q) { p=p->next; } //执行完后 p 指针在 q指针前面 p->next=neizhi->next; //将正在执行的进程放置p的后面 q->neirong=(node*)malloc(sizeof(node)); q->neirong->a=9; q->neirong->ch='c'; neizhi->next=q; //将q放置在正在执行列表中,把处理机交给优先级高的进程 neizhi->next->next=NULL; return 1; } } else return -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=(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(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("********************************************\ "); printf("* 进程演示系统 *\ "); printf("********************************************\ "); printf(" 1.创建新的进程 2.查看运行进程 \ "); printf(" 3.换出某个进程 4.杀死运行进程 \ "); printf(" 5.进程之间通信 6.退出系统 \ "); printf("********************************************\ "); printf("请选择(1~6)\ "); scanf("%d ue; } printf("请输入要与正在运行的进程进行进程通讯的进程名字\ "); scanf("%d 先级高的节点舍去 } return 1; } // void chakan() { p=neizhi->next; printf("该执行进程的名字为:%d\下载本文