实验一 进程的管理实验

您所在的位置:网站首页 进程控制模拟实现提高实验 实验一 进程的管理实验

实验一 进程的管理实验

2024-07-12 21:57| 来源: 网络整理| 查看: 265

一、  实验目的

1、 理解进程的概念,明确进程和程序的区别。 2、 理解并发执行的实质。 3、 掌握进程的创建、睡眠、撤销等进程控制方法。

二、  实验要求及环境

1、用C语言编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;杀死进程等功能

三、  实验过程及方法

1 #include 2 #include 3 #include 4 struct jincheng_type 5 { 6 int pid; 7 int youxian; int daxiao; int msg; int live; 8 }; 9 struct jincheng_type neicun[20],waicun[20]; 10 11 int shumu =0,pid=1; 12 int waicunnuber = 0; 13 int create() 14 { 15 16 printf("正在创建进程\n"); 17 if(shumu>20) 18 printf("\n 请先结束或换出进程\n"); 19 else{ printf("请输入新的进程pid :\n"); 20 scanf("%d",&neicun[shumu].pid); 21 printf("请输入新的进程优先级 :\n"); 22 scanf("%d",&neicun[shumu].youxian); 23 printf("请输入新的进程大小:\n"); 24 scanf("%d",&neicun[shumu].daxiao); 25 printf("请输入新的进程消息 :"); 26 scanf("%d",&neicun[shumu].msg); 27 } 28 29 neicun[shumu].live=0; 30 shumu++; 31 32 return 0; 33 } 34 void viewrun() 35 { 36 int vpid; 37 int i; 38 printf("正在查看进程\n"); 39 printf("\n 请输入进程的pid\n"); 40 scanf("%d",&vpid); 41 if(vpid>=0 ) 42 { 43 for(i = 0; i < 20; i++) 44 { 45 if(vpid == neicun[i].pid ) 46 { 47 printf("进程的pid是%d\n", neicun[i].pid); 48 printf("进程的优先级是%d\n",neicun[i].youxian); 49 printf("进程的大小是%d\n", neicun[i].daxiao); 50 printf("进程的消息是%d\n", neicun[i].msg); 51 printf("进程的状态是%d\n", neicun[i].live); 52 break; 53 } 54 } 55 56 } 57 else 58 printf("\n 所查看的进程不存在 \n"); 59 printf("\n 请按回车退出查看\n"); 60 vpid=getch(); 61 } 62 void huanchu() 63 { 64 int pid1 = -1; 65 int pid2 = -1; 66 int pid11,pid22; 67 int i; 68 char c; 69 printf("正在换出进程\n"); 70 printf("\n 请输入要换出的进程的pid:\n"); 71 scanf("%d",&pid11); 72 printf("\n 请输入要换入的进程的pid:\n"); 73 scanf("%d",&pid22); 74 for(i = 0; i < 20; i++) 75 { 76 if(pid11 == neicun[i].pid ) 77 { 78 pid1 = i; 79 break; 80 81 } 82 } 83 for(i = 0; i < 20; i++) 84 { 85 if(pid22 == neicun[i].pid ) 86 { 87 pid2 = i; 88 break; 89 90 } 91 } 92 /* 93 printf("进程的pid是%d\n", neicun[pid1].pid); 94 printf("进程的优先级是%d\n",neicun[pid1].youxian); 95 printf("进程的大小是%d\n", neicun[pid1].daxiao); 96 printf("进程的消息是%d\n", neicun[pid1].msg); 97 printf("进程的状态是%d\n", neicun[pid1].live); 98 */ 99 if(pid1>=0&&pid1neicun[pid2].youxian) 101 //{ 102 neicun[pid1].live = -1; 103 neicun[pid2].live = 0; 104 105 waicun[19].pid =neicun[pid1].pid; 106 waicun[19].youxian =neicun[pid1].youxian; 107 waicun[19].daxiao =neicun[pid1].daxiao; 108 waicun[19].msg =neicun[pid1].msg; 109 waicun[19].live =neicun[pid1].live; 110 printf("*****\n"); 111 neicun[pid1].pid=neicun[pid2].pid; 112 neicun[pid1].youxian=neicun[pid2].youxian; 113 neicun[pid1].daxiao=neicun[pid2].daxiao; 114 neicun[pid1].msg=neicun[pid2].msg; 115 neicun[pid1].live=neicun[pid2].live; 116 117 neicun[pid2].pid =waicun[19].pid; 118 neicun[pid2].youxian =waicun[19].youxian; 119 neicun[pid2].daxiao =waicun[19].daxiao; 120 neicun[pid2].msg =waicun[19].msg; 121 neicun[pid2].live =waicun[19].live; 122 /* 123 printf("进程的pid是%d\n", neicun[pid2].pid); 124 printf("进程的优先级是%d\n",neicun[pid2].youxian); 125 printf("进程的大小是%d\n", neicun[pid2].daxiao); 126 printf("进程的消息是%d\n", neicun[pid2].msg); 127 printf("进程的状态是%d\n", neicun[pid2].live); 128 129 printf("进程的pid是%d\n", neicun[pid1].pid); 130 printf("进程的优先级是%d\n",neicun[pid1].youxian); 131 printf("进程的大小是%d\n", neicun[pid1].daxiao); 132 printf("进程的消息是%d\n", neicun[pid1].msg); 133 printf("进程的状态是%d\n", neicun[pid1].live); 134 */ 135 printf("换出的进程的pid是%d\n", waicun[19].pid); 136 printf("换出的进程的优先级是%d\n",waicun[19].youxian); 137 printf("换出的进程的大小是%d\n", waicun[19].daxiao); 138 printf("换出的进程的消息是%d\n", waicun[19].msg); 139 // } 140 //else printf("要换入的进程的优先级不够。\n"); 141 } 142 else printf("要换出的进程不存在。\n"); 143 printf("请输入回车键 退出换出作业。\n"); 144 c=getch(); 145 } 146 void kill(){ 147 int kpid; 148 int i; 149 char c; 150 printf("正在杀死进程\n"); 151 printf("\n 请输入的进程的pid:\n"); 152 scanf("%d",&kpid); 153 154 if(kpid>=0&&kpid=0&&tpid1 neicun[i].youxian && neicun[i].live == 0 ) 255 { 256 maxi = i; 257 maxyouxian = neicun[i].youxian; 258 } 259 260 } 261 if(maxi != -1) 262 { 263 neicun[maxi].live = 1; 264 } 265 266 } 267 return 0; 268 }

 

四、实验结果及其分析

 

五、实验总结

1、进程,开始给每一个进程设定一个优先级数,对于优先级高的进程先调度,优先级低的进程后调度,在调度一个进程时,其他进程将处于就绪态,而正在被调度的进程应处于运行态。

2、优先级调度算法只是进程调度算法的一种,我们还应依照书本去学习进程调度的其它算法,以便更好地了解进程调度。

3、刚开始写的时候感觉很困难、因为我的c 语言不是很好,写起来很吃力,通过上网查阅资料完成。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3