操作系统实验.docx
- 文档编号:7794845
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:12
- 大小:238.48KB
操作系统实验.docx
《操作系统实验.docx》由会员分享,可在线阅读,更多相关《操作系统实验.docx(12页珍藏版)》请在冰豆网上搜索。
操作系统实验
武汉工程大学
计算机科学与工程学院
《操作系统》实验报告
专业班级
信息技术2班
实验地点
J304
学生学号
0905060205
指导教师
王庆春
学生姓名
邓曌
实验时间
周二
实验项目
进程管理
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
1.加强对进程概念的理解。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
主动完成实验设计任务
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进程之间的通讯(通过进程值的单偶关系来改变进程中标志量的值简单的描述进程之间的通讯) 实验总结 这次实验使我对进程有了更进一步的了解,通过自己对进程代码的编写,让我更具体,更加深刻的了解了进程的运行机制和怎么去理解和描述一个进程。 让我更熟悉了C语言的运用,以及其在操作系统中的重要性。 通过对编程设计,使我把在书本上学到的理论与实践相结合,大大提高巩固了之前所学习的内容。 这促使我们以后要更加深入的去学习理解这门课程,同时在老师的帮忙下,让我们对操作系统这门课程的学习,更进一步。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验