进程管理模拟.docx
- 文档编号:5650872
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:12
- 大小:238.38KB
进程管理模拟.docx
《进程管理模拟.docx》由会员分享,可在线阅读,更多相关《进程管理模拟.docx(12页珍藏版)》请在冰豆网上搜索。
进程管理模拟
xx
xx
《操作系统》实验报告
专业班级
xx
实验地点
xx
学生学号
xx
指导教师
xx
学生姓名
xx
实验时间
xx
实验项目
进程管理
实验类别
操作性()验证性()设计性()综合性(√)其它()
实验目的及要求
实验目的:
1、加强对对基本概念的理解。
2、加强对进程概念的理解。
3、提高进程的程序设计能力。
实验要求:
1、创建新的进程;
2、查看运行进程;
3、换出某个进程;
4、杀死运行进程以及进程之间通信等功能。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
主动完成实验设计任务
30分
需求设计
比较规范、基本正确
功能达到实验要求
30分
实验报告
及时递交、填写规范
内容完整、体现收获
40分
说明:
评阅教师:
日期:
年月日
实验内容
1.创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。
代码如下:
#include"conio.h"
#include"stdio.h"
#include"stdlib.h"
voidclrscr();
voidcreate();
voidrun();
voidhuanchu();
voidkill();
voidtongxun();
structjincheng_type
{intpid;
intyouxian;
intdaxiao;
intflag;
};
structjincheng_typeneicun[20];
intshumu=0,pid_l;
voidmain()
{
intn;
chara;
n=1;
clrscr();
while(n==1)
{
printf("\n********************************************");
printf("\n*进程演示系统*");
printf("\n********************************************");
printf("\n1.创建新的进程2.查看运行进程");
printf("\n3.换出某个进程4.杀死运行进程");
printf("\n5.进程之间通信6.退出系统");
printf("\n********************************************");
printf("\n请选择(~)");
a=getche();
switch(a)
{case'1':
create();
break;
case'2':
run();
break;
case'3':
huanchu();
break;
case'4':
kill();
break;
case'5':
tongxun();
break;
case'6':
exit(0);
default:
n=0;
}
}
}
voidcreate()/*创建一个进程的示例(不完整的程序)*/
{
if(shumu>=20)
{
printf("\n内存已满,请先结束或换出进程\n");
}
else
{
printf("\n请输入新进程的pid\n");
scanf("%d",&neicun[shumu].pid);
printf("\n请输入新进程的优先级\n");
scanf("%d",&neicun[shumu].youxian);
printf("\n请输入新进程的大小\n");
scanf("%d",&neicun[shumu].daxiao);
shumu++;
}
}
voidclrscr()/*清除内存空间*/
{
inti;
for(i=0;i<19;i++)
{
neicun[i].pid=0;
neicun[i].youxian=0;
neicun[i].daxiao=0;
neicun[i].flag=0;
}
shumu=0;
}
voidrun()/*查看内存中进程运行的情况*/
{
inti;
printf("\n");
printf("当前内存单元已经占用单元%d\n",shumu);
for(i=0;i { printf("当前各内存中的进程\n"); printf("当前运行的进程%d\n",neicun[i].pid); printf("当前运行进程的优先级%d\n",neicun[i].youxian); printf("当前运行进程占用的空间大小%d\n",neicun[i].daxiao); } } voidhuanchu()/*换出优先级最小的进程*/ { inti,min; min=neicun[0].youxian; for(i=1;i { if(min>neicun[i].youxian) { min=neicun[i].youxian; } } for(i=0;i { if(min==neicun[i].youxian) { neicun[i].youxian=444; neicun[i].pid=444; neicun[i].daxiao=444;//优先级最低先进程换出 printf("\n进程%d被置换出内存\n",i); printf("\n请在%d位置输入新进程的pid\n",i); scanf("%d",&neicun[i].pid); printf("\n请输入新进程的优先级\n"); scanf("%d",&neicun[i].youxian); printf("\n请输入新进程的大小\n"); scanf("%d",&neicun[i].daxiao); } } } voidkill()/*杀死某个进程*/ { intp,j; printf("\n请输入要杀死的进程\n"); scanf("%d",&p); for(j=0;j { if(p==neicun[j].pid) { neicun[j].daxiao=444; neicun[j].youxian=444; neicun[j].pid=-1; printf("此进程%d被杀死",p); } } } voidtongxun()//通过进程是单双数改变进程中的参数,来达到进程之间通讯的简单描述 { inti,j,n,m; for(i=0;i if(neicun[i].pid%2==0) { for(j=1;j { neicun[j].flag=22; printf("\n发现偶数进程时,进程%d标志变量为%d",j,neicun[j].flag);//当进程中进程值为偶数,把所有进程中的标志位置 } } for(n=0;n if(neicun[n].pid%2==1) { for(m=1;m { neicun[m].flag=11; printf("\n发现偶数进程时,进程%d标志变量为%d",m,neicun[m].flag);//当进程中的进程值为奇数时,把所有进程标志位置 } } } 输入数据,程序运行结果如下图: 1.输入进程 2查看进程运行及在内存中情况 3.置换出进程(置换出优先级最小的进程) 查看置换后内存进程情况 4.杀死进程 进程杀死后运行结果(用负数来表示进程已经被杀死) 5进程之间的通讯(通过进程值的单偶关系来改变进程中标志量的值简单的描述进程之间的通讯) 实验总结 通过这次实验,使我对操作系统中的进程的概念有了进一步的了解。 通过自己实际编写程序,对进程的创建以、查看、换出以及杀死某个进程等操作更加熟悉,是对课本知识的一次检验和加深印象的过程。 总的来说,这次实验收获不小,巩固了之前学习的内容且为今后的学习做了铺垫,希望自己能学好这门课程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 管理 模拟