操作系统实验之进程管理
2016-10-10 22:22
393 查看
实验内容:
创建新的进程;查看运行的进程;换出某个进程;杀死运行进程以及进程之间的通信
下面是代码:
创建新的进程;查看运行的进程;换出某个进程;杀死运行进程以及进程之间的通信
下面是代码:
#include "conio.h" #include "stdio.h" #include "stdlib.h" struct PCB { int pid; int priority; //优先级 int size; //大小 int message; //消息 int live; }; struct PCB neicun[20],waicun[20]; int count = 0,pid_l; //count计数 int create() /* 创建一个进程的示例(不完整的程序) */ { if(count >= 20) { printf("\n 内存已满,请先结束或换出进程\n"); } else { printf("\n 请输入新进程的 pid(数字)\n"); scanf("%d",&neicun[count + 1].pid); printf("\n 请输入新进程的优先级(数字)\n"); scanf("%d",&neicun[count + 1].priority); printf("\n 请输入新进程的大小(数字)\n"); scanf("%d",&neicun[count + 1].size); printf("\n 请输入新进程的消息(数字)\n"); scanf("%d",&neicun[count + 1].message); neicun[count+1].live = 1; count++; } return neicun[count - 1].live; } void viewrun( )/*查看运行进程*/ { int vpid; printf("\n 请输入进程的 pid\n"); scanf("%d",&vpid); if((vpid > 0) && (vpid <= 20) && (neicun[vpid].live == 1)) { printf("\n 进程的 pid 是: %d\n",neicun[vpid].pid); printf("进程的优先级是: %d\n",neicun[vpid].priority); printf("进程的大小是:%d\n",neicun[vpid].size); printf("进程的消息是:%d\n",neicun[vpid].message); } else { printf("\n 所查看运行进程不存在\n"); } printf("请按回车退出查看\n"); vpid = getch(); } void huanchu()/*换出某个进程*/ { int pid1,pid2; char c; printf("\n 请输入第一个替换进程的 pid\n"); scanf("%d",&pid1); printf("\n 请输入第二个替换进程的 pid\n"); scanf("%d",&pid2); if((pid1 > 0) && (pid1 <= 20) && (neicun[pid1].live == 1)) { if(neicun[pid1].priority > neicun[pid2].priority) { waicun[20].pid = neicun[pid1].pid; waicun[20].priority = neicun[pid1].priority; waicun[20].size = neicun[pid1].size; waicun[20].message = neicun[pid1].message; neicun[pid1].pid = neicun[pid2].pid; neicun[pid1].priority = neicun[pid2].priority; neicun[pid1].size = neicun[pid2].size; neicun[pid1].message = neicun[pid2].message; neicun[pid2].pid = waicun[20].pid; neicun[pid2].priority = waicun[20].priority; neicun[pid2].size = waicun[20].size; neicun[pid2].message = waicun[20].message; printf("\n 替换完成\n"); printf("\n 被替换进程的 pid 是: %d\n",waicun[20].pid); printf("被替换进程的优先级是: %d\n",waicun[20].priority); printf("被替换进程的大小是:%d\n",waicun[20].size); printf("被替换进程的消息是:%d\n",waicun[20].message); } else { printf("\n 进程优先级不够大"); } } else { printf("所查看运行进程不存在"); } printf("请按回车退出换出进程\n"); c = getche(); } void kill()/*杀死运行进程*/ { int kpid; printf("\n 请输入进程的 pid\n"); scanf("%d",&kpid); if(kpid > 0 && kpid < 20 && neicun[kpid].live == 1) { neicun[kpid].live = 0; } } void tongxun( )/*进程之间通信*/ { int tpid1,tpid2; int buffer; char d; printf("\n 请输入通信源进程 pid\n"); scanf("%d",&tpid1); printf("\n 请输入通信目的进程 pid\n"); scanf("%d",&tpid2); if(tpid1 > 0 && tpid1 < 20 && neicun[tpid1].live == 1) { buffer = neicun[tpid1].message; neicun[tpid1].message = neicun[tpid2].message; neicun[tpid2].message = buffer; printf("\n 源进程的消息是: %d\n",neicun[tpid1].message); printf("\n 目的进程的消息是: %d\n",neicun[tpid2].message); } else { printf("\n 所查看运行进程不存在\n"); } printf("\n 请按回车退出进程通信\n"); d = getch(); return; } int main() { int n; char a; n = 1; while(1 == n) { system("cls"); printf("\n********************************************"); printf("\n************** 进程演示系统 ****************"); printf("\n********************************************"); printf("\n* 1.创建新的进程 2.查看运行进程 *"); printf("\n* 3.换出某个进程 4.杀死运行进程 *"); printf("\n* 5.进程之间通信 6.退出 *"); printf("\n********************************************"); printf("\n--------------请选择(1~6)-----------------"); a=getch(); switch(a) { case'1': create( ); break; case'2': viewrun( ); break; case'3': huanchu(); break; case'4': kill( ); break; case'5': tongxun( ); break; case'6': exit(0); default: n=0; } } return 0; }
相关文章推荐
- 操作系统-进程管理实验(1)
- 操作系统进程管理实验(FC5下)
- 操作系统——实验一.进程管理
- 操作系统进程调度管理实验【C语言】【源码】【windows版】
- 操作系统实验一(进程管理)
- 哈工大操作系统实验3—进程管理
- 操作系统-进程管理实验(2)
- Linux进程管理 进程状态和时钟滴答[哈工大操作系统实验]
- windows mobile 5.0 进程管理、窗体管理、重启和关闭操作系统
- windows mobile 5.0 进程管理、窗体管理、重启和关闭操作系统(转载)
- Linux父子进程对键盘IO的管理 实验一则
- 操作系统 实验三 设备管理
- 实验二、进程管理
- windows mobile 5.0 进程管理、窗体管理、重启和关闭操作系统
- 操作系统中的进程管理与Java中的多线程
- 【大三操作系统实验】 作业进程调度算法
- 操作系统 实验一 进程控制
- 总结操作系统进程管理部分知识
- windows mobile 5.0 进程管理、窗体管理、重启和关闭操作系统
- Linux操作系统的进程管理详解